Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> ТТН для бухгалтерии , Ошибка в печати          
XacTLa Подменю пользователя
сообщение 04.07.18, 14:34
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 99
Из: Киев
Спасибо сказали: 0 раз
Рейтинг: 0

1С:Предприятие 8.3 (8.3.9.2309)
Бухгалтерия для Украины, редакция 2.0. (2.0.9.2)

Добрый день, скажи те мне не понимающему делаю ТТН для бухгалтерии Ошибка у меня в том что функция печати код:
 Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыПечати) Экспорт
    
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТТН") Тогда
            
        
            
    
            ТабДокумент = ПечатьТТН(ПараметрыПечати);
        КонецЕсли;
        
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТТН", НСтр("ru='Товарно-транспортная накладная (1-ТН)';uk='Товарно-транспортна накладна (1-ТН)'"),
            ТабДокумент,,"Обработка.ПечатьТТН.ПФ_MXL_ТТН");
    
    
    
КонецПроцедуры


Выдает ошибку {ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(233)}: В обработчике печати не был сформирован табличный документ для: ТТН2018
ВызватьИсключение(ТекстСообщенияОбОшибке);

Вот весь код:
Функция СведенияОВнешнейОбработке()Экспорт
    ПараметрыРегистрации = Новый Структура;
    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг"); //Указываем документ к которому делаем внешнюю печ. форму
    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов...
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", "ТТН2018"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
    ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("Информация", "Это 2018 ТТН ");
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    ДобавитьКоманду(ТаблицаКоманд, "ТТН 2018", "ТТН2018", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

Возврат ПараметрыРегистрации;
    
КонецФункции // СведенияОВнешнейОбработке()

Функция ПолучитьТаблицуКоманд()
    Команды = Новый ТаблицаЗначений;
    Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя
    Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы
    Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода
    Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
    Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
    Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")

    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = Представление;
    НоваяКоманда.Идентификатор = Идентификатор;
    НоваяКоманда.Использование = Использование;
    НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
    НоваяКоманда.Модификатор = Модификатор;

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

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыПечати) Экспорт
    
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТТН") Тогда
            
        
            
    
            ТабДокумент = ПечатьТТН(ПараметрыПечати);
        КонецЕсли;
        
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТТН", НСтр("ru='Товарно-транспортная накладная (1-ТН)';uk='Товарно-транспортна накладна (1-ТН)'"),
            ТабДокумент,,"Обработка.ПечатьТТН.ПФ_MXL_ТТН");
    
    
    
КонецПроцедуры

Функция ПечатьТТН(ПараметрыПечати) Экспорт

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

    Запрос.Текст =
    "ВЫБРАТЬ
    |    Ссылка       КАК Документ,
    |    Номер,
    |    Дата         КАК ДатаДокумента,
    |    Организация,
    |    Организация  КАК ЮрФизЛицо,
    |    Организация  КАК Поставщик,
    |    Организация  КАК Контрагент,
    |    Организация  КАК Руководители,
    |    ВЫБОР КОГДА Грузополучатель = &ПустойКонтрагент
    |          ТОГДА Контрагент
    |          ИНАЧЕ Грузополучатель КОНЕЦ КАК Грузополучатель,
    |     Организация  КАК Грузоотправитель,
    |    БанковскийСчетОрганизации КАК БанковскийСчет,
    |    Контрагент   КАК Покупатель,
    |    Контрагент   КАК Плательщик,
    |    ОтветственныеЛица.ФизическоеЛицо КАК ОтветственноеЛицо,
    |    ВалютаДокумента,
    |    КурсВзаиморасчетов       КАК Курс,
    |    КратностьВзаиморасчетов  КАК Кратность,
    |    СуммаВключаетНДС,
    |    Получил,
    |    ДоверенностьСерия,
    |    ДоверенностьНомер,
    |    ДоверенностьДата
    |ИЗ
    |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |
    |ЛЕВОЕ СОЕДИНЕНИЕ
    |    РегистрСведений.ОтветственныеЛица.СрезПоследних(&ДатаСреза, СтруктурнаяЕдиница = &СтруктурнаяЕдиница) КАК ОтветственныеЛица
    |ПО
    |    ОтветственныеЛица.СтруктурнаяЕдиница = РеализацияТоваровУслуг.Склад
    |
    |ГДЕ
    |    РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";

    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", Документ);

    Если Документ.ВалютаДокумента = Документ.ДоговорКонтрагента.ВалютаВзаиморасчетов Тогда
        // Документ оформлен в валюте взаиморасчетов
        Запрос.УстановитьПараметр("Курс", Документ.КурсВзаиморасчетов);
        Запрос.УстановитьПараметр("Кратность", Документ.КратностьВзаиморасчетов);
    Иначе
        // Документ оформлен в валюте регламентированного учета
        Запрос.УстановитьПараметр("Курс", 1);
        Запрос.УстановитьПараметр("Кратность", 1);
    КонецЕсли;

    Запрос.Текст =
    "ВЫБРАТЬ
    |    ВложенныйЗапрос.Номенклатура                                 КАК Номенклатура,
    |    ВложенныйЗапрос.Номенклатура.НаименованиеПолное              КАК ТоварНаименование,
    |    ВложенныйЗапрос.Номенклатура.Код                             КАК Артикул,
    |    ВложенныйЗапрос.ЕдиницаИзмерения.Представление               КАК БазоваяЕдиницаНаименование,
    |    ВложенныйЗапрос.ЕдиницаИзмерения.Код                          КАК БазоваяЕдиницаКодПоОКЕИ,
    |    ВложенныйЗапрос.ЕдиницаИзмерения                             КАК ЕдиницаИзмерения,
    |    ВложенныйЗапрос.ЕдиницаИзмерения.Представление                КАК ВидУпаковки,
    |    ВложенныйЗапрос.СтавкаНДС           КАК СтавкаНДС,
    |    ВложенныйЗапрос.Цена                КАК Цена,
    |    ВложенныйЗапрос.Количество          КАК Количество,
    |    ВложенныйЗапрос.Сумма               КАК Сумма,
    |    ВложенныйЗапрос.СуммаНДС            КАК СуммаНДС,
    |    ВложенныйЗапрос.НомерСтроки         КАК НомерСтроки,
    |    ВложенныйЗапрос.Метка               КАК Метка
    |ИЗ
    |
    |    (
    |    ВЫБРАТЬ
    |        РеализацияТоваровУслуг.Номенклатура,
    |        РеализацияТоваровУслуг.Коэффициент,
    |        РеализацияТоваровУслуг.ЕдиницаИзмерения,
    |        РеализацияТоваровУслуг.ЕдиницаИзмерения                      КАК ЕдиницаИзмеренияМест,
    |        РеализацияТоваровУслуг.СтавкаНДС,
    |        РеализацияТоваровУслуг.Цена * &Курс / &Кратность             КАК Цена,
    |        СУММА(РеализацияТоваровУслуг.Количество)                     КАК Количество,
    |        СУММА(РеализацияТоваровУслуг.Сумма    * &Курс / &Кратность)  КАК Сумма,
    |        СУММА(РеализацияТоваровУслуг.СуммаНДС * &Курс / &Кратность)  КАК СуммаНДС,
    |        МИНИМУМ(РеализацияТоваровУслуг.НомерСтроки)                  КАК НомерСтроки,
    |        0                                                            КАК Метка
    |    ИЗ
    |        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
    |    ГДЕ
    |        РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
    |
    |СГРУППИРОВАТЬ ПО
    |        РеализацияТоваровУслуг.Номенклатура,
    |        РеализацияТоваровУслуг.Коэффициент,
    |        РеализацияТоваровУслуг.ЕдиницаИзмерения,
    |        РеализацияТоваровУслуг.СтавкаНДС,
    |        РеализацияТоваровУслуг.Цена
    |
    |    ) КАК ВложенныйЗапрос
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    РеализацияТоваровУслуг.Номенклатура                    КАК Номенклатура,
    |    РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное КАК ТоварНаименование,
    |    РеализацияТоваровУслуг.Номенклатура.Код                  КАК Артикул,
    |    РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения.Представление               КАК БазоваяЕдиницаНаименование,
    |    РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения.Код                         КАК БазоваяЕдиницаКодПоОКЕИ,
    |    РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения                             КАК ЕдиницаИзмерения,
    |    NULL                                                  КАК ВидУпаковки,
    |    ""Без НДС""                                           КАК СтавкаНДС,
    |    РеализацияТоваровУслуг.Цена * &Курс / &Кратность      КАК Цена,
    |    РеализацияТоваровУслуг.Количество                     КАК Количество,
    |    РеализацияТоваровУслуг.Сумма * &Курс / &Кратность     КАК Сумма,
    |    0                                                     КАК СуммаНДС,
    |    РеализацияТоваровУслуг.НомерСтроки                    КАК НомерСтроки,
    |    2                                                     КАК Метка
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.ВозвратнаяТара КАК РеализацияТоваровУслуг
    |
    |ГДЕ
    |    РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
    |
    |УПОРЯДОЧИТЬ ПО Метка ВОЗР, НомерСтроки ВОЗР
    |
    |";

    ЗапросТовары = Запрос.Выполнить().Выгрузить();

    ТабДокумент = Новый ТабличныйДокумент;

    Если Шапка.ДатаДокумента < Дата("20140114") Тогда
        ЗаполнитьТТН (Шапка, ЗапросТовары, ТабДокумент,ПараметрыПечати)
    Иначе
        ЗаполнитьТТН2014 (Шапка, ЗапросТовары, ТабДокумент,ПараметрыПечати)
    КонецЕсли;
    
    Возврат ТабДокумент;

КонецФункции // ПечатьТТН()
    
Процедура ЗаполнитьТТН (Шапка, ЗапросТовары, ТабДокумент, ПараметрыПечати)
    
    Документ                 = ПараметрыПечати.Документ;
    МаркаИГосНомерАвтомобиля = ПараметрыПечати.МаркаИГосНомерАвтомобиля;
    ГосНомерПрицепа          = ПараметрыПечати.ГосНомерПрицепа;
    ПунктПогрузки            = ПараметрыПечати.ПунктПогрузки;
    ПунктРазгрузки           = ПараметрыПечати.ПунктРазгрузки;
    Водитель                 = ПараметрыПечати.Водитель;
    Перевозчик               = ПараметрыПечати.Перевозчик;
    ВидПеревозки             = ПараметрыПечати.ВидПеревозки;
    НомерТТН                 = ПараметрыПечати.НомерТТН;
    
    // Зададим параметры макета
    ТабДокумент.ПолеСверху              = 0;
    ТабДокумент.ПолеСлева               = 5;
    ТабДокумент.ПолеСнизу               = 0;
    ТабДокумент.ПолеСправа              = 5;
    ТабДокумент.АвтоМасштаб             = Истина;
    ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Ландшафт;

    Макет = УправлениеПечатью.ПолучитьМакет("Обработка.ПечатьТТН.ПФ_MXL_ТТН");
    
    КодЯзыкаПечать = "uk";
    
    // Выводим общие реквизиты шапки
    СведенияОПокупателе       = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Покупатель,       Шапка.ДатаДокумента);
    СведенияОГрузополучателе  = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Грузополучатель,  Шапка.ДатаДокумента);
    СведенияОГрузоотправитель = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Грузоотправитель, Шапка.ДатаДокумента);

    Если ЗначениеЗаполнено(Документ.БанковскийСчетОрганизации) Тогда
        НомерСчета = Документ.БанковскийСчетОрганизации.НомерСчета;
        Банк       = Документ.БанковскийСчетОрганизации.Банк;
        МФО           = Документ.БанковскийСчетОрганизации.Банк.Код;
        
        СведенияОГрузоотправитель.Вставить("НомерСчета",       НомерСчета);
        СведенияОГрузоотправитель.Вставить("Банк",             Банк);
        СведенияОГрузоотправитель.Вставить("МФО",              МФО);
    КонецЕсли;
    
    ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакета.Параметры.НомерДокумента                = НомерТТН;
    ОбластьМакета.Параметры.ДатаДокумента                 = Шапка.ДатаДокумента;
    ОбластьМакета.Параметры.Грузоотправитель              = Шапка.Грузоотправитель;
    ОбластьМакета.Параметры.Грузополучатель               = Шапка.Грузополучатель;
    ОбластьМакета.Параметры.Плательщик                    = Шапка.Покупатель;
    ОбластьМакета.Параметры.ГрузоотправительПредставление = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузоотправитель, "ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны,НомерСчета,Банк,МФО,КодПоЕДРПОУ",, КодЯзыкаПечать);
    ОбластьМакета.Параметры.ГрузополучательПредставление  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузополучателе,  "ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны,НомерСчета,Банк,МФО,КодПоЕДРПОУ",, КодЯзыкаПечать);
    ОбластьМакета.Параметры.ГрузоотправительПредставление = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузоотправитель, "ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны,НомерСчета,Банк,МФО,КодПоЕДРПОУ",, КодЯзыкаПечать);
    ОбластьМакета.Параметры.ГрузоотправительЕДРПОУ = СведенияОГрузоотправитель.КодПоЕДРПОУ;
    ОбластьМакета.Параметры.ГрузополучательЕДРПОУ  = СведенияОГрузополучателе.КодПоЕДРПОУ;
    ОбластьМакета.Параметры.ПлательщикЕДРПОУ       = СведенияОПокупателе.КодПоЕДРПОУ;
    
    ОбластьМакета.Параметры.МаркаИГосНомерАвтомобиля = МаркаИГосНомерАвтомобиля;
    ОбластьМакета.Параметры.ФИОВодителя = Водитель;
    ОбластьМакета.Параметры.ВидПеревозки = ВидПеревозки;
    ОбластьМакета.Параметры.ГосНомерПрицепа = ГосНомерПрицепа;
    
    ОбластьМакета.Параметры.ПунктПогрузки = ПунктПогрузки;
    ОбластьМакета.Параметры.ПунктРазгрузки = ПунктРазгрузки;
    
    ОбластьМакета.Параметры.ОрганизацияПеревозчик = Перевозчик;
    
    ТабДокумент.Вывести(ОбластьМакета);

    СтрокНаСтранице = 23;
    СтрокШапки      = 10;
    СтрокПодвала    = 9;
    НомерСтраницы   = 1;

    // Выводим заголовок таблицы
    ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
    ТабДокумент.Вывести(ЗаголовокТаблицы);

    КоличествоСтрок = ЗапросТовары.Количество();

    Если КоличествоСтрок = 1 Тогда
        ПереноситьПоследнююСтроку = 0;
    Иначе
        ЦелыхСтраницСПодвалом     = Цел((СтрокШапки + КоличествоСтрок + СтрокПодвала) / СтрокНаСтранице);
        ЦелыхСтраницБезПодвала    = Цел((СтрокШапки + КоличествоСтрок - 1) / СтрокНаСтранице);
        ПереноситьПоследнююСтроку = ЦелыхСтраницСПодвалом - ЦелыхСтраницБезПодвала;
    КонецЕсли;

    // инициализация итогов по странице
    ИтогоКоличествоНаСтранице = 0;
    ИтогоСуммаСНДСНаСтранице  = 0;

    // инициализация итогов по документу
    ИтогоМест       = 0;
    ИтогоКоличество = 0;
    ИтогоСуммаСНДС  = 0;
    Ном             = 0;

    // Выводим многострочную часть докмента
    ОбластьМакета = Макет.ПолучитьОбласть("Строка");
    Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл

        Если НЕ ЗначениеЗаполнено(ВыборкаСтрок.Номенклатура) Тогда
            Сообщить(НСтр("ru='В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.';uk='В одному з рядків не заповнене значення номенклатури - рядок під час друку буде пропущений.'"), СтатусСообщения.Важное);
            Продолжить;
        КонецЕсли;

        ОбластьМакета.Параметры.Заполнить(ВыборкаСтрок);
        ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрок.ТоварНаименование;
        //        Мест        = ВыборкаСтрок.КоличествоМест;
        Количество  = ВыборкаСтрок.Количество;
        СуммаСНДС   = Окр((ВыборкаСтрок.Сумма + ?(Шапка.СуммаВключаетНДС, 0, ВыборкаСтрок.СуммаНДС)), 2);
        ОбластьМакета.Параметры.Сумма = СуммаСНДС;

        ОбластьМакета.Параметры.Цена = ?(Количество = 0, 0, СуммаСНДС / Количество);

        ТабДокумент.Вывести(ОбластьМакета);

        // увеличим итоги по дукументу
        ИтогоКоличество = ИтогоКоличество + Количество;
        ИтогоСуммаСНДС  = ИтогоСуммаСНДС  + СуммаСНДС;

    КонецЦикла;

    // Выводим итоги по документу в целом
    ОбластьМакета = Макет.ПолучитьОбласть("Всего");
    ОбластьМакета.Параметры.ИтогоКоличество = ИтогоКоличество;
    ОбластьМакета.Параметры.ИтогоСуммаСНДС  = ИтогоСуммаСНДС;

    ТабДокумент.Вывести(ОбластьМакета);

    // Выводим подвал документа
    ОбластьМакета = Макет.ПолучитьОбласть("Подвал");

    Руководители = ОтветственныеЛицаБП.ОтветственныеЛица(Шапка.Руководители, Шапка.ДатаДокумента);
    
    // Отпуск товара разрешил
    ФИООтпускРазрешил       = Руководители.РуководительПредставление;
    ДолжностьОтпускРазрешил = Руководители.РуководительДолжность;
    
    ОбластьМакета.Параметры.ОтпускРазрешилДолжность = ДолжностьОтпускРазрешил;
    ОбластьМакета.Параметры.ДоверенностьЧерезКого   = Шапка.Получил;
    
    ОбластьМакета.Параметры.СерияДоверенности = Шапка.ДоверенностьСерия;
    ОбластьМакета.Параметры.НомерДоверенности = Шапка.ДоверенностьНомер;
    ОбластьМакета.Параметры.ДатаДоверенности  = Формат(Шапка.ДоверенностьДата, "ДФ = ""дд.ММ.гггг""");
    ОбластьМакета.Параметры.ОтпущеноНаСуммуПрописью = ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(ИтогоСуммаСНДС, Константы.ВалютаРегламентированногоУчета.Получить(), КодЯзыкаПечать);
    ТабДокумент.Вывести(ОбластьМакета);
    
    ОбластьМакета = Макет.ПолучитьОбласть("ПогрузочныеОперации");
    ТабДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("ПрочиеСведения");
    ТабДокумент.Вывести(ОбластьМакета);

КонецПроцедуры // ЗаполнитьТТН()

Процедура ЗаполнитьТТН2014 (Шапка, ЗапросТовары, ТабДокумент, ПараметрыПечати)
    
    Документ                 = ПараметрыПечати.Документ;
    МаркаИГосНомерАвтомобиля = ПараметрыПечати.МаркаИГосНомерАвтомобиля;
    ГосНомерПрицепа          = ПараметрыПечати.ГосНомерПрицепа;
    ПунктПогрузки            = ПараметрыПечати.ПунктПогрузки;
    ПунктРазгрузки           = ПараметрыПечати.ПунктРазгрузки;
    Водитель                 = ПараметрыПечати.Водитель;
    Перевозчик               = ПараметрыПечати.Перевозчик;
    ВидПеревозки             = ПараметрыПечати.ВидПеревозки;
    НомерТТН                 = ПараметрыПечати.НомерТТН;

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

    Макет = УправлениеПечатью.ПолучитьМакет("Обработка.ПечатьТТН.ПФ_MXL_ТТН2014");
    
    КодЯзыкаПечать = "uk";
    
    // Выводим общие реквизиты шапки
    СведенияОПокупателе       = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Покупатель,       Шапка.ДатаДокумента);
    СведенияОГрузополучателе  = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Грузополучатель,  Шапка.ДатаДокумента);
    СведенияОГрузоотправитель = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Грузоотправитель, Шапка.ДатаДокумента);
    
    Если ЗначениеЗаполнено(Документ.БанковскийСчетОрганизации) Тогда
        НомерСчета = Документ.БанковскийСчетОрганизации.НомерСчета;
        Банк       = Документ.БанковскийСчетОрганизации.Банк;
        МФО           = Документ.БанковскийСчетОрганизации.Банк.Код;
        
        СведенияОГрузоотправитель.Вставить("НомерСчета",       НомерСчета);
        СведенияОГрузоотправитель.Вставить("Банк",             Банк);
        СведенияОГрузоотправитель.Вставить("МФО",              МФО);
    КонецЕсли;
    
    ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакета.Параметры.НомерДокумента                = НомерТТН;
    ОбластьМакета.Параметры.ДатаДокумента                 = Шапка.ДатаДокумента;
    ОбластьМакета.Параметры.Грузоотправитель              = Шапка.Грузоотправитель;
    ОбластьМакета.Параметры.Грузополучатель               = Шапка.Грузополучатель;
    ОбластьМакета.Параметры.Плательщик                    = Шапка.Покупатель;
    ОбластьМакета.Параметры.ГрузоотправительПредставление = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузоотправитель, "ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны,НомерСчета,Банк,МФО,КодПоЕДРПОУ,",, КодЯзыкаПечать);
    ОбластьМакета.Параметры.ГрузополучательПредставление  = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузополучателе,  "ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны,НомерСчета,Банк,МФО,КодПоЕДРПОУ,",, КодЯзыкаПечать);
    ОбластьМакета.Параметры.ГрузоотправительПредставление = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузоотправитель, "ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны,НомерСчета,Банк,МФО,КодПоЕДРПОУ,",, КодЯзыкаПечать);
    
    ОбластьМакета.Параметры.МаркаИГосНомерАвтомобиля = МаркаИГосНомерАвтомобиля;
    ОбластьМакета.Параметры.ФИОВодителя = Водитель;
    ОбластьМакета.Параметры.ВидПеревозки = ВидПеревозки;
    ОбластьМакета.Параметры.ГосНомерПрицепа = ГосНомерПрицепа;
    
    ОбластьМакета.Параметры.ПунктПогрузки = ПунктПогрузки;
    ОбластьМакета.Параметры.ПунктРазгрузки = ПунктРазгрузки;
    
    ОбластьМакета.Параметры.ОрганизацияПеревозчик = Перевозчик;
    
    Руководители = ОтветственныеЛицаБП.ОтветственныеЛица(Шапка.Руководители, Шапка.ДатаДокумента);
    
    // Отпуск товара разрешил
    ФИООтпускРазрешил       = Руководители.РуководительПредставление;
    ДолжностьОтпускРазрешил = Руководители.РуководительДолжность;
    
    ОбластьМакета.Параметры.ОтпускРазрешилДолжность = ?(ЗначениеЗаполнено(ФИООтпускРазрешил), ФИООтпускРазрешил + ", " + ДолжностьОтпускРазрешил, "");
    
    ОбластьМакета.Параметры.СерияДоверенности = Шапка.ДоверенностьСерия;
    ОбластьМакета.Параметры.НомерДоверенности = Шапка.ДоверенностьНомер;
    ОбластьМакета.Параметры.ДатаДоверенности  = Формат(Шапка.ДоверенностьДата, "ДФ = ""дд.ММ.гггг""");
    
    СуммаСНДС   = Окр((ЗапросТовары.Итог("Сумма") + ?(Шапка.СуммаВключаетНДС, 0, ЗапросТовары.Итог("СуммаНДС"))), 2);
    ОбластьМакета.Параметры.ОтпущеноНаСуммуПрописью = ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(СуммаСНДС, Константы.ВалютаРегламентированногоУчета.Получить(), КодЯзыкаПечать);
    ОбластьМакета.Параметры.СуммаНДС                = ОбщегоНазначенияБПВызовСервера.ФорматСумм(ЗапросТовары.Итог("СуммаНДС"), Константы.ВалютаРегламентированногоУчета.Получить());
    
    Количество = ЗапросТовары.Итог("Количество");
    КоличествоМест = ?(Цел(Количество) = Количество, Количество, Цел(Количество) + 1);
    КоличествоМестПрописью = НРег(ЧислоПрописью(КоличествоМест,"Л=uk_UK"));
    ОбластьМакета.Параметры.КоличествоМестПрописью  = Лев(КоличествоМестПрописью,СтрДлина(КоличествоМестПрописью)-3);
    
    ТабДокумент.Вывести(ОбластьМакета);
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    
    // Выводим заголовок таблицы
    ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
    ТабДокумент.Вывести(ЗаголовокТаблицы);
    
    КоличествоСтрок = ЗапросТовары.Количество();

    // инициализация итогов по странице
    ИтогоКоличествоНаСтранице = 0;
    ИтогоСуммаСНДСНаСтранице  = 0;

    // инициализация итогов по документу
    ИтогоМест       = 0;
    ИтогоКоличество = 0;
    ИтогоСуммаСНДС  = 0;
    Ном             = 1;

    // Выводим многострочную часть докмента
    ОбластьМакета = Макет.ПолучитьОбласть("Строка");
    Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл

        Если НЕ ЗначениеЗаполнено(ВыборкаСтрок.Номенклатура) Тогда
            Сообщить(НСтр("ru='В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.';uk='В одному з рядків не заповнене значення номенклатури - рядок під час друку буде пропущений.'"), СтатусСообщения.Важное);
            Продолжить;
        КонецЕсли;

        ОбластьМакета.Параметры.Заполнить(ВыборкаСтрок);
        ОбластьМакета.Параметры.НомерСтроки = Ном;
        ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрок.ТоварНаименование;
        //        Мест        = ВыборкаСтрок.КоличествоМест;
        Количество  = ВыборкаСтрок.Количество;
        СуммаСНДС   = Окр((ВыборкаСтрок.Сумма + ?(Шапка.СуммаВключаетНДС, 0, ВыборкаСтрок.СуммаНДС)), 2);
        СуммаБезНДС = СуммаСНДС - ВыборкаСтрок.СуммаНДС;
        
        ОбластьМакета.Параметры.Сумма = СуммаСНДС;

        ОбластьМакета.Параметры.Цена = ?(Количество = 0, 0, СуммаБезНДС / Количество);

        ТабДокумент.Вывести(ОбластьМакета);

        // увеличим итоги по дукументу
        ИтогоКоличество = ИтогоКоличество + Количество;
        ИтогоСуммаСНДС  = ИтогоСуммаСНДС  + СуммаСНДС;
        Ном             = Ном + 1;

    КонецЦикла;

    // Выводим итоги по документу в целом
    ОбластьМакета = Макет.ПолучитьОбласть("Всего");
    ОбластьМакета.Параметры.ИтогоКоличество = ИтогоКоличество;
    ОбластьМакета.Параметры.ИтогоСуммаСНДС  = ИтогоСуммаСНДС;

    ТабДокумент.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
    ТабДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("ПогрузочныеОперации");
    ТабДокумент.Вывести(ОбластьМакета);
    
КонецПроцедуры  //ЗаполнитьТТН2014

podcast Подменю пользователя
сообщение 04.07.18, 15:36
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 306
Спасибо сказали: 74 раз
Рейтинг: 0

XacTLa @ Сегодня, 15:34 * ,
Попобуйте КонецЕсли ниже поставить, так вроде по коду всё нормально.
   Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТТН") 
    
            ТабДокумент = ПечатьТТН(ПараметрыПечати);
        
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТТН", НСтр("ru='Товарно-транспортная накладная (1-ТН)';uk='Товарно-транспортна накладна (1-ТН)'"),
            ТабДокумент,,"Обработка.ПечатьТТН.ПФ_MXL_ТТН");
        КонецЕсли;


XacTLa Подменю пользователя
сообщение 04.07.18, 16:05
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 99
Из: Киев
Спасибо сказали: 0 раз
Рейтинг: 0

podcast @ Сегодня, 16:36 * ,
{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(233)}: В обработчике печати не был сформирован табличный документ для: ТТН2018
ВызватьИсключение(ТекстСообщенияОбОшибке);

sava1 Подменю пользователя
сообщение 04.07.18, 16:57
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

так не пройдет - смотрите, как БСП формирует внешнюю печатную форму.

Цитата(sava1 @ 04.07.18, 17:25) *
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТТН") Тогда


поменяйте на ТТН2018

XacTLa Подменю пользователя
сообщение 04.07.18, 16:59
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 99
Из: Киев
Спасибо сказали: 0 раз
Рейтинг: 0

sava1 @ Сегодня, 17:57 * ,
{ВнешняяОбработка.ТТН2018.МодульОбъекта(61)}: Поле объекта не обнаружено (Документ)
Документ = ПараметрыПечати.Документ;

sava1 Подменю пользователя
сообщение 04.07.18, 17:44
Сообщение #6

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

А это то, о чем писал выше.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 10:03
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!