Альтернатива внешним печатным формам. ЗУП 3.1

30.01.19

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

Как в ЗУП 3.1.8 отказаться от внешних печатных форм и расширением увеличить количество полей, доступных при редактировании макетов, для изменения печатных форм Т1, Т5, Т8 и аналогичные пользователями.

Скачать файлы

Наименование Файл Версия Размер
Расширение реализовывающее описанные функции:
.cfe 9,26Kb
26
.cfe 1.0 9,26Kb 26 Скачать

В ЗУП 3.1.8  КОРП реализовали возможность вносить определённые изменения в макеты печатных форм и отчётов самим пользователем, без изменения конфигурации. В ПРОФ версии этот механизм остался куцым. Т.е. если вам надо поменять название колонки, добавить надпись - это пожалуйста. А если вам надо вывести дополнительные какие то параметры - тут все немного сложнее.

Так как у меня проект по переходу с переписанной 2.5 на 3.1 то печатные формы - это как раз то, чем мне совсем не хочется заниматься - и без них полно проблем.

Первым делом я заглянула что есть на самом инфостарте: для  3.1.8 подходила только публикация отсюда //infostart.ru/public/783619/ , но есть жирное "НО" - она не редактирует саму СКД, т.е. чтобы подлезть к составу выбранных полей, добавить ещё несколько вычисляемых полей или что угодно другое - необходимо либо программно допиливать, либо ещё как то извращаться, при этом рискую попасть впросак с пользовательскими настройками отчета. Было решено искать обходные пути. 

После осмотра списка выбранных полей в СКД обратила внимание, что если воспользоваться теми полями, которых нет на форме - они действительно выводятся, например у нас принято использовать полное наименование организации в Т-1. 

   

 

Эта возможность уже решает часть задач, но мне надо гораздо больше. Дело в том, что у нас привыкли использовать полное наименование подразделения, где родители подразделения указаны в родительном падеже, например:

 

Для этого мне потребовалось добавить расширение с назначением "Исправление". Теперь отважно прошествуем в общий модуль ЗарплатаКадрыОтчеты и добавив его в расширение заменяем функцию ПодразделениеНаПечать. Так как у нас действительно везде в документообороте используется в качестве полного наименования это представление подразделения - я решила воспользоваться именно этим вариантом. Возможно в дальнейшем я об этом пожалею, но пока все устраивает. Получилось вот так:

&Вместо("ПодразделениеНаПечать")
Функция Исправ_ПодразделениеНаПечать(Знач Подразделение) Экспорт
	
	Если ЗначениеЗаполнено(Подразделение) Тогда
		
		НастройкиПечатныхФорм = ЗарплатаКадры.НастройкиПечатныхФорм();
		Если НастройкиПечатныхФорм.ВыводитьПолнуюИерархиюПодразделений Тогда
			//Возврат Подразделение.ПолноеНаименование();
			Возврат ПолучитьПолноеНаименованиеПодразделения(Подразделение);
		Иначе
			Возврат Подразделение;
		КонецЕсли;
		
	Иначе
		Возврат "";
	КонецЕсли;
	
КонецФункции

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

Мне удобненько: видно, что было раньше и мне все равно какие ещё способы изобретет 1С для формирования краткого и полного наименования - для меня этот способ самый верный.

Следующая проблема - расширить список выбранных полей. Тут встал вопрос, а не получится ли, что у меня у пользователей будут какие-то дополнительные пользовательские настройки. Или вдруг этот отчет вызывается ещё из десятка мест.. или ещё нечто неведомое.. Значит саму СКД трогать даже программно надо аккуратно. Но нам надо возможность добавлять поля и заполнять их чем нашей душе угодно. Лезу проверять процедуры печати отчета, в надежде, что есть возможность что-то подпихнуть перед формированием в СКД.

Если ЗАО 1С выпилила механизм доступных полей с пользовательского интерфейса, то уж со стороны кода он обязательно где-нибудь торчит, например прямо в процедуре Сформировать посреди модуля менеджера отчета:

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

Вот прямо здесь РезультатКомпоновки.ДанныеОтчета.Строки - это и есть наше дерево строк результата. Т.е здесь уже все данные сформированы и там именно то, что в дальнейшем будет выводиться к нам на печать. Значит, не грех добавить ещё пару колонок. Захватываем модуль менеджера отчета и перед Сформировать добавляем свои несколько строк кода:

&Перед("Сформировать")
Процедура Испр_Сформировать(ДокументРезультат, РезультатКомпоновки, ОбъектыПечати)
	Для каждого ТДокументы из РезультатКомпоновки.ДанныеОтчета.Строки Цикл
		Если ЗначениеЗаполнено(ТДокументы.СсылкаНаОбъект) тогда
			Если РезультатКомпоновки.ДанныеОтчета.Колонки.Найти("СсылкаНаОбъектДолжностьРуководителяНаПечать") = неопределено тогда
				МассивТипов = Новый Массив;
				МассивТипов.Добавить(Тип("Строка"));
				КС = Новый КвалификаторыСтроки(250);
				ОписаниеСтроки = Новый ОписаниеТипов(МассивТипов,КС);
				РезультатКомпоновки.ДанныеОтчета.Колонки.Добавить("СсылкаНаОбъектДолжностьРуководителяНаПечать",
									ОписаниеСтроки,
									"СсылкаНаОбъект.Должность руководителя на печать",
									);
			Иначе
			КонецЕсли; 
			
			Для каждого ТПараметрыДокумента из ТДокументы.Строки Цикл
				ТПараметрыДокумента.СсылкаНаОбъектДолжностьРуководителяНаПечать = ЗарплатаКадрыОтчеты.ДолжностьПодписантаНаПечать();//ТПараметрыДокумента.СсылкаНаОбъект.Руководитель);		
			КонецЦикла;
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры

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

 

Итог:

Без нудятины в виде изготовления внешних печатных форм я могу спокойно добавить все необходимые моим драгоценным пользователям реквизиты и дать возможность наиболее структурномыслящим самостоятельно вертеть нужные им формы из этих реквизитов. Я не занимаюсь чепухой - кадры счастливые играют в конструктор и сами переименовывают себе колонки.

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

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

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

29400 руб.

29.06.2023    4444    9    4    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

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

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

7200 руб.

02.08.2023    2949    4    0    

19

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

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

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

01.03.2024    1274    dimanich70    6    

13

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

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

Доработка типового отчета "Связанные документы" позволяет просто и быстро расширять состав объектов для построения структуры подчиненности документов, используя объекты основной конфигурации и любых расширений.

1 стартмани

27.10.2023    1990    13    avmartynov    10    

43

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

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

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2069    21    progmaster    7    

3
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 30.01.19 23:01
Сообщение было скрыто модератором.
...
2. пользователь 31.01.19 10:16
Сообщение было скрыто модератором.
...
3. Japan 23 01.04.19 09:11 Сейчас в теме
Тема хорошая, но не всем подойдет, т.к. доработка общих модулей вещь такая, в какой то ВПФ нужно - в какой то нет, хорошо что у вас совпало для всех. По поводу моей выкладки //infostart.ru/public/783619/, добавлять там свои параметры можно, у меня описано как это сделать.
4. MishaD 14 23.09.19 15:32 Сейчас в теме
Сделал через внешнюю печатную форму, но ваша методика через расширение будет поудобней.
5. пользователь 26.03.20 15:44
Сообщение было скрыто модератором.
...
6. vk_ustilim 07.04.20 06:31 Сейчас в теме
Большое спасибо! Для Т8 я сделал вначале изменения в схеме компоновке данных(добавил дополнительное поле с заполнением из функции общего модуля). Но с версии 3.1.12 это перестало работать почему-то. Причем, если открываешь отчет (т8) через ВсеФункции, тогда работает. А если печатную форму из документа Увольнение - то нет. Как я понимаю, при открытии из документа используются настройки, которые не содержат добавленное дополнительное поле. А Ваш вариант стопроцентный. И нет проблем при обновлении.
7. DrZombi 286 25.04.22 18:01 Сейчас в теме
Оставьте свое сообщение