Печатная форма ошибка

1. MORSON 07.03.24 11:42 Сейчас в теме
Имеется следующий код:
&НаСервере
Процедура СформироватьНаСервере(ТабДок, СсылкаНаОбъект)
	
	//ДатаНачала = Период.ДатаНачала;
	//ДатаОкончания = Период.ДатаОкончания;
	
	
	//Получить макет
	Макет = Отчеты.НачислениеЗПНаВыбор1.ПолучитьМакет("Макет1");
	
	//Получение областей из макета
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьШапкаТаблицыНач = Макет.ПолучитьОбласть("ШапкаТаблицыНач");
	ОбластьСтрокаТаблицыНач = Макет.ПолучитьОбласть("СтрокаТаблицыНач");
	ОбластьПодвалНач = Макет.ПолучитьОбласть("ПодвалНач");
	ОбластьШапкаТаблицыУд = Макет.ПолучитьОбласть("ШапкаТаблицыУд");
	ОбластьСтрокаТаблицыУд = Макет.ПолучитьОбласть("СтрокаТаблицыУд");
	ОбластьПодвалУд = Макет.ПолучитьОбласть("ПодвалУд");
	
	//Заполнение параметров и вывод областей в табличный документ
	
	//шапка 
	
	
	
	ОбластьШапка.Параметры.Организация = Отчет.Организация;
	ОбластьШапка.Параметры.Поликлиника = Отчет.Поликлиника;
	ОбластьШапка.Параметры.Сотрудник = Отчет.Сотрудник;
	ОбластьШапка.Параметры.ПериодДатаНачала = Формат(Отчет.Период.ДатаНачала,"ДФ=dd.MM.yyyy");
	ОбластьШапка.Параметры.ПериодДатаКонца = Формат(Отчет.Период.ДатаОкончания,"ДФ=dd.MM.yyyy");

	
	
	ТабДок.Вывести(ОбластьШапка);		
	
	//шапка таблицы Нач
	СальдоНачало = 0; 
	Если Отчет.Организация.Пустая() Тогда
		   ОргВыбор = "";
	   Иначе
		  ОргВыбор = " И Организация = &Организация";
		  КонецЕсли;
		Если Отчет.Поликлиника.Пустая() Тогда
		   ПоликВыбор = "";
	   Иначе
		  ПоликВыбор = " И Поликлиника = &Поликлиника";
		  КонецЕсли;
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	НачисленнаяЗПОстатки.СуммаЗПОстаток КАК СуммаЗПОстаток,
		|	НачислениеЗПСотрудника.НачисленияЗП.(
		|		СтоимостьН КАК СуммаДохода,
		|		КоличествоН КАК ПроцентДохода
		|	) КАК НачисленияЗП
		|ИЗ
		|	РегистрНакопления.НачисленнаяЗП.Остатки(&Дата1, Сотрудник = &Сотрудник"+ОргВыбор+ПоликВыбор+") КАК НачисленнаяЗПОстатки,
		|	Документ.НачислениеЗПСотрудника КАК НачислениеЗПСотрудника";

		//|				И Организация = &Организация
		//|				И Поликлиника = &Поликлиника) КАК НачисленнаяЗПОстатки"
	
	Запрос.УстановитьПараметр("Дата1",Отчет.Период.ДатаНачала);
	Запрос.УстановитьПараметр("Организация", Отчет.Организация);
	Запрос.УстановитьПараметр("Поликлиника", Отчет.Поликлиника);
	Запрос.УстановитьПараметр("Сотрудник", Отчет.Сотрудник);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 
		
		СальдоНачало = ВыборкаДетальныеЗаписи.СуммаЗПОстаток;
		ОбластьШапкаТаблицыНач.Параметры.СуммаДохода = ВыборкаДетальныеЗаписи.СуммаДохода;
		ОбластьШапкаТаблицыНач.Параметры.ПроцентДохода = ВыборкаДетальныеЗаписи.ПроцентДохода;
		
	КонецЦикла;
	
	Если СальдоНачало = NULL тогда
		СальдоНачало = 0
	КонецЕсли;
	
	ОбластьШапкаТаблицыНач.Параметры.СальдоНачало = СальдоНачало;
	ТабДок.Вывести(ОбластьШапкаТаблицыНач);
	
		
		
	//Строка таблицы Начисления
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	НачисленнаяЗПОборотыОбороты.Отделение КАК Отделение,
		|	НачисленнаяЗПОборотыОбороты.Должность КАК Должность,
		|	НачисленнаяЗПОборотыОбороты.СуммаЗПОборот КАК СуммаЗПОборот,
		|	НачисленнаяЗПОборотыОбороты.ВидРасчета КАК ВидРасчета,
		|	НачисленнаяЗПОборотыОбороты.ПериодМес КАК ПериодМес
		|ИЗ
		|	РегистрНакопления.НачисленнаяЗПОбороты.Обороты(
		|			&Дата1,
		|			&Дата2,
		|			,
		|			Сотрудник = &Сотрудник "+ОргВыбор+ПоликВыбор+") КАК НачисленнаяЗПОборотыОбороты
		|ГДЕ
		|	НачисленнаяЗПОборотыОбороты.СуммаЗПОборот >= 0
		|
		|УПОРЯДОЧИТЬ ПО
		|	ВидРасчета,
		|	ПериодМес,
		|	Отделение,
		|	Должность,
		|	СуммаЗПОборот";

	Запрос.УстановитьПараметр("Сотрудник", Отчет.Сотрудник);
	Запрос.УстановитьПараметр("Организация", Отчет.Организация);
	Запрос.УстановитьПараметр("Поликлиника", Отчет.Поликлиника);
	Запрос.УстановитьПараметр("Дата1", Отчет.Период.ДатаНачала);
	Запрос.УстановитьПараметр("Дата2", Отчет.Период.ДатаОкончания);

	РезультатЗапроса = Запрос.Выполнить();

	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

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

	//подвал нач
		
	// Запрос для суммы НачисленияЗП.СуммаН
	СуммаНачисленияЗП = 0;
	СальдоКонецН = 0;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	    "ВЫБРАТЬ
	    |	СУММА(ЕСТЬNULL(НачисленнаяЗПОбороты.СуммаЗППриход, 0)) КАК СуммаНачисленияЗП
	    |ИЗ
	    |	РегистрНакопления.НачисленнаяЗП.Обороты(
	    |			&Дата1,
	    |			&Дата2,
	    |			,
	    |			Сотрудник = &Сотрудник "+ОргВыбор+ПоликВыбор+" ) КАК НачисленнаяЗПОбороты";
	
    Запрос.УстановитьПараметр("Сотрудник", Отчет.Сотрудник);
	Запрос.УстановитьПараметр("Организация", Отчет.Организация);
	Запрос.УстановитьПараметр("Поликлиника", Отчет.Поликлиника);
	Запрос.УстановитьПараметр("Дата1", Отчет.Период.ДатаНачала);
	Запрос.УстановитьПараметр("Дата2", Отчет.Период.ДатаОкончания);

	РезультатЗапроса = Запрос.Выполнить();

	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

	Если ВыборкаДетальныеЗаписи.Следующий() Тогда
	    СуммаНачисленияЗП = ВыборкаДетальныеЗаписи.СуммаНачисленияЗП;
	КонецЕсли;
	
	Если СуммаНачисленияЗП = NULL тогда
		СуммаНачисленияЗП = 0
	КонецЕсли;

	// Расчет СальдоКонецН
	СальдоКонецН = СуммаНачисленияЗП;

	// Вывод результата
	ОбластьПодвалНач.Параметры.СальдоКонецН = СальдоКонецН;
	ТабДок.Вывести(ОбластьПодвалНач);
	
	
	//шапка таблицы Уд
	ТабДок.Вывести(ОбластьШапкаТаблицыУд);
	
	//Строка таблицы Уд 
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ВыплатыОборотыОбороты.Сотрудник КАК Сотрудник,
		|	ВыплатыОборотыОбороты.Организация КАК Организация,
		|	ВыплатыОборотыОбороты.Поликлиника КАК Поликлиника,
		|	ВыплатыОборотыОбороты.Выплата КАК Выплата,
		|	ВыплатыОборотыОбороты.СуммаЗПОборот КАК СуммаЗПОборот,
		|	NULL КАК Должность,
		|	NULL КАК Отделение
		|ИЗ
		|	РегистрНакопления.ВыплатыОбороты.Обороты(
		|			&Дата1,
		|			&Дата2,
		|			,
		|			Сотрудник = &Сотрудник "+ОргВыбор+ПоликВыбор+") КАК ВыплатыОборотыОбороты
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	НачисленнаяЗПОборотыОбороты.Сотрудник,
		|	НачисленнаяЗПОборотыОбороты.Организация,
		|	НачисленнаяЗПОборотыОбороты.Поликлиника,
		|	НачисленнаяЗПОборотыОбороты.ВидРасчета,
		|ВЫБОР	
		|	КОГДА НачисленнаяЗПОборотыОбороты.СуммаЗПОборот < 0 
		|	ТОГДА -1 * НачисленнаяЗПОборотыОбороты.СуммаЗПОборот 
		|	ИНАЧЕ НачисленнаяЗПОборотыОбороты.СуммаЗПОборот 
		|	КОНЕЦ КАК СуммаЗПОборот,
		|	НачисленнаяЗПОборотыОбороты.Должность,
		|	НачисленнаяЗПОборотыОбороты.Отделение
		|ИЗ
		|	РегистрНакопления.НачисленнаяЗПОбороты.Обороты(
		|			&Дата1,
		|			&Дата2,
		|			,
		|			Сотрудник = &Сотрудник "+ОргВыбор+ПоликВыбор+") КАК НачисленнаяЗПОборотыОбороты
		|ГДЕ
		|	НачисленнаяЗПОборотыОбороты.СуммаЗПОборот <= 0";
	
	Запрос.УстановитьПараметр("Сотрудник", Отчет.Сотрудник);
	Запрос.УстановитьПараметр("Организация", Отчет.Организация);
	Запрос.УстановитьПараметр("Поликлиника", Отчет.Поликлиника);
	Запрос.УстановитьПараметр("Дата1", Отчет.Период.ДатаНачала);
	Запрос.УстановитьПараметр("Дата2", Отчет.Период.ДатаОкончания);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		ОбластьСтрокаТаблицыУд.Параметры.ДолжностьУ = ВыборкаДетальныеЗаписи.Должность;
		ОбластьСтрокаТаблицыУд.Параметры.ОтделениеУ = ВыборкаДетальныеЗаписи.Отделение;
		ОбластьСтрокаТаблицыУд.Параметры.ВидОперации = ВыборкаДетальныеЗаписи.Выплата;
		ОбластьСтрокаТаблицыУд.Параметры.СуммаУдержания = ВыборкаДетальныеЗаписи.СуммаЗПОборот;
		
		ТабДок.Вывести(ОбластьСтрокаТаблицыУд);
	КонецЦикла;
	
	
	
	
	//подвал уд
		
	// Запрос для суммы удержаний
	СуммаУдержаний = 0;
	
	ЗапросСуммаУдержаний = Новый Запрос;
	ЗапросСуммаУдержаний.Текст = 
		"ВЫБРАТЬ
		|	НачисленнаяЗПОбороты.СуммаЗПРасход КАК СуммаУ
		|ИЗ
		|	РегистрНакопления.НачисленнаяЗП.Обороты(
		|			&Дата1,
		|			&Дата2,
		|			,
		|			Сотрудник = &Сотрудник "+ОргВыбор+ПоликВыбор+") КАК НачисленнаяЗПОбороты";

	ЗапросСуммаУдержаний.УстановитьПараметр("Сотрудник", Отчет.Сотрудник);
	ЗапросСуммаУдержаний.УстановитьПараметр("Организация", Отчет.Организация);
	ЗапросСуммаУдержаний.УстановитьПараметр("Поликлиника", Отчет.Поликлиника);
	ЗапросСуммаУдержаний.УстановитьПараметр("Дата1", Отчет.Период.ДатаНачала);
	ЗапросСуммаУдержаний.УстановитьПараметр("Дата2", Отчет.Период.ДатаОкончания);
	
	РезультатЗапросаСуммаУдержаний = ЗапросСуммаУдержаний.Выполнить();

	ВыборкаСуммаУдержаний = РезультатЗапросаСуммаУдержаний.Выбрать();

	Если ВыборкаСуммаУдержаний.Следующий() Тогда
		СуммаУдержаний = ВыборкаСуммаУдержаний.СуммаУ;
	КонецЕсли;

	Если СуммаУдержаний = NULL тогда
		СуммаУдержаний = 0
	КонецЕсли;
		

	// Подвал уд
	СальдоКонецУ = СуммаУдержаний;
    СальдоКонец = СальдоНачало + СальдоКонецН - СальдоКонецУ;
	
	ОбластьПодвалУд.Параметры.СальдоКонец = СальдоКонец;
	ОбластьПодвалУд.Параметры.СальдоКонецУ = СальдоКонецУ;
	ТабДок.Вывести(ОбластьПодвалУд);
	
КонецПроцедуры

&НаКлиенте
Процедура Сформировать(Команда, СсылкаНаОбъект)
	
	ТабДок = Новый ТабличныйДокумент;
	СформироватьНаСервере(ТабДок, СсылкаНаОбъект);
	
    ТабДок.Показать("Печать на выбор");
	
КонецПроцедуры
Показать


Пишет ошибку якобы объект не обнаружен, не могу разобраться:
Поле объекта не обнаружено (СуммаДохода)
{Отчет.НачислениеЗПНаВыбор1.Форма.ФормаОтчета.Форма(76)}: ОбластьШапкаТаблицыНач.Параметры.СуммаДохода = ВыборкаДетальныеЗаписи.СуммаДохода;
{Отчет.НачислениеЗПНаВыбор1.Форма.ФормаОтчета.Форма(299)}: СформироватьНаСервере(ТабДок, СсылкаНаОбъект);
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 07.03.24 11:59 Сейчас в теме
(1) В режиме отладки убедится в том, что ВыборкаДетальныеЗаписи не содержит поле СуммаДохода, а содержит поле НачисленияЗП с типом РезультатЗапроса и либо переделать запрос, либо переделать постобработку.
3. MORSON 07.03.24 12:24 Сейчас в теме
(2)Поменяв СуммуДохода на НачислениеЗП, ошибка пропала. Но тогда вопрос резонный, как обратиться именно к реквизиту табличной части, а не ко всей ТЧ?
4. nomad_irk 76 07.03.24 12:30 Сейчас в теме
(3)еще раз:
1. переделать запрос
либо
2. переделать постобработку результата этого запроса

какой вариант вам больше нравится?
5. MORSON 07.03.24 12:32 Сейчас в теме
(4)Мне кажется запрос будет легче
6. nomad_irk 76 07.03.24 12:33 Сейчас в теме
(5)вперед, переделывать запрос
Оставьте свое сообщение

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