|
Отладка внешней печатной формы. Розница | ☑ | ||
---|---|---|---|---|
0
SnowBarsCloud
31.03.22
✎
22:39
|
Добрый вечер.
База Розница, редакция 2.3 Платформа 1С:Предприятие 8.3 (8.3.19.1150) Попросили добавить внешнюю печатную форму, создал внешний отче, в модуле указал данные о внешней обработке. Код, может нужно: Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(); ПараметрыРегистрации.Наименование = "Накладная на перемещение | Цены магазина"; ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет(); ПараметрыРегистрации.Назначение.Добавить("Документ.ПеремещениеТоваров"); НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = "Накладная на перемещение | Цены магазина"; НоваяКоманда.Идентификатор = "НакладнаяНаПеремещениеЦеныМагазина"; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); КонецФункции Вынул функцию печати из модуля менеджера, дописал кусок, проверил через форму (добавил форму и запускаю функцию печати) роцедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "НакладнаяНаПеремещениеЦеныМагазина", "Накладная на перемещение | Цены магазина", ПечатьНакладная(МассивОбъектов, ОбъектыПечати)); КонецПроцедуры // Печать() Из модуля формы &НаКлиенте Процедура Команда1(Команда) ТабДок = ПечатьНаСервере(); ТабДок.Показать(); КонецПроцедуры &НаСервере Функция ПечатьНаСервере() Назначения = Новый Массив; Назначения.Добавить(Реквизит1); ДокументОбъект = РеквизитФормыВЗначение("Отчет"); Возврат ДокументОбъект.ПечатьНакладная(Назначения, Неопределено); КОнецФункции Печатная форма печатается, все отлично. Но при попытке загрузить в базу выходит ошибка плана Невозможно подключить дополнительный отчет из файла. Возможно, он не подходит для этой версии программы. Техническая информация: Итератор для значения не определен Понимаю, что мой косяк, но как найти ошибку? Как отладить и понять в чем проблема? Возможно что-то очень очевидное, но не вижу.. Заранее всем спасибо за обсуждение :) |
|||
1
SnowBarsCloud
31.03.22
✎
22:41
|
Код самой функции печати
Функция ПечатьНакладная(МассивОбъектов, ОбъектыПечати, ВыводитьЦены = Ложь, ТолькоПоРозничнымЦенам = Ложь) Экспорт КолонкаКодов = ФормированиеПечатныхФормСервер.ИмяДополнительнойКолонки(); ВыводитьКоды = ЗначениеЗаполнено(КолонкаКодов); ВыводитьУпаковки = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры"); ТабличныйДокумент = Новый ТабличныйДокумент; РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс"); СинонимДокумента = НСтр("ru='Перемещение товаров'"); ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеТоваров_НакладнаяНаПеремещение"; Если ВыводитьЦены Тогда ИндексРезультатаТовары = 3; Иначе ИндексРезультатаТовары = 1; КонецЕсли; УстанавливатьВидыЦенВАссортименте = ПолучитьФункциональнуюОпцию("УстанавливатьВидыЦенВАссортименте"); Если УстанавливатьВидыЦенВАссортименте Тогда Если ВыводитьЦены Тогда Запрос = ЛЯЛЯ (убрал, что б не было много кода) ИндексРезультатаТовары = 15; Запрос.УстановитьПараметр("ИспользоватьПрименениеЦен", ПолучитьФункциональнуюОпцию("ИспользоватьПрименениеЦен")); Иначе Запрос = НЛяля КонецЕсли; Иначе //НЕ УстанавливатьВидыЦенВАссортименте Запрос = Ляля КонецЕсли; СистемаНалогообложения = ПодключаемоеОборудованиеРТ.ПолучитьСистемуНалогообложения(МассивОбъектов[0].Дата, МассивОбъектов[0].Организация,,); Запрос.УстановитьПараметр("ЦенаВключаетНДС", СистемаНалогообложения = Перечисления.ТипыСистемНалогообложенияККТ.ОСН); Запрос.УстановитьПараметр("УчитыватьНДС" , СистемаНалогообложения = Перечисления.ТипыСистемНалогообложенияККТ.ОСН); Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов); Магазин = ПараметрыСеанса.ТекущийМагазин; ФорматМагазина = Магазин.ФорматМагазина; Запрос.УстановитьПараметр("Магазин", Магазин); Запрос.УстановитьПараметр("ФорматМагазина", ФорматМагазина); Результаты = Запрос.ВыполнитьПакет(); Макет = ПолучитьМакет("ПФ_MXL_НакладнаяНаПеремещение"); ОкончаниеИмениОбласти = ?(ВыводитьЦены И НЕ ТолькоПоРозничнымЦенам,"РозничныеЦены",""); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок|Основная" + ОкончаниеИмениОбласти); ОбластьШапка = Макет.ПолучитьОбласть("Шапка|Основная" + ОкончаниеИмениОбласти); ОбластьШапкаТаблицыНачало = Макет.ПолучитьОбласть("ШапкаТаблицы|НачалоСтроки"); ОбластьСтрокаТаблицыНачало = Макет.ПолучитьОбласть("СтрокаТаблицы|НачалоСтроки"); ОбластьПодвалТаблицыНачало = Макет.ПолучитьОбласть("ПодвалТаблицы|НачалоСтроки"); ОбластьШапкаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов"); ОбластьСтрокаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаКодов"); ОбластьПодвалТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаКодов"); ОбластьШапкаТаблицыКолонкаКодов.Параметры.ИмяКолонкиКодов = КолонкаКодов; ОбластьШапкаТаблицыКолонкаУпаковок = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаУпаковок"); ОбластьСтрокаТаблицыКолонкаУпаковок = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаУпаковок"); ОбластьПодвалТаблицыКолонкаУпаковок = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаУпаковок"); ОбластьШапкаТаблицыКолонкаКоличество = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКоличество"); ОбластьСтрокаТаблицыКолонкаКоличество = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаКоличество"); ОбластьПодвалТаблицыКолонкаКоличество = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаКоличество"); ОбластьШапкаТаблицыЦеныПоступления = Макет.ПолучитьОбласть("ШапкаТаблицы|ЦеныПоступления"); ОбластьСтрокаТаблицыЦеныПоступления = Макет.ПолучитьОбласть("СтрокаТаблицы|ЦеныПоступления"); ОбластьПодвалТаблицыЦеныПоступления = Макет.ПолучитьОбласть("ПодвалТаблицы|ЦеныПоступления"); //ОбластьШапкаТаблицыРозничныеЦены = Макет.ПолучитьОбласть("ШапкаТаблицы|РозничныеЦены"); //ОбластьСтрокаТаблицыРозничныеЦены = Макет.ПолучитьОбласть("СтрокаТаблицы|РозничныеЦены"); //ОбластьПодвалТаблицыРозничныеЦены = Макет.ПолучитьОбласть("ПодвалТаблицы|РозничныеЦены"); ОбластьКолонкаТоваров = Макет.Область("КолонкаТоваров"); Если НЕ ВыводитьКоды Тогда ОбластьКолонкаТоваров.ШиринаКолонки = ОбластьКолонкаТоваров.ШиринаКолонки + Макет.Область("КолонкаКодов").ШиринаКолонки; КонецЕсли; Если НЕ ВыводитьУпаковки Тогда ОбластьКолонкаТоваров.ШиринаКолонки = ОбластьКолонкаТоваров.ШиринаКолонки + Макет.Область("КолонкаУпаковокКоличество").ШиринаКолонки + Макет.Область("КолонкаУпаковокПредставление").ШиринаКолонки; КонецЕсли; ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаТоваров"); ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаТоваров"); ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаТоваров"); ОбластьПодписей = Макет.ПолучитьОбласть("Подписи|Основная" + ОкончаниеИмениОбласти); ОбластьИтого = Макет.ПолучитьОбласть("Итого|Основная" + ОкончаниеИмениОбласти); ВыборкаПоДокументам = Результаты[0].Выбрать(); ВыборкаПоТабличнымЧастям = Результаты[ИндексРезультатаТовары].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ПервыйДокумент = Истина; Пока ВыборкаПоДокументам.Следующий() Цикл Если НЕ ВыборкаПоТабличнымЧастям.НайтиСледующий(Новый Структура("Ссылка",ВыборкаПоДокументам.Ссылка)) Тогда Продолжить; КонецЕсли; ВыборкаПоСтрокамТЧ = ВыборкаПоТабличнымЧастям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Если НЕ ПервыйДокумент Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1; // ЗАГОЛОВОК ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ВыборкаПоДокументам); ОбластьЗаголовок.Параметры.Заполнить(ВыборкаПоДокументам); ОбластьЗаголовок.Параметры.ТекстЗаголовка = ФормированиеПечатныхФормСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, СинонимДокумента); ТабличныйДокумент.Вывести(ОбластьЗаголовок); // ШАПКА ОбластьШапка.Параметры.Заполнить(ВыборкаПоДокументам); ТабличныйДокумент.Вывести(ОбластьШапка); ТабличныйДокумент.Вывести(ОбластьШапкаТаблицыНачало); Если ВыводитьКоды Тогда ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаКодов); КонецЕсли; ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаТоваров); Если ВыводитьУпаковки Тогда ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаУпаковок); КонецЕсли; ПараметрыШапкаКолонкаКоличество = Новый Структура; Если ВыводитьУпаковки Тогда ПараметрыШапкаКолонкаКоличество.Вставить("ЕдиницаКоличество", НСтр("ru = '(Ед. изм.)'")); Иначе ПараметрыШапкаКолонкаКоличество.Вставить("ЕдиницаКоличество", ""); КонецЕсли; ОбластьШапкаТаблицыКолонкаКоличество.Параметры.Заполнить(ПараметрыШапкаКолонкаКоличество); ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаКоличество); Если НЕ ВыводитьУпаковки Тогда ТабличныйДокумент.Область("ОбластьЕдиницаКоличество").Объединить(); ТабличныйДокумент.Область("ОбластьЕдиницаКоличество").ВертикальноеПоложение = ВертикальноеПоложение.Центр; КонецЕсли; Если НЕ ТолькоПоРозничнымЦенам Тогда ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыЦеныПоступления); КонецЕсли; //Если ВыводитьЦены Тогда // // ПараметрыШапкаРозничныеЦены = Новый Структура; // Если ВыводитьУпаковки Тогда // ПараметрыШапкаРозничныеЦены.Вставить("РозничнаяЦенаЕдиница", НСтр("ru = '(Ед. изм.)'")); // Иначе // ПараметрыШапкаРозничныеЦены.Вставить("РозничнаяЦенаЕдиница", ""); // КонецЕсли; // //ОбластьШапкаТаблицыРозничныеЦены.Параметры.Заполнить(ПараметрыШапкаРозничныеЦены); // // //ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыРозничныеЦены); // // Если НЕ ВыводитьУпаковки Тогда // ТабличныйДокумент.Область("РозничнаяЦенаЕдиница").Объединить(); // ТабличныйДокумент.Область("РозничнаяЦенаЕдиница").ВертикальноеПоложение = ВертикальноеПоложение.Центр; // КонецЕсли; // //КонецЕсли; ВсегоНаименований = 0; Итого = 0; ИтогоНДС = 0; ИтогоРозничныеЦены = 0; // СТРОКИ ТЧ Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл ОбластьСтрокаТаблицыНачало.Параметры.Заполнить(ВыборкаПоСтрокамТЧ); ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицыНачало); Если ВыводитьКоды Тогда ОбластьСтрокаТаблицыКолонкаКодов.Параметры.Артикул = ВыборкаПоСтрокамТЧ["КолонкаКодов"]; ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаКодов); КонецЕсли; ОбластьСтрокаТаблицыКолонкаТоваров.Параметры.Заполнить(ВыборкаПоСтрокамТЧ); ОбластьСтрокаТаблицыКолонкаТоваров.Параметры.Товар = ФормированиеПечатныхФормСервер.ПолучитьПредставлениеНоменклатурыДляПечати(ВыборкаПоСтрокамТЧ.НоменклатураПредставление,ВыборкаПоСтрокамТЧ.ХарактеристикаПредставление); ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаТоваров); Если ВыводитьУпаковки Тогда ОбластьСтрокаТаблицыКолонкаУпаковок.Параметры.Заполнить(ВыборкаПоСтрокамТЧ); ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаУпаковок); КонецЕсли; ОбластьСтрокаТаблицыКолонкаКоличество.Параметры.Заполнить(ВыборкаПоСтрокамТЧ); ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаКоличество); Если НЕ ТолькоПоРозничнымЦенам Тогда ОбластьСтрокаТаблицыЦеныПоступления.Параметры.Заполнить(ВыборкаПоСтрокамТЧ); ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыЦеныПоступления); КонецЕсли; //Если ВыводитьЦены Тогда // ОбластьСтрокаТаблицыРозничныеЦены.Параметры.Заполнить(ВыборкаПоСтрокамТЧ); // ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыРозничныеЦены); //КонецЕсли; ВсегоНаименований = ВсегоНаименований + 1; Итого = Итого + ВыборкаПоСтрокамТЧ.Сумма; ИтогоНДС = ИтогоНДС + ВыборкаПоСтрокамТЧ.СуммаНДС; //Если ВыводитьЦены Тогда // // ИтогоРозничныеЦены = ИтогоРозничныеЦены +ВыборкаПоСтрокамТЧ.СуммаРозничная; // //КонецЕсли; КонецЦикла; ТабличныйДокумент.Вывести(ОбластьПодвалТаблицыНачало); Если ВыводитьКоды Тогда ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаКодов); КонецЕсли; ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаТоваров); Если ВыводитьУпаковки Тогда ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаУпаковок); КонецЕсли; ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаКоличество); Если НЕ ТолькоПоРозничнымЦенам Тогда ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыЦеныПоступления); КонецЕсли; //Если ВыводитьЦены Тогда // ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыРозничныеЦены); //КонецЕсли; // ИТОГО Если ТолькоПоРозничнымЦенам Тогда ТекстИтоговойСтроки = НСтр("ru = '%Итого%'"); ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%Итого%",ФормированиеПечатныхФормСервер.ФорматСумм(ИтогоРозничныеЦены)); ОбластьИтого.Параметры.Итого = ТекстИтоговойСтроки; Иначе ТекстИтоговойСтроки = НСтр("ru = '%Итого%'"); ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%Итого%",ФормированиеПечатныхФормСервер.ФорматСумм(Итого)); ОбластьИтого.Параметры.Итого = ТекстИтоговойСтроки; КонецЕсли; //Если ВыводитьЦены И НЕ ТолькоПоРозничнымЦенам Тогда // ТекстИтоговойСтроки = НСтр("ru = '%Итого%'"); // ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%Итого%",ФормированиеПечатныхФормСервер.ФорматСумм(ИтогоРозничныеЦены)); // ОбластьИтого.Параметры.ИтогоРозничныеЦены = ТекстИтоговойСтроки; //КонецЕсли; ТабличныйДокумент.Вывести(ОбластьИтого); // ПОДПИСИ ОбластьПодписей.Параметры.Заполнить(ВыборкаПоДокументам); ОбластьПодписей.Параметры.Получил = ФормированиеПечатныхФормСервер.ФамилияИнициалыФизЛица(ВыборкаПоДокументам.Получил); ТабличныйДокумент.Вывести(ОбластьПодписей); //УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка); КонецЦикла; ТабличныйДокумент.АвтоМасштаб = Истина; Возврат ТабличныйДокумент; КонецФункции |
|||
2
SnowBarsCloud
31.03.22
✎
22:53
|
При флаге "Остановка по ошибке" стопает в функции ДополнитьСтруктуру из модуля "ОбщегоНазначенияКлиентСервер". Может кто сталкивался. Может есть какие то особенности, как, например в УНФ
|
|||
3
hhhh
01.04.22
✎
01:48
|
(2) вообще-то это не отчет, а обработка
|
|||
4
Мимохожий Однако
01.04.22
✎
07:28
|
(0) //ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
ПараметрыРегистрации.Вид = "ПечатнаяФорма"; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |