Загрузка данных


```1c
                ОбластьСтрокаПраво.Параметры.ТемператураПриВыпуске = 0;
                ОбластьСтрокаСорт.Параметры.Сорт = "";

                // Выводим дополнительные строки для масла
                ТабДокумент.Присоединить(ОбластьСтрокаЛево1);
                ТабДокумент.Присоединить(ОбластьСтрокаПраво);
                ТабДокумент.Присоединить(ОбластьСтрокаСорт);

            КонецЕсли;

            // --- Для творога: выводим массу ---
            Если ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_Творог
                ИЛИ ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_ТворогВесовой Тогда
                ОбластьСтрокаМассаМасло.Параметры.Масса = Масса;
                ТабДокумент.Присоединить(ОбластьСтрокаМассаМасло);
                ОбластьСтрокаЛево1.Параметры.ОрганолептическиеПоказатели = СтрокаОргПоказатели;
                ТабДокумент.Присоединить(ОбластьСтрокаЛево1);
            КонецЕсли;

            // --- Для молока питьевого: выводим количество упаковочных единиц ---
            Если ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_МолокоПитьевое Тогда
                ОбластьСтрокаЛево.Параметры.КоличествоУпаковочныхЕдиниц = КоличествоУпаковочныхЕдиниц;
                ОбластьСтрокаЛево.Параметры.МДЖира = 0; // Заполним реальными данными ниже
                ОбластьСтрокаЛево.Параметры.МДБелка = 0;
                ОбластьСтрокаЛево.Параметры.МДСОМО = 0;
                // Выводим строку (уже выведена выше, но дублируем для молока)
                // ТабДокумент.Вывести(ОбластьСтрокаЛево);
            КонецЕсли;

        КонецЕсли;

        // --- Собираем номенклатуры для деклараций ---
        Номенклатура = Ссылка.Номенклатура;
        Если мНоменклатура.Найти(Номенклатура) = Неопределено Тогда
            мНоменклатура.Добавить(Номенклатура);
        КонецЕсли;

        // --- Собираем ответственных ---
        Ответственный = Ссылка.Ответственный;
        ДанныеМОЛ = ОбщегоНазначения.ДанныеФизЛица(Ссылка.Организация, Ответственный.ФизЛицо, Ссылка.Дата);
        ОтветственныйПредставление = ВРег(Лев(ДанныеМОЛ.Имя,1)) + "." + ВРег(Лев(ДанныеМОЛ.Отчество,1)) + ". " + ДанныеМОЛ.Фамилия;
        Если мОтветственные.Найти(ОтветственныйПредставление) = Неопределено Тогда
            мОтветственные.Добавить(ОтветственныйПредставление);
        КонецЕсли;

        ПоследняяСтрока = ТабДокумент.ВысотаТаблицы;

    // ======================
    // 8. ВЫВОДИМ ИТОГИ
    // ======================
    ОбластьИтогоЛево.Параметры.КоличествоМест = ИтогКоличествоМест;
    ОбластьИтогоЛево.Параметры.КоличествоУпаковочныхЕдиниц = ИтогКоличествоУпаковочныхЕдиниц;
    ОбластьИтогоЛево.Параметры.Масса = ИтогМасса;

    // --- Для масла и масла шоколадного выводим дополнительные итоги ---
    Если мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.Масло) <> Неопределено
        ИЛИ мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_МаслоШоколадное) <> Неопределено
        ИЛИ мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.МаслоИзМасла) <> Неопределено Тогда
        ОбластьИтогоМассаМасло.Параметры.Масса = ИтогМасса;
        ТабДокумент.Вывести(ОбластьИтогоЛево);
        ТабДокумент.Присоединить(ОбластьИтогоМассаМасло);
        ТабДокумент.Присоединить(ОбластьИтогоЛево1);
        ТабДокумент.Присоединить(ОбластьИтогоПраво);
        ТабДокумент.Присоединить(ИтогоМаслоСорт);
        ТабДокумент.Присоединить(ИтогоМаслоСрокГодности);
    Иначе
        // Для остальных видов (молоко, творог, сыворотка и т.д.)
        ТабДокумент.Вывести(ОбластьИтогоЛево);
        ТабДокумент.Присоединить(ОбластьИтогоЛево1);
        ТабДокумент.Присоединить(ОбластьИтогоПраво);
        // Для молока сухого, сыворотки, пахты, творога
        Если мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.МолокоСухоеСТБ1856) <> Неопределено
            ИЛИ мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_СывороткаСухая) <> Неопределено
            ИЛИ мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_Пахта) <> Неопределено
            ИЛИ мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_КормовыеЦели) <> Неопределено
            ИЛИ мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_Творог) <> Неопределено
            ИЛИ мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_ТворогВесовой) <> Неопределено Тогда
            ТабДокумент.Присоединить(ИтотМаслоСрокГодности);
        КонецЕсли;
    КонецЕсли;

    // --- Для творога: выводим массу в итогах ---
    Если мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_Творог) <> Неопределено
        ИЛИ мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_ТворогВесовой) <> Неопределено Тогда
        ОбластьИтогоМассаТворог.Параметры.Масса = ИтогМасса;
        ТабДокумент.Присоединить(ОбластьИтогоМассаТворог);
    КонецЕсли;

    // ======================
    // 9. ВЫВОДИМ ПУСТУЮ СТРОКУ
    // ======================
    ТабДокумент.Вывести(ОбластьПустаяСтрока);

    // ======================
    // 10. ВЫВОДИМ ДЕКЛАРАЦИИ
    // ======================
    мВсеДекларации = Новый Массив;
    Для каждого СтрНом Из мНоменклатура Цикл
        Если ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.Сыры Тогда
            мДекларации = ПолучитьДекларацииНоменклатурыИзВарки(Ссылка.Дата, СтрНом, Ссылка.Партия);
        Иначе
            мДекларации = ПолучитьДекларацииНоменклатуры(Ссылка.Дата, СтрНом);
        КонецЕсли;
        Для каждого СтрДеклар Из мДекларации Цикл
            Если мВсеДекларации.Найти(СтрДеклар) = Неопределено Тогда
                мВсеДекларации.Добавить(СтрДеклар);
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;

    // Выводим декларации
    ПерваяСтрокаДекларация = Истина;
    Для каждого стрМас Из мВсеДекларации Цикл
        Если ПерваяСтрокаДекларация Тогда
            ОбластьДекларация.Параметры.НомерДекларации = СокрЛП(стрМас.ПолноеНаименование);
            Если мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.Биопродукт) <> Неопределено Тогда
                ОбластьДекларация.Параметры.Дата = Формат(стрМас.Дата, "ДФ=dd.MM.yyyy");
            Иначе
                ОбластьДекларация.Параметры.ДатаОкончания = Формат(стрМас.ДатаОконачния, "ДФ=dd.MM.yyyy");
            КонецЕсли;
            ТабДокумент.Вывести(ОбластьДекларация);
            ПерваяСтрокаДекларация = Ложь;
        Иначе
            ОбластьДекларацияСтрока.Параметры.НомерДекларации = СокрЛП(стрМас.ПолноеНаименование);
            ОбластьДекларацияСтрока.Параметры.ДатаОкончания = Формат(стрМас.ДатаОконачния, "ДФ=dd.MM.yyyy");
            ТабДокумент.Вывести(ОбластьДекларацияСтрока);
        КонецЕсли;
    КонецЦикла;

    // ======================
    // 11. ВЫВОДИМ ПОДВАЛ (РАДИАЦИЯ, КАЧЕСТВО)
    // ======================
    // Радиация
    ОбластьПодвалРадиация.Параметры.ТребованияРадиации = РадиационныйКонтроль;
    ТабДокумент.Вывести(ОбластьПодвалРадиация);

    // Качество и безопасность
    СтрОбозначениеТНПА = "";
    Для каждого СтрМас Из мОбозначениеТНПА Цикл
        СтрОбозначениеТНПА = СтрОбозначениеТНПА + ?(ЗначениеЗаполнено(СтрОбозначениеТНПА), ", ", "") + СтрМас;
    КонецЦикла;

    Если ТипЗнч(ДокОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
        Если ЗначениеЗаполнено(ДокОснование.Контрагент.СтранаРегистрации) Тогда
            Если ДокОснование.Контрагент.СтранаРегистрации = Справочники.КлассификаторСтранМира.БЕЛАРУСЬ Тогда
                ОбластьПодвалКачествоБезопасность.Параметры.ТребованияКачества = СтрОбозначениеТНПА + ?(ЗначениеЗаполнено(СтрОбозначениеТНПА), ", ", "") + КачествоПродукци;
            Иначе
                КачествоПродукци = ПолучитьПоказателиКачества(ДокОснование.Контрагент, ДокОснование.Дата, мВиды[0]);
                ОбластьПодвалКачествоБезопасность.Параметры.ТребованияКачества = "ТНПА на продукцию, " + КачествоПродукци;
            КонецЕсли;
        Иначе
            ОбластьПодвалКачествоБезопасность.Параметры.ТребованияКачества = СтрОбозначениеТНПА + ?(ЗначениеЗаполнено(СтрОбозначениеТНПА), ", ", "") + КачествоПродукци;
        КонецЕсли;
    Иначе
        ОбластьПодвалКачествоБезопасность.Параметры.ТребованияКачества = СтрОбозначениеТНПА + ?(ЗначениеЗаполнено(СтрОбозначениеТНПА), ", ", "") + КачествоПродукци;
    КонецЕсли;
    ТабДокумент.Вывести(ОбластьПодвалКачествоБезопасность);

    // ======================
    // 12. ВЫВОДИМ БАКТЕРИИ (для сыров)
    // ======================
    Если мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.Сыры) <> Неопределено
        ИЛИ мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_СырыПлавленные) <> Неопределено Тогда
        Если мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.Сыры) <> Неопределено Тогда
            ОбластьБактерииСыр.Параметры.Бактерии = "Бактерии группы кишечных палочек не обнаружены в 0,001 г.";
        Иначе
            ОбластьБактерииСыр.Параметры.Бактерии = "Бактерии группы кишечных палочек не обнаружены в 0,1 г.";
        КонецЕсли;
        ТабДокумент.Вывести(ОбластьБактерииСыр);
    КонецЕсли;

    // ======================
    // 13. ВЫВОДИМ ВИД ПОКРЫТИЯ (для сыров)
    // ======================
    Если мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.Сыры) <> Неопределено
        ИЛИ мВиды.Найти(Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_СырыПлавленные) <> Неопределено Тогда
        СтрокаСырПокрытие = "";
        мСырПокрытие = Новый Массив;
        ЭтоПерваяСтрока = Истина;
        Для каждого СтрОбъединенная Из мКачУдОбъединенные Цикл
            Если (СтрОбъединенная.Вид = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.Сыры
                ИЛИ СтрОбъединенная.Вид = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_Полуфабрикат) Тогда
                Если ТипЗнч(СтрОбъединенная.КУ.Партия) = Тип("ДокументСсылка.ЮИ82_ВаркаСыра")
                    ИЛИ ТипЗнч(СтрОбъединенная.КУ.Партия) = Тип("СправочникСсылка.Партии") Тогда
                    Если Не СтрОбъединенная.КУ.Партия.Характеристика.ПометкаУдаления Тогда
                        Если ЗначениеЗаполнено(СтрОбъединенная.КУ.Партия.Характеристика.ВидПокрытия) Тогда
                            Если ЗначениеЗаполнено(СтрОбъединенная.КУ.Партия.Характеристика.ВидПокрытия.Информация) Тогда
                                ХарактеристикаВидПокрытия = СокрЛП(СтрОбъединенная.КУ.Партия.Характеристика.ВидПокрытия.Информация);
                                Если мСырПокрытие.Найти(ХарактеристикаВидПокрытия) = Неопределено Тогда
                                    СтрокаСырПокрытие = СтрокаСырПокрытие + ?(ЭтоПерваяСтрока, "", "; ") + ХарактеристикаВидПокрытия;
                                    мСырПокрытие.Добавить(ХарактеристикаВидПокрытия);
                                    ЭтоПерваяСтрока = Ложь;
                                КонецЕсли;
                            КонецЕсли;
                        КонецЕсли;
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
        Если ЗначениеЗаполнено(СтрокаСырПокрытие) Тогда
            ОбластьСырПокрытие.Параметры.СырПокрытие = СтрокаСырПокрытие;
            ТабДокумент.Вывести(ОбластьСырПокрытие);
        КонецЕсли;
    КонецЕсли;

    // ======================
    // 14. ВЫВОДИМ ТРАНСПОРТНУЮ ТАРУ
    // ======================
    Для каждого СтрОбъединенная Из мКачУдОбъединенные Цикл
        Ссылка = СтрОбъединенная.КУ;
        ВидКУ = СтрОбъединенная.Вид;

        // --- Получаем данные о таре ---
        Тара = "";
        МассаНетто = 0;
        ЕдИзмМассыНетто = "";
        Если ТипЗнч(Ссылка.Партия) = Тип("ДокументСсылка.ЮИ82_ПроизводствоПродукцииЦехЦМП") Тогда
            Партия = Ссылка.Партия.Партия;
            Тара = ?(ЗначениеЗаполнено(Партия.ЮИ_ЕдиницаМеста.Тара.ПредставлениеДляПечати),
                Партия.ЮИ_ЕдиницаМеста.Тара.ПредставлениеДляПечати,
                Партия.ЮИ_ЕдиницаМеста.Тара.Наименование);
            Тара = СтрЗаменить(Тара, ".", "");
            МассаНетто = Партия.ЮИ_ЕдиницаМеста.МассаНетто;
            ЕдИзмМассыНетто = Партия.ЮИ_ЕдиницаМеста.ЕдИзмМассыНетто.Наименование;
        КонецЕсли;

        // --- Формируем строку транспортной тары ---
        Если ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.Масло
            ИЛИ ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_МаслоШоколадное Тогда
            Если Ссылка.Номенклатура.БазоваяЕдиницаИзмерения = ЕдКг Тогда
                СтрТранспортнаяТара = СтрТранспортнаяТара + ?(ЗначениеЗаполнено(СтрТранспортнаяТара), ", ", "") +
                    "Вид упаковки масла весового - " + НРег(Тара) + ", масса нетто масла в ящике - " + МассаНетто + " " + ЕдИзмМассыНетто;
            Иначе
                ВесНоменклатуры = Ссылка.Номенклатура.Вес * 1000;
                ПотребительскаяТара = ?(ЗначениеЗаполнено(Ссылка.Номенклатура.ЮИ_ПотребительскаяТара.ПредставлениеДляПечати),
                    Ссылка.Номенклатура.ЮИ_ПотребительскаяТара.ПредставлениеДляПечати,
                    Ссылка.Номенклатура.ЮИ_ПотребительскаяТара.Наименование);
                СтрТранспортнаяТара = СтрТранспортнаяТара + ?(ЗначениеЗаполнено(СтрТранспортнаяТара), ", ", "") +
                    "Вид потребительской тары - " + НРег(ПотребительскаяТара) + ", транспортная тара - " + НРег(Тара) +
                    ", масса нетто упаковочной единицы - " + СтрЗаменить(ВесНоменклатуры, Символы.НПП, "") + " г";
            КонецЕсли;

        ИначеЕсли ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.Сыры
            ИЛИ ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_СырыПлавленные Тогда
            ПредставлениеТара = ПолучитьТаруНоменклатуры(Ссылка.Номенклатура);
            СтрТранспортнаяТара = СтрТранспортнаяТара + ?(ЗначениеЗаполнено(СтрТранспортнаяТара), ", ", "") +
                "Транспортная тара - " + СокрЛП(ПредставлениеТара);

        ИначеЕсли ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.МолокоСухоеСТБ1856
            ИЛИ ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_СывороткаСухая
            ИЛИ ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_Пахта
            ИЛИ ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_КормовыеЦели Тогда
            СтрТранспортнаяТара = СтрТранспортнаяТара + ?(ЗначениеЗаполнено(СтрТранспортнаяТара), ", ", "") +
                "Вид транспортной тары - " + НРег(Тара) + " (масса нетто " + МассаНетто + " " + ЕдИзмМассыНетто + ")";

        ИначеЕсли ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_Творог
            ИЛИ ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_ТворогВесовой
            ИЛИ ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_Полуфабрикат Тогда
            ВесНоменклатуры = Ссылка.Номенклатура.Вес * 1000;
            ПотребительскаяТара = ?(ЗначениеЗаполнено(Ссылка.Номенклатура.ЮИ_ПотребительскаяТара.ПредставлениеДляПечати),
                Ссылка.Номенклатура.ЮИ_ПотребительскаяТара.ПредставлениеДляПечати,
                Ссылка.Номенклатура.ЮИ_ПотребительскаяТара.Наименование);
            Если ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_Творог Тогда
                ОбластьМассаНеттоТворог.Параметры.МассаНетто = "Масса нетто продукта в потребительской упаковке " +
                    СтрЗаменить(ВесНоменклатуры, Символы.НПП, "") + " г. Упаковано под вакуумом.";
                СтрТранспортнаяТара = СтрТранспортнаяТара + ?(ЗначениеЗаполнено(СтрТранспортнаяТара), ", ", "") +
                    "Вид потребительской упаковки - " + НРег(ПотребительскаяТара) + ", транспортная тара - " + НРег(Тара);
            ИначеЕсли ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_Полуфабрикат Тогда
                СтрТранспортнаяТара = СтрТранспортнаяТара + ?(ЗначениеЗаполнено(СтрТранспортнаяТара), ", ", "") +
                    "Упаковано под вакуумом. Вид упаковки - " + НРег(ПотребительскаяТара) + ", транспортная тара - ящик картонный";
            ИначеЕсли ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.ЮИ_ТворогВесовой Тогда
                СтрТранспортнаяТара = СтрТранспортнаяТара + ?(ЗначениеЗаполнено(СтрТранспортнаяТара), ", ", "") +
                    "Вид транспортной тары - ящик картонный";
            КонецЕсли;
        ИначеIf ВидКУ = Перечисления.ЛАБ_ВидыКачественныхУдостоверений.МаслоИзМасла Тогда
            СтрТранспортнаяТара = СтрТранспортнаяТара + ?(ЗначениеЗаполнено(СтрТранспортнаяТара), ", ", "") +
                "Транспортная тара - " + НРег(Тара);
        КонецЕсли;
    КонецЦикла;

    ОбластьТранспортнаяТара.Параметры.ТранспортнаяТара = СокрЛП(СтрТранспортнаяТара);
    ТабДокумент.Вывести(ОбластьТранспортнаяТара);

    // ======================
    // 15. ВЫВОДИМ ПОДВАЛ ДОКУМЕНТА
    // ======================
    Если ТипЗнч(ДокОснование) = Тип("ДокументСсылка.ЛАБ_КачественноеУдостоверение") Тогда
        ОбластьПодвалДокКачУд = Макет.ПолучитьОбласть("ПодвалДокКачУд");
        ОбластьПодвалДокКачУд.Параметры.Должность = НРег(ДанныеМОЛ.Должность);
        ОбластьПодвалДокКачУд.Параметры.Ответственный = СтрОтветственный;
        ТабДокумент.Вывести(ОбластьПодвалДокКачУд);
    ИначеЕсли ТипЗнч(ДокОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
        ОтветственныеЛица = ОбщегоНазначения.ОтветственныеЛица(ДокОснование.Организация, ДокОснование.Дата);
        ОбластьПодвалДок.Параметры.НачальникПроизводственнойЛаборатории =
            НРег(Строка(ОтветственныеЛица.ЮИ_ОтветственныйЗаКачествоПродукцииДолжность)) + " " +
            ОтветственныеЛица.ЮИ_ОтветственныйЗаКачествоПродукцииПредставление;
        ОбластьПодвалДок.Параметры.ГлавныйТехнолог =
            НРег(Строка(ОтветственныеЛица.ЮИ_ОтветственныйТехнологЗаКачествоПродукцииДолжность)) + " " +
            ОтветственныеЛица.