Создание ВПФ Акт об оказании услуг в 1С Розница редакция 2.2

1. user844451 29.09.20 13:43 Сейчас в теме
Уважаемые программисты, всем доброго времени суток! Подскажите пожалуйста, что в обработке программного кода не доработано!? Пытаюсь создать ВПФ Акт об оказании услуг в 1С Розница редакция 2.2. Вроде по инструкции все делал, в Конфигураторе ошибок не выдает, а при установке обработки в программу, при запуске пишет Недостаточно фактических параметров! Не судите строга, ученик 1С.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user844451 29.09.20 13:45 Сейчас в теме
Функция ПолучитьНазаначениеОбработки()
	
	Массив = Новый Массив;
	Массив.Добавить("Документ.РеализацияТоваров");
	
	Возврат Массив;
	
КонецФункции

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

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

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

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Акт") Тогда

		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Акт",
				ПараметрыПечати.Представление,
				ПечатьАктаОбОказанииУслуг(МассивОбъектов, ОбъектыПечати));
	КонецЕсли;
	

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

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

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	// Акт
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "Акт";
	КомандаПечати.Представление = НСтр("ru = 'Акт об оказании услуг'");
	КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
	КомандаПечати.Порядок = 65;
			
КонецПроцедуры

Показать
3. user844451 29.09.20 13:47 Сейчас в теме
Прикрепляю файлом: ГарантийныйТалон.epf
Прикрепленные файлы:
ГарантийныйТалон.epf
4. user844451 29.09.20 13:51 Сейчас в теме
В данной обработке, нужно поменять наименование печатной формы, в идеале нужно чтобы было, как на картинке...
Прикрепленные файлы:
5. mushdaj 29.09.20 14:16 Сейчас в теме
для начала вот так, а дальше уж надо смотреть...
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Акт") Тогда

        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Акт",
               "Акт",
                ПечатьАктаОбОказанииУслуг(МассивОбъектов, ОбъектыПечати));
    КонецЕсли;
    

    
КонецПроцедуры
Показать
6. user844451 29.09.20 14:29 Сейчас в теме
для начала вот так, а дальше уж надо смотреть...


Поменял код, свой убрал, Ваш добавил, изменения нету, ошибка Недостаточно фактических параметров!!!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот