Доработка типового функционала Конструктора макетов

24.05.23

Задачи пользователя - Адаптация типовых решений

Попросил клиент доработать конструктор макетов. КА 2.5.12.48. Задача: 1. добавить возможность выводить руководителя оргнанизции в макете договора между организациями. 2. прописывать сумму прописью.

Чукча не писатель. За ошибки прошу не пинать, и на оригинальность не претендую. Случилось так, что в типовом конструкторе макетов нет этих фишек, которые описаны выше. Но клиенту надо, по одной простой причине - каждый раз платить за каждый макет ВПФ или небольшую корректировку не хочется. Как и что я сделал.

Для решения обеих задач, потребуется один общий модуль "УправлениеПечатью". В расширение добавляем процедуры:

ТекстЗапроса. В конце дописываем вставку

   	#Вставка
	Если ОбъектМетаданных.ПолноеИмя() = "Справочник.Организации" Тогда
		Результат = СтрЗаменить(Результат,"ПсевдонимЗаданнойТаблицы.Наименование КАК Наименование,",
		"ПсевдонимЗаданнойТаблицы.Наименование КАК Наименование, ВложенныйЗапрос.Руководитель КАК Руководитель,ВложенныйЗапрос.РуководительРП КАК РуководительРП,");
		ТекущаяДатаЗапрос = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ДАТАВРЕМЯ(%1, %2, %3)",формат(ТекущаяДата(),"ДФ=yyyy"),формат(ТекущаяДата(),"ДФ=MM"),формат(ТекущаяДата(),"ДФ=dd"));
		Подзапрос = 
		"
		|	ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
		|	ОтветственныеЛицаОрганизаций.Владелец КАК Владелец,
		|	ОтветственныеЛицаОрганизаций.ФизическоеЛицо КАК Руководитель,
		|	isnull(СклоненияПредставленийОбъектов.РодительныйПадеж,""___"") КАК РуководительРП
		|ИЗ
		|	Справочник.ОтветственныеЛицаОрганизаций КАК ОтветственныеЛицаОрганизаций
		|	ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СклоненияПредставленийОбъектов КАК СклоненияПредставленийОбъектов
		|		ПО (ОтветственныеЛицаОрганизаций.ФизическоеЛицо = СклоненияПредставленийОбъектов.Объект)
		
		|ГДЕ
		|	ОтветственныеЛицаОрганизаций.ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель)
		|	И ОтветственныеЛицаОрганизаций.ДатаНачала <= &ТекущаяДатаЗапрос
		|	И (ОтветственныеЛицаОрганизаций.ДатаОкончания =ДАТАВРЕМЯ(1,1,1,0,0,0)//ЕСТЬ NULL
		|			ИЛИ ОтветственныеЛицаОрганизаций.ДатаОкончания >= &ТекущаяДатаЗапрос)) КАК ВложенныйЗапрос
		|		ПО (ПсевдонимЗаданнойТаблицы.Ссылка = ВложенныйЗапрос.Владелец)";
		Подзапрос = СтрЗаменить(Подзапрос,"&ТекущаяДатаЗапрос",ТекущаяДатаЗапрос);
		Результат = Результат + Подзапрос;
	КонецЕсли;
	#КонецВставки
	Возврат Результат;

Сделал через вложенный запрос. Главная проблема: найти "действующего руководителя". Здесь знатоки могут меня поправить, если что не так. С датой ДА - извращение получилось ))). Это все для вывода руководителя. Они хранятся в справочнике и нужно отбирать по типу ответственного лица в "рабочем" диапазоне дат.

А для суммы прописью я доработал процедуру СписокОператоров:

&ИзменениеИКонтроль("СписокОператоров")
Функция чд_СписокОператоров()

	СписокОператоров = КонструкторФормул.СписокОператоров();

	Группа = СписокОператоров.Строки.Найти("СтроковыеФункции");
	Если Группа = Неопределено Тогда
		Группа = СписокОператоров.Строки.Добавить();
		Группа.Идентификатор = "СтроковыеФункции";
		Группа.Представление = НСтр("ru = 'Строковые функции'");
		Группа.Порядок = 5;
		Группа.Картинка = БиблиотекаКартинок.ТипФункция;
	КонецЕсли;

	Оператор = Группа.Строки.Добавить();
	Оператор.Идентификатор = "УправлениеПечатью_СтрокаЛатиницей";
	Оператор.Представление = НСтр("ru = 'СтрокаЛатиницей'");
	Оператор.ТипЗначения = Новый ОписаниеТипов("Строка");
	Оператор.ЭтоФункция = Истина;

	Группа = СписокОператоров.Строки.Найти("ПрочиеФункции");
	Если Группа = Неопределено Тогда
		Группа = СписокОператоров.Строки.Добавить();
		Группа.Идентификатор = "ПрочиеФункции";
		Группа.Представление = НСтр("ru = 'Прочие функции'");
		Группа.Порядок = 6;
		Группа.Картинка = БиблиотекаКартинок.ТипФункция;
	КонецЕсли;

	Оператор = Группа.Строки.Добавить();
	Оператор.Идентификатор = "УправлениеПечатью_КоличествоСтрок";
	Оператор.Представление = НСтр("ru = 'КоличествоСтрок'");
	Оператор.ТипЗначения = Новый ОписаниеТипов("Число");
	Оператор.ЭтоФункция = Истина;
    #Вставка
	Оператор = Группа.Строки.Добавить();
	Оператор.Идентификатор = "УправлениеПечатью_СуммаПрописью";
	Оператор.Представление = НСтр("ru = 'СуммаПрописью'");
	Оператор.ТипЗначения = Новый ОписаниеТипов("Число");
	Оператор.ЭтоФункция = Истина;
	
	#КонецВставки
	Возврат КонструкторФормул.КоллекцияПолей(СписокОператоров);

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

И добавил тут же свою функцию

Функция СуммаПрописью(Число) Экспорт
	
	Если ТипЗнч(Число) = Тип("Число") Тогда
		Возврат РаботаСКурсамиВалют.СформироватьСуммуПрописью(Число,Константы.ВалютаРегламентированногоУчета.Получить(),Ложь,"ru_RU");
	КонецЕсли;
	
	ВызватьИсключение НСтр("ru = 'Неверно указано значение'");
	
КонецФункции

Теперь как это работает.

В конструкторе у организации появился Руководитель и Руководитель в родительном падеже:

 

 

а в операторах наша сумма прописью

 

 

в макете:

 

 

на печати:

 

 

Как-то так. На этом все. Надеюсь, кому-нибудь пригодится.

констуктор макетов числопрописью БСП

См. также

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    5696    14    5    

24

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3946    12    0    

30

Адаптация типовых решений Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    5122    dimanich70    15    

21

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    5653    dimanich70    9    

18
Оставьте свое сообщение