Склонение ФИО руководителя в печатной форме

1. user1340623 21.03.25 16:31 Сейчас в теме
Добрый день!
Подскажите, пожалуйста, как дописать модуль для реализации склонения ФИО руководителя в печатной форме? Нужен дательный падеж :( Не бейте тапком, только учусь)

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

	Возврат ФИОДатПадеж;
 	
КонецФункции
Показать
По теме из базы знаний
Найденные решения
2. KirillHome 5 21.03.25 16:49 Сейчас в теме
1. В запросе это
          |    СклоненияПредставленийОбъектов.ДательныйПадеж КАК ДательныйПадеж,
лишнее

2. Перед заполнением нужной части переназначить то, что будет передано на форму.

предположим, что это "ОбластьЗаголовок" и на форме параметр называется "ФИОПадеж"
И тогда получим примерно такое.
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ОбластьЗаголовок.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ОбластьЗаголовок.Параметры.ФИОДатПадеж = СклонениеПредставленийОбъектов.ПросклонятьФИО(ВыборкаДетальныеЗаписи.ФИО, 3, Объект, Пол);
....
КонецЦикла;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. KirillHome 5 21.03.25 16:49 Сейчас в теме
1. В запросе это
          |    СклоненияПредставленийОбъектов.ДательныйПадеж КАК ДательныйПадеж,
лишнее

2. Перед заполнением нужной части переназначить то, что будет передано на форму.

предположим, что это "ОбластьЗаголовок" и на форме параметр называется "ФИОПадеж"
И тогда получим примерно такое.
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ОбластьЗаголовок.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ОбластьЗаголовок.Параметры.ФИОДатПадеж = СклонениеПредставленийОбъектов.ПросклонятьФИО(ВыборкаДетальныеЗаписи.ФИО, 3, Объект, Пол);
....
КонецЦикла;
3. user1340623 22.03.25 12:41 Сейчас в теме
(2) Добрый день! Спасибо большое за помощь! Работает! Ура!
Оставьте свое сообщение

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