Форумы » Вопросы и ответы по интеграции »
Групповое создание ВСД2_ЛабораторныеИсследования (доработка)
Добавил(а) Скворцов Анатолий почти 5 года назад
Принцип:
1. Создаем много шаблонов для каждого Продукция_Элемент в конкретной дате (например: 01.12.19)
2. Из обработки ВСД_ЛабИсследования выбираем партии, нажимает кнопку группового создания, указываем дату шаблонов и все ЛИ создаются.
3. Нажимаем Отправить
Док.ВСД2_ЛабораторныеИсследования
Новый реквизит: ЭтоШаблон (Число,1)
Новый реквизит: Продукция_Элемент
Форма: Добавлены реквизиты
Модуль:
Процедура ПриИзмененииЭтоШаблон() Если ЭтоШаблон=1 Тогда Форма.кнОтправить.Доступность(0); Форма.Партия.Видимость(0); Форма.Продукция_Элемент.Видимость(1); Иначе Форма.кнОтправить.Доступность(1); Форма.Партия.Видимость(1); Форма.Продукция_Элемент.Видимость(0); КонецЕсли; КонецПроцедуры
Вызов из реквизита формы ЭтоШаблон и из ПриОткрытии()
И заблокирована отправка шаблона.
Форма обработки: Кнопка "Создать..."
Модуль обработки:
Процедура ВвестиЛИСписком() ДокЛИ=СоздатьОбъект("Документ.ВСД2_ЛабораторныеИсследования"); ВыбДатаШаблонов=ВосстановитьЗначение("ДатаШаблоновЛабИссл"); Если ВвестиДату(ВыбДатаШаблонов,"Укажите дату результатов исследований",60)=1 Тогда СохранитьЗначение("ДатаШаблоновЛабИссл",ВыбДатаШаблонов); Иначе Возврат; КонецЕсли; ДокЛИ.ВыбратьДокументы(ВыбДатаШаблонов,ВыбДатаШаблонов); ТекСтрокаПартий=ТаблицаПартий.ТекущаяСтрока(); Пока ДокЛИ.ПолучитьДокумент() = 1 Цикл Если ДокЛИ.ЭтоШаблон=0 Тогда Продолжить; КонецЕсли; Если ДокЛИ.Продукция_Элемент<>ТаблицаПартий.Продукция Тогда Продолжить; КонецЕсли; Сообщить("Найден шаблон "+ДокЛИ.Продукция_Элемент+" - "+ДокЛИ.НаименованиеПоказателя); ВыбШаблон=ДокЛИ.ТекущийДокумент(); ВвестиЛИ(); ТаблицаПартий.ПолучитьСтрокуПоНомеру(ТекСтрокаПартий); ТаблицаПартий.ФлЛИЕ=0; КонецЦикла; КонецПроцедуры
ЛИ2.jpg (275 КБ) ЛИ2.jpg | форма документа | ||
обработка.jpg (255 КБ) обработка.jpg | форма обработки | ||
ВСД_ЛабИсследования.ert (273 КБ) ВСД_ЛабИсследования.ert |
Ответы (4)
RE: Групповое создание ВСД2_ЛабораторныеИсследования (доработка) - Добавил(а) кб99 Синявский Филипп почти 5 года назад
Здорово! Элегантное решение! Думал через отдельный справочник это делать, но так даже интереснее.
RE: Групповое создание ВСД2_ЛабораторныеИсследования (доработка) - Добавил(а) кб99 Синявский Филипп почти 5 года назад
На будущее просьба присылать свои доработки с помощью git
RE: Групповое создание ВСД2_ЛабораторныеИсследования (доработка) - Добавил(а) Скворцов Анатолий почти 5 года назад
С git-ом разберусь.
При нашем цейтноте только "элегантные" решения приходится внедрять )
Еще пара моментов по обработке:
Процедура ЗаполнитьСписокПартий()
ТаблицаПартий.УдалитьСтроки();
ДатаИзг=ГМ.Преобразовать_Дата_в_Строка(ДатаВыработки); // <<== для работы фильтра по дате выработки
Запрос=СоздатьОбъект("Запрос");
Текст= "//{{ЗАПРОС(Сформировать)
|ВСД_Партия = Справочник.ВСД_Партия.ТекущийЭлемент;
|ВсдДата = Справочник.ВСД_Партия.ВсдДата;
|ДатаИзготовления1 = Справочник.ВСД_Партия.ДатаИзготовления1;
|Продукция_Элемент = Справочник.ВСД_Партия.Продукция_Элемент;
|Группировка ВСД_Партия без групп;
|Условие(ВсдДата=ДатаСоздания);
|"//}}ЗАПРОС
;
Если ФлФильтрВыработка=1 Тогда
Текст=Текст+"Условие(Лев(ДатаИзготовления1,10)=ДатаИзг);"; // <<== для работы фильтра по дате выработки
КонецЕсли;
Если ВыбПродукция.Выбран()=1 Тогда
Текст=Текст+"Условие(Продукция_Элемент=ВыбПродукция);";
КонецЕсли;
СписокПартий=СоздатьОбъект("СписокЗначений");
Запрос.Выполнить(Текст);
Пока Запрос.Группировка(1)=1 Цикл
Если СокрЛП(Запрос.ВСД_Партия.Статус)="103" Тогда // <<== выводим только выработанные партии (можно вынести на форму)
ТаблицаПартий.НоваяСтрока();
...
RE: Групповое создание ВСД2_ЛабораторныеИсследования (доработка) - Добавил(а) кб99 Синявский Филипп почти 5 года назад
Простой и понятный код лучше сложного-сочиненного
легко читать => легко поддерживать = легко тестировать
сложный код = сложно понимать = сложно тестировать = частые ошибки