В обработчике печати не был сформирован табличный документ

1. Dunda 49 08.08.19 14:27 Сейчас в теме
Нужно добавить внешнюю печатную форму в 1С Фреш. Чтобы проверить работоспособность обработки, сделала все по регламенту. Создала клиент-серверную базу, разместила ее в вебсервисе и оттуда печатаю свою форму.

Все прекрасно рабатает. А вот в базе в облаке пишет такую ошибку
В обработчике печати не был сформирован табличный документ

Функция СведенияОВнешнейОбработке() Экспорт

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

Функция УказатьНаименованиеКомандыПечати()
    Наименование = ЭтотОбъект.Метаданные().ПолноеИмя();
    Возврат Наименование;
КонецФункции

Функция УказатьНаименованиеВнешнейПечатнойФормы()

    Наименование = ЭтотОбъект.Метаданные().Представление();
    Возврат Наименование;

КонецФункции

Функция ПолучитьМетаданныеДокументаПечати()

	ПолноеИмя = СсылкаНаОбъект.Метаданные().ПолноеИмя();
    Возврат ПолноеИмя;

КонецФункции

Функция ПолучитьТаблицуКоманд()

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

    Возврат Команды;
	
КонецФункции

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

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

КонецФункции

////////////////////////////////////////////////////////////­///////////////////////////////////////////


Функция ПечатьФормы(МассивОбъектов)
	
	ТабДокумент = Новый ТабличныйДокумент;
	
	Для Каждого СсылкаНаОбъект из МассивОбъектов Цикл
		
		если СсылкаНаОбъект.Начисления.Количество()<> 0 и СсылкаНаОбъект.ИзменитьНачисления тогда
			
			ЕСЛИ СсылкаНаОбъект.Начисления.Количество()=1 тогда   // один вид начисления
				
				Макет = ПолучитьМакет("Макет1");
				ОбластьМакетаШапка 		 = Макет.ПолучитьОбласть("Шапка");
				ПовторятьПриПечатиСтроки = Макет.ПолучитьОбласть("ПовторятьПриПечати");
				ОбластьМакетаПодвал 	 = Макет.ПолучитьОбласть("Подвал");
				ОбластьМакета 			 = Макет.ПолучитьОбласть("СтрокаРаботник");
				ОбластьМакетаНачисление1 = Макет.ПолучитьОбласть("СтрокаНачисление1");
				ОбластьИтого 			 = Макет.ПолучитьОбласть("Итого");
			
				
				Организация   = СсылкаНаОбъект.Организация;
				ДатаПриказа   = СсылкаНаОбъект.Дата;
				НомерПриказа  = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаОбъект, "Номер"), Истина, Ложь);
				
				СписокНачисленийДокумента = Новый ТаблицаЗначений;
				СписокНачисленийДокумента.Колонки.Добавить("Начисление", Новый ОписаниеТипов("ПланВидовРасчетаСсылка.Начисления"));//ПланыВидовРасчета.Начисления);
				СписокНачисленийДокумента.Колонки.Добавить("Действие", 	 Новый ОписаниеТипов("ПеречислениеСсылка.ДействияСНачислениямиИУдержаниями"));//Перечисления.ДействияСНачислениямиИУдержаниями);
				СписокНачисленийДокумента.Колонки.Добавить("Показатель", Новый ОписаниеТипов("СправочникСсылка.ПоказателиРасчетаЗарплаты"));//Справочники.ПоказателиРасчетаЗарплаты);
				
				ПустойПоказатель = Справочники.ПоказателиРасчетаЗарплаты.ПустаяСсылка();
				КоличествоПоказателей = 0;
				ИмяПоказателяКратко   = "";
				Для каждого СтрокаНачисления из СсылкаНаОбъект.Начисления Цикл
					
					ВидНачисления = Строка(СтрокаНачисления.Действие) + " - "+ Строка(СтрокаНачисления.Начисление);
					
					Если ЗначениеЗаполнено(СтрокаНачисления.Начисление) тогда
						ОписаниеВидаРасчета = ЗарплатаКадрыРасширенныйПовтИсп.ПолучитьИнформациюОВидеРасчета(СтрокаНачисления.Начисление);
						если СтрокаНачисления.Действие <> Перечисления.ДействияСНачислениямиИУдержаниями.Отменить Тогда
							Для каждого ОписаниеПоказателяНачисления Из ОписаниеВидаРасчета.Показатели Цикл
								Если ОписаниеПоказателяНачисления.ЗапрашиватьПриВводе Тогда
									СтрНачисления = СписокНачисленийДокумента.Добавить();
									СтрНачисления.Начисление = СтрокаНачисления.Начисление;
									СтрНачисления.Действие	 = СтрокаНачисления.Действие;
									СтрНачисления.Показатель = ОписаниеПоказателяНачисления.Показатель;
									
									КоличествоПоказателей = КоличествоПоказателей +1;
									ИмяПоказателяКратко   = ОписаниеПоказателяНачисления.Показатель.КраткоеНаименование;
								КонецЕсли;
							КонецЦикла;
						конецЕсли;
					конецЕсли;
				КонецЦикла;

				ОбластьМакетаШапка.Параметры.НазваниеОрганизации = Организация.НаименованиеПолное;
				ОбластьМакетаШапка.Параметры.НомерДок 			 = НомерПриказа;	
				ОбластьМакетаШапка.Параметры.ДатаДок 			 = ДатаПриказа;
				ОбластьМакетаШапка.Параметры.ВидНачисления 		 = ВидНачисления;

				ТабДокумент.Вывести(ОбластьМакетаШапка);
				
				если КоличествоПоказателей =1 тогда
					ПовторятьПриПечатиСтроки.Параметры.Показатель = ИмяПоказателяКратко;
				конецЕсли;
				
				ТабДокумент.Вывести(ПовторятьПриПечатиСтроки);
				
				
				ИтогоСумма = 0;
			
				
				ДанныеСотрудника = КадровыйУчет.КадровыеДанныеСотрудников(Истина, СсылкаНаОбъект.Сотрудник, "ТекущееПодразделение, ТекущаяДолжность, ФизическоеЛицо, Код", ДатаПриказа);
			
				ОбластьМакета.Параметры.Сотрудник 	 	= СсылкаНаОбъект.Сотрудник;
				ОбластьМакета.Параметры.ТабНомер 	 	= СсылкаНаОбъект.Сотрудник.Код;
				ОбластьМакета.Параметры.Подразделение 	= ДанныеСотрудника[0].ТекущееПодразделение;
				ОбластьМакета.Параметры.Должность 		= ДанныеСотрудника[0].ТекущаяДолжность;
					
				Для каждого СтрокаНачисления из СсылкаНаОбъект.Начисления Цикл
					ИдентификаторСтрокиВидаРасчета = СтрокаНачисления.ИдентификаторСтрокиВидаРасчета;
					СтрокиПоказателей = СсылкаНаОбъект.Показатели.НайтиСтроки(Новый Структура("ИдентификаторСтрокиВидаРасчета", ИдентификаторСтрокиВидаРасчета));
					
					если КоличествоПоказателей =1 тогда
						Для каждого ПоказательСотрудника Из СтрокиПоказателей Цикл
						   ОбластьМакета.Параметры.Результат = ПоказательСотрудника.Значение;
						КонецЦикла;
						ТабДокумент.Вывести(ОбластьМакета);
						
					иначе
						
						ТабДокумент.Вывести(ОбластьМакета);
						
						ВидНачисления = ПланыВидовРасчета.Начисления.ПустаяСсылка();
						Для каждого ПоказательСотрудника Из СтрокиПоказателей Цикл
							ВидНачисленияПоПоказателю = СписокНачисленийДокумента.Найти(ПоказательСотрудника.Показатель,"Показатель");
							Если ВидНачисленияПоПоказателю <> Неопределено и ВидНачисленияПоПоказателю.Начисление <> ВидНачисления тогда
								ВидНачисления = ВидНачисленияПоПоказателю.Начисление;
								ОбластьМакетаНачисление1.Параметры.ВидНачисления 	= ВидНачисления;
							конецЕсли;
							ОбластьМакетаНачисление1.Параметры.Показатель	  	= ПоказательСотрудника.Показатель.КраткоеНаименование;
							ОбластьМакетаНачисление1.Параметры.Значение		  	= ПоказательСотрудника.Значение;
							ТабДокумент.Вывести(ОбластьМакетаНачисление1);
						КонецЦикла;
					конецЕсли;
					   
				КонецЦикла;
			
				
				ТабДокумент.Вывести(ОбластьИтого);
				
				ОбластьМакетаПодвал.Параметры.Комментарий = СсылкаНаОбъект.Комментарий;
				ТабДокумент.Вывести(ОбластьМакетаПодвал);
				
				ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
				
			
			ИНАЧЕ   //несколько видов начисления
				
				Макет = ПолучитьМакет("Макет");
				ОбластьМакетаШапка 		 = Макет.ПолучитьОбласть("Шапка");
				ОбластьМакетаНачисление	 = Макет.ПолучитьОбласть("СтрокаНачисление");
				ОбластьМакетаШапка1		 = Макет.ПолучитьОбласть("Шапка1");
				ПовторятьПриПечатиСтроки = Макет.ПолучитьОбласть("ПовторятьПриПечати");
				ОбластьМакетаПодвал 	 = Макет.ПолучитьОбласть("Подвал");
				ОбластьМакета 			 = Макет.ПолучитьОбласть("СтрокаРаботник");
				ОбластьМакетаНачисление1 = Макет.ПолучитьОбласть("СтрокаНачисление1");
				ОбластьИтого 			 = Макет.ПолучитьОбласть("Итого");
			
				НомерПриказа  = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаОбъект, "Номер"), Истина, Ложь);
		
				Организация = СсылкаНаОбъект.Организация;
				ДатаПриказа = СсылкаНаОбъект.Дата;

				ОбластьМакетаШапка.Параметры.НомерДок 			 = НомерПриказа;	
				ОбластьМакетаШапка.Параметры.ДатаДок 			 = СсылкаНаОбъект.Дата;
				ОбластьМакетаШапка.Параметры.НазваниеОрганизации = СокрЛП(СсылкаНаОбъект.Организация.НаименованиеПолное);//СокрЛП(СсылкаНаОбъект.Организация.Наименование);

				ТабДокумент.Вывести(ОбластьМакетаШапка);
				
				СписокНачисленийДокумента = Новый ТаблицаЗначений;
				СписокНачисленийДокумента.Колонки.Добавить("Начисление", Новый ОписаниеТипов("ПланВидовРасчетаСсылка.Начисления"));//ПланыВидовРасчета.Начисления);
				СписокНачисленийДокумента.Колонки.Добавить("Действие", 	 Новый ОписаниеТипов("ПеречислениеСсылка.ДействияСНачислениямиИУдержаниями"));//Перечисления.ДействияСНачислениямиИУдержаниями);
				СписокНачисленийДокумента.Колонки.Добавить("Показатель", Новый ОписаниеТипов("СправочникСсылка.ПоказателиРасчетаЗарплаты"));//Справочники.ПоказателиРасчетаЗарплаты);
				
				ПустойПоказатель = Справочники.ПоказателиРасчетаЗарплаты.ПустаяСсылка();
				Для каждого СтрокаНачисления из СсылкаНаОбъект.Начисления Цикл
					Если ЗначениеЗаполнено(СтрокаНачисления.Начисление) тогда
						ОписаниеВидаРасчета = ЗарплатаКадрыРасширенныйПовтИсп.ПолучитьИнформациюОВидеРасчета(СтрокаНачисления.Начисление);
						если СтрокаНачисления.Действие <> Перечисления.ДействияСНачислениямиИУдержаниями.Отменить Тогда
							Для каждого ОписаниеПоказателяНачисления Из ОписаниеВидаРасчета.Показатели Цикл
								Если ОписаниеПоказателяНачисления.ЗапрашиватьПриВводе Тогда
									СтрНачисления = СписокНачисленийДокумента.Добавить();
									СтрНачисления.Начисление = СтрокаНачисления.Начисление;
									СтрНачисления.Действие	 = СтрокаНачисления.Действие;
									СтрНачисления.Показатель = ОписаниеПоказателяНачисления.Показатель;
								КонецЕсли;
							КонецЦикла;
						конецЕсли;
					конецЕсли;
					
					ОбластьМакетаНачисление.Параметры.ВидНачисления = Строка(СтрокаНачисления.Действие) + " - "+ Строка(СтрокаНачисления.Начисление);
					ТабДокумент.Вывести(ОбластьМакетаНачисление);
				КонецЦикла;
				
				ТабДокумент.Вывести(ОбластьМакетаШапка1);
				ТабДокумент.Вывести(ПовторятьПриПечатиСтроки);
				
				ИтогоСумма = 0;
				ДанныеСотрудника = КадровыйУчет.КадровыеДанныеСотрудников(Истина, СсылкаНаОбъект.Сотрудник, "ТекущееПодразделение, ТекущаяДолжность, ФизическоеЛицо, Код", ДатаПриказа);
				
				ОбластьМакета.Параметры.Сотрудник 	 	= СсылкаНаОбъект.Сотрудник;
				ОбластьМакета.Параметры.ТабНомер 	 	= СсылкаНаОбъект.Сотрудник.Код;
				ОбластьМакета.Параметры.Подразделение 	= ДанныеСотрудника[0].ТекущееПодразделение;
				ОбластьМакета.Параметры.Должность 		= ДанныеСотрудника[0].ТекущаяДолжность;
				

				ТабДокумент.Вывести(ОбластьМакета);
					
				Для каждого СтрокаНачисления из СсылкаНаОбъект.Начисления Цикл
					
					ИдентификаторСтрокиВидаРасчета = СтрокаНачисления.ИдентификаторСтрокиВидаРасчета;
					СтрокиПоказателей = СсылкаНаОбъект.Показатели.НайтиСтроки(Новый Структура("ИдентификаторСтрокиВидаРасчета", ИдентификаторСтрокиВидаРасчета));
					
					ВидНачисления = ПланыВидовРасчета.Начисления.ПустаяСсылка();
					Для каждого ПоказательСотрудника Из СтрокиПоказателей Цикл
						ВидНачисленияПоПоказателю = СписокНачисленийДокумента.Найти(ПоказательСотрудника.Показатель,"Показатель");
						Если ВидНачисленияПоПоказателю <> Неопределено и ВидНачисленияПоПоказателю.Начисление <> ВидНачисления тогда
							ВидНачисления = ВидНачисленияПоПоказателю.Начисление;
							ОбластьМакетаНачисление1.Параметры.ВидНачисления 	= ВидНачисления;
						конецЕсли;
						ОбластьМакетаНачисление1.Параметры.Показатель	  	= ПоказательСотрудника.Показатель.КраткоеНаименование;
						ОбластьМакетаНачисление1.Параметры.Значение		  	= ПоказательСотрудника.Значение;
						ТабДокумент.Вывести(ОбластьМакетаНачисление1);
					КонецЦикла;
					
				КонецЦикла;
				
				ТабДокумент.Вывести(ОбластьИтого);
				
				ОбластьМакетаПодвал.Параметры.Комментарий = СсылкаНаОбъект.Комментарий;
				ТабДокумент.Вывести(ОбластьМакетаПодвал);
				
				ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
				
			КОНЕЦЕСЛИ;
    	КонецЕсли;
	КонецЦикла;
	
	Возврат ТабДокумент;
	
КонецФункции

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

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

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

Показать


Что еще нужно сделать??
или какие настройки поставить, чтобы у меня выдавало такую же ошибку, чтобы я могла дальше искать?
По другим темам искала - идентификатор стоял.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. N0t_F0und 10 08.08.19 16:33 Сейчас в теме
А форма у этой обработки есть?
4. Dunda 49 08.08.19 17:00 Сейчас в теме
(2)неа нету. это внешняя печатная форма
3. user633533_encantado 12 08.08.19 16:40 Сейчас в теме
Сколько же у тебя лишнего кода, объявление внешней обработки в ее модуле уже давно так не делается.

А ошибка может возникать из-за чего угодно в момент формирования табличного документа, нужно завести форму для отладки и запускать из нее печать, сразу понятно будет где спотыкается.
5. Dunda 49 08.08.19 17:02 Сейчас в теме
(3)
Знаю. обработка такой досталась от предыдущего программиста, хочу немного уменьшить что ли ее...Просто с облаками первый раз работаю. в моей веб-версии она работает, а в облаке нет.
6. lefthander 08.08.19 17:04 Сейчас в теме
(5)Возможно надо отправить в поддержку облака, там ее проверят и подключат, так раньше было, давно с облаками типа фреш не работал.
7. Dunda 49 08.08.19 18:13 Сейчас в теме
(6)они ее проверили и подключили но там выдает такую ошибку выше
Оставьте свое сообщение

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