Предисловие
При создании отчета СКД если не стандартом, то хорошим тоном, считается использовать в качестве основной формы отчета — объект метаданных ОбщиеФормы – ФормаОтчета. (Обратите внимание, в метаданных рядом находятся формы ФормаВариантовОтчета, ФормаНастроекОтчета). В статье постарался подробнее рассказать про этот замечательный объект. Есть близкая тема на ИТС (Библиотека стандартных процедур — Варианты отчетов, версия БСП 3.0) , есть статьи //infostart.ru/public/1104751/, //infostart.ru/public/1056845/ но немного другое. Разницу каждый желающий увидит :))). При подготовке статьи использовал версию БСП 2.4
Часть 1, Пользовательский интерфейс.
На форме ниже наименования отчета, при создании формы, программным способом добавляются поля: параметры и отборы СКД, у которых установлена пометка «Быстрый доступ». Состав полей и вид сравнения (равно, больше/меньше, в списке, в группе…) определяется на этапе конфигурирования или в форме настроек.
Если в отчете есть поле типа СтандартныйПериод, то добавляются поля ПериодНачало и ПериодОкончания, кнопка выбора периода. Выбор периода выглядит гораздо аккуратнее, чем типовой диалог выбора стандартного периода или самодельный диалог. (По имени подключаемой процедуры «Подключаемый_СтандартныйПериод_НачалоПериода_ПриИзменении» находим место подключения — процедура ВывестиЭлементыНастройки модуля ОтчетыСервер. Там можно увидеть подробности дополнительной обработки полей).
ПриСозданииНаСервере есть проверка прав доступа. Если типовая проверка не устраивает — смотрите часть 3.
Обратите внимание на стандартные роли ДобавлениеИзменениеВариантовОтчетов, ЧтениеВариантовОтчетов, БазовыеПраваБСП, СохранениеДанныхПользователя, ДобавлениеИзменениеЛичныхВариантовОтчетов. От них зависит внешний вид и возможности работы.
Посмотрим на командную панель:
Кнопка 1. Сформировать в фоновом режиме. Возможен замер времени выполнения(APDEX).
Кнопка 2. Форма настроек. Управление отборами, внешним видом элементов формы и структурой отчета (список, таблица).
Кнопка 3. Управление вариантами отчета. Сохранение пользовательских настроек. (Права и параметры имеют значение)
Про кнопки 4-10 подробно говорить не буду, но обратите внимание на «горячие клавиши» Ctrl-F, Ctrl-Shift-Num +, Ctrl-Shift-Num —, Alt-S, Ctrl-P, Ctrl-S…
Кнопка 11. Позволяет управлять рассылками отчетов, создать рассылку, используя текущие настройки СКД. То есть настройки отчета сохраняются в справочник рассылки. Если в конфигурации отсутствует подсистема рассылки отчетов – кнопка не видна.
Часть 2. Программный интерфейс.
Допустим, мы выполняем код ОткрытьФорму(«Отчеты.Ведомость.Форма», ПараметрыОткрыть); Рассмотрим избранные свойства структуры «ПараметрыОткрыть».
Наименование |
Комментарий |
СформироватьПриОткрытии. |
Установлена ИСТИНА — отчет сформируется при открытии формы. |
Отбор |
Структура содержит отбор, который будет установлен при формировании отчета. В документации ИТС отсутствует. Это наш секрет :)) |
КлючВарианта |
Вариант формирования отчета. В документации ИТС отсутствует. Это наш секрет :)) Если отсутствует – используется первый из вариантов в алфавитном порядке. |
ВидимостьКомандВариантовОтчетов |
Установлена ИСТИНА – есть возможность выбора вариантов В документации отсутствует. Возможно, устарел. |
РазрешеноИзменятьСтруктуру |
Установлена Ложь — в настройках отчета будет скрыта вкладка "Структура". |
РазрешеноИзменятьВарианты |
Установлена Ложь — в форме отчета и настроек скрываются кнопки изменения вариантов этого отчета |
Печать – Структура |
параметры печати табличного документа: ПолеСверху, ПолеСлева, ПолеСнизу, ПолеСправа, ОриентацияСтраницы, АвтоМасштаб, МасштабПечати |
Часть 3. Модификация объекта.
Первый способ: Чтобы добавлять код, хорошо использовать переопределяемые модули. В конфигурации УТ для ФормыОтчетов предусмотрены процедуры:
ОтчетыУТПереопределяемый.ПриСозданииНаСервере()
ОтчетыПереопределяемый.ПередЗагрузкойВариантаНаСервере()
Порядок выполнения предопределенных процедур (неожиданно много):
1. ПриСозданииНаСервере
2. ПередЗагрузкойВариантаНаСервере
3. ПриЗагрузкеВариантаНаСервере
4. ПередЗагрузкойПользовательскихНастроекНаСервере
5. ПриЗагрузкеПользовательскихНастроекНаСервере
6. ПриОбновленииСоставаПользовательскихНастроекНаСервере
7. ПриОткрытии (&НаКлиенте)
Второй способ: если мы хотим изменить какие-то свойства формы, например ограничить отбор в списке поля (1) или выполнить дополнительные действия при выборе значения в поле (2), нам нужно копировать объект метаданных ОбщиеФормы – ФормаОтчета и вставить его в свой отчет. (Не забывайте про общие формы ФормаНастроекОтчета и ФормаВариантаОтчета). Переименуем форму, чтобы в ней не было ссылок на модули ОбщиеФормы – ФормаОтчета. После этого можно смело изменять код. Но нужно учитывать, что поля формы создаются автоматически и называются иначе, чем в схеме СКД.
1. Для изменения свойства поля, найдем в модуле формы процедуру ВывестиЭлементыНастройки и посмотрим в отладчике, как происходит добавление элементов. В переменной СвойстваНастройки хранится связь между полем СКД и идентификатором. Запомним ИмяЭлемента в цикле обработки переменной СвойстваНастройки, потом обработаем.
Для Каждого СвойстваНастройки Из ВыводимыеНастройки Цикл
СоответствиеПользовательскихНастроек.Вставить(СвойстваНастройки.ИдентификаторЭлемента, СвойстваНастройки.ИдентификаторКД);
Если СвойстваНастройки.НастройкаВарианта <> Неопределено Тогда
ПоискНастройкиВарианта = Новый Структура;
ПоискНастройкиВарианта.Вставить("ИдентификаторУзлаКД", СвойстваНастройки.СтрокаДерева.ИдентификаторКД);
ПоискНастройкиВарианта.Вставить("ИмяКоллекции", СвойстваНастройки.НастройкаВарианта.ИмяКоллекции);
ПоискНастройкиВарианта.Вставить("ИдентификаторЭлементаКД", СвойстваНастройки.НастройкаВарианта.ИдентификаторКД);
СоответствиеНастроекВарианта.Вставить(СвойстваНастройки.ИдентификаторЭлемента, ПоискНастройкиВарианта);
КонецЕсли;
//Начало добавления
Если СвойстваНастройки.ПолеКД = ПолеКомпоновки("ОтборНоменклатуры") Тогда
ИмяЭлемента = "ЭлементОтбора_Значение_"+ СвойстваНастройки.ИдентификаторЭлемента;
КонецЕсли;
//Конец добавления
ОтчетыСервер.ВывестиЭлементыНастройки(ЭтотОбъект, Элементы, СвойстваНастройки, ГруппаВывода, Прочее);
КонецЦикла;
//Начало добавления
НужныйЭлемент = Элементы.Найти(ИмяЭлемента);
Если НужныйЭлемент <> Неопределено Тогда
НужныйЭлемент.РежимВыбораИзСписка = Истина;
НужныйЭлемент.СписокВыбора = НужныйСписок();
КонецЕсли;
//Конец добавления
2. Для обработки выбора значения в форме предусмотрены подключаемые процедуры:
Подключаемый_ФлажокИспользование_ПриИзменении
Подключаемый_ПолеВвода_ПриИзменении
Подключаемый_ФлажокЗначения_ПриИзменении
Подключаемый_СписокКомпоновщика_НачалоВыбора
Подключаемый_ЗначениеКомпоновщика_НачалоВыбора
Подключаемый_ВидСравнения_НачалоВыбора
Поставим точку останова – увидим, как происходит обработка выбора значения.
Дополнительные процедуры, которые тоже могут пригодиться:
ОтчетТабличныйДокументВыбор
ОтчетТабличныйДокументОбработкаРасшифровки
ОтчетТабличныйДокументОбработкаДополнительнойРасшифровки
Related Posts
- Получение логина и пароля техподдержки 1С из базы
- Класс для вывода отчета в Excel
- Счет-фактура для УПП
- Библиотека классов для создания внешней компоненты 1С на C#
- Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86
- Прайс-лист с артикулом в отдельной колонке
Коллеги,
нужен дополнительный материал: файл или что-то еще ?
И снова ни слова о том, как использовать ОпределитьНастройкиФормы в модуле отчета.
Спасибо. Счастье есть:)
(2)https://its.1c.ru/db/bsp302doc#content:23:1:issogl2_установить_настройки_формы_отчета
Хорошая статья, спасибо.
А Вы уверены, что события:
ПриОбновленииСоставаПользовательскихНастроекНаСервере
ПриОткрытии (&НаКлиенте)
Можно переопределить?
Я что-то не нашел для этих процедур.
Может быть версии БСП разные.