Создание ВПФ Акт об оказании услуг в 1С Розница редакция 2.2
Уважаемые программисты, всем доброго времени суток! Подскажите пожалуйста, что в обработке программного кода не доработано!? Пытаюсь создать ВПФ Акт об оказании услуг в 1С Розница редакция 2.2. Вроде по инструкции все делал, в Конфигураторе ошибок не выдает, а при установке обработки в программу, при запуске пишет Недостаточно фактических параметров! Не судите строга, ученик 1С.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Функция ПолучитьНазаначениеОбработки()
Массив = Новый Массив;
Массив.Добавить("Документ.РеализацияТоваров");
Возврат Массив;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", ПолучитьНазаначениеОбработки());
ПараметрыРегистрации.Вставить("Наименование", "Гарантийный талон");
ПараметрыРегистрации.Вставить("Версия", "V 1.0");
ПараметрыРегистрации.Вставить("Информация", "ВПФ Гарантийный талон");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
Команды = ПолучитьТаблицуКоманд();
ДобавитьКоманду(Команды, "Гарантийный талон", "ГаратийныйТалон", "ВызовСерверногоМетода", Ложь, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", Команды);
Возврат ПараметрыРегистрации;
КонецФункции
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Акт") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Акт",
ПараметрыПечати.Представление,
ПечатьАктаОбОказанииУслуг(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры
Функция ПечатьАктаОбОказанииУслуг(МассивОбъектов, ОбъектыПечати)
ВыводитьУпаковки = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры");
ТабличныйДокумент = Новый ТабличныйДокумент;
РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс");
СинонимДокумента = НСтр("ru='Гарантийный талон'");
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваров_Акт";
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВложенныйЗапрос.Номер,
| ВложенныйЗапрос.Дата КАК Дата,
| ВложенныйЗапрос.Получатель,
| ВложенныйЗапрос.Поставщик,
| ВложенныйЗапрос.Организация,
| ВложенныйЗапрос.СуммаДокумента,
| ВложенныйЗапрос.УчитыватьНДС,
| ВложенныйЗапрос.ЦенаВключаетНДС,
| ВложенныйЗапрос.ЕстьСкидки,
| ВложенныйЗапрос.Ссылка КАК Ссылка
|ИЗ
| (ВЫБРАТЬ
| Документ.Ссылка.Номер КАК Номер,
| Документ.Ссылка.Дата КАК Дата,
| Документ.Ссылка.Контрагент КАК Получатель,
| Документ.Ссылка.Склад.Организация КАК Поставщик,
| Документ.Ссылка.Склад.Организация КАК Организация,
| Документ.Ссылка.СуммаДокумента КАК СуммаДокумента,
| Документ.Ссылка.УчитыватьНДС КАК УчитыватьНДС,
| Документ.Ссылка.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| МАКСИМУМ(ВЫБОР
| КОГДА Документ.Цена * Документ.Количество = Документ.Сумма
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ) КАК ЕстьСкидки,
| Документ.Ссылка КАК Ссылка
| ИЗ
| Документ.РеализацияТоваров.Товары КАК Документ
| ГДЕ
| Документ.Ссылка В(&МассивОбъектов)
| И Документ.Ссылка.Проведен
| И Документ.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
|
| СГРУППИРОВАТЬ ПО
| Документ.Ссылка,
| Документ.Ссылка.Номер,
| Документ.Ссылка.Дата,
| Документ.Ссылка.Контрагент,
| Документ.Ссылка.Склад.Организация,
| Документ.Ссылка.СуммаДокумента,
| Документ.Ссылка.УчитыватьНДС,
| Документ.Ссылка.ЦенаВключаетНДС,
| Документ.Ссылка.Склад.Организация) КАК ВложенныйЗапрос
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| Дата
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТаблицаТовары.Номенклатура.НаименованиеПолное КАК Номенклатура,
| ТаблицаТовары.Номенклатура.НаименованиеПолное КАК НоменклатураПредставление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаТовары.Характеристика) КАК ХарактеристикаПредставление,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Количество,
| ВЫБОР
| КОГДА ТаблицаТовары.Упаковка <> ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕ(ТаблицаТовары.Упаковка.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения)
| КОНЕЦ КАК ЕдиницаИзмерения,
| ТаблицаТовары.Цена КАК Цена,
| ТаблицаТовары.Сумма КАК Сумма,
| ТаблицаТовары.СтавкаНДС,
| ТаблицаТовары.СуммаНДС КАК СуммаНДС,
| ТаблицаТовары.Цена * ТаблицаТовары.Количество - ТаблицаТовары.Сумма КАК Скидка,
| ТаблицаТовары.Ссылка
|ИЗ
| Документ.РеализацияТоваров.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&МассивОбъектов)
| И ТаблицаТовары.Ссылка.Проведен
| И ТаблицаТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
|
|УПОРЯДОЧИТЬ ПО
| ТаблицаТовары.Ссылка,
| ТаблицаТовары.НомерСтроки
|ИТОГИ ПО
| ТаблицаТовары.Ссылка";
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Результаты = Запрос.ВыполнитьПакет();
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.РеализацияТоваров.ПФ_MXL_Акт");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьШапкаСоСкидкой = Макет.ПолучитьОбласть("ШапкаТаблицыСоСкидкой");
ОбластьСтрокиСоСкидкой = Макет.ПолучитьОбласть("СтрокаСоСкидкой");
ОбластьШапкаБезСкидок = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьСтрокиБезСкидок = Макет.ПолучитьОбласть("Строка");
ОбластьИтого = Макет.ПолучитьОбласть("Итого");
ОбластьИтогоНДС = Макет.ПолучитьОбласть("ИтогоНДС");
ОбластьСуммаПрописью = Макет.ПолучитьОбласть("СуммаПрописью");
ОбластьПодписей = Макет.ПолучитьОбласть("Подписи");
ВыборкаПоДокументам = Результаты[0].Выбрать();
ВыборкаПоТабличнымЧастям = Результаты[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ПервыйДокумент = Истина;
Пока ВыборкаПоДокументам.Следующий() Цикл
Если НЕ ВыборкаПоТабличнымЧастям.НайтиСледующий(Новый Структура("Ссылка",ВыборкаПоДокументам.Ссылка)) Тогда
Продолжить;
КонецЕсли;
ВыборкаПоСтрокамТЧ = ВыборкаПоТабличнымЧастям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если НЕ ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ВыборкаПоДокументам);
ОбластьЗаголовок.Параметры.Заполнить(ВыборкаПоДокументам);
ОбластьЗаголовок.Параметры.ТекстЗаголовка = ФормированиеПечатныхФормСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, СинонимДокумента);
ПредставлениеПоставщика = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(ФормированиеПечатныхФормСервер.СведенияОЮрФизЛице(ВыборкаПоДокументам.Поставщик, ВыборкаПоДокументам.Дата), "ПолноеНаименование,");
ОбластьЗаголовок.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика;
ПредставлениеПолучателя = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(ФормированиеПечатныхФормСервер.СведенияОЮрФизЛице(ВыборкаПоДокументам.Получатель, ВыборкаПоДокументам.Дата), "ПолноеНаименование,");
ОбластьЗаголовок.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателя;
ТабличныйДокумент.Вывести(ОбластьЗаголовок);
Если ВыборкаПоДокументам.ЕстьСкидки Тогда
ТабличныйДокумент.Вывести(ОбластьШапкаСоСкидкой);
ОбластьСтроки = ОбластьСтрокиСоСкидкой;
Иначе
ТабличныйДокумент.Вывести(ОбластьШапкаБезСкидок);
ОбластьСтроки = ОбластьСтрокиБезСкидок;
КонецЕсли;
// СТРОКИ ТЧ
ВсегоНаименований = 0;
Сумма = 0;
ВсегоСкидок = 0;
ВсегоБезСкидок = 0;
СуммаНДС = 0;
Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл
Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамТЧ.Номенклатура) Тогда
Продолжить;
КонецЕсли;
ВсегоНаименований = ВсегоНаименований + 1;
ОбластьСтроки.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ОбластьСтроки.Параметры.НомерСтроки = ВсегоНаименований;
ОбластьСтроки.Параметры.Товар = ФормированиеПечатныхФормСервер.ПолучитьПредставлениеНоменклатурыДляПечати(ВыборкаПоСтрокамТЧ.НоменклатураПредставление,ВыборкаПоСтрокамТЧ.ХарактеристикаПредставление);
Если ВыборкаПоДокументам.ЕстьСкидки Тогда
ОбластьСтроки.Параметры.Скидка = ВыборкаПоСтрокамТЧ.Скидка;
ОбластьСтроки.Параметры.СуммаБезСкидки = ФормированиеПечатныхФормСервер.ФорматСумм(ВыборкаПоСтрокамТЧ.Сумма + ВыборкаПоСтрокамТЧ.Скидка);
КонецЕсли;
Сумма = Сумма + ВыборкаПоСтрокамТЧ.Сумма;
ВсегоСкидок = ВсегоСкидок + ВыборкаПоСтрокамТЧ.Скидка;
ВсегоБезСкидок = Сумма + ВсегоСкидок;
СуммаНДС = СуммаНДС + Окр(ВыборкаПоСтрокамТЧ.СуммаНДС, 2, 1);
ТабличныйДокумент.Вывести(ОбластьСтроки);
КонецЦикла;
ОбластьИтого.Параметры.Всего = ФормированиеПечатныхФормСервер.ФорматСумм(Сумма);
ТабличныйДокумент.Вывести(ОбластьИтого);
Если ВыборкаПоДокументам.УчитыватьНДС Тогда
ОбластьИтогоНДС.Параметры.ВсегоНДС = ФормированиеПечатныхФормСервер.ФорматСумм(СуммаНДС);
ОбластьИтогоНДС.Параметры.НДС = ?(ВыборкаПоДокументам.ЦенаВключаетНДС, НСтр("ru = 'В том числе НДС'"), " " + НСтр("ru = 'Сумма НДС'"));
ТабличныйДокумент.Вывести(ОбластьИтогоНДС);
КонецЕсли;
ТекстИтоговойСтроки = НСтр("ru = 'Всего оказано услуг %ВсегоНаименований%, на сумму %Итого%'");
ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%ВсегоНаименований%", ВсегоНаименований);
ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%Итого%", ФормированиеПечатныхФормСервер.ФорматСумм(Сумма));
ОбластьСуммаПрописью.Параметры.ИтоговаяСтрока = ТекстИтоговойСтроки;
ОбластьСуммаПрописью.Параметры.СуммаПрописью = ФормированиеПечатныхФормСервер.СформироватьСуммуПрописью(Сумма);
ТабличныйДокумент.Вывести(ОбластьСуммаПрописью);
// ПОДПИСИ
ОбластьПодписей.Параметры.Заполнить(ВыборкаПоДокументам);
ТабличныйДокумент.Вывести(ОбластьПодписей);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка);
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;
КонецФункции
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
// Акт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "Акт";
КомандаПечати.Представление = НСтр("ru = 'Акт об оказании услуг'");
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Порядок = 65;
КонецПроцедуры
Показать
для начала вот так, а дальше уж надо смотреть...
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Акт") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Акт",
"Акт",
ПечатьАктаОбОказанииУслуг(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот