Ребят в общем столкнулась с такой формой, никогда подобного еще не делала. раньше в печать выводились только те договора , где была гоз=истина, теперь нужно чтобы выводились все договора, неважно гос или нет, но что-то не могу я докумекать..помогите плез

вот текст до, очень много непонятных переменных, счетчики зачем это нужно:(

```1c
    ЭтотОбъект.Записать();
    // будем брать заказ по текущей строке
    ДляРаспечаткиГоз.Очистить();
    ДляРаспечаткиИно.Очистить();

    ТекСтрока = ЭлементыФормы.Дефицит.ТекущиеДанные;
    НужныйЗаказ =СокрЛП(ЗаказДляРаспечатки);
    //Сообщить(НужныйЗаказ);

    // заносим детальки по этому заказу только по гоз договорам.
    ДляРаспечаткиГоз = Новый ТаблицаЗначений;
    ДляРаспечаткиГоз.Колонки.Добавить("Договор");
    ДляРаспечаткиГоз.Колонки.Добавить("Артикул");
    ДляРаспечаткиГоз.Колонки.Добавить("Наименование");
    ДляРаспечаткиГоз.Колонки.Добавить("Обозначение");
    ДляРаспечаткиГоз.Колонки.Добавить("Количество1");
    ДляРаспечаткиГоз.Колонки.Добавить("Количество2");
    ДляРаспечаткиГоз.Колонки.Добавить("Количество3");
    ДляРаспечаткиГоз.Колонки.Добавить("Дог");
    //Для ино договоров
    ДляРаспечаткиИно = Новый ТаблицаЗначений;
    ДляРаспечаткиИно.Колонки.Добавить("Договор");
    ДляРаспечаткиИно.Колонки.Добавить("Артикул");
    ДляРаспечаткиИно.Колонки.Добавить("Наименование");
    ДляРаспечаткиИно.Колонки.Добавить("Обозначение");
    ДляРаспечаткиИно.Колонки.Добавить("Количество1");
    ДляРаспечаткиИно.Колонки.Добавить("Количество2");
    ДляРаспечаткиИно.Колонки.Добавить("Количество3");

    ДляРаспечаткиКоличествоДог = Новый ТаблицаЗначений;
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Договор");
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Количество1");
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Количество2");
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Количество3");
    //

    //Последняя тз где все детальки по гоз и по ино.ино договоры будут пустыми
    ДляРаспечаткиОконч = Новый ТаблицаЗначений;
    ДляРаспечаткиОконч.Колонки.Добавить("Договор");
    ДляРаспечаткиОконч.Колонки.Добавить("Артикул");
    ДляРаспечаткиОконч.Колонки.Добавить("Наименование");
    ДляРаспечаткиОконч.Колонки.Добавить("Обозначение");
    ДляРаспечаткиОконч.Колонки.Добавить("Количество1");
    ДляРаспечаткиОконч.Колонки.Добавить("Количество2");
    ДляРаспечаткиОконч.Колонки.Добавить("Количество3");
    ДляРаспечаткиОконч.Колонки.Добавить("Использовано");
    ДляРаспечаткиОконч.Колонки.Добавить("Дог");

    Для каждого стр из Дефицит Цикл

    Если ЭлементыФормы.Цех402.Значение = Истина Тогда
    Если стр.Заказ = НужныйЗаказ И стр.Договор.ГОЗ = Истина И стр.ПризнакМеханическойОбработки = Истина Тогда
    НовСтр = ДляРаспечаткиГоз.Добавить();
    НовСтр.Договор = стр.Договор;
    НовСтр.Артикул = стр.Артикул;
    НовСтр.Наименование= стр.Наименование;
    НовСтр.Обозначение = стр.Обозначение;
    НовСтр.Количество1 = стр.ДефицитЭлементовЗаказа1;
    НовСтр.Количество2 = стр.ДефицитЭлементовЗаказа2;
    НовСтр.Количество3 = стр.ДефицитЭлементовЗаказа3;
    ИначеЕсли стр.Заказ = НужныйЗаказ И стр.Договор.ГОЗ = Ложь И стр.ПризнакМеханическойОбработки = Истина Тогда
    НовСтр = ДляРаспечаткиИно.Добавить();
    НовСтр.Договор = стр.Договор;
    НовСтр.Артикул = стр.Артикул;
    НовСтр.Наименование= стр.Наименование;
    НовСтр.Обозначение = стр.Обозначение;
    НовСтр.Количество1 = стр.ДефицитЭлементовЗаказа1;
    НовСтр.Количество2 = стр.ДефицитЭлементовЗаказа2;
    НовСтр.Количество3 = стр.ДефицитЭлементовЗаказа3;
    КонецЕсли;
    ИначеЕсли ЭлементыФормы.Цех406.Значение = Истина Тогда
    Если стр.Заказ = НужныйЗаказ И стр.Договор.ГОЗ = Истина И стр.ПризнакПолимернойОбработки = Истина Тогда
    НовСтр = ДляРаспечаткиГоз.Добавить();
    НовСтр.Договор = стр.Договор;
    НовСтр.Артикул = стр.Артикул;
    НовСтр.Наименование= стр.Наименование;
    НовСтр.Обозначение = стр.Обозначение;
    НовСтр.Количество1 = стр.ДефицитЭлементовЗаказа1;
    НовСтр.Количество2 = стр.ДефицитЭлементовЗаказа2;
    НовСтр.Количество3 = стр.ДефицитЭлементовЗаказа3;
    ИначеЕсли стр.Заказ = НужныйЗаказ И стр.Договор.ГОЗ = Ложь И стр.ПризнакПолимернойОбработки = Истина Тогда
    НовСтр = ДляРаспечаткиИно.Добавить();
    НовСтр.Договор = стр.Договор;
    НовСтр.Артикул = стр.Артикул;
    НовСтр.Наименование= стр.Наименование;
    НовСтр.Обозначение = стр.Обозначение;
    НовСтр.Количество1 = стр.ДефицитЭлементовЗаказа1;
    НовСтр.Количество2 = стр.ДефицитЭлементовЗаказа2;
    НовСтр.Количество3 = стр.ДефицитЭлементовЗаказа3;
    КонецЕсли;
    КонецЕсли;

    КонецЦикла;
    // отдельно выносим ино заказы в тз
    //т.к. в ино заказах договор не учитывается и мы сворачиваем все эл-ты по артикулу.Для гоз нужно учесть договоры там так не надо
    ДляРаспечаткиИно.Свернуть("Артикул,Наименование,Обозначение","Количество1,Количество2,Количество3");

    ЭлементыФормы.ДляРаспечаткиГоз.СоздатьКолонки();
    ЭлементыФормы.ДляРаспечаткиИно.СоздатьКолонки();

    ////эту тз выгружаем в другую где одно поле-договор и сворачиваем по одинаковым договорам.
    ////посмотрим на количество договоров гоз.чтобы знать сколько в макет добавлять
    Для каждого с из ДляРаспечаткиГоз Цикл
    НовСт = ДляРаспечаткиКоличествоДог.Добавить();
    НовСт.Договор = с.Договор;
    НовСт.Количество1 = с.Количество1;
    НовСт.Количество2 = с.Количество2;
    НовСт.Количество3 = с.Количество3;
    КонецЦикла;

    ДляРаспечаткиКоличествоДог.Свернуть("Договор","Количество1,Количество2,Количество3");
    ЭлементыФормы.ДляРаспечаткиКоличествоДог.СоздатьКолонки();

    // максимальное количество договров гоз в 1 распечатке 2

    ТабДок = Новый ТабличныйДокумент;
    МакетРаспечатки = Документы.ДефицитНаВесьНоменклатурныйПланВсеКатегории.ПолучитьМакет("Макет2");
    ШапкаМакета = МакетРаспечатки.ПолучитьОбласть("Шапка");

    Если ЭлементыФормы.Цех402.Значение = Истина Тогда
    ШапкаМакета.Параметры.Цех = "402" ;
    ИначеЕсли ЭлементыФормы.Цех406.Значение = Истина Тогда
    ШапкаМакета.Параметры.Цех = "406" ;
    КонецЕсли;
    ШапкаМакета.Параметры.Заказ = НужныйЗаказ ;

    Если ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ПервыйКвартал Тогда
    ШапкаМакета.Параметры.Квартал = 1 ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ВторойКвартал Тогда
    ШапкаМакета.Параметры.Квартал = 2 ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ТретийКвартал Тогда
    ШапкаМакета.Параметры.Квартал = 3 ;
    Иначе
    ШапкаМакета.Параметры.Квартал = 4 ;
    КонецЕсли;

    ШапкаМакета.Параметры.ДатаДокумента = Формат(Дата,"ДФ=dd/MM/yy") ;
    ТабДок.Вывести(ШапкаМакета);
    ОбщееКол1 = 0;
    ОбщееКол2 = 0;
    ОбщееКол3 = 0;
    Дог1 =" ;
    Дог2 =";
    СД = 0;
    Для каждого стр из ДляРаспечаткиКоличествоДог Цикл
    ОбщееКол1 = ОбщееКол1 + стр.Количество1;
    ОбщееКол2 = ОбщееКол2 + стр.Количество2;
    ОбщееКол3 = ОбщееКол3 + стр.Количество3;
    Если СД = 0 Тогда
    Дог1 = стр.Договор;
    Иначе
    Дог2 = стр.договор;
    КонецЕсли;
    СД = 1;
    КонецЦикла;

    сч1=0;
    сч2=0;
    сч3=0;
    //ПервыйДогЗанят = Ложь;
    Если ДляРаспечаткиКоличествоДог.Количество() =1 Тогда
    Для каждого ст из ДляРаспечаткиКоличествоДог Цикл
    //для первого месяца
    Если ст.Количество1 > 0 Тогда //когда 1 или 2 договора гоз
    Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки|ПервыйМесяцГОЗ");
    Если сч1 = 0 Тогда
    Колонки1Мес.Параметры.Договор1 = ст.Договор;
    //ПервыйДогЗанят = Истина;
    Иначе
    Колонки1Мес.Параметры.Договор2 = ст.Договор;
    КонецЕсли;
    сч1 = сч1+1;
    ИначеЕсли ст.Количество1 = 0 Тогда //когда в 1 месяце нет договора гоз
    Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки|ПервыйМесяцБезГОЗ");

    КонецЕсли;
    // для второго месяца
    Если ст.Количество2 > 0 Тогда
    Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки|ВторойМесяцГОЗ");
    Если сч2 = 0 Тогда
    Колонки2Мес.Параметры.Договор1 = ст.Договор;
    Иначе
    Колонки2Мес.Параметры.Договор2 = ст.Договор;
    КонецЕсли;
    сч2 = сч2+1;
    ИначеЕсли ст.Количество2 = 0 Тогда
    Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки|ВторойМесяцБезГОЗ");
    КонецЕсли;

    // для третьего
    Если ст.Количество3 > 0 Тогда
    Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки|ТретийМесяцГОЗ");
    Если сч3 = 0 Тогда
    Колонки3Мес.Параметры.Договор1 = ст.Договор;
    Иначе
    Колонки3Мес.Параметры.Договор2 = ст.Договор;
    КонецЕсли;

    сч3 = сч3+1;
    ИначеЕсли ст.Количество3 = 0 Тогда
    Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки|ТретийМесяцБезГОЗ");
    КонецЕсли;
    КонецЦикла;

    ИначеЕсли ДляРаспечаткиКоличествоДог.Количество() = 2 Тогда
    Если ОбщееКол1 > 0 Тогда
    // счДог = 0;
    //Для каждого ст из ДляРаспечаткиКоличествоДог Цикл
    // //для первого месяца
    // Н = счДог+1;
    // Если Н = 1 И ст.Количество1 > 0 Тогда
    Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки|ПервыйМесяцГОЗ");

    Колонки1Мес.Параметры.Договор1 = Дог1;
    // Иначе
    Колонки1Мес.Параметры.Договор2 = дог2;
    // КонецЕсли;
    сч1 = сч1+1;
    Иначе
    Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки|ПервыйМесяцБезГОЗ");
    КонецЕсли;

    Если ОбщееКол2 > 0 тогда
    Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки|ВторойМесяцГОЗ");

    Колонки2Мес.Параметры.Договор1 = Дог1;
    // Иначе
    Колонки2Мес.Параметры.Договор2 = дог2;
    сч2 = сч2+1;

    Иначе
    Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки|ВторойМесяцБезГОЗ");
    КонецЕсли;

    Если ОбщееКол3 > 0 тогда
    Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки|ТретийМесяцГОЗ");

    Колонки3Мес.Параметры.Договор1 = Дог1;
    // Иначе
    Колонки3Мес.Параметры.Договор2 = дог2;
    сч3 = сч3+1;

    Иначе
    Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки|ТретийМесяцБезГОЗ");
    КонецЕсли;

    //КонецЕсли;

    Иначе // если в тз по договорам гоз пусто выводим обычные колонки без договоров
    Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки|ПервыйМесяцБезГОЗ");
    Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки|ВторойМесяцБезГОЗ");
    Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки|ТретийМесяцБезГОЗ");

    КонецЕсли;

    Если ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ПервыйКвартал Тогда
    Колонки1Мес.Параметры.Месяц1 = "Январь" ;
    Колонки2Мес.Параметры.Месяц2 = "Февраль" ;
    Колонки3Мес.Параметры.Месяц3 = "Март" ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ВторойКвартал Тогда
    Колонки1Мес.Параметры.Месяц1 = "Апрель" ;
    Колонки2Мес.Параметры.Месяц2 = "Май" ;
    Колонки3Мес.Параметры.Месяц3 = "Июнь" ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ТретийКвартал Тогда
    Колонки1Мес.Параметры.Месяц1 = "Июль" ;
    Колонки2Мес.Параметры.Месяц2 = "Август" ;
    Колонки3Мес.Параметры.Месяц3 = "Сентябрь" ;
    Иначе
    Колонки1Мес.Параметры.Месяц1 = "Октябрь" ;
    Колонки2Мес.Параметры.Месяц2 = "Ноябрь" ;
    Колонки3Мес.Параметры.Месяц3 = "Декабрь" ;
    КонецЕсли;

    Если ЭлементыФормы.Цех402.Значение = Истина Тогда
    Колонки1Мес.Параметры.Цех = "402" ;
    Колонки2Мес.Параметры.Цех = "402" ;
    Колонки3Мес.Параметры.Цех = "402" ;
    ИначеЕсли ЭлементыФормы.Цех406.Значение = Истина Тогда
    Колонки1Мес.Параметры.Цех = "406" ;
    Колонки2Мес.Параметры.Цех = "406" ;
    Колонки3Мес.Параметры.Цех = "406" ;
    КонецЕсли;

    ТабДок.Вывести(Колонки1Мес);
    ТабДок.Присоединить(Колонки2Мес);//присоединяет справа
    ТабДок.Присоединить(Колонки3Мес);

    //Сообщить(сч1);
    с = 0;
    Для каждого стр из ДляРаспечаткиКоличествоДог цикл
    Для Каждого ст из ДляРаспечаткиГоз Цикл
    Если ст.Договор = стр.Договор Тогда
    ст.Дог = с+1;
    КонецЕсли;
    КонецЦикла;
    с = с+1;
    КонецЦикла;

    Для каждого стр из ДляРаспечаткиГоз Цикл
    НовСтр = ДляРаспечаткиОконч.Добавить();
    НовСтр.Договор = стр.Договор;
    НовСтр.Артикул = стр.Артикул;
    НовСтр.Наименование= стр.Наименование;
    НовСтр.Обозначение = стр.Обозначение;
    НовСтр.Количество1 = стр.Количество1;
    НовСтр.Количество2 = стр.Количество2;
    НовСтр.Количество3 = стр.Количество3;
    НовСтр.Дог = стр.Дог;
    НовСтр.Использовано = Ложь;
    КонецЦикла;
    Для каждого стр из ДляРаспечаткиИно Цикл
    НовСтр = ДляРаспечаткиОконч.Добавить();
    НовСтр.Договор = ";
    НовСтр.Артикул = стр.Артикул;
    НовСтр.Наименование= стр.Наименование;
    НовСтр.Обозначение = стр.Обозначение;
    НовСтр.Количество1 = стр.Количество1;
    НовСтр.Количество2 = стр.Количество2;
    НовСтр.Количество3 = стр.Количество3;
    НовСтр.Использовано = Ложь;

    КонецЦикла;
    ДляРаспечаткиОконч.Сортировать("Обозначение");
    ЭлементыФормы.ДляРаспечаткиОконч.СоздатьКолонки();

    //выводим строки.нужно еще определиться где какая по размеру пойдет.гоз или не гоз
    Для каждого строк из ДляРаспечаткиОконч Цикл
    Если строк.Использовано = Ложь Тогда
    // 1 месяц
    Если сч1 > 0 Тогда //Выводим строки для ГОЗ
    Строки = МакетРаспечатки.ПолучитьОбласть("Строка|СтрокаПервыйМесяцГОЗ");
    Иначе // строки без договоров
    Строки = МакетРаспечатки.ПолучитьОбласть("Строка|СтрокаПервыйМесяцБезГОЗ");
    КонецЕсли;
    // 2 месяц
    //Сообщить(сч2);
    Если сч2 > 0 Тогда //Выводим строки для ГОЗ
    Строки2 = МакетРаспечатки.ПолучитьОбласть("Строка|СтрокаВторойМесяцГОЗ");
    Иначе // строки без договоров
    Строки2 = МакетРаспечатки.ПолучитьОбласть("Строка|СтрокаВторойМесяцБезГОЗ");
    КонецЕсли;
    // 3 месяц
    Если сч3 > 0 Тогда //Выводим строки для ГОЗ
    Строки3 = МакетРаспечатки.ПолучитьОбласть("Строка|СтрокаТретийМесяцГОЗ");
    Иначе // строки без договоров
    Строки3 = МакетРаспечатки.ПолучитьОбласть("Строка|СтрокаТретийМесяцБезГОЗ");
    КонецЕсли;

    Строки.Параметры.Обозначение = СокрЛП(строк.Обозначение);
    Строки.Параметры.Наименование = СокрЛП(строк.Наименование);
    //через отбор будет проще
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Артикул", СокрЛП(строк.Артикул));
    НайденныеСтроки = ДляРаспечаткиОконч.НайтиСтроки(ПараметрыОтбора);
    КоличествоВсего1Мес = 0;
    КоличествоВсего2Мес = 0;
    КоличествоВсего3Мес = 0;
    Количество1Договор = 0;
    Количество2Договор = 0;
    Количество1Договор2 = 0;
    Количество2Договор2 = 0;
    Количество1Договор3 = 0;
    Количество2Договор3 = 0;

    Дата4081 = ";
    Дата4082 = ";
    Дата4083 = ";

    Дата4061 = ";
    Дата4062 = ";
    Дата4063 = ";

    Дата4021 = ";
    Дата4022 = ";
    Дата4023 = ";

    Для каждого ст из НайденныеСтроки Цикл
    КоличествоВсего1Мес = КоличествоВсего1Мес+ст.Количество1;
    КоличествоВсего2Мес = КоличествоВсего2Мес+ст.Количество2;
    КоличествоВсего3Мес = КоличествоВсего3Мес+ст.Количество3;

    Если ст.Договор <> " Тогда
    Если Число(ст.Дог) = 1 Тогда
    //Сообщить("уууу");
    Количество1Договор = Количество1Договор + ст.Количество1;
    Количество1Договор2 = Количество1Договор2 + ст.Количество2;
    Количество1Договор3 = Количество1Договор3 + ст.Количество3;

    ИначеЕсли Число(ст.Дог) = 2 Тогда
    //Сообщить("у22ууу");
    Количество2Договор = Количество2Договор + ст.Количество1;
    Количество2Договор2 = Количество2Договор2 + ст.Количество2;
    Количество2Договор3 = Количество2Договор3 + ст.Количество3;

    КонецЕсли;
    КонецЕсли;
    ст.Использовано = Истина;
    КонецЦикла;

    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Артикул", СокрЛП(строк.Артикул));
    НайденныеСтроки1 = Дефицит.НайтиСтроки(ПараметрыОтбора);

    Для каждого ст из НайденныеСтроки1 Цикл
    Если ст.Заказ = СокрЛП(ЗаказДляРаспечатки) Тогда
    //найти в тч ///!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!доделать
    Если ст.СрокСдачи4081Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа1 > 0 Тогда
    Дата4081 = ст.СрокСдачи4081Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4082Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4082 = ст.СрокСдачи4082Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4083Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4083 = ст.СрокСдачи4083Месяц;
    КонецЕсли;

    Если ЭлементыФормы.Цех402.Значение = Ложь Тогда

    Если ст.СрокСдачи4061Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа1 > 0 Тогда
    Дата4061 = ст.СрокСдачи4061Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4062Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4062 = ст.СрокСдачи4062Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4063Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа3 > 0 Тогда
    Дата4063 = ст.СрокСдачи4063Месяц;
    КонецЕсли;

    Иначе

    Если ст.СрокСдачи4021Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа1 > 0 Тогда
    Дата4021 = ст.СрокСдачи4021Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4022Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4022 = ст.СрокСдачи4022Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4023Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа3 > 0 Тогда
    Дата4023 = ст.СрокСдачи4023Месяц;
    КонецЕсли;
    КонецЕсли;

    КонецЕсли;
    КонецЦикла;

    Строки.Параметры.Необходимо1 = КоличествоВсего1Мес;
    Строки2.Параметры.Необходимо2 = КоличествоВсего2Мес;
    Строки3.Параметры.Необходимо3 = КоличествоВсего3Мес;

    Строки.Параметры.СрокСдачи4081 = Формат(Дата4081,"ДФ=dd.MM");
    Строки2.Параметры.СрокСдачи4082 = Формат(Дата4082,"ДФ=dd.MM");
    Строки3.Параметры.СрокСдачи4083 = Формат(Дата4083,"ДФ=dd.MM");

    Если ЭлементыФормы.Цех406.Значение = Истина Тогда
    Строки.Параметры.СрокСдачи4061 = Формат(Дата4061,"ДФ=dd.MM");
    Строки2.Параметры.СрокСдачи4062 = Формат(Дата4062,"ДФ=dd.MM");
    Строки3.Параметры.СрокСдачи4063 = Формат(Дата4063,"ДФ=dd.MM");
    Иначе
    Строки.Параметры.СрокСдачи4061 = Формат(Дата4021,"ДФ=dd.MM");
    Строки2.Параметры.СрокСдачи4062 = Формат(Дата4022,"ДФ=dd.MM");
    Строки3.Параметры.СрокСдачи4063 = Формат(Дата4023,"ДФ=dd.MM");
    КонецЕсли;

    Строки3.Параметры.НеобходимоНаКвартал = КоличествоВсего1Мес+КоличествоВсего2Мес+КоличествоВсего3Мес;
    //Сообщить(Количество1Договор);
    //Сообщить(Количество2Договор);

    Если сч1> 0 Тогда //в распечатке без гоз этого параметра нет
    Строки.Параметры.КолДог11 = Количество1Договор;
    Строки.Параметры.КолДог21 = Количество2Договор;
    КонецЕсли;

    Если сч2> 0 Тогда //в распечатке без гоз этого параметра нет
    Строки2.Параметры.КолДог12 = Количество1Договор2;
    Строки2.Параметры.КолДог22 = Количество2Договор2;
    КонецЕсли;

    Если сч3> 0 Тогда //в распечатке без гоз этого параметра нет
    Строки3.Параметры.КолДог13 = Количество1Договор3;
    Строки3.Параметры.КолДог23 = Количество2Договор3;
    КонецЕсли;

    ТабДок.Вывести(Строки);
    ТабДок.Присоединить(Строки2);
    ТабДок.Присоединить(Строки3);

    КонецЕсли;
    КонецЦикла;
    Подписи = МакетРаспечатки.ПолучитьОбласть("Подписи");
    ТабДок.Вывести(Подписи);

    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Истина;
    ТабДок.ПолеСлева = 0;
    ТабДок.ПолеСправа = 0;
    ТабДок.ПолеСверху = 0;
    ТабДок.ПолеСнизу = 0;
    ТабДок.АвтоМасштаб = Истина;
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДок.Показать();
```
---
```1c
    Процедура ДействияФормыПечать(Кнопка)

    ЭтотОбъект.Записать();
    // будем брать заказ по текущей строке
    ДляРаспечаткиГоз.Очистить();
    //ДляРаспечаткиИно.Очистить();

    ТекСтрока = ЭлементыФормы.Дефицит.ТекущиеДанные;
    НужныйЗаказ =СокрЛП(ЗаказДляРаспечатки);

    // заносим детальки по этому заказу только по гоз договорам.
    ДляРаспечаткиГоз = Новый ТаблицаЗначений;
    ДляРаспечаткиГоз.Колонки.Добавить("Договор");
    ДляРаспечаткиГоз.Колонки.Добавить("Артикул");
    ДляРаспечаткиГоз.Колонки.Добавить("Наименование");
    ДляРаспечаткиГоз.Колонки.Добавить("Обозначение");
    ДляРаспечаткиГоз.Колонки.Добавить("Количество1");
    ДляРаспечаткиГоз.Колонки.Добавить("Количество2");
    ДляРаспечаткиГоз.Колонки.Добавить("Количество3");
    ДляРаспечаткиГоз.Колонки.Добавить("Дог");

    ДляРаспечаткиКоличествоДог = Новый ТаблицаЗначений;
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Договор");
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Количество1");
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Количество2");
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Количество3");
    //

    //Последняя тз где все детальки по гоз и по ино.ино договоры будут пустыми
    ДляРаспечаткиОконч = Новый ТаблицаЗначений;
    ДляРаспечаткиОконч.Колонки.Добавить("Договор");
    ДляРаспечаткиОконч.Колонки.Добавить("Артикул");
    ДляРаспечаткиОконч.Колонки.Добавить("Наименование");
    ДляРаспечаткиОконч.Колонки.Добавить("Обозначение");
    ДляРаспечаткиОконч.Колонки.Добавить("Количество1");
    ДляРаспечаткиОконч.Колонки.Добавить("Количество2");
    ДляРаспечаткиОконч.Колонки.Добавить("Количество3");
    ДляРаспечаткиОконч.Колонки.Добавить("Использовано");
    ДляРаспечаткиОконч.Колонки.Добавить("Дог");

    Для каждого стр из Дефицит Цикл

    Если ЭлементыФормы.Цех402.Значение = Истина Тогда
    Если стр.Заказ = НужныйЗаказ И стр.ПризнакМеханическойОбработки = Истина Тогда
    НовСтр = ДляРаспечаткиГоз.Добавить();
    НовСтр.Договор = стр.Договор;
    НовСтр.Артикул = стр.Артикул;
    НовСтр.Наименование= стр.Наименование;
    НовСтр.Обозначение = стр.Обозначение;
    НовСтр.Количество1 = стр.ДефицитЭлементовЗаказа1;
    НовСтр.Количество2 = стр.ДефицитЭлементовЗаказа2;
    НовСтр.Количество3 = стр.ДефицитЭлементовЗаказа3;
    //Сообщить(НовСтр.договор);
    КонецЕсли;
    ИначеЕсли ЭлементыФормы.Цех406.Значение = Истина Тогда
    Если стр.Заказ = НужныйЗаказ И стр.ПризнакПолимернойОбработки = Истина Тогда
    НовСтр = ДляРаспечаткиГоз.Добавить();
    НовСтр.Договор = стр.Договор;
    НовСтр.Артикул = стр.Артикул;
    НовСтр.Наименование= стр.Наименование;
    НовСтр.Обозначение = стр.Обозначение;
    НовСтр.Количество1 = стр.ДефицитЭлементовЗаказа1;
    НовСтр.Количество2 = стр.ДефицитЭлементовЗаказа2;
    НовСтр.Количество3 = стр.ДефицитЭлементовЗаказа3;
    КонецЕсли;
    КонецЕсли;

    КонецЦикла;
    // отдельно выносим ино заказы в тз
    //т.к. в ино заказах договор не учитывается и мы сворачиваем все эл-ты по артикулу.Для гоз нужно учесть договоры там так не надо
    //ДляРаспечаткиИно.Свернуть("Артикул,Наименование,Обозначение","Количество1,Количество2,Количество3");

    ЭлементыФормы.ДляРаспечаткиГоз.СоздатьКолонки();

    ////эту тз выгружаем в другую где одно поле-договор и сворачиваем по одинаковым договорам.
    ////посмотрим на количество договоров гоз.чтобы знать сколько в макет добавлять
    Для каждого с из ДляРаспечаткиГоз Цикл
    НовСт = ДляРаспечаткиКоличествоДог.Добавить();
    НовСт.Договор = с.Договор;
    НовСт.Количество1 = с.Количество1;
    НовСт.Количество2 = с.Количество2;
    НовСт.Количество3 = с.Количество3;
    КонецЦикла;

    ДляРаспечаткиКоличествоДог.Свернуть("Договор","Количество1,Количество2,Количество3");
    ЭлементыФормы.ДляРаспечаткиКоличествоДог.СоздатьКолонки();

    // максимальное количество договров гоз в 1 распечатке 2

    ТабДок = Новый ТабличныйДокумент;
    МакетРаспечатки = Документы.ДефицитНаВесьНоменклатурныйПланВсеКатегории.ПолучитьМакет("График");
    ШапкаМакета = МакетРаспечатки.ПолучитьОбласть("Шапка");

    Если ЭлементыФормы.Цех402.Значение = Истина Тогда
    ШапкаМакета.Параметры.Цех = "402" ;
    ИначеЕсли ЭлементыФормы.Цех406.Значение = Истина Тогда
    ШапкаМакета.Параметры.Цех = "406" ;
    КонецЕсли;
    ШапкаМакета.Параметры.Заказ = НужныйЗаказ ;

    Если ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ПервыйКвартал Тогда
    ШапкаМакета.Параметры.Квартал = 1 ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ВторойКвартал Тогда
    ШапкаМакета.Параметры.Квартал = 2 ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ТретийКвартал Тогда
    ШапкаМакета.Параметры.Квартал = 3 ;
    Иначе
    ШапкаМакета.Параметры.Квартал = 4 ;
    КонецЕсли;

    ШапкаМакета.Параметры.ДатаДокумента = Формат(Дата,"ДФ=dd/MM/yy") ;
    ТабДок.Вывести(ШапкаМакета);

    ОбщееКол1 = 0;
    ОбщееКол2 = 0;
    ОбщееКол3 = 0;
    Дог1 =" ;
    СД = 0;
    Для каждого стр из ДляРаспечаткиКоличествоДог Цикл
    ОбщееКол1 = ОбщееКол1 + стр.Количество1;
    ОбщееКол2 = ОбщееКол2 + стр.Количество2;
    ОбщееКол3 = ОбщееКол3 + стр.Количество3;
    //Сообщить("общее кол"+ОбщееКол1+стр.договор);
    Если СД = 0 Тогда
    Дог1 = стр.Договор;
    //Сообщить(дог1);
    КонецЕсли;
    СД = 1;
    КонецЦикла;

    сч1=0;
    сч2=0;
    сч3=0;

    //Если ДляРаспечаткиКоличествоДог.Количество() =1 Тогда
    Для каждого ст из ДляРаспечаткиКоличествоДог Цикл
    //для первого месяца
    //Если ст.Количество1 > 0 Тогда //когда 1 или 2 договора гоз
    Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    Колонки1Мес.Параметры.Договор1 = ст.Договор;
    Сообщить(ст.договор);
    ТабДок.Вывести(Колонки1Мес);

    //ИначеЕсли ст.Количество1 = 0 Тогда //когда в 1 месяце нет договора гоз
    // Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки1Мес.Параметры.Договор1 = ст.Договор;
    //КонецЕсли;
    //// для второго месяца
    //Если ст.Количество2 > 0 Тогда
    // Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки2Мес.Параметры.Договор1 = ст.Договор;
    //ИначеЕсли ст.Количество2 = 0 Тогда
    // Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки2Мес.Параметры.Договор1 = ст.Договор;
    //КонецЕсли;
    //
    //// для третьего
    //Если ст.Количество3 > 0 Тогда
    // Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки3Мес.Параметры.Договор1 = ст.Договор;
    //ИначеЕсли ст.Количество3 = 0 Тогда
    // Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки3Мес.Параметры.Договор1 = ст.Договор;
    //КонецЕсли;
    КонецЦикла;

    //ИначеЕсли ДляРаспечаткиКоличествоДог.Количество() = 2 Тогда
    Если ОбщееКол1 > 0 Тогда
    счДог = 0;
    Для каждого ст из ДляРаспечаткиКоличествоДог Цикл
    //для первого месяца
    Н = счДог+1;
    Если Н = 1 И ст.Количество1 > 0 Тогда
    Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    Колонки1Мес.Параметры.Договор1 = Дог1;
    сч1 = сч1+1;
    КонецЕсли;

    //Если ОбщееКол2 > 0 тогда
    // Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки2Мес.Параметры.Договор1 = Дог1;
    // сч2 = сч2+1;
    //КонецЕсли;
    //
    //Если ОбщееКол3 > 0 тогда
    // Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки3Мес.Параметры.Договор1 = Дог1;
    // сч3 = сч3+1;
    //КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    // Иначе // если в тз по договорам гоз пусто выводим обычные колонки без договоров
    Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");

    //КонецЕсли;

    Если ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ПервыйКвартал Тогда
    Колонки1Мес.Параметры.Месяц1 = "Январь" ;
    Колонки2Мес.Параметры.Месяц2 = "Февраль" ;
    Колонки3Мес.Параметры.Месяц3 = "Март" ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ВторойКвартал Тогда
    Колонки1Мес.Параметры.Месяц1 = "Апрель" ;
    Колонки2Мес.Параметры.Месяц2 = "Май" ;
    Колонки3Мес.Параметры.Месяц3 = "Июнь" ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ТретийКвартал Тогда
    Колонки1Мес.Параметры.Месяц1 = "Июль" ;
    Колонки2Мес.Параметры.Месяц2 = "Август" ;
    Колонки3Мес.Параметры.Месяц3 = "Сентябрь" ;
    Иначе
    Колонки1Мес.Параметры.Месяц1 = "Октябрь" ;
    Колонки2Мес.Параметры.Месяц2 = "Ноябрь" ;
    Колонки3Мес.Параметры.Месяц3 = "Декабрь" ;
    КонецЕсли;

    Если ЭлементыФормы.Цех402.Значение = Истина Тогда
    Колонки1Мес.Параметры.Цех = "402" ;
    Колонки2Мес.Параметры.Цех = "402" ;
    Колонки3Мес.Параметры.Цех = "402" ;
    ИначеЕсли ЭлементыФормы.Цех406.Значение = Истина Тогда
    Колонки1Мес.Параметры.Цех = "406" ;
    Колонки2Мес.Параметры.Цех = "406" ;
    Колонки3Мес.Параметры.Цех = "406" ;
    КонецЕсли;

    ТабДок.Вывести(Колонки1Мес);
    //ТабДок.Присоединить(Колонки2Мес);//присоединяет справа
    //ТабДок.Присоединить(Колонки3Мес);

    //Сообщить(сч1);
    с = 0;
    Для каждого стр из ДляРаспечаткиКоличествоДог цикл
    Для Каждого ст из ДляРаспечаткиГоз Цикл
    Если ст.Договор = стр.Договор Тогда
    ст.Дог = с+1;
    КонецЕсли;
    КонецЦикла;
    с = с+1;
    КонецЦикла;

    Для каждого стр из ДляРаспечаткиГоз Цикл
    НовСтр = ДляРаспечаткиОконч.Добавить();
    НовСтр.Договор = стр.Договор;
    НовСтр.Артикул = стр.Артикул;
    НовСтр.Наименование= стр.Наименование;
    НовСтр.Обозначение = стр.Обозначение;
    НовСтр.Количество1 = стр.Количество1;
    НовСтр.Количество2 = стр.Количество2;
    НовСтр.Количество3 = стр.Количество3;
    НовСтр.Дог = стр.Дог;
    НовСтр.Использовано = Ложь;
    КонецЦикла;
    ДляРаспечаткиОконч.Сортировать("Обозначение");
    ЭлементыФормы.ДляРаспечаткиОконч.СоздатьКолонки();

    //выводим строки.нужно еще определиться где какая по размеру пойдет.гоз или не гоз
    Для каждого строк из ДляРаспечаткиОконч Цикл
    Если строк.Использовано = Ложь Тогда
    // 1 месяц
    Если сч1 > 0 Тогда //Выводим строки для ГОЗ
    Строки = МакетРаспечатки.ПолучитьОбласть("Строка");
    Иначе // строки без договоров
    Строки = МакетРаспечатки.ПолучитьОбласть("Строка");
    КонецЕсли;
    // 2 месяц
    //Сообщить(сч2);
    Если сч2 > 0 Тогда //Выводим строки для ГОЗ
    Строки2 = МакетРаспечатки.ПолучитьОбласть("Строка");
    Иначе // строки без договоров
    Строки2 = МакетРаспечатки.ПолучитьОбласть("Строка");
    КонецЕсли;
    // 3 месяц
    Если сч3 > 0 Тогда //Выводим строки для ГОЗ
    Строки3 = МакетРаспечатки.ПолучитьОбласть("Строка");
    Иначе // строки без договоров
    Строки3 = МакетРаспечатки.ПолучитьОбласть("Строка");
    КонецЕсли;

    Строки.Параметры.Обозначение = СокрЛП(строк.Обозначение);
    Строки.Параметры.Наименование = СокрЛП(строк.Наименование);
    //через отбор будет проще
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Артикул", СокрЛП(строк.Артикул));
    НайденныеСтроки = ДляРаспечаткиОконч.НайтиСтроки(ПараметрыОтбора);
    КоличествоВсего1Мес = 0;
    КоличествоВсего2Мес = 0;
    КоличествоВсего3Мес = 0;
    Количество1Договор = 0;
    Количество2Договор = 0;
    Количество1Договор2 = 0;
    Количество2Договор2 = 0;
    Количество1Договор3 = 0;
    Количество2Договор3 = 0;

    Дата4081 = ";
    Дата4082 = ";
    Дата4083 = ";

    Дата4061 = ";
    Дата4062 = ";
    Дата4063 = ";

    Дата4021 = ";
    Дата4022 = ";
    Дата4023 = ";

    Для каждого ст из НайденныеСтроки Цикл
    КоличествоВсего1Мес = КоличествоВсего1Мес+ст.Количество1;
    КоличествоВсего2Мес = КоличествоВсего2Мес+ст.Количество2;
    КоличествоВсего3Мес = КоличествоВсего3Мес+ст.Количество3;

    Если ст.Договор <> " Тогда
    Если Число(ст.Дог) = 1 Тогда
    Количество1Договор = Количество1Договор + ст.Количество1;
    Количество1Договор2 = Количество1Договор2 + ст.Количество2;
    Количество1Договор3 = Количество1Договор3 + ст.Количество3;

    ИначеЕсли Число(ст.Дог) = 2 Тогда
    Количество2Договор = Количество2Договор + ст.Количество1;
    Количество2Договор2 = Количество2Договор2 + ст.Количество2;
    Количество2Договор3 = Количество2Договор3 + ст.Количество3;

    КонецЕсли;
    КонецЕсли;
    ст.Использовано = Истина;
    КонецЦикла;

    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Артикул", СокрЛП(строк.Артикул));
    НайденныеСтроки1 = Дефицит.НайтиСтроки(ПараметрыОтбора);

    Для каждого ст из НайденныеСтроки1 Цикл
    Если ст.Заказ = СокрЛП(ЗаказДляРаспечатки) Тогда
    //найти в тч ///!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!доделать
    Если ст.СрокСдачи4081Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа1 > 0 Тогда
    Дата4081 = ст.СрокСдачи4081Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4082Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4082 = ст.СрокСдачи4082Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4083Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4083 = ст.СрокСдачи4083Месяц;
    КонецЕсли;

    Если ЭлементыФормы.Цех402.Значение = Ложь Тогда

    Если ст.СрокСдачи4061Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа1 > 0 Тогда
    Дата4061 = ст.СрокСдачи4061Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4062Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4062 = ст.СрокСдачи4062Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4063Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа3 > 0 Тогда
    Дата4063 = ст.СрокСдачи4063Месяц;
    КонецЕсли;

    Иначе

    Если ст.СрокСдачи4021Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа1 > 0 Тогда
    Дата4021 = ст.СрокСдачи4021Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4022Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4022 = ст.СрокСдачи4022Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4023Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа3 > 0 Тогда
    Дата4023 = ст.СрокСдачи4023Месяц;
    КонецЕсли;
    КонецЕсли;

    КонецЕсли;
    КонецЦикла;

    Строки.Параметры.СрокСдачи4081 = Формат(Дата4081,"ДФ=dd.MM");
    Строки2.Параметры.СрокСдачи4082 = Формат(Дата4082,"ДФ=dd.MM");
    Строки3.Параметры.СрокСдачи4083 = Формат(Дата4083,"ДФ=dd.MM");

    Если ЭлементыФормы.Цех406.Значение = Истина Тогда
    Строки.Параметры.СрокСдачи4061 = Формат(Дата4061,"ДФ=dd.MM");
    Строки2.Параметры.СрокСдачи4062 = Формат(Дата4062,"ДФ=dd.MM");
    Строки3.Параметры.СрокСдачи4063 = Формат(Дата4063,"ДФ=dd.MM");
    Иначе
    Строки.Параметры.СрокСдачи4061 = Формат(Дата4021,"ДФ=dd.MM");
    Строки2.Параметры.СрокСдачи4062 = Формат(Дата4022,"ДФ=dd.MM");
    Строки3.Параметры.СрокСдачи4063 = Формат(Дата4023,"ДФ=dd.MM");
    КонецЕсли;

    Если сч1> 0 Тогда //в распечатке без гоз этого параметра нет
    Строки.Параметры.КолДог11 = Количество1Договор;
    КонецЕсли;

    Если сч2> 0 Тогда //в распечатке без гоз этого параметра нет
    Строки2.Параметры.КолДог12 = Количество1Договор2;
    КонецЕсли;

    Если сч3> 0 Тогда //в распечатке без гоз этого параметра нет
    Строки3.Параметры.КолДог13 = Количество1Договор3;
    КонецЕсли;

    ТабДок.Вывести(Строки);
    ТабДок.Присоединить(Строки2);
    ТабДок.Присоединить(Строки3);

    КонецЕсли;
    КонецЦикла;
    Подписи = МакетРаспечатки.ПолучитьОбласть("Подписи");
    ТабДок.Вывести(Подписи);

    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Истина;
    ТабДок.ПолеСлева = 0;
    ТабДок.ПолеСправа = 0;
    ТабДок.ПолеСверху = 0;
    ТабДок.ПолеСнизу = 0;
    ТабДок.АвтоМасштаб = Истина;
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДок.Показать();

    КонецПроцедуры
```
---
Наверное так

```1c
    Если стр.Заказ = НужныйЗаказ И стр.ПризнакМеханическойОбработки = Истина Тогда
```

вместо

```1c
    Если стр.Заказ = НужныйЗаказ И стр.Договор.ГОЗ = Истина И стр.ПризнакМеханическойОбработки = Истина Тогда
```
---
а вот эти таблицы значений, они же получаются не нужны?
---
как это не нужны, если они все используются далее - для сортировки, свертки, отбора?
---
но получается же можно оставить только одну ТЗ не разделять на гоз и ино ?
---
```1c
    Процедура ДействияФормыПечать(Кнопка)

    ЭтотОбъект.Записать();
    // будем брать заказ по текущей строке
    ДляРаспечаткиГоз.Очистить();
    //ДляРаспечаткиИно.Очистить();

    ТекСтрока = ЭлементыФормы.Дефицит.ТекущиеДанные;
    НужныйЗаказ =СокрЛП(ЗаказДляРаспечатки);

    // заносим детальки по этому заказу только по гоз договорам.
    ДляРаспечаткиГоз = Новый ТаблицаЗначений;
    ДляРаспечаткиГоз.Колонки.Добавить("Договор");
    ДляРаспечаткиГоз.Колонки.Добавить("Артикул");
    ДляРаспечаткиГоз.Колонки.Добавить("Наименование");
    ДляРаспечаткиГоз.Колонки.Добавить("Обозначение");
    ДляРаспечаткиГоз.Колонки.Добавить("Количество1");
    ДляРаспечаткиГоз.Колонки.Добавить("Количество2");
    ДляРаспечаткиГоз.Колонки.Добавить("Количество3");
    ДляРаспечаткиГоз.Колонки.Добавить("Дог");

    ДляРаспечаткиКоличествоДог = Новый ТаблицаЗначений;
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Договор");
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Количество1");
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Количество2");
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Количество3");
    //

    //Последняя тз где все детальки по гоз и по ино.ино договоры будут пустыми
    ДляРаспечаткиОконч = Новый ТаблицаЗначений;
    ДляРаспечаткиОконч.Колонки.Добавить("Договор");
    ДляРаспечаткиОконч.Колонки.Добавить("Артикул");
    ДляРаспечаткиОконч.Колонки.Добавить("Наименование");
    ДляРаспечаткиОконч.Колонки.Добавить("Обозначение");
    ДляРаспечаткиОконч.Колонки.Добавить("Количество1");
    ДляРаспечаткиОконч.Колонки.Добавить("Количество2");
    ДляРаспечаткиОконч.Колонки.Добавить("Количество3");
    ДляРаспечаткиОконч.Колонки.Добавить("Использовано");
    ДляРаспечаткиОконч.Колонки.Добавить("Дог");

    Для каждого стр из Дефицит Цикл

    Если ЭлементыФормы.Цех402.Значение = Истина Тогда
    Если стр.Заказ = НужныйЗаказ И стр.ПризнакМеханическойОбработки = Истина Тогда
    НовСтр = ДляРаспечаткиГоз.Добавить();
    НовСтр.Договор = стр.Договор;
    НовСтр.Артикул = стр.Артикул;
    НовСтр.Наименование= стр.Наименование;
    НовСтр.Обозначение = стр.Обозначение;
    НовСтр.Количество1 = стр.ДефицитЭлементовЗаказа1;
    НовСтр.Количество2 = стр.ДефицитЭлементовЗаказа2;
    НовСтр.Количество3 = стр.ДефицитЭлементовЗаказа3;
    //Сообщить(НовСтр.договор);
    КонецЕсли;
    ИначеЕсли ЭлементыФормы.Цех406.Значение = Истина Тогда
    Если стр.Заказ = НужныйЗаказ И стр.ПризнакПолимернойОбработки = Истина Тогда
    НовСтр = ДляРаспечаткиГоз.Добавить();
    НовСтр.Договор = стр.Договор;
    НовСтр.Артикул = стр.Артикул;
    НовСтр.Наименование= стр.Наименование;
    НовСтр.Обозначение = стр.Обозначение;
    НовСтр.Количество1 = стр.ДефицитЭлементовЗаказа1;
    НовСтр.Количество2 = стр.ДефицитЭлементовЗаказа2;
    НовСтр.Количество3 = стр.ДефицитЭлементовЗаказа3;
    КонецЕсли;
    КонецЕсли;

    КонецЦикла;
    // отдельно выносим ино заказы в тз
    //т.к. в ино заказах договор не учитывается и мы сворачиваем все эл-ты по артикулу.Для гоз нужно учесть договоры там так не надо
    //ДляРаспечаткиИно.Свернуть("Артикул,Наименование,Обозначение","Количество1,Количество2,Количество3");

    ЭлементыФормы.ДляРаспечаткиГоз.СоздатьКолонки();

    ////эту тз выгружаем в другую где одно поле-договор и сворачиваем по одинаковым договорам.
    ////посмотрим на количество договоров гоз.чтобы знать сколько в макет добавлять
    Для каждого с из ДляРаспечаткиГоз Цикл
    НовСт = ДляРаспечаткиКоличествоДог.Добавить();
    НовСт.Договор = с.Договор;
    НовСт.Количество1 = с.Количество1;
    НовСт.Количество2 = с.Количество2;
    НовСт.Количество3 = с.Количество3;
    КонецЦикла;

    ДляРаспечаткиКоличествоДог.Свернуть("Договор","Количество1,Количество2,Количество3");
    ЭлементыФормы.ДляРаспечаткиКоличествоДог.СоздатьКолонки();

    // максимальное количество договров гоз в 1 распечатке 2

    ТабДок = Новый ТабличныйДокумент;
    МакетРаспечатки = Документы.ДефицитНаВесьНоменклатурныйПланВсеКатегории.ПолучитьМакет("График");
    ШапкаМакета = МакетРаспечатки.ПолучитьОбласть("Шапка");

    Если ЭлементыФормы.Цех402.Значение = Истина Тогда
    ШапкаМакета.Параметры.Цех = "402" ;
    ИначеЕсли ЭлементыФормы.Цех406.Значение = Истина Тогда
    ШапкаМакета.Параметры.Цех = "406" ;
    КонецЕсли;
    ШапкаМакета.Параметры.Заказ = НужныйЗаказ ;

    Если ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ПервыйКвартал Тогда
    ШапкаМакета.Параметры.Квартал = 1 ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ВторойКвартал Тогда
    ШапкаМакета.Параметры.Квартал = 2 ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ТретийКвартал Тогда
    ШапкаМакета.Параметры.Квартал = 3 ;
    Иначе
    ШапкаМакета.Параметры.Квартал = 4 ;
    КонецЕсли;

    ШапкаМакета.Параметры.ДатаДокумента = Формат(Дата,"ДФ=dd/MM/yy") ;
    ТабДок.Вывести(ШапкаМакета);

    ОбщееКол1 = 0;
    ОбщееКол2 = 0;
    ОбщееКол3 = 0;
    Дог1 =" ;
    СД = 0;
    Для каждого стр из ДляРаспечаткиКоличествоДог Цикл
    ОбщееКол1 = ОбщееКол1 + стр.Количество1;
    ОбщееКол2 = ОбщееКол2 + стр.Количество2;
    ОбщееКол3 = ОбщееКол3 + стр.Количество3;
    //Сообщить("общее кол"+ОбщееКол1+стр.договор);
    Если СД = 0 Тогда
    Дог1 = стр.Договор;
    //Сообщить(дог1);
    КонецЕсли;
    СД = 1;
    КонецЦикла;

    сч1=0;
    сч2=0;
    сч3=0;

    //Если ДляРаспечаткиКоличествоДог.Количество() =1 Тогда
    Для каждого ст из ДляРаспечаткиКоличествоДог Цикл
    //для первого месяца
    //Если ст.Количество1 > 0 Тогда //когда 1 или 2 договора гоз
    Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    Колонки1Мес.Параметры.Договор1 = ст.Договор;
    Сообщить(ст.договор);
    ТабДок.Вывести(Колонки1Мес);

    //ИначеЕсли ст.Количество1 = 0 Тогда //когда в 1 месяце нет договора гоз
    // Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки1Мес.Параметры.Договор1 = ст.Договор;
    //КонецЕсли;
    //// для второго месяца
    //Если ст.Количество2 > 0 Тогда
    // Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки2Мес.Параметры.Договор1 = ст.Договор;
    //ИначеЕсли ст.Количество2 = 0 Тогда
    // Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки2Мес.Параметры.Договор1 = ст.Договор;
    //КонецЕсли;
    //
    //// для третьего
    //Если ст.Количество3 > 0 Тогда
    // Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки3Мес.Параметры.Договор1 = ст.Договор;
    //ИначеЕсли ст.Количество3 = 0 Тогда
    // Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки3Мес.Параметры.Договор1 = ст.Договор;
    //КонецЕсли;
    КонецЦикла;

    //ИначеЕсли ДляРаспечаткиКоличествоДог.Количество() = 2 Тогда
    Если ОбщееКол1 > 0 Тогда
    счДог = 0;
    Для каждого ст из ДляРаспечаткиКоличествоДог Цикл
    //для первого месяца
    Н = счДог+1;
    Если Н = 1 И ст.Количество1 > 0 Тогда
    Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    Колонки1Мес.Параметры.Договор1 = Дог1;
    сч1 = сч1+1;
    КонецЕсли;

    //Если ОбщееКол2 > 0 тогда
    // Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки2Мес.Параметры.Договор1 = Дог1;
    // сч2 = сч2+1;
    //КонецЕсли;
    //
    //Если ОбщееКол3 > 0 тогда
    // Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки3Мес.Параметры.Договор1 = Дог1;
    // сч3 = сч3+1;
    //КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    // Иначе // если в тз по договорам гоз пусто выводим обычные колонки без договоров
    Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");

    //КонецЕсли;

    Если ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ПервыйКвартал Тогда
    Колонки1Мес.Параметры.Месяц1 = "Январь" ;
    Колонки2Мес.Параметры.Месяц2 = "Февраль" ;
    Колонки3Мес.Параметры.Месяц3 = "Март" ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ВторойКвартал Тогда
    Колонки1Мес.Параметры.Месяц1 = "Апрель" ;
    Колонки2Мес.Параметры.Месяц2 = "Май" ;
    Колонки3Мес.Параметры.Месяц3 = "Июнь" ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ТретийКвартал Тогда
    Колонки1Мес.Параметры.Месяц1 = "Июль" ;
    Колонки2Мес.Параметры.Месяц2 = "Август" ;
    Колонки3Мес.Параметры.Месяц3 = "Сентябрь" ;
    Иначе
    Колонки1Мес.Параметры.Месяц1 = "Октябрь" ;
    Колонки2Мес.Параметры.Месяц2 = "Ноябрь" ;
    Колонки3Мес.Параметры.Месяц3 = "Декабрь" ;
    КонецЕсли;

    Если ЭлементыФормы.Цех402.Значение = Истина Тогда
    Колонки1Мес.Параметры.Цех = "402" ;
    Колонки2Мес.Параметры.Цех = "402" ;
    Колонки3Мес.Параметры.Цех = "402" ;
    ИначеЕсли ЭлементыФормы.Цех406.Значение = Истина Тогда
    Колонки1Мес.Параметры.Цех = "406" ;
    Колонки2Мес.Параметры.Цех = "406" ;
    Колонки3Мес.Параметры.Цех = "406" ;
    КонецЕсли;

    ТабДок.Вывести(Колонки1Мес);
    //ТабДок.Присоединить(Колонки2Мес);//присоединяет справа
    //ТабДок.Присоединить(Колонки3Мес);

    //Сообщить(сч1);
    с = 0;
    Для каждого стр из ДляРаспечаткиКоличествоДог цикл
    Для Каждого ст из ДляРаспечаткиГоз Цикл
    Если ст.Договор = стр.Договор Тогда
    ст.Дог = с+1;
    КонецЕсли;
    КонецЦикла;
    с = с+1;
    КонецЦикла;

    Для каждого стр из ДляРаспечаткиГоз Цикл
    НовСтр = ДляРаспечаткиОконч.Добавить();
    НовСтр.Договор = стр.Договор;
    НовСтр.Артикул = стр.Артикул;
    НовСтр.Наименование= стр.Наименование;
    НовСтр.Обозначение = стр.Обозначение;
    НовСтр.Количество1 = стр.Количество1;
    НовСтр.Количество2 = стр.Количество2;
    НовСтр.Количество3 = стр.Количество3;
    НовСтр.Дог = стр.Дог;
    НовСтр.Использовано = Ложь;
    КонецЦикла;
    ДляРаспечаткиОконч.Сортировать("Обозначение");
    ЭлементыФормы.ДляРаспечаткиОконч.СоздатьКолонки();

    //выводим строки.нужно еще определиться где какая по размеру пойдет.гоз или не гоз
    Для каждого строк из ДляРаспечаткиОконч Цикл
    Если строк.Использовано = Ложь Тогда
    // 1 месяц
    Если сч1 > 0 Тогда //Выводим строки для ГОЗ
    Строки = МакетРаспечатки.ПолучитьОбласть("Строка");
    Иначе // строки без договоров
    Строки = МакетРаспечатки.ПолучитьОбласть("Строка");
    КонецЕсли;
    // 2 месяц
    //Сообщить(сч2);
    Если сч2 > 0 Тогда //Выводим строки для ГОЗ
    Строки2 = МакетРаспечатки.ПолучитьОбласть("Строка");
    Иначе // строки без договоров
    Строки2 = МакетРаспечатки.ПолучитьОбласть("Строка");
    КонецЕсли;
    // 3 месяц
    Если сч3 > 0 Тогда //Выводим строки для ГОЗ
    Строки3 = МакетРаспечатки.ПолучитьОбласть("Строка");
    Иначе // строки без договоров
    Строки3 = МакетРаспечатки.ПолучитьОбласть("Строка");
    КонецЕсли;

    Строки.Параметры.Обозначение = СокрЛП(строк.Обозначение);
    Строки.Параметры.Наименование = СокрЛП(строк.Наименование);
    //через отбор будет проще
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Артикул", СокрЛП(строк.Артикул));
    НайденныеСтроки = ДляРаспечаткиОконч.НайтиСтроки(ПараметрыОтбора);
    КоличествоВсего1Мес = 0;
    КоличествоВсего2Мес = 0;
    КоличествоВсего3Мес = 0;
    Количество1Договор = 0;
    Количество2Договор = 0;
    Количество1Договор2 = 0;
    Количество2Договор2 = 0;
    Количество1Договор3 = 0;
    Количество2Договор3 = 0;

    Дата4081 = ";
    Дата4082 = ";
    Дата4083 = ";

    Дата4061 = ";
    Дата4062 = ";
    Дата4063 = ";

    Дата4021 = ";
    Дата4022 = ";
    Дата4023 = ";

    Для каждого ст из НайденныеСтроки Цикл
    КоличествоВсего1Мес = КоличествоВсего1Мес+ст.Количество1;
    КоличествоВсего2Мес = КоличествоВсего2Мес+ст.Количество2;
    КоличествоВсего3Мес = КоличествоВсего3Мес+ст.Количество3;

    Если ст.Договор <> " Тогда
    Если Число(ст.Дог) = 1 Тогда
    Количество1Договор = Количество1Договор + ст.Количество1;
    Количество1Договор2 = Количество1Договор2 + ст.Количество2;
    Количество1Договор3 = Количество1Договор3 + ст.Количество3;

    ИначеЕсли Число(ст.Дог) = 2 Тогда
    Количество2Договор = Количество2Договор + ст.Количество1;
    Количество2Договор2 = Количество2Договор2 + ст.Количество2;
    Количество2Договор3 = Количество2Договор3 + ст.Количество3;

    КонецЕсли;
    КонецЕсли;
    ст.Использовано = Истина;
    КонецЦикла;

    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Артикул", СокрЛП(строк.Артикул));
    НайденныеСтроки1 = Дефицит.НайтиСтроки(ПараметрыОтбора);

    Для каждого ст из НайденныеСтроки1 Цикл
    Если ст.Заказ = СокрЛП(ЗаказДляРаспечатки) Тогда
    //найти в тч ///!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!доделать
    Если ст.СрокСдачи4081Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа1 > 0 Тогда
    Дата4081 = ст.СрокСдачи4081Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4082Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4082 = ст.СрокСдачи4082Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4083Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4083 = ст.СрокСдачи4083Месяц;
    КонецЕсли;

    Если ЭлементыФормы.Цех402.Значение = Ложь Тогда

    Если ст.СрокСдачи4061Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа1 > 0 Тогда
    Дата4061 = ст.СрокСдачи4061Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4062Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4062 = ст.СрокСдачи4062Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4063Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа3 > 0 Тогда
    Дата4063 = ст.СрокСдачи4063Месяц;
    КонецЕсли;

    Иначе

    Если ст.СрокСдачи4021Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа1 > 0 Тогда
    Дата4021 = ст.СрокСдачи4021Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4022Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4022 = ст.СрокСдачи4022Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4023Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа3 > 0 Тогда
    Дата4023 = ст.СрокСдачи4023Месяц;
    КонецЕсли;
    КонецЕсли;

    КонецЕсли;
    КонецЦикла;

    Строки.Параметры.СрокСдачи4081 = Формат(Дата4081,"ДФ=dd.MM");
    Строки2.Параметры.СрокСдачи4082 = Формат(Дата4082,"ДФ=dd.MM");
    Строки3.Параметры.СрокСдачи4083 = Формат(Дата4083,"ДФ=dd.MM");

    Если ЭлементыФормы.Цех406.Значение = Истина Тогда
    Строки.Параметры.СрокСдачи4061 = Формат(Дата4061,"ДФ=dd.MM");
    Строки2.Параметры.СрокСдачи4062 = Формат(Дата4062,"ДФ=dd.MM");
    Строки3.Параметры.СрокСдачи4063 = Формат(Дата4063,"ДФ=dd.MM");
    Иначе
    Строки.Параметры.СрокСдачи4061 = Формат(Дата4021,"ДФ=dd.MM");
    Строки2.Параметры.СрокСдачи4062 = Формат(Дата4022,"ДФ=dd.MM");
    Строки3.Параметры.СрокСдачи4063 = Формат(Дата4023,"ДФ=dd.MM");
    КонецЕсли;

    Если сч1> 0 Тогда //в распечатке без гоз этого параметра нет
    Строки.Параметры.КолДог11 = Количество1Договор;
    КонецЕсли;

    Если сч2> 0 Тогда //в распечатке без гоз этого параметра нет
    Строки2.Параметры.КолДог12 = Количество1Договор2;
    КонецЕсли;

    Если сч3> 0 Тогда //в распечатке без гоз этого параметра нет
    Строки3.Параметры.КолДог13 = Количество1Договор3;
    КонецЕсли;

    ТабДок.Вывести(Строки);
    ТабДок.Присоединить(Строки2);
    ТабДок.Присоединить(Строки3);

    КонецЕсли;
    КонецЦикла;
    Подписи = МакетРаспечатки.ПолучитьОбласть("Подписи");
    ТабДок.Вывести(Подписи);

    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Истина;
    ТабДок.ПолеСлева = 0;
    ТабДок.ПолеСправа = 0;
    ТабДок.ПолеСверху = 0;
    ТабДок.ПолеСнизу = 0;
    ТабДок.АвтоМасштаб = Истина;
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДок.Показать();

    КонецПроцедуры
```

вот как получается:(
---
```1c
    Процедура ДействияФормыПечать(Кнопка)

    ЭтотОбъект.Записать();
    // будем брать заказ по текущей строке
    ДляРаспечаткиГоз.Очистить();
    //ДляРаспечаткиИно.Очистить();

    ТекСтрока = ЭлементыФормы.Дефицит.ТекущиеДанные;
    НужныйЗаказ =СокрЛП(ЗаказДляРаспечатки);

    // заносим детальки по этому заказу только по гоз договорам.
    ДляРаспечаткиГоз = Новый ТаблицаЗначений;
    ДляРаспечаткиГоз.Колонки.Добавить("Договор");
    ДляРаспечаткиГоз.Колонки.Добавить("Артикул");
    ДляРаспечаткиГоз.Колонки.Добавить("Наименование");
    ДляРаспечаткиГоз.Колонки.Добавить("Обозначение");
    ДляРаспечаткиГоз.Колонки.Добавить("Количество1");
    ДляРаспечаткиГоз.Колонки.Добавить("Количество2");
    ДляРаспечаткиГоз.Колонки.Добавить("Количество3");
    ДляРаспечаткиГоз.Колонки.Добавить("Дог");

    ДляРаспечаткиКоличествоДог = Новый ТаблицаЗначений;
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Договор");
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Количество1");
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Количество2");
    ДляРаспечаткиКоличествоДог.Колонки.Добавить("Количество3");
    //

    //Последняя тз где все детальки по гоз и по ино.ино договоры будут пустыми
    ДляРаспечаткиОконч = Новый ТаблицаЗначений;
    ДляРаспечаткиОконч.Колонки.Добавить("Договор");
    ДляРаспечаткиОконч.Колонки.Добавить("Артикул");
    ДляРаспечаткиОконч.Колонки.Добавить("Наименование");
    ДляРаспечаткиОконч.Колонки.Добавить("Обозначение");
    ДляРаспечаткиОконч.Колонки.Добавить("Количество1");
    ДляРаспечаткиОконч.Колонки.Добавить("Количество2");
    ДляРаспечаткиОконч.Колонки.Добавить("Количество3");
    ДляРаспечаткиОконч.Колонки.Добавить("Использовано");
    ДляРаспечаткиОконч.Колонки.Добавить("Дог");

    Для каждого стр из Дефицит Цикл

    Если ЭлементыФормы.Цех402.Значение = Истина Тогда
    Если стр.Заказ = НужныйЗаказ И стр.ПризнакМеханическойОбработки = Истина Тогда
    НовСтр = ДляРаспечаткиГоз.Добавить();
    НовСтр.Договор = стр.Договор;
    НовСтр.Артикул = стр.Артикул;
    НовСтр.Наименование= стр.Наименование;
    НовСтр.Обозначение = стр.Обозначение;
    НовСтр.Количество1 = стр.ДефицитЭлементовЗаказа1;
    НовСтр.Количество2 = стр.ДефицитЭлементовЗаказа2;
    НовСтр.Количество3 = стр.ДефицитЭлементовЗаказа3;
    //Сообщить(НовСтр.договор);
    КонецЕсли;
    ИначеЕсли ЭлементыФормы.Цех406.Значение = Истина Тогда
    Если стр.Заказ = НужныйЗаказ И стр.ПризнакПолимернойОбработки = Истина Тогда
    НовСтр = ДляРаспечаткиГоз.Добавить();
    НовСтр.Договор = стр.Договор;
    НовСтр.Артикул = стр.Артикул;
    НовСтр.Наименование= стр.Наименование;
    НовСтр.Обозначение = стр.Обозначение;
    НовСтр.Количество1 = стр.ДефицитЭлементовЗаказа1;
    НовСтр.Количество2 = стр.ДефицитЭлементовЗаказа2;
    НовСтр.Количество3 = стр.ДефицитЭлементовЗаказа3;
    КонецЕсли;
    КонецЕсли;

    КонецЦикла;
    // отдельно выносим ино заказы в тз
    //т.к. в ино заказах договор не учитывается и мы сворачиваем все эл-ты по артикулу.Для гоз нужно учесть договоры там так не надо
    //ДляРаспечаткиИно.Свернуть("Артикул,Наименование,Обозначение","Количество1,Количество2,Количество3");

    ЭлементыФормы.ДляРаспечаткиГоз.СоздатьКолонки();

    ////эту тз выгружаем в другую где одно поле-договор и сворачиваем по одинаковым договорам.
    ////посмотрим на количество договоров гоз.чтобы знать сколько в макет добавлять
    Для каждого с из ДляРаспечаткиГоз Цикл
    НовСт = ДляРаспечаткиКоличествоДог.Добавить();
    НовСт.Договор = с.Договор;
    НовСт.Количество1 = с.Количество1;
    НовСт.Количество2 = с.Количество2;
    НовСт.Количество3 = с.Количество3;
    КонецЦикла;

    ДляРаспечаткиКоличествоДог.Свернуть("Договор","Количество1,Количество2,Количество3");
    ЭлементыФормы.ДляРаспечаткиКоличествоДог.СоздатьКолонки();

    // максимальное количество договров гоз в 1 распечатке 2

    ТабДок = Новый ТабличныйДокумент;
    МакетРаспечатки = Документы.ДефицитНаВесьНоменклатурныйПланВсеКатегории.ПолучитьМакет("График");
    ШапкаМакета = МакетРаспечатки.ПолучитьОбласть("Шапка");

    Если ЭлементыФормы.Цех402.Значение = Истина Тогда
    ШапкаМакета.Параметры.Цех = "402" ;
    ИначеЕсли ЭлементыФормы.Цех406.Значение = Истина Тогда
    ШапкаМакета.Параметры.Цех = "406" ;
    КонецЕсли;
    ШапкаМакета.Параметры.Заказ = НужныйЗаказ ;

    Если ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ПервыйКвартал Тогда
    ШапкаМакета.Параметры.Квартал = 1 ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ВторойКвартал Тогда
    ШапкаМакета.Параметры.Квартал = 2 ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ТретийКвартал Тогда
    ШапкаМакета.Параметры.Квартал = 3 ;
    Иначе
    ШапкаМакета.Параметры.Квартал = 4 ;
    КонецЕсли;

    ШапкаМакета.Параметры.ДатаДокумента = Формат(Дата,"ДФ=dd/MM/yy") ;
    ТабДок.Вывести(ШапкаМакета);

    ОбщееКол1 = 0;
    ОбщееКол2 = 0;
    ОбщееКол3 = 0;
    Дог1 =" ;
    СД = 0;
    Для каждого стр из ДляРаспечаткиКоличествоДог Цикл
    ОбщееКол1 = ОбщееКол1 + стр.Количество1;
    ОбщееКол2 = ОбщееКол2 + стр.Количество2;
    ОбщееКол3 = ОбщееКол3 + стр.Количество3;
    //Сообщить("общее кол"+ОбщееКол1+стр.договор);
    Если СД = 0 Тогда
    Дог1 = стр.Договор;
    //Сообщить(дог1);
    КонецЕсли;
    СД = 1;
    КонецЦикла;

    сч1=0;
    сч2=0;
    сч3=0;

    //Если ДляРаспечаткиКоличествоДог.Количество() =1 Тогда
    Для каждого ст из ДляРаспечаткиКоличествоДог Цикл
    //для первого месяца
    //Если ст.Количество1 > 0 Тогда //когда 1 или 2 договора гоз
    Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    Колонки1Мес.Параметры.Договор1 = ст.Договор;
    Сообщить(ст.договор);
    ТабДок.Вывести(Колонки1Мес);

    //ИначеЕсли ст.Количество1 = 0 Тогда //когда в 1 месяце нет договора гоз
    // Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки1Мес.Параметры.Договор1 = ст.Договор;
    //КонецЕсли;
    //// для второго месяца
    //Если ст.Количество2 > 0 Тогда
    // Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки2Мес.Параметры.Договор1 = ст.Договор;
    //ИначеЕсли ст.Количество2 = 0 Тогда
    // Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки2Мес.Параметры.Договор1 = ст.Договор;
    //КонецЕсли;
    //
    //// для третьего
    //Если ст.Количество3 > 0 Тогда
    // Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки3Мес.Параметры.Договор1 = ст.Договор;
    //ИначеЕсли ст.Количество3 = 0 Тогда
    // Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки3Мес.Параметры.Договор1 = ст.Договор;
    //КонецЕсли;
    КонецЦикла;

    //ИначеЕсли ДляРаспечаткиКоличествоДог.Количество() = 2 Тогда
    Если ОбщееКол1 > 0 Тогда
    счДог = 0;
    Для каждого ст из ДляРаспечаткиКоличествоДог Цикл
    //для первого месяца
    Н = счДог+1;
    Если Н = 1 И ст.Количество1 > 0 Тогда
    Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    Колонки1Мес.Параметры.Договор1 = Дог1;
    сч1 = сч1+1;
    КонецЕсли;

    //Если ОбщееКол2 > 0 тогда
    // Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки2Мес.Параметры.Договор1 = Дог1;
    // сч2 = сч2+1;
    //КонецЕсли;
    //
    //Если ОбщееКол3 > 0 тогда
    // Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    // Колонки3Мес.Параметры.Договор1 = Дог1;
    // сч3 = сч3+1;
    //КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    // Иначе // если в тз по договорам гоз пусто выводим обычные колонки без договоров
    Колонки1Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    Колонки2Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");
    Колонки3Мес = МакетРаспечатки.ПолучитьОбласть("Колонки");

    //КонецЕсли;

    Если ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ПервыйКвартал Тогда
    Колонки1Мес.Параметры.Месяц1 = "Январь" ;
    Колонки2Мес.Параметры.Месяц2 = "Февраль" ;
    Колонки3Мес.Параметры.Месяц3 = "Март" ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ВторойКвартал Тогда
    Колонки1Мес.Параметры.Месяц1 = "Апрель" ;
    Колонки2Мес.Параметры.Месяц2 = "Май" ;
    Колонки3Мес.Параметры.Месяц3 = "Июнь" ;
    ИначеЕсли ЭлементыФормы.Квартал.Значение = Перечисления.Кварталы.ТретийКвартал Тогда
    Колонки1Мес.Параметры.Месяц1 = "Июль" ;
    Колонки2Мес.Параметры.Месяц2 = "Август" ;
    Колонки3Мес.Параметры.Месяц3 = "Сентябрь" ;
    Иначе
    Колонки1Мес.Параметры.Месяц1 = "Октябрь" ;
    Колонки2Мес.Параметры.Месяц2 = "Ноябрь" ;
    Колонки3Мес.Параметры.Месяц3 = "Декабрь" ;
    КонецЕсли;

    Если ЭлементыФормы.Цех402.Значение = Истина Тогда
    Колонки1Мес.Параметры.Цех = "402" ;
    Колонки2Мес.Параметры.Цех = "402" ;
    Колонки3Мес.Параметры.Цех = "402" ;
    ИначеЕсли ЭлементыФормы.Цех406.Значение = Истина Тогда
    Колонки1Мес.Параметры.Цех = "406" ;
    Колонки2Мес.Параметры.Цех = "406" ;
    Колонки3Мес.Параметры.Цех = "406" ;
    КонецЕсли;

    ТабДок.Вывести(Колонки1Мес);
    //ТабДок.Присоединить(Колонки2Мес);//присоединяет справа
    //ТабДок.Присоединить(Колонки3Мес);

    //Сообщить(сч1);
    с = 0;
    Для каждого стр из ДляРаспечаткиКоличествоДог цикл
    Для Каждого ст из ДляРаспечаткиГоз Цикл
    Если ст.Договор = стр.Договор Тогда
    ст.Дог = с+1;
    КонецЕсли;
    КонецЦикла;
    с = с+1;
    КонецЦикла;

    Для каждого стр из ДляРаспечаткиГоз Цикл
    НовСтр = ДляРаспечаткиОконч.Добавить();
    НовСтр.Договор = стр.Договор;
    НовСтр.Артикул = стр.Артикул;
    НовСтр.Наименование= стр.Наименование;
    НовСтр.Обозначение = стр.Обозначение;
    НовСтр.Количество1 = стр.Количество1;
    НовСтр.Количество2 = стр.Количество2;
    НовСтр.Количество3 = стр.Количество3;
    НовСтр.Дог = стр.Дог;
    НовСтр.Использовано = Ложь;
    КонецЦикла;
    ДляРаспечаткиОконч.Сортировать("Обозначение");
    ЭлементыФормы.ДляРаспечаткиОконч.СоздатьКолонки();

    //выводим строки.нужно еще определиться где какая по размеру пойдет.гоз или не гоз
    Для каждого строк из ДляРаспечаткиОконч Цикл
    Если строк.Использовано = Ложь Тогда
    // 1 месяц
    Если сч1 > 0 Тогда //Выводим строки для ГОЗ
    Строки = МакетРаспечатки.ПолучитьОбласть("Строка");
    Иначе // строки без договоров
    Строки = МакетРаспечатки.ПолучитьОбласть("Строка");
    КонецЕсли;
    // 2 месяц
    //Сообщить(сч2);
    Если сч2 > 0 Тогда //Выводим строки для ГОЗ
    Строки2 = МакетРаспечатки.ПолучитьОбласть("Строка");
    Иначе // строки без договоров
    Строки2 = МакетРаспечатки.ПолучитьОбласть("Строка");
    КонецЕсли;
    // 3 месяц
    Если сч3 > 0 Тогда //Выводим строки для ГОЗ
    Строки3 = МакетРаспечатки.ПолучитьОбласть("Строка");
    Иначе // строки без договоров
    Строки3 = МакетРаспечатки.ПолучитьОбласть("Строка");
    КонецЕсли;

    Строки.Параметры.Обозначение = СокрЛП(строк.Обозначение);
    Строки.Параметры.Наименование = СокрЛП(строк.Наименование);
    //через отбор будет проще
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Артикул", СокрЛП(строк.Артикул));
    НайденныеСтроки = ДляРаспечаткиОконч.НайтиСтроки(ПараметрыОтбора);
    КоличествоВсего1Мес = 0;
    КоличествоВсего2Мес = 0;
    КоличествоВсего3Мес = 0;
    Количество1Договор = 0;
    Количество2Договор = 0;
    Количество1Договор2 = 0;
    Количество2Договор2 = 0;
    Количество1Договор3 = 0;
    Количество2Договор3 = 0;

    Дата4081 = ";
    Дата4082 = ";
    Дата4083 = ";

    Дата4061 = ";
    Дата4062 = ";
    Дата4063 = ";

    Дата4021 = ";
    Дата4022 = ";
    Дата4023 = ";

    Для каждого ст из НайденныеСтроки Цикл
    КоличествоВсего1Мес = КоличествоВсего1Мес+ст.Количество1;
    КоличествоВсего2Мес = КоличествоВсего2Мес+ст.Количество2;
    КоличествоВсего3Мес = КоличествоВсего3Мес+ст.Количество3;

    Если ст.Договор <> " Тогда
    Если Число(ст.Дог) = 1 Тогда
    Количество1Договор = Количество1Договор + ст.Количество1;
    Количество1Договор2 = Количество1Договор2 + ст.Количество2;
    Количество1Договор3 = Количество1Договор3 + ст.Количество3;

    ИначеЕсли Число(ст.Дог) = 2 Тогда
    Количество2Договор = Количество2Договор + ст.Количество1;
    Количество2Договор2 = Количество2Договор2 + ст.Количество2;
    Количество2Договор3 = Количество2Договор3 + ст.Количество3;

    КонецЕсли;
    КонецЕсли;
    ст.Использовано = Истина;
    КонецЦикла;

    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Артикул", СокрЛП(строк.Артикул));
    НайденныеСтроки1 = Дефицит.НайтиСтроки(ПараметрыОтбора);

    Для каждого ст из НайденныеСтроки1 Цикл
    Если ст.Заказ = СокрЛП(ЗаказДляРаспечатки) Тогда
    //найти в тч ///!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!доделать
    Если ст.СрокСдачи4081Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа1 > 0 Тогда
    Дата4081 = ст.СрокСдачи4081Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4082Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4082 = ст.СрокСдачи4082Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4083Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4083 = ст.СрокСдачи4083Месяц;
    КонецЕсли;

    Если ЭлементыФормы.Цех402.Значение = Ложь Тогда

    Если ст.СрокСдачи4061Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа1 > 0 Тогда
    Дата4061 = ст.СрокСдачи4061Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4062Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4062 = ст.СрокСдачи4062Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4063Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа3 > 0 Тогда
    Дата4063 = ст.СрокСдачи4063Месяц;
    КонецЕсли;

    Иначе

    Если ст.СрокСдачи4021Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа1 > 0 Тогда
    Дата4021 = ст.СрокСдачи4021Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4022Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа2 > 0 Тогда
    Дата4022 = ст.СрокСдачи4022Месяц;
    КонецЕсли;
    Если ст.СрокСдачи4023Месяц <> "01010001" И ст.ДефицитЭлементовЗаказа3 > 0 Тогда
    Дата4023 = ст.СрокСдачи4023Месяц;
    КонецЕсли;
    КонецЕсли;

    КонецЕсли;
    КонецЦикла;

    Строки.Параметры.СрокСдачи4081 = Формат(Дата4081,"ДФ=dd.MM");
    Строки2.Параметры.СрокСдачи4082 = Формат(Дата4082,"ДФ=dd.MM");
    Строки3.Параметры.СрокСдачи4083 = Формат(Дата4083,"ДФ=dd.MM");

    Если ЭлементыФормы.Цех406.Значение = Истина Тогда
    Строки.Параметры.СрокСдачи4061 = Формат(Дата4061,"ДФ=dd.MM");
    Строки2.Параметры.СрокСдачи4062 = Формат(Дата4062,"ДФ=dd.MM");
    Строки3.Параметры.СрокСдачи4063 = Формат(Дата4063,"ДФ=dd.MM");
    Иначе
    Строки.Параметры.СрокСдачи4061 = Формат(Дата4021,"ДФ=dd.MM");
    Строки2.Параметры.СрокСдачи4062 = Формат(Дата4022,"ДФ=dd.MM");
    Строки3.Параметры.СрокСдачи4063 = Формат(Дата4023,"ДФ=dd.MM");
    КонецЕсли;

    Если сч1> 0 Тогда //в распечатке без гоз этого параметра нет
    Строки.Параметры.КолДог11 = Количество1Договор;
    КонецЕсли;

    Если сч2> 0 Тогда //в распечатке без гоз этого параметра нет
    Строки2.Параметры.КолДог12 = Количество1Договор2;
    КонецЕсли;

    Если сч3> 0 Тогда //в распечатке без гоз этого параметра нет
    Строки3.Параметры.КолДог13 = Количество1Договор3;
    КонецЕсли;

    ТабДок.Вывести(Строки);
    ТабДок.Присоединить(Строки2);
    ТабДок.Присоединить(Строки3);

    КонецЕсли;
    КонецЦикла;
    Подписи = МакетРаспечатки.ПолучитьОбласть("Подписи");
    ТабДок.Вывести(Подписи);

    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Истина;
    ТабДок.ПолеСлева = 0;
    ТабДок.ПолеСправа = 0;
    ТабДок.ПолеСверху = 0;
    ТабДок.ПолеСнизу = 0;
    ТабДок.АвтоМасштаб = Истина;
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДок.Показать();

    КонецПроцедуры
```