Групповое создание ВСД2_ЛабораторныеИсследования (доработка) - 1Cv7 ВСД в ГИС Меркурий - КБ99 Redmine

Проект

Общее

Профиль

Групповое создание ВСД2_ЛабораторныеИсследования (доработка)

Добавил(а) Скворцов Анатолий больше 4 лет назад

Принцип:
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
27691
27692

Ответы (4)

RE: Групповое создание ВСД2_ЛабораторныеИсследования (доработка) - Добавил(а) кб99 Синявский Филипп больше 4 лет назад

Здорово! Элегантное решение! Думал через отдельный справочник это делать, но так даже интереснее.

RE: Групповое создание ВСД2_ЛабораторныеИсследования (доработка) - Добавил(а) кб99 Синявский Филипп больше 4 лет назад

На будущее просьба присылать свои доработки с помощью git

RE: Групповое создание ВСД2_ЛабораторныеИсследования (доработка) - Добавил(а) Скворцов Анатолий больше 4 лет назад

С git-ом разберусь.
При нашем цейтноте только "элегантные" решения приходится внедрять )
Еще пара моментов по обработке:


Процедура ЗаполнитьСписокПартий()  
    ТаблицаПартий.УдалитьСтроки();   

    ДатаИзг=ГМ.Преобразовать_Дата_в_Строка(ДатаВыработки);  // <<== для работы фильтра по дате выработки
    Запрос=СоздатьОбъект("Запрос"); 
    Текст=    "//{{ЗАПРОС(Сформировать)
    |ВСД_Партия = Справочник.ВСД_Партия.ТекущийЭлемент;
    |ВсдДата = Справочник.ВСД_Партия.ВсдДата;
    |ДатаИзготовления1 = Справочник.ВСД_Партия.ДатаИзготовления1;
    |Продукция_Элемент = Справочник.ВСД_Партия.Продукция_Элемент;
    |Группировка ВСД_Партия без групп;
    |Условие(ВсдДата=ДатаСоздания);
    |"//}}ЗАПРОС
    ;        
    Если ФлФильтрВыработка=1 Тогда
        Текст=Текст+"Условие(Лев(ДатаИзготовления1,10)=ДатаИзг);";  // <<== для работы фильтра по дате выработки
    КонецЕсли;        
     Если ВыбПродукция.Выбран()=1 Тогда
        Текст=Текст+"Условие(Продукция_Элемент=ВыбПродукция);";
    КонецЕсли;        
    СписокПартий=СоздатьОбъект("СписокЗначений");
    Запрос.Выполнить(Текст); 
    Пока Запрос.Группировка(1)=1 Цикл
        Если СокрЛП(Запрос.ВСД_Партия.Статус)="103" Тогда  // <<== выводим только выработанные партии (можно вынести на форму)
            ТаблицаПартий.НоваяСтрока();
...

RE: Групповое создание ВСД2_ЛабораторныеИсследования (доработка) - Добавил(а) кб99 Синявский Филипп больше 4 лет назад

Простой и понятный код лучше сложного-сочиненного
легко читать => легко поддерживать = легко тестировать
сложный код = сложно понимать = сложно тестировать = частые ошибки

    (1-4/4)