Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 13:03

Внешняя печатная форма "Товарный чек

Автор Макс Слобожанинов3, 21 июн 2023, 22:15

0 Пользователей и 1 гость просматривают эту тему.

Макс Слобожанинов3

Всем привет. Подскажите пожалуйста.Не очень давно начал заниматься программированием в 1с и возникла задача  Создать внешнюю печатную форму "Товарный чек" для документа "Поступление товаров и услуг", для типовой конфигурации "Управление торговлей, редакция 10.3". Делаю по видео из YouTube.Попытался проверить но идет ошибка Не удалось сформировать внешнюю печатную форму!
Обращение к процедуре объекта как к функции (Печать)
Функция СведенияОВнешнейОбработке()   Экспорт
   


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

Возврат ПараметрыРегистрации;

КонецФункции //СведенияОВнешнейОбработке



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

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

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

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

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ЧекВнешний",
"Чек внешний",
СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати));

КонецПроцедуры // Печать()


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

   
   КонецФункции // СформироватьПечатнуюФорму()

LexaK

Макс Слобожанинов3, в вашем коде места в ошибкой не обнаружено.
сама ошибка в следующем.
где-то в конфигурации у вас примерно такой код

ЧтоТо = ВашаВнешняяОбработка.Печать(...); //вот это и есть: Обращение к процедуре объекта как к функции (Печать)

а надо так

ВашаВнешняяОбработка.Печать(...);
если помогло нажмите: Спасибо!

Макс Слобожанинов3

Товарищи ниак не получается победить 2 таблицы выходит  вместо одной.Может мне подскажите куда копать?

LexaK

Макс Слобожанинов3, Поспотрите на свой макет, Область СтрокаТаблицы!
вот она целикоа с заколовком на КАЖДЫЙ товар и выводится!

сделайте две области
1.СтрокаЗаголовок
2.СтрокаТовар

Область СтрокаЗаголовок вставьте до цикла, там же где выводите Область Шапка, под ней.

а в цикле сделайте вывод области СтрокаТовар (состоящей именно из ОДНОЙ строки макета)
если помогло нажмите: Спасибо!

Макс Слобожанинов3

Хотел ещё уточнить что может быть не так после 824 не прописывается ,00  и слово ноль не преобразуется в цифры.в коде ОбластьПодвал.Параметры.СуммаИтого = СуммаИтого;
ОбластьПодвал.Параметры.ИтоговаяСтрока = "Всего наименований "  + ВыборкаДетальныеЗаписи.Количество() + ", на сумму " + СуммаИтого;
ОбластьПодвал.Параметры.СуммаПрописью = ЧислоПрописью(СуммаИтого, "Л=ru_RU;ДП=Истина", "рубль,рубля,рублей,м,копейка,копейки,  копеек,ж");
ТабДок.Вывести(ОбластьПодвал);

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск