Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 20:54

Помогите срочно!!!

Автор Shaman4ik, 01 фев 2011, 13:18

0 Пользователей и 2 гостей просматривают эту тему.

Shaman4ik

Нужно что бы при нажатии на Элемент Диалога "Тара" Таблица Значений тбТара выводила барабаны Склада1 если выбрана площадка "0".

Перем тбПлощадкаНомер1;
Перем тбПлощадкаНомер2;
Перем тбПлощадкаНомер3;
Перем тбПлощадкаНомер4;
Перем тбПлощадкаНомер5;
Перем тбПлощадкаНомер6;
Перем Запрос, дЗапроса, ТестЗапроса, тбКуски, Склад, тбТара, дтЗапроса, спТараСтрДокумента;
Перем Склад1, Склад2;


//_____________________________________________________________________________
Функция  КонтрольДоступностиКнопок()
   Если КоличествоСтрок() > 0 тогда
       Форма.спПлощадка.Доступность(0);
   Иначе
       Форма.спПлощадка.Доступность(1);
   КонецЕсли;
КонецФункции //  КонтрольДоступностиКнопок()



//_____________________________________________________________________________


Процедура ВводНового(Копирование)
   
   Автор = глПользователь;
   Склад = ВосстановитьЗначение("СкладГП");       
      
КонецПроцедуры

//----------------------------------------------------
Процедура ЗаполнитьХарактеристикиПлощадок();
   
         тбПлощадкаНомер1 = СоздатьОбъект("ТаблицаЗначений");
         тбПлощадкаНомер1.НоваяКолонка("НазваниеРяда","Строка",4);
         тбПлощадкаНомер1.НоваяКолонка("РазмерРяда","Число",4,0);
   
   тбПлощадкаНомер1.НоваяСтрока();
   тбПлощадкаНомер1.НазваниеРяда = "р001";
   тбПлощадкаНомер1.РазмерРяда = 15;
   
   
КонецПроцедуры   


//----------------------------------------------------



//----------------------------------------------------

Процедура ВыбратьБарабаны();
   
   
тбТара.УдалитьСтроки();   
   
   Если ДатаДок>ПолучитьДатуТА() тогда
      дЗапроса=ПолучитьДатуТА();
   Иначе
      дЗапроса=ДатаДок;
   КонецЕсли;
   
ТекстЗапроса = "";
   ТекстЗапроса = ТекстЗапроса +
   "//{{ЗАПРОС(ОстаткиТоваров)
   |Тов=Регистр.Товары.Товар;
   |Скл=Регистр.Товары.Склад;
   |Дл1=Регистр.Товары.Длина1;
   |Дл2=Регистр.Товары.Длина2;
   |Дл3=Регистр.Товары.Длина3;
   |Тара=Регистр.Товары.Тара;
   |НТар=Регистр.Товары.НомерТары;
   |Рез=Регистр.Товары.Резерв;
   |Кол=Регистр.Товары.Количество;
   |Группировка Тов;
   |Группировка Дл1;
   |Группировка Дл2;
   |Группировка Дл3;
   |Группировка Тара;
   |Группировка НТар;
   |Группировка Рез;
   |Группировка Кол;
   |Функция КонКол=КонОст(Кол);
   |Условие (Скл=Склад);
   |Условие (Тара.Вес>0);
   |"//}}ЗАПРОС
   ;
   
   
   //Если  Тогда
   //КонецЕсли;
   
   //Если дтЗапроса < ПолучитьДатуТА() Тогда
   //      ТекстЗапроса = ТекстЗапроса + "Период С дтЗапроса По дтЗапроса;" ;
   //      РассчитатьРегистрыНа(дтЗапроса) ;
   //КонецЕсли;
      
      //Сообщить(ТекстЗапроса);
      Запрос=СоздатьОбъект("Запрос");
      Если Запрос.Выполнить(ТекстЗапроса)=0 тогда
         Возврат;
      КонецЕсли;
      
      Пока Запрос.Группировка("Тов") = 1 Цикл
         Пока Запрос.Группировка("Дл1") = 1 Цикл
            Пока Запрос.Группировка("Дл2") = 1 Цикл
               Пока Запрос.Группировка("Дл3") = 1 Цикл
                  Пока Запрос.Группировка("Тара") = 1 Цикл
                     Пока Запрос.Группировка("НТар") = 1 Цикл
                        Пока Запрос.Группировка("Рез") = 1 Цикл
                           Пока Запрос.Группировка("Кол") = 1 Цикл
                              Если Запрос.КонКол>0 Тогда
                                 тбТара.НоваяСтрока();
                                 тбТара.Тара=Запрос.Тара;
                                 тбТара.НомерТары=Запрос.НТар;
                                 тбТара.Товар=Запрос.Тов;
                                 тбТара.Длина1=Запрос.Дл1;
                                 тбТара.Длина2=Запрос.Дл2;
                                 тбТара.Длина3=Запрос.Дл3;
                                 тбТара.Заказ=Запрос.Рез;
                              КонецЕсли;
                           КонецЦикла;
                        КонецЦикла;
                     КонецЦикла;
                  КонецЦикла;
               КонецЦикла;
            КонецЦикла;
         КонецЦикла;
      КонецЦикла;
      
   
      
КонецПроцедуры
   

//***************************************************************************************************

Процедура ЗаполнитьСклады()
   спрМХ=СоздатьОбъект("Справочник.МестаХранения");
   
   спМХ = СоздатьОбъект("СписокЗначений");
   спрМХ.НайтиПокоду(8, 0);  //Склад ГП №1
    Склад1 = спрМХ.ТекущийЭлемент();
    спрМХ.НайтиПокоду(1, 0);  //Склад ГП №2
    Склад2 = спрМХ.ТекущийЭлемент();
   
   //спМХ.ВыбратьЭлемент();
   //Пока спМХ.ПолучитьЭлемент() = 1 Цикл



      
   
КонецПроцедуры //ПриОткрытии

//------------------------------------------------------------------------------------------- 

Процедура ПриОткрытии()
ПриЗаписиПерепроводить(1);
    глПроверкаРазрешенияРедактирования(Контекст);
   
    Если Форма.ТолькоПросмотр() = 0 тогда
        Если Проведен() = 1 Тогда
            Сигнал();
            Предупреждение("Внимание!
            |Документ проведен! Возможен только просмотр.
            |Для изменения документа сделайте его сначала непроведенным");
            Форма.ТолькоПросмотр(1);
        КонецЕсли;
    КонецЕсли;
   
   спПлощадка.ДобавитьЗначение(0, "Площадка хранения барабанов Цех №1");
   спПлощадка.ДобавитьЗначение(1, "Площадка хранения барабанов у торца Цеха №1");
   спПлощадка.ДобавитьЗначение(2, "Площадка хранения барабанов №1, Цеха №2");
   спПлощадка.ДобавитьЗначение(3, "Площадка хранения барабанов №4 между конторой и цехом №2");
   спПлощадка.ДобавитьЗначение(4, "Площадка хранения барабанов №5");
   спПлощадка.ДобавитьЗначение(5, "Площадка хранения барабанов №6 Брандербург");
   
   ЗаполнитьХарактеристикиПлощадок();
   
    тбТара = СоздатьОбъект("ТаблицаЗначений");
   тбТара.НоваяКолонка("Товар","Справочник.Номенклатура");
   тбТара.НоваяКолонка("Тара","Справочник.Тара");
   тбТара.НоваяКолонка("НомерТары","Строка",10,0,"№ тары",12);
   тбТара.НоваяКолонка("Длина1","Число",10,4,"Кусок 1",9);
   тбТара.НоваяКолонка("Длина2","Число",10,4,"Кусок 2",9);
   тбТара.НоваяКолонка("Длина3","Число",10,4,"Кусок 3",9);   
   тбТара.НоваяКолонка("Заказ","Документ.Заказ");
   
   
   
   спрМХ=СоздатьОбъект("Справочник.МестаХранения");
   
   спМХ = СоздатьОбъект("СписокЗначений");
   спрМХ.НайтиПокоду(8, 0);  //Склад ГП №1
    Склад1 = спрМХ.ТекущийЭлемент();
    спрМХ.НайтиПокоду(1, 0);  //Склад ГП №2
    Склад2 = спрМХ.ТекущийЭлемент();
   
                         
КонецПроцедуры 


//-----------------------------------------------
Процедура ПриЗаписи()
   Если глМожноЗаписатьДокумент(Контекст) = 0 Тогда
      СтатусВозврата(0);
      Возврат;
   КонецЕсли;
   
   
   Если КоличествоСтрок() = 0 Тогда
      Сигнал();
      Предупреждение("В документе не заполнена табличная часть!
      |Запись документа не разрешена.");
      СтатусВозврата(0);
      Возврат;
   КонецЕсли;
   
   //ПРОВЕРИМ СТРОКИ ДОКУМЕНТА
   ВыбратьСтроки();
   
   Пока ПолучитьСтроку()=1 Цикл
      Если Тара.Вес>0 Тогда
         
         Если СтрДлина(СокрЛП(НомерТары)) < 10 Тогда
            Сигнал();
            Предупреждение("Строка "+НомерСтроки+"
            |Неверный номер тары!
            |Номер тары должен состоять из 10 символов!");
            СтатусВозврата(0);
            Возврат;
         КонецЕсли;
         
         Если (Число(Лев(НомерТары,2)) < 1) или (Число(Лев(НомерТары,2)) > 12) Тогда
            Сигнал();
            Предупреждение("Строка "+НомерСтроки+"
            |Неверный номер тары!
            |Первые два символа номера означают номер месяца!");
            СтатусВозврата(0);
            Возврат;
         КонецЕсли;
         
         Если (Сред(НомерТары,9,1) <> "1") и
         (Сред(НомерТары,9,1) <> "2") Тогда
            Сигнал();
            Предупреждение("Строка "+НомерСтроки+"
            |Неверный номер тары! При сдаче ГП на склад девятый символ номера
            |означает номер цеха и может быть равен ""1"" или ""2""!");
            СтатусВозврата(0);
            Возврат;
         КонецЕсли;
         
         Если (Сред(НомерТары,10,1) <> "0") и
         (Сред(НомерТары,10,1) <> "П") и
         (Сред(НомерТары,10,1) <> "Ц") и
         (Сред(НомерТары,10,1) <> "Р") и
         (Сред(НомерТары,10,1) <> "В") и
         (Сред(НомерТары,10,1) <> "Г") Тогда
            Сигнал();
            Предупреждение("Строка "+НомерСтроки+"
            |Неверный номер тары!
            |Десятый символ номера может быть ""0"", ""П"", ""Ц"", ""Р"", ""В"" или ""Г""!");
            СтатусВозврата(0);
            Возврат;
         КонецЕсли;
         
      КонецЕсли;
   КонецЦикла;
   
   //СохранитьЗначение("СкладГП",Склад);
КонецПроцедуры
//_____________________________________________________________________________
//Процедура ПриОкончанииРедактированияСтроки()
//   Если (Товар.Выбран()=0) или (ДлинаКуска1=0) или (Тара.Выбран()=0) Тогда
//      Сигнал();
//      Предупреждение("Заполните в строке все значения!");
//      СтатусВозврата(0);Возврат;
//   КонецЕсли;
//КонецПроцедуры
//******************************************************************************
Процедура Печать()
   НомерДокПечатнойФормы = глПреобразоватьНомерДок(НомерДок, 0, 0);
   
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Таблица");
   Таб.ВывестиСекцию("Шапка");
   Таб.ВывестиСекцию("Заголовок");
   
   ВыбратьСтроки();
   Ном = 0;
   Пока ПолучитьСтроку()=1 Цикл
      Ном = Ном + 1;
      Таб.ВывестиСекцию("Строка");
   КонецЦикла;
   
   Таб.ВывестиСекцию("Подвал");
   Таб.Опции(0,0,0,0,"ОпцииПечатиСдачаГП","ОкноСдачаГП");
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Печать сдача ГП","");
КонецПроцедуры
//*****************************************************************************
Функция ЗаголовокФормы()
   Перем Заголовок, Название;
   
   
   Заголовок = "Готовая продукция";
   Название = "Готовая продукция №";
   
   Если Выбран() = 1 Тогда 
      Если Проведен() = 1 Тогда
         Заголовок = Заголовок + ".Проведен";
      Иначе
         Заголовок = Заголовок + ".Не проведен";
      КонецЕсли;
   Иначе
      Заголовок = Заголовок + ".Новый";
   КонецЕсли;
   Форма.Заголовок(Заголовок);               
   Возврат Название;
КонецФункции //ЗаголовокФормы
//_____________________________________________________________________________
Процедура ЗаполнитьтбНачСоставЗаказа()
   Перем Запрос, ТекстЗапроса, дЗапроса;
   
   тбНачСоставЗаказа = СоздатьОбъект("ТаблицаЗначений");
   тбНачСоставЗаказа.НоваяКолонка("Продукт");
   тбНачСоставЗаказа.НоваяКолонка("Количество");
   
   Если ДатаДок>ПолучитьДатуТА() тогда
      дЗапроса=ПолучитьДатуТА();
   Иначе
      дЗапроса=ДатаДок;
   КонецЕсли;
   
   ТекстЗапроса = "";
   ТекстЗапроса = ТекстЗапроса +
   "//{{ЗАПРОС(ТекСостояниеЗаказа)
   |Период с дЗапроса по дЗапроса;
   |докЗаказ=Регистр.ЗАКАЗЫ.дкЗаказ;
   |Товар=Регистр.ЗАКАЗЫ.Товар;
   |пзКол=Регистр.ЗАКАЗЫ.Количество;
   |пзКолЗарезервировано=Регистр.ЗАКАЗЫ.КоличествоЗарезервировано;
   |пзКолОтгружено=Регистр.ЗАКАЗЫ.КоличествоОтгружено;
   |Группировка Товар Без Групп;
   |Условие (докЗаказ=Заказ);
   |Функция КонОстКоличество=КонОст(пзКол);
   |Функция КонОстКолЗарезервировано=КонОст(пзКолЗарезервировано);
   |Функция КонОстКолОтгружено=КонОст(пзКолОтгружено);
   |"//}}ЗАПРОС
   ;
   
   Запрос=СоздатьОбъект("Запрос");
   Если Запрос.Выполнить(ТекстЗапроса)=0 тогда
      Возврат;
   КонецЕсли;
   
   Пока Запрос.Группировка("Товар") = 1 Цикл
      Кол=Запрос.КонОстКоличество-Запрос.КонОстКолЗарезервировано-Запрос.КонОстКолОтгружено;
      Если Кол>0 тогда
         тбНачСоставЗаказа.НоваяСтрока();
         тбНачСоставЗаказа.Продукт=Запрос.Товар;
         тбНачСоставЗаказа.Количество=Кол;
      КонецЕсли;
   КонецЦикла;
   
КонецПроцедуры //ЗаполнитьтбНачСоставЗаказа()


//_____________________________________________________________________________
Процедура ПриНачалеВыбораЗначения(ЭлемДиалога,ФлагСтандОбр) 
   
   
   Если ЭлемДиалога="Тара" Тогда      
       ФлагСтандОбр = 0;
       ВыбратьБарабаны();
                        
      Если тбТара.ВыбратьСтроку() = 1 тогда
             Тара=тбТара.Тара;
             НомерТары=тбТара.НомерТары;
      КонецЕсли;
         
   ИначеЕсли ЭлемДиалога="Место" Тогда
      Если (ПустоеЗначение(Тара) = 1) или (ПустоеЗначение(НомерТары) = 1) тогда
      Иначе
         ФлагСтандОбр = 0;
         конВызова=глВзятьКонтекст(Контекст);
         
         
      
         ПередаваемыйКонтекст=СоздатьОбъект("СписокЗначений");
         ПередаваемыйКонтекст.ДобавитьЗначение(конВызова, "КонтекстФормыВызова");
         
         НомПлощадки = спПлощадка.ПолучитьЗначение(спПлощадка.ТекущаяСтрока());
         Если НомПлощадки = 0 тогда
            
            ПередаваемыйКонтекст.ДобавитьЗначение(тбПлощадкаНомер1, "тбПлощадка");     
            
         ИначеЕсли НомПлощадки = 1 тогда
            
            ПередаваемыйКонтекст.ДобавитьЗначение(тбПлощадкаНомер2, "тбПлощадка");
            
         ИначеЕсли НомПлощадки = 2 тогда
            
            ПередаваемыйКонтекст.ДобавитьЗначение(тбПлощадкаНомер3, "тбПлощадка");
            
         ИначеЕсли НомПлощадки = 3 тогда
            
            ПередаваемыйКонтекст.ДобавитьЗначение(тбПлощадкаНомер4, "тбПлощадка");
            
            
         ИначеЕсли НомПлощадки = 4 тогда
            
            ПередаваемыйКонтекст.ДобавитьЗначение(тбПлощадкаНомер5, "тбПлощадка"); 
            
            
         ИначеЕсли НомПлощадки = 5 тогда
            
            ПередаваемыйКонтекст.ДобавитьЗначение(тбПлощадкаНомер6, "тбПлощадка");
            
         КонецЕсли;
         
         ОткрытьФормуМодально("Отчет",ПередаваемыйКонтекст,КаталогИБ()+"ExtForms\ПодборМеста.ert");
         СтатусВозврата(0);
      КонецЕсли;               
   КонецЕсли;
КонецПроцедуры



prog1c7.7

 :kmtu:
... вот эт да ...
тут помогать нечем тут надо переделать

Shaman4ik

Ничего переделывать не надо было просто нужно было в запросе условие добавить и все Которое проверяло выбраную площадку а потом выводила список барабанов для этой площадки.

prog1c7.7

надо было, но спорить не буду это полемика уже

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск