Отчеты с общей формой отчета. Типовые сценарии

03.06.24

Разработка - Механизмы типовых конфигураций

Статистическая выборка сценариев и точек изменения отчетов на общей форме ФормаОтчета в типовых конфигурациях. Примеры кода.

Оглавление

Вступление

Цель анализа

Анализ

Результат

Итоги

 

Вступление

В типовых конфигурациях можно обнаружить, что значительная часть отчетов не содержат собственных форм, а вместо них указаны общие формы ФормаОтчета, ФормаНастроекОтчета и ФормаВариантаОтчета.

Анализ конфигурации ERP 2.5, на БСП версии 3.1.9 показал, что в ней аж 1063 отчета, у 273 из них формой отчета установлена общая форма ФормаОтчета. У 221 отчета форма не указана вообще. В таких случаях тоже автоматически подставляется Основная форма отчета конфигурации, а в типовых - это ФормаОтчета. Таким образом ее использует почти половина отчетов.

 

 

Человеку, впервые увидевшему подключенную общую форму, может показаться, что изменить и настроить там что-то либо невозможно, либо слишком сложно. И уж совсем неочевидным покажется искать информацию на ИТС в разделе Настройка и использование подсистем - ВариантыОтчетов.

 

Цель анализа

Определить самые частые сценарии программной настройки формы ФормаОтчета. Понять, где размещать код и какой. Пришла задача например создать пользовательский параметр при запуске отчета, быстро посмотреть - как, откорректировать код из примера, готово.

 

Анализ

В ИТС в описании подсистемы Варианты отчетов мы узнаем, что по задумке разработчиков подсистемы предполагается описать нужные процедуры событий общей формы в модуле объекта отчета. Чтобы подключить нужные события, нужно прописать их в модуле объекта отчета в экспортной процедуре ОпределитьНастройкиФормы. Иногда там указываются и параметры открытия формы. Их список будет приведен ниже в разделе Результат

Также в этой процедуре можно указать параметры открытия формы: 

 
 Модуль отчета
 
 Полный список событий для размещения в модуле объекта отчета

 

Однако и справка ИТС довольно скупо описывает, для чего могут пригодиться все эти процедуры, поэтому я произвел анализ всех встроенных отчетов из ERP 2.5 с целью понять что к чему. В этом мне значительно помог очень сообразительный ИИ в виде Gemini 1.5 Pro, которому я скормил модуль формы и текст процедур событий из модулей отчетов. 

 

Результат


Сценарии использования отсортированы по убывающей частотности и приведены упрощенные примеры реализации. Цифра перед сценарием означает количество использований в конфигурации.

  • Определение настроек
 
 332. ОпределитьНастройкиФормы

 

  • Параметры
 
 61. Настройки параметров формы

 

  • События и примеры
 
  185.  ПриСозданииНаСервере
 
  117.  ПередЗагрузкойНастроекВКомпоновщик
 
      1.  ПослеЗагрузкиНастроекВКомпоновщик
 
   90.  ПередЗагрузкойВариантаНаСервере
 
  37.  ПриЗагрузкеВариантаНаСервере
 
   30. ПриЗагрузкеПользовательскихНастроекНаСервере
 
    2.  ПередЗаполнениемПанелиБыстрыхНастроек
 
    6.  ПослеЗаполненияПанелиБыстрыхНастроек
 
   12. ПриОпределенииПараметровВыбора
 
    2. ПриОпределенииИспользуемыхТаблиц
 
    0.  ПриОпределенииОсновныхПолей
 
    1.  ПередФормированиемОтчета

 

 
 Последовательность вызова событий

 

Функции общих модулей, используемых в отчетах.

 
По частоте использования

 

В коде типовой конфигурации полно кода, где в цикле делается поиск по настройкам компоновщика, а в нем вложенный цикл поиска пользовательской настройки. Не делайте так, и чаще используйте функции общих модулей для работы с параметрами и отборами.

 

 

 

Итоги

 
 ПриСозданииНаСервере
 
 ПередЗагрузкойНастроекВКомпоновщик
 
 ПослеЗагрузкиНастроекВКомпоновщик
 
 ПередЗагрузкойВариантаНаСервере
 
 ПриЗагрузкеВариантаНаСервере
 
ПриЗагрузкеПользовательскихНастроекНаСервере
 
 ПередЗаполнениемПанелиБыстрыхНастроек
 
 ПослеЗаполненияПанелиБыстрыхНастроек
 
 ПриОпределенииПараметровВыбора
 
 ПриОпределенииИспользуемыхТаблиц
 
 ПриОпределенииОсновныхПолей
 
 ПередФормированиемОтчета

 

Пусть вас не смущает большое количество событий - в большинстве отчетов используется одно-два события

 

 

 

Бонус

Шаблон модуля объекта отчета со всеми событиями и описаниями процедур. Удалить ненужные проще, чем искать и добавлять.

 
 Шаблон модуля объекта отчета

 

Заметки:

В публикациях на инфостарте встречаются рекомендации скопировать общую форму ФормаОтчета в свой отчет и производить изменения. Это может оказаться быстрым вариантом, но не правильным.

 

 

При анализе использовались:

  • Конфигурация ERP 2.5 на БСП 3.1.9
  • Visual Studio Code для быстрого поиска по выгруженной конфигурации
  • Искусственный интеллект в виде Google Gemini 1.5 Pro
  • Notepad++ и регулярные выражения

См. также.

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

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

1 стартмани

11.04.2024    702    tango    1    

3

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

Какому-либо элементу списка сопоставляется числовое значение, зависящее от других значений, причем эта зависимость изменяется от элемента к элементу. Так, в справочнике "Валюты" курс какой-либо валюты может быть задан формулой (или даже запросом) от значения другой валюты. А в справочнике "Виды цен" формула определяет расчет цены для товарной позиции, т.е. элементов справочника "Номенклатура", у которых в карточке указан этот вид цены. А в 1С:ERP, например, этот механизм используется в ресурсной спецификации.

10 стартмани

11.04.2024    560    tango    5    

4

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

В первом сезоне мы рассмотрели (с точки зрения программиста) внутренний механизм, помещающий цены в регистр "Цены". Из этого регистра цена попадает в исходящие УПД (в продажи). Но эта цена (в прайс-листе) дифференцирована (ценообразована) в разрезах свойств самой номенклатуры. Но стратегия ценообразования, ценовая власть - это в первую очередь о работе с ценами для клиента. И тут вступает в дело второй акт марлезонского, Скидки (наценки) и кешбек.

08.04.2024    904    tango    0    

2

Ценообразование, анализ цен Механизмы типовых конфигураций Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Россия Управленческий учет Абонемент ($m)

Ценовая власть - это способность (возможность) компании изменять в некоторых пределах отпускную цену своего товара (услуг, продукции). Чем в более широких пределах вы можете играть в цену продажи, тем больше этой власти у вас. Если вы не можете управлять отпускной ценой, то это или не ваш бизнес, или не бизнес вовсе. Здесь в рубрике "База знаний аналитика и руководителя проекта" слово проект не ограничено "проектом в 1С". Посмотрим, что для этого есть в УТ 11.5.

1 стартмани

05.04.2024    860    tango    12    

2

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    3150    YA_418728146    11    

51

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

Для расчета зарплаты и соответствующих налогов в конфигурациях 1С:КА2 и 1С:ERP используется 22 регистра накопления, 7 регистров сведений, 1 регистр расчета и бухгалтерские проводки. В таблице приведены названия этих регистров, указаны основные регистраторы и виды движений приход/расход. В описании приводится краткое функциональное назначение регистров в основных зарплатных процессах. Описание регистров родилось из черновиков при написании различных отчетов и обработок при эксплуатации 1С-овских конфигураций и исправлении ошибок по НДФЛ, взаиморасчетов с сотрудниками и прочих. Информация не претендует на полноценное описание работы регистров, скорее это дискуссионный материал. Но, возможно, кому-то пригодится и сократит время при подготовке отчетности за непростой (в плане учета зарплаты) 2023 год. А возможно, кто-то поделится своим опытом.

1 стартмани

10.01.2024    1496    10    2ncom    6    

8

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист Стажер Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    5443    mrXoxot    11    

104
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. leosoft 166 03.06.24 17:19 Сейчас в теме
А может механизм расширений удобнее будет использовать?
2. Serg2000mr 411 03.06.24 18:30 Сейчас в теме
(1) Можете описать подробнее?
3. leosoft 166 03.06.24 20:12 Сейчас в теме
(2) Заимствуем общую форму отчета в расширение и подстраиваем под свои требования.
4. Serg2000mr 411 03.06.24 20:34 Сейчас в теме
(3) Работа в конструкторе форм конечно быстрее программной настройки элементов. Но шапка отчета все равно формируется динамически. ФормаОтчета тесно интегрирована с подсистемой ВариантыОтчетов и при обновлении типовой части конфигурации или БСП вам придется поддерживать все заимствованные таким образом формы.

Ну и на первый взгляд количество событий сбивает с толку, но на самом деле у большинства отчетов описано по 1-2 события.
ixijixi; user1969989; +2 Ответить
12. qwinter 680 04.06.24 10:12 Сейчас в теме
(3) Так эти события, в первую очередь, не для того что бы форму редактировать, а для программного редактирования схемы компоновки и компоновщика. Например вызов процедуры "ПередЗагрузкойНастроекВКомпоновщик" происходит из целой кучи процедур разных форм (ФормаОтчета, ФормаВариантаОтчета, ФормаНастроекОтчета, ВспомогательнаяФормаНастроекОтчета) не связанных между собой, таким образом вносить изменения можно в одном месте, а влияют они на большое количество процедур.
22. Serg2000mr 411 13.06.24 00:15 Сейчас в теме
(12) В ПриСозданииНаСервере можно добавить новые элементы формы, а в ПослеЗаполненияПанелиБыстрыхНастроек можно их переместить в нужные группы динамически формируемой шапки отчета.
23. qwinter 680 13.06.24 09:43 Сейчас в теме
(22) Можно, но зачем? Проще и логичнее все это делать непосредственно в схеме компоновке.
24. Serg2000mr 411 13.06.24 13:35 Сейчас в теме
(23) Например, изменить порядок и группировку быстрых настроек, добавить кнопку, удалить отбор по функциональным опциям или правам.
25. qwinter 680 14.06.24 09:29 Сейчас в теме
(24) все это логичней делать в схеме компоновке, останусь при своем мнении.
26. Serg2000mr 411 14.06.24 09:37 Сейчас в теме
(5) Не все настройки можно сделать в конструкторе схемы. Что-то приходится дорабатывать программно, особенно если отчет типовой.
27. qwinter 680 14.06.24 09:44 Сейчас в теме
(26) Так я не про конструктор схемы говорю, а про программное изменение. При создании на сервере меняете схему под ваши нужны один раз, а так у вас многократно выполняется код без особого смысла.
Добавление отборов, параметров, их порядок, настройка отборов по функциональным опциям, добавление списков выбора или параметров выбора по правам логичней сделать один раз.
28. Serg2000mr 411 14.06.24 11:27 Сейчас в теме
(27) Изменением схемы не получится изменить порядок элементов в шапке отчета. Но если по логике задачи можно обойтись изменением схемы, то можно так.
19. glek 119 06.06.24 07:48 Сейчас в теме
(3) Не)))
Обновились на последнюю ЕРП, а форма, заимствованная в расширение повела себя не совсем ожидаемо на 24 платформе: команды и табличный документ поменялись местами (команды слетели вниз, а результат вверх).
Форма была переписана минимально (добавлена одна команда и одна кнопка)
Для проверки удалил из расширения и просто заимствовал (без изменений) - всё равно команды вниз а результат вверх.
Так что нет, иногда не проще.
5. PerlAmutor 129 04.06.24 06:59 Сейчас в теме
Недавно потребовалось установить группе отбора "Период" свой заголовок (напомню, что разработчики его вообще скрыли после перехода на какую-то из версий БСП) в общей форме отчета и задачка оказалась очень не тривиальной, т.к. "из коробки" такой возможности не оказалось.

Кстати вот так не рекомендую во внешних отчетах инициализировать, т.к. потом устанете все переписывать, если какой-то ключ удалят. Было уже такое.

	Настройки.События.ПриСозданииНаСервере = Истина;
	Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина;
	Настройки.События.ПослеЗагрузкиНастроекВКомпоновщик = Истина;
	Настройки.События.ПередЗагрузкойВариантаНаСервере = Истина;
	Настройки.События.ПриЗагрузкеВариантаНаСервере = Истина;
	Настройки.События.ПриЗагрузкеПользовательскихНастроекНаСервере = Истина;
	Настройки.События.ПередЗаполнениемПанелиБыстрыхНастроек = Истина;
	Настройки.События.ПослеЗаполненияПанелиБыстрыхНастроек = Истина;
	Настройки.События.ПриОпределенииПараметровВыбора = Истина;
	Настройки.События.ПриОпределенииИспользуемыхТаблиц = Истина;
	Настройки.События.ПриОпределенииОсновныхПолей = Истина;
	Настройки.События.ПередФормированиемОтчета = Истина;
Показать


Такой вариант более универсален, т.к. не ломает полностью работоспособность отчета:


	Настройки.События.Вставить("ПриСозданииНаСервере", Истина);


А еще лучше делать как в печатных формах. Создать свою структуру с ключами, проинициализировать их, а потом через ЗаполнитьЗначенияСвойств() присвоить.

В публикациях на инфостарте встречаются рекомендации скопировать общую форму ФормаОтчета в свой отчет и производить изменения. Это может оказаться быстрым вариантом, но не правильным.

Жили какое-то время с такой формой. Обновление на каждый новый релиз все ломало в отчетах использующих копию формы. Так что теперь все программно, либо полностью своя форма отчета.

Из минусов могу отметить следующую сложность. В платформе 1С нет возможности определить клиентский модуль объекта с экспортными процедурами, в следствии чего создать механизм собственной расшифровки отчета или реакцию нажатия на свои команды без доработок общих модулей - нет. Т.е. невозможно держать всю логику в пределах одного объекта внешнего отчета.
6. ixijixi 1825 04.06.24 08:56 Сейчас в теме
(5)
установить группе отбора "Период" свой заголовок

Разве установка заголовка параметра в схеме не помогает? Или Вы про другое?
Прикрепленные файлы:
17. PerlAmutor 129 04.06.24 20:51 Сейчас в теме
(6) Я про такое https://fastcode.im/Templates/8518/otobrazit-zagolovki-periodov-na-forme-otcheta-bsp
Процедура ОпределитьНастройкиФормы(Параметр, КлючВарианта, НастройкиОтчета) Экспорт
	
	НастройкиОтчета.События.ПослеЗаполненияПанелиБыстрыхНастроек = Истина;
		
КонецПроцедуры

Процедура ПослеЗаполненияПанелиБыстрыхНастроек(ФормаОтчета, ПараметрыОбновления) Экспорт
	
	ПочинитьЗаголовкиПериодов(ФормаОтчета);
		
КонецПроцедуры

Процедура ПочинитьЗаголовкиПериодов(ФормаОтчета)
	
	ЗаголовкиЭлементов = Новый Массив;
	Для Каждого ПараметрСКД Из СхемаКомпоновкиДанных.Параметры Цикл
		ЗначениеТипа = ПараметрСКД.ТипЗначения.ПривестиЗначение(Неопределено);
		Если ТипЗнч(ЗначениеТипа) = Тип("СтандартныйПериод") Тогда
			ЗаголовкиЭлементов.Добавить(ПараметрСКД.Заголовок + ":");
		КонецЕсли;
	КонецЦикла;
	
	Для Каждого ЭлементФормы Из ФормаОтчета.Элементы Цикл
		
		СвойстваЭлемента = Новый Структура("ПоложениеЗаголовка,Заголовок,ПутьКДанным");
		ЗаполнитьЗначенияСвойств(СвойстваЭлемента, ЭлементФормы);
		
		Если СвойстваЭлемента.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет
			И ЗаголовкиЭлементов.Найти(СвойстваЭлемента.Заголовок) <> Неопределено Тогда
			ЭлементФормы.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто;
		КонецЕсли;
		
	КонецЦикла;
		
КонецПроцедуры
Показать
10. qwinter 680 04.06.24 09:56 Сейчас в теме
(5)
Недавно потребовалось установить группе отбора "Период" свой заголовок
Зачем?)) Даже представить не могу как это должно выглядеть, пришлите скрин пожалуйста.
16. PerlAmutor 129 04.06.24 20:47 Сейчас в теме
(10) Бывают запросы возвращающие поля с несколькими датами и пользователь не всегда понимает период чего именно он должен выбрать. Иногда требуется уточнение. Например есть документы командировок созданные в различных месяцах, но пользователь должен выбрать именно период командирования и т.п..
11. Serg2000mr 411 04.06.24 10:04 Сейчас в теме
(5)
Кстати вот так не рекомендую во внешних отчетах инициализировать, т.к. потом устанете все переписывать, если какой-то ключ удалят. Было уже такое.


Дельное замечание, но лучше добавить оповещение для пользователя или администратора о переставшем работать функционале.
Иначе это может оказаться скрытой ошибкой, которую потом будут долго искать и исправлять.
7. ixijixi 1825 04.06.24 08:57 Сейчас в теме
Спасибо за статью. Наконец-то кто-то это сделал!
mvxyz; Serg2000mr; +2 Ответить
8. Serg2000mr 411 04.06.24 09:09 Сейчас в теме
9. qwinter 680 04.06.24 09:46 Сейчас в теме
В целом ничего нового, но многим будет полезно, а то каких только велосипедов не встретишь))
13. Serg2000mr 411 04.06.24 10:42 Сейчас в теме
(9) Вы все знали, но молчали? ;)
14. qwinter 680 04.06.24 14:37 Сейчас в теме
(13) не всем дано писать статьи. Обширные это совсем не мое, а короткие получаются совсем короткими и модераторы инфостарта их отклоняют)
15. Dimel 04.06.24 18:46 Сейчас в теме
Хорошая работа!
Дополните настройки параметров формы, забыли указать (из ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию):
1) ПоляПоиска - Массив из Строка - коллекция имен полей компоновки данных, которые участвуют в универсальном поиске.
2) ВариантПредставленияПериода - ПеречислениеСсылка.ВариантыПредставленияПериода - определяет вариант представления периода на форме отчета.
3) ВариантПериода - ПеречислениеСсылка.ВариантыПериода - определяет вариант формы выбора периода.
4) ОтключитьСтандартноеКонтекстноеМеню - Булево - признак, позволяющий выключить использование
контекстного меню и настройки колонки отчета.

Хорошо было бы описать и то что в менеджере отчета настраивается (подсистема вариантов отчетов). Так же обработки добавления подключаемых команд и расшифровок в модулях ОтчетыПереопределяемый и ОтчетыКлиентПереопределяемый... Но это уже наверно больше к отчетам, а не к форме отчета относится.
Serg2000mr; +1 Ответить
18. Serg2000mr 411 04.06.24 22:48 Сейчас в теме
(15) Спасибо!

Я не стал указывать эти параметры формы, потому что они практически не используются. Тема итак достаточно объемная, старался упростить. Редко используемые сценарии тоже не стал добавлять.

Про менеджер отчета и подключаемые команды - идея интересная, посмотрю.
20. Бубузяка 62 11.06.24 20:55 Сейчас в теме
Очень нужная статья. Все по полкам. Спасибо.
Serg2000mr; +1 Ответить
21. Serg2000mr 411 12.06.24 08:42 Сейчас в теме
(20) Спасибо и пожалуйста )
Оставьте свое сообщение