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

30.01.19

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Расширение реализовывающее описанные функции:
.cfe 9,26Kb
26
26 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

   

 

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

 

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

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

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

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

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

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

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

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

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

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

 

Итог:

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

См. также

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

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

29400 руб.

29.06.2023    5652    14    5    

24

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

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

7200 руб.

02.08.2023    3915    11    0    

29

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

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

2 стартмани

22.04.2024    5090    dimanich70    15    

21

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

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

01.03.2024    5486    dimanich70    9    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 30.01.19 23:01
Сообщение было скрыто модератором.
...
2. пользователь 31.01.19 10:16
Сообщение было скрыто модератором.
...
3. Japan 24 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 301 25.04.22 18:01 Сейчас в теме
Оставьте свое сообщение