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