diff --git a/public/bsp-dop-otchety/Глобальные/ДополнительнаяОбработка_ВызовКлиентскогоМетода.epf b/public/bsp-dop-otchety/Глобальные/ДополнительнаяОбработка_ВызовКлиентскогоМетода.epf new file mode 100644 index 0000000..fa818de Binary files /dev/null and b/public/bsp-dop-otchety/Глобальные/ДополнительнаяОбработка_ВызовКлиентскогоМетода.epf differ diff --git a/public/bsp-dop-otchety/Глобальные/ДополнительнаяОбработка_ВызовСерверногоМетода.epf b/public/bsp-dop-otchety/Глобальные/ДополнительнаяОбработка_ВызовСерверногоМетода.epf new file mode 100644 index 0000000..e7c521c Binary files /dev/null and b/public/bsp-dop-otchety/Глобальные/ДополнительнаяОбработка_ВызовСерверногоМетода.epf differ diff --git a/public/bsp-dop-otchety/Глобальные/ДополнительнаяОбработка_ОткрытиеФормы.epf b/public/bsp-dop-otchety/Глобальные/ДополнительнаяОбработка_ОткрытиеФормы.epf new file mode 100644 index 0000000..570f8ce Binary files /dev/null and b/public/bsp-dop-otchety/Глобальные/ДополнительнаяОбработка_ОткрытиеФормы.epf differ diff --git a/public/bsp-dop-otchety/Глобальные/ДополнительныйОтчет.erf b/public/bsp-dop-otchety/Глобальные/ДополнительныйОтчет.erf new file mode 100644 index 0000000..b5b57f7 Binary files /dev/null and b/public/bsp-dop-otchety/Глобальные/ДополнительныйОтчет.erf differ diff --git a/public/bsp-dop-otchety/Назначаемые/ЗаполнениеОбъекта.epf b/public/bsp-dop-otchety/Назначаемые/ЗаполнениеОбъекта.epf new file mode 100644 index 0000000..c9ea30f Binary files /dev/null and b/public/bsp-dop-otchety/Назначаемые/ЗаполнениеОбъекта.epf differ diff --git a/public/bsp-dop-otchety/Назначаемые/ЗаполнениеОбъекта_БезЗаписиОбъекта.epf b/public/bsp-dop-otchety/Назначаемые/ЗаполнениеОбъекта_БезЗаписиОбъекта.epf new file mode 100644 index 0000000..0cc563f Binary files /dev/null and b/public/bsp-dop-otchety/Назначаемые/ЗаполнениеОбъекта_БезЗаписиОбъекта.epf differ diff --git a/public/bsp-dop-otchety/Назначаемые/Отчет.erf b/public/bsp-dop-otchety/Назначаемые/Отчет.erf new file mode 100644 index 0000000..94589a5 Binary files /dev/null and b/public/bsp-dop-otchety/Назначаемые/Отчет.erf differ diff --git a/public/bsp-dop-otchety/Назначаемые/ПечатнаяФорма.epf b/public/bsp-dop-otchety/Назначаемые/ПечатнаяФорма.epf new file mode 100644 index 0000000..0e9d0e9 Binary files /dev/null and b/public/bsp-dop-otchety/Назначаемые/ПечатнаяФорма.epf differ diff --git a/public/bsp-dop-otchety/Назначаемые/ПечатнаяФорма_OpenOfficeXML.epf b/public/bsp-dop-otchety/Назначаемые/ПечатнаяФорма_OpenOfficeXML.epf new file mode 100644 index 0000000..17b3864 Binary files /dev/null and b/public/bsp-dop-otchety/Назначаемые/ПечатнаяФорма_OpenOfficeXML.epf differ diff --git a/public/bsp-dop-otchety/Назначаемые/ПечатнаяФорма_ВводПараметров.epf b/public/bsp-dop-otchety/Назначаемые/ПечатнаяФорма_ВводПараметров.epf new file mode 100644 index 0000000..1e38cd7 Binary files /dev/null and b/public/bsp-dop-otchety/Назначаемые/ПечатнаяФорма_ВводПараметров.epf differ diff --git a/public/bsp-dop-otchety/Назначаемые/СозданиеНаОсновании.epf b/public/bsp-dop-otchety/Назначаемые/СозданиеНаОсновании.epf new file mode 100644 index 0000000..2e23aa5 Binary files /dev/null and b/public/bsp-dop-otchety/Назначаемые/СозданиеНаОсновании.epf differ diff --git a/public/bsp-varianty-otchetov/0.png b/public/bsp-varianty-otchetov/0.png new file mode 100644 index 0000000..f400904 Binary files /dev/null and b/public/bsp-varianty-otchetov/0.png differ diff --git a/public/bsp-varianty-otchetov/1.png b/public/bsp-varianty-otchetov/1.png new file mode 100644 index 0000000..7aa8f41 Binary files /dev/null and b/public/bsp-varianty-otchetov/1.png differ diff --git a/public/doc_bsp_3_1_10_glava1.pdf b/public/doc_bsp_3_1_10_glava1.pdf new file mode 100644 index 0000000..82544fc Binary files /dev/null and b/public/doc_bsp_3_1_10_glava1.pdf differ diff --git a/public/doc_bsp_3_1_10_glava2.pdf b/public/doc_bsp_3_1_10_glava2.pdf new file mode 100644 index 0000000..a19e557 Binary files /dev/null and b/public/doc_bsp_3_1_10_glava2.pdf differ diff --git a/public/doc_bsp_3_1_10_glava3.pdf b/public/doc_bsp_3_1_10_glava3.pdf new file mode 100644 index 0000000..2c95ecc Binary files /dev/null and b/public/doc_bsp_3_1_10_glava3.pdf differ diff --git a/src/content/docs/knowledge-base/Общие/(БСП) Подключение к подсистемам/Литература/Инструкции к версии 3.1.10.md b/src/content/docs/knowledge-base/Общие/(БСП) Подключение к подсистемам/Литература/Инструкции к версии 3.1.10.md new file mode 100644 index 0000000..85542e9 --- /dev/null +++ b/src/content/docs/knowledge-base/Общие/(БСП) Подключение к подсистемам/Литература/Инструкции к версии 3.1.10.md @@ -0,0 +1,8 @@ +--- +title: Инструкции к версии 3.1.10 +slug: общие-бсп-подключение-к-подсистемам-литература/инструкции-к-версии-3-1-10 +--- + +[Глава 1. Состав библиотеки](/doc_bsp_3_1_10_glava1.pdf) +[Глава 2. Инструкция по внедрению библиотеки](/doc_bsp_3_1_10_glava2.pdf) +[Глава 3. Настройка и использование подсистем при разработке конфигурации](/doc_bsp_3_1_10_glava3.pdf) \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Общие/(БСП) Подключение к подсистемам/Подключение к подсистеме Варианты отчетов.md b/src/content/docs/knowledge-base/Общие/(БСП) Подключение к подсистемам/Подключение к подсистеме Варианты отчетов.md index 3290f20..6b21b2f 100644 --- a/src/content/docs/knowledge-base/Общие/(БСП) Подключение к подсистемам/Подключение к подсистеме Варианты отчетов.md +++ b/src/content/docs/knowledge-base/Общие/(БСП) Подключение к подсистемам/Подключение к подсистеме Варианты отчетов.md @@ -2,82 +2,432 @@ title: Подключение к подсистеме Варианты отчетов slug: общие-бсп-подключение-к-подсистемам/подключение-к-подсистеме-варианты-отчетов --- -# Порядок действий -## Хранилище вариантов -Для нового отчета устанавливаем хранилище вариантов. Скорее всего это будет `ХранилищеВариантовОтчетов` -## В модуле менеджера отчета + +# О подсистеме +Подсистема Варианты отчетов отображает все отчеты раздела на панели отчетов, предоставляет совместный доступ к пользовательским вариантам отчетов, а также универсальные формы для формирования и настройки произвольных отчетов конфигурации. + +Варианты отчетов, созданные разработчиком, называются предопределенными, а сохраненные пользователем в режиме 1С:Предприятие – пользовательскими. Предопределенные варианты отчетов могут быть контекстными или неконтекстными: + +- __контекстные варианты отчетов__ могут использоваться только в контексте работы с каким-либо объектом приложения (например, отчет по сотруднику, подразделению и т. п.). Как правило, такие варианты отчетов открываются из формы объекта и списков; +- __обычные варианты отчетов__ могут одинаково открываться из любого места приложения (например, из панели отчетов), не требуя передачи контекста. Как правило, такие варианты отчетов открываются из командного интерфейса. + +## Настройка объектов конфигурации +Настройка подсистемы состоит из следующих этапов: + +- Подключить хранилище вариантов отчетов. +- Подключить форму отчета. +- Подключить подсистему к разделам командного интерфейса. +- Установить настройки вариантов отчетов. +- Подключить контекстные отчеты. +- Установить настройки формы отчета. +- Обновить данные справочника ВариантыОтчетов. + +### Подключение хранилища вариантов +![Изображение](/bsp-varianty-otchetov/1.png) + +### Подключение форм отчетов +Необходимо указать в свойствах конфигурации общие формы: +- основная форма отчета – `ФормаОтчета`; +- основная форма настроек отчета – `ФормаНастроекОтчета`; +- основная форма варианта отчета – `ФормаВариантаОтчета`. + +![Изображение](/bsp-varianty-otchetov/1.png) + +### Подключить подсистему к разделам командного интерфейса +Необходимо определить разделы командного интерфейса, в которых должны быть **размещены панели отчетов** + +Для каждого раздела необходимо создать отдельную **общую команду** для открытия панели отчетов. +**Имя команды** рекомендуется задавать по шаблону `ПанельОтчетов<ИмяРаздела>`, например `ПанельОтчетовПродажи`. +**Синоним команды** рекомендуется определять по шаблону `Отчеты по <ПредставлениеРаздела>`, например `Отчеты по продажам`. + +В **обработчике команды** необходимо вставить вызов по шаблону: ```bsl +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполнения) + ВариантыОтчетовКлиент.ПоказатьПанельОтчетов("<ИмяРаздела>", ПараметрыВыполнения); +КонецПроцедуры +``` +
+Панель отчетов в разделе "Главное" + +Для того чтобы в первом параметре <ИмяРаздела> указать **начальную страницу**, следует использовать функцию `ВариантыОтчетовКлиентСервер.ИдентификаторНачальнойСтраницы`: + +```bsl +ВариантыОтчетовКлиент.ПоказатьПанельОтчетов( + ВариантыОтчетовКлиентСервер.ИдентификаторНачальнойСтраницы(), + ПараметрыВыполнения); +``` + +
+ +Выбранные разделы необходимо перечислить в процедуре `ОпределитьРазделыСВариантамиОтчетов` общего модуля `ВариантыОтчетовПереопределяемый`. В представлениях разделов (используются в качестве заголовков панелей отчетов) рекомендуется указывать **синонимы команд**, созданных на предыдущем шаге. +```bsl +Процедура ОпределитьРазделыСВариантамиОтчетов(Разделы) Экспорт + + Разделы.Добавить(Метаданные.Подсистемы.Анкетирование, НСтр("ru = 'Отчеты по анкетированию'")); + Разделы.Добавить(ВариантыОтчетовКлиентСервер.ИдентификаторНачальнойСтраницы(), НСтр("ru = 'Основные отчеты'")); + +КонецПроцедуры +``` + +**Все отчеты выбранных разделов рекомендуется скрыть из панели действий командного интерфейса этих разделов**. + +### Установить настройки вариантов отчетов +Настройки вариантов отчетов задаются в процедуре `НастроитьВариантыОтчетов` общего модуля `ВариантыОтчетовПереопределяемый` + +```bsl +Процедура НастроитьВариантыОтчетов(Настройки) Экспорт + + ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ИмяОтчета); + +КонецПроцедуры +``` + +Далее. для указанных в этой процедуре отчетов в **модуле менеджера** вставить процедуру по шаблону +```bsl + +// Параметры: +// Настройки - см. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов.Настройки. +// НастройкиОтчета - см. ВариантыОтчетов.ОписаниеОтчета. +// Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт - НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ОстаткиПоСкладам"); - НастройкиВарианта.Описание = НСтр("ru = 'Новый отчет по остаткам на складах.'"); -КонецПроцедуры -``` -, где `ОстаткиПоСкладам` — это ключ варианта отчета, определенного в настройках схемы компоновки данных - -### При желании описывем функцию создания команды отчета -```bsl -Функция ДобавитьКомандуОтчета(КомандыОтчетов) Экспорт - - Если ПравоДоступа("Просмотр", Метаданные.Отчеты.<МойОтчет>) Тогда - - КомандаОтчет = КомандыОтчетов.Добавить(); - - КомандаОтчет.Менеджер = Метаданные.Отчеты.<МойОтчет>.ПолноеИмя(); - КомандаОтчет.Представление = "Представление команды"; - - КомандаОтчет.МножественныйВыбор = Ложь; - КомандаОтчет.Важность = "Обычное"; - КомандаОтчет.КлючВарианта = "<КлючВариантаОтчета>"; - - Возврат КомандаОтчет; - - КонецЕсли; - - Возврат Неопределено; - -КонецФункции -``` - -## В общем модуле `ВариантыОтчетовПереопределяемый` -Дополнить процедуру `НастроитьВариантыОтчетов`. В типовых конфигурациях -```bsl -ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.БСП_НовыйОтчет); -``` -В типовых конфигурациях обычно подключение вариантов отчетов выведено из этого модуля в другие по подсистемам. Например, в ERP УХ настройка вариантов отчета выглядит так: -```bsl -Процедура НастроитьВариантыОтчетов(Настройки) Экспорт - - ВариантыОтчетовУТПереопределяемый.НастроитьВариантыОтчетов(Настройки); - ВариантыОтчетовЛокализация.НастроитьВариантыОтчетов(Настройки); - МСФОУХ.НастроитьВариантыОтчетов(Настройки); - ВариантыОтчетовУХПереопределяемый.НастроитьВариантыОтчетов(Настройки); - ВариантыОтчетовОПК.НастроитьВариантыОтчетов(Настройки); - -КонецПроцедуры - -... -// Общий модуль ВариантыОтчетовУХПереопределяемый -Процедура НастроитьВариантыОтчетов(Настройки) Экспорт - - ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.АнализГрафикаФинансовогоИнструмента); - ... - - #Область Закупки - ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.АнализИсполненияПрограммыЗакупок); - ... - #КонецОбласти - - #Область ФИ - ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ВедомостьПоПартиямЦенныхБумаг); - ... - #КонецОбласти + + МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов"); + МодульВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Ложь); + + НастройкиОтчета.ОпределитьНастройкиФормы = Истина; + + НастройкиВарианта_Горизонталь = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "Основной"); + НастройкиВарианта_Горизонталь.Описание = НСтр("ru = 'Горизонтальное размещение колонок с измерениями, ресурсами и реквизитами регистров.'"); + НастройкиВарианта_Горизонталь.НастройкиДляПоиска.КлючевыеСлова = НСтр("ru = 'Движения документа'"); + НастройкиВарианта_Горизонталь.Включен = Ложь; + НастройкиВарианта_Горизонталь.ПоказыватьВПодменюВариантов = Истина; + + НастройкиВарианта_Вертикаль = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "Дополнительный"); + НастройкиВарианта_Вертикаль.Описание = НСтр("ru = 'Вертикальное размещение колонок с измерениями, ресурсами и реквизитами позволяет расположить данные более компактно, для просмотра регистров с большим количеством колонок.'"); + НастройкиВарианта_Вертикаль.НастройкиДляПоиска.КлючевыеСлова = НСтр("ru = 'Движения документа'"); + НастройкиВарианта_Вертикаль.Включен = Ложь; + НастройкиВарианта_Вертикаль.ПоказыватьВПодменюВариантов = Истина; КонецПроцедуры ``` -т.е. в каждый функциональный модуль реализует свои настройки, а общий БСП их только консолидирует -## Обновление вспомогательных даннхы ИБ -В режима «1С:Предприятие» запустить обработку «ОбновлениеВспомогательныхДанных.epf» из набора внешних обработок БСП -Обычно расположена в `AppData\Roaming\1c\1Cv82\tmplts\1c\SSL\3_1_9_323\ExtFiles\Инструменты разработчика` -![image.png](data:image/png;base64,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k5OTX37fnWj8y++T546vP3Pl5uffenJy8tF/fUca/ei/loean7v2ttefkeeLPsvtP3dNOlS3x0O0r/ykTvHm59/qflI4nFJFTB48ECbfldlT+h6iQAIkQAIkQAIkQAIr9JSv/ZcrI78/+6g0gv/nP/nxZP97/0oax88++rZ0mPq8b3zurd/4nPSXv/y+O5Me5WTj+pOTk2Rf6X1uCvF7/+qO1/6L9KYeHe3TkE+pDtFDirv4X/aUPHlIgARIgARIgARIwAms0FO++rUr479nn3jbL+mzyZOTk196352zT7wN5/6zD8qvP56cnPyzD/6465NlOkxzk/yns7e6/S+9784/nb016ZMH//eX3ncn6pMZ+nn1a9Juulk69OlVMsnVgn/ZU/oeokACJEACJEACJEACK/SUL/9/V/jtBNhT8uQhARIgARIgARIgASewQk/50v97hd9OgD2l7yEKJEACJEACJEACJLBCT/ndr1zhtxNgT8mThwRIgARIgARIgAScwAo95XeevsJvJ8Ce0vcQBRIgARIgARIgARJYoaf89o0r/HYC7Cl58pAACZAACZAACZCAExjbU/7bB9/yzS9defH/4bcQ+OaXrvzbB9/iECmQAAmQAAmQAAmQwJETGNtTPvLQuz77sSsvfPHKX/6nY/9+4YtXPvuxK4889K4j3zosnwRIgARIgARIgAScwNie8j/f+My/+e13/9b0LQ/+kytH/v1b07f8m99+93++8RmHSIEESIAESIAESIAEjpzA2J7y1q1bX//612/cuPHlo/+6cePG17/+9Vu3bh351mH5JEACJEACJEACJOAExvaUPoECCZAACZAACZAACZAACVQE2FNWQHhIAiRAAiRAAiRAAiSwMgH2lCsj4wQSIAESIAESIAESIIGKAHvKCggPSYAESIAESIAESIAEVibAnnJlZJxAAiRAAiRAAiRAAiRQEWBPWQHhIQmQAAmQAAmQAAmQwMoE2FOujIwTSIAESIAESIAESIAEKgLsKSsgPCQBEiABEiABEiABEliZAHvKlZFxAgmQAAmQAAmQAAmQQEWAPWUFhIckQAIkQAIkQAIkQAIrE2BPuTIyTiABEiABEiABEiABEqgIsKesgPCQBEiABEiABEiABEhgZQIr9pQ3Tyfv9K/prAg3m/rIO6uhwo4HJHAUBIqTxc8NnhpHsfgscs8I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SIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIcCecivYGZQESIAESIAESIAEDooAe8qDWk4WQwIkQAIkQAIkQAJbIfD/A81tytdKZ1PJAAAAAElFTkSuQmCC) \ No newline at end of file +
+Подробное описание аргументов "Настройки" и "НастройкиОтчета" + +- `Включен` – если установить в `Ложь`, то вариант отчета не регистрируется в справочнике и, как следствие, не выводится в панелях отчетов и других формах подсистемы (всегда скрыт от пользователей). При этом вариант отчета остается в конфигурации, и его по-прежнему можно открывать при программном открытии формы отчета. Например, **может потребоваться отключение контекстных вариантов отчетов**. + +- `ВидимостьПоУмолчанию` – если установить в `Ложь`, то вариант отчета по умолчанию будет скрыт на панелях отчетов. Скрытый вариант отчета можно вывести на панель отчетов администратору – сразу для всех пользователей (через форму элемента), пользователю – на свою панель отчетов (через режим настройки). Например, может потребоваться скрывать менее частотные варианты отчетов. + +- `Описание` – служит подсказкой на панели отчетов и содержит более подробное описание варианта отчета. **Свойство рекомендуется заполнять, поскольку участвует в поиске отчета**. + +- `Размещение` – служит для привязки вариантов отчетов к подсистемам конфигурации. Подсистемы первого уровня считаются разделами, второго и выше – группами. Если вариант включен в раздел, то на панели отчетов он будет выведен без группы. При необходимости для каждой подсистемы можно указать `Важность`: + - `Важный` – вариант отчета будет выделен жирным шрифтом и размещен в начале группы. + - `СмТакже` – вариант отчета будет выведен внизу панели отчетов, в группе См. также. + +- `ФункциональныеОпции` – служит для скрытия вариантов отчетов по функциональным опциям. Содержит **массив строк из имен функциональных опций** конфигурации. Вариант отчета считается включенным в том случае, если включена одна из функциональных опций отчета (если они указаны) и одна из функциональных опций варианта отчета (если они указаны). + +- `НастройкиДляПоиска` – дополнительные сведения для поиска этого варианта отчета. Является структурой со следующими свойствами: + - `НаименованияПолей` – представления полей варианта отчета; + - `НаименованияПараметровИОтборов` – представления настроек варианта отчета; + - `КлючевыеСлова` – дополнительная терминология (в т. ч. специализированная или устаревшая). + +
+ + +### Подключить контекстные отчеты + +**Контекстный отчёт** — это отчёт, доступ к которому осуществляется из формы конкретного объекта конфигурации (справочника, документа, регистра и т.д.) и который автоматически строится с учётом выбранного в данный момент элемента или данных. + +Иными словами, контекстный отчёт показывает информацию **в контексте текущего объекта** — например: + +* для документа — отчёт о его движениях по регистрам; +* для элемента справочника — отчёт об использовании этого элемента; +* для регистра — отчёт по связанным данным. + +Главная особенность — **автоматическая передача параметров** из текущего объекта в отчёт, что упрощает работу пользователя. + +Для подключения контекстных отчетов к объектам конфигурации следует: + +1. Объекты метаданных, для которых требуется выводить команды отчетов, перечислить в процедуре `ОпределитьОбъектыСКомандамиОтчетов` модуля `ВариантыОтчетовПереопределяемый`. +2. В **модуле менеджера** каждого из этих объектов в области `ПрограммныйИнтерфейс` определить пустую процедуру **ДобавитьКомандыОтчетов** по шаблону: + +```bsl + +// Параметры: +// КомандыОтчетов - см. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов +// Параметры - см. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.Параметры +// +Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт + + // например + Если ПравоДоступа("Просмотр", Метаданные.Отчеты.КонтрольРассылкиОтчетов) Тогда + Команда = КомандыОтчетов.Добавить(); + Команда.Представление = НСтр("ru = 'Контроль рассылки отчетов'"); + Команда.КлючВарианта = "КонтрольРассылкиОтчетов"; + Команда.Картинка = БиблиотекаКартинок.Отчет; + Команда.МножественныйВыбор = Ложь; + Команда.Менеджер = "Отчет.КонтрольРассылкиОтчетов"; + Команда.ТипПараметра = Новый ОписаниеТипов("СправочникСсылка.РассылкиОтчетов"); + КонецЕсли; + + // Или для конкретной формы + Если Не ПравоДоступа("Просмотр", Метаданные.Отчеты.СертификатыЭлектроннойПодписи) Тогда + Возврат; + КонецЕсли; + + Если Параметры.ИмяФормы = "ОбщаяФорма.НастройкиЭлектроннойПодписиИШифрования" Тогда + Команда = КомандыОтчетов.Добавить(); + Команда.КлючВарианта = "СертификатыЭлектроннойПодписи"; + Команда.Представление = НСтр("ru = 'Сертификаты электронной подписи'"); + Команда.Идентификатор = "СертификатыЭлектроннойПодписи"; + Команда.Менеджер = "Отчет.СертификатыЭлектроннойПодписи"; + Команда.Неконтекстный = Истина; + + Команда = КомандыОтчетов.Добавить(); + Команда.КлючВарианта = "ЗаканчиваетсяСрокДействия"; + Команда.Представление = НСтр("ru = 'Сертификаты, у которых заканчивается срок действия'"); + Команда.Идентификатор = "ЗаканчиваетсяСрокДействия"; + Команда.Менеджер = "Отчет.СертификатыЭлектроннойПодписи"; + Команда.Неконтекстный = Истина; + + Команда = КомандыОтчетов.Добавить(); + Команда.КлючВарианта = "ТребуетсяМЧД"; + Команда.Представление = НСтр("ru = 'Сертификаты, для которых требуется МЧД'"); + Команда.Идентификатор = "ТребуетсяМЧД"; + Команда.Менеджер = "Отчет.СертификатыЭлектроннойПодписи"; + Команда.Неконтекстный = Истина; + КонецЕсли; + +КонецПроцедуры + +``` +3. Встроить в формы объектов метаданных подсистему **ПодключаемыеКоманды** +В `командную панель`, для целей оптимизации производительности, рекомендуется добавить подменю для вывода команд отчетов: +Имя: `ПодменюОтчеты`, +Заголовок: `Отчеты`, +Вид: `Подменю`, +Отображение: `Картинка`. +Картинка: `Отчет` (стандартная картинка). + +Для вывода в подменю `Отчеты` **большого количества команд** (более 10) рекомендуется добавить **вложенные** группы кнопок с суффиксами `Важное`, `Обычное` и `СмТакже`. Например: `ПодменюОтчетыВажное`, `ПодменюОтчетыОбычное` и `ПодменюОтчетыСмТакже`. Тогда разработчики команд контекстных отчетов смогут указывать суффиксы этих групп в свойстве Важность своих команд. + +### Установить настройки формы очтета + +Если в процедуре `НастроитьВариантыОтчета` установить свойство структуры `НастройкиОтчета.ОпределитьНастройкиФормы` в значение `Истина`, то в **модуле объекта** отчета следует определить процедуру `ОпределитьНастройкиФормы` по шаблону: + +```bsl +// Параметры: +// Форма - ФормаКлиентскогоПриложения, Неопределено +// КлючВарианта - Строка, Неопределено +// Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию +// +Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт + +КонецПроцедуры +``` + +`Настройки` формы отчета задаются в процедуре `ОпределитьНастройкиФормы` модуля объекта отчета, в которой можно задать значения следующим параметрам: + + - `ФормироватьСразу` – если установить в значение `Истина`, то отчет будет формироваться после открытия, после выбора пользовательских настроек и после выбора другого варианта отчета. По умолчанию – `Ложь`. + - `ВыводитьСуммуВыделенныхЯчеек` – если установить в значение `Ложь`, то в отчете не будет выводиться поле с автоматически рассчитываемой суммой выделенных ячеек. По умолчанию – `Истина`. + - `РазрешеноИзменятьСтруктуру` – если установить в значение `Ложь`, то в настройках отчета будет скрыта вкладка `Структура`. По умолчанию – `Истина`. По умолчанию вкладка `Структура` показывается для отчетов на СКД – в расширенном режиме, а также в простом режиме, если в пользовательские настройки выведены флажки использования группировок. + - `РазрешеноИзменятьВарианты` – если установить в значение `Ложь`, то в форме отчета и настроек скрываются кнопки изменения вариантов этого отчета. Если у текущего пользователя нет прав `СохранениеДанныхПользователя` и `Добавление` справочника `ВариантыОтчетов`, то принудительно устанавливается в `Ложь`. По умолчанию – `Истина`. +- `Печать` – `Структура` – параметры печати табличного документа (могут переопределяться пользователем): + - `ПолеСверху` – `Число` – отступ сверху при печати (в миллиметрах); + - `ПолеСлева` – `Число` – отступ слева при печати (в миллиметрах); + - `ПолеСнизу` – `Число` – отступ снизу при печати (в миллиметрах); + - `ПолеСправа` – `Число` – отступ справа при печати (в миллиметрах); + - `ОриентацияСтраницы` – `ОриентацияСтраницы` – Портрет или Ландшафт; + - `АвтоМасштаб` – `Булево` – автоматически подгонять масштаб под размер страницы; + - `МасштабПечати` – `Число` – масштаб изображения (в процентах). +- `События` – `Структура` – события, для которых определены обработчики в модуле объекта отчета (обработчики событий рекомендуется определять в области ПрограммныйИнтерфейс, **после процедуры** `ОпределитьНастройкиФормы`): + +
+Подробнее про события + + - `ПриСозданииНаСервере` – если установить в значение `Истина`, то в модуле объекта отчета следует определить процедуру `ПриСозданииНаСервере` по шаблону: + +```bsl +// См. ОтчетыПереопределяемый.ПриСозданииНаСервере. +Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт + +КонецПроцедуры +``` + - `ПередЗагрузкойНастроекВКомпоновщик` – если установить в значение `Истина`, то в модуле объекта отчета следует определить процедуру `ПередЗагрузкойНастроекВКомпоновщик` по шаблону + +```bsl +// Параметры: +// Контекст - Произвольный +// КлючСхемы - Строка +// КлючВарианта - Строка, Неопределено +// НовыеНастройкиКД - НастройкиКомпоновкиДанных, Неопределено +// НовыеПользовательскиеНастройкиКД - ПользовательскиеНастройкиКомпоновкиДанных, Неопределено +// +Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Экспорт + +КонецПроцедуры +``` +Вызывается перед загрузкой новых настроек, используется для изменения СКД. + +
+Примеры + +Пример № 1. Компоновщик отчета инициализируется на основании схемы из общих макетов: + +```bsl +Если КлючСхемы <> "1" Тогда + КлючСхемы = "1"; + СхемаКД = ПолучитьОбщийМакет("МояОбщаяСхемаКомпоновки"); + ОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, СхемаКД, КлючСхемы); +КонецЕсли; +``` + +Пример № 2. Схема зависит от значения параметра, выведенного в пользовательские настройки отчета: + +```bsl +Если ТипЗнч(НовыеПользовательскиеНастройкиКД) = Тип("ПользовательскиеНастройкиКомпоновкиДанных") Тогда + ПолноеИмяОбъектаМетаданных = ""; + Для Каждого ЭлементКД Из НовыеПользовательскиеНастройкиКД.Элементы Цикл + Если ТипЗнч(ЭлементКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда + ИмяПараметра = Строка(ЭлементКД.Параметр); + Если ИмяПараметра = "ОбъектМетаданных" Тогда + ПолноеИмяОбъектаМетаданных = ЭлементКД.Значение; + КонецЕсли; + КонецЕсли; + КонецЦикла; + Если КлючСхемы <> ПолноеИмяОбъектаМетаданных Тогда + КлючСхемы = ПолноеИмяОбъектаМетаданных; + СхемаКД = Новый СхемаКомпоновкиДанных; + // Наполнение схемы... + ОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, СхемаКД, КлючСхемы); + КонецЕсли; +КонецЕсли; +``` + +
+ + - `ПослеЗагрузкиНастроекВКомпоновщик` если `Истина`, то в модуле объекта отчета следует определить процедуру `ПослеЗагрузкиНастроекВКомпоновщик` по шаблону: + +```bsl +// Параметры: +// ДополнительныеПараметры - Структура +// +Процедура ПослеЗагрузкиНастроекВКомпоновщик(ДополнительныеПараметры) Экспорт + +КонецПроцедуры +``` +Вызывается после загрузки всех настроек в компоновщик. Используется для уточнения, например, параметров выбора, зависимых от значений загруженных фиксированных отборов. + + - `ПередЗагрузкойВариантаНаСервере` – если установить в значение `Истина`, то в модуле объекта отчета следует определить процедуру `ПередЗагрузкойВариантаНаСервере` по шаблону: + +```bsl +// См. ОтчетыПереопределяемый.ПередЗагрузкойВариантаНаСервере. +Процедура ПередЗагрузкойВариантаНаСервере(Форма, НовыеНастройкиКД) Экспорт + +КонецПроцедуры +``` +Вызывается в обработчике одноименного события формы отчета и формы настройки отчета. Подробнее см. "Расширение управляемой формы для отчета.ПередЗагрузкойВариантаНаСервере" в синтакс-помощнике. + + - `ПриЗагрузкеВариантаНаСервере` – если установить в значение `Истина`, то в модуле объекта отчета следует определить процедуру `ПриЗагрузкеВариантаНаСервере` по шаблону: + +```bsl +// Параметры: +// Форма - ФормаКлиентскогоПриложения +// - РасширениеУправляемойФормыДляОтчета: +// * Отчет - ДанныеФормыСтруктура +// - ОтчетОбъект +// НовыеНастройкиКД - НастройкиКомпоновкиДанных +// +Процедура ПриЗагрузкеВариантаНаСервере(Форма, НовыеНастройкиКД) Экспорт + +КонецПроцедуры +``` +Вызывается в обработчике одноименного события формы отчета после выполнения кода формы. Подробнее см. "Расширение управляемой формы для отчета.ПриЗагрузкеВариантаНаСервере" в синтакс-помощнике. + + - `ПриЗагрузкеПользовательскихНастроекНаСервере` – если установить в значение `Истина`, то в модуле объекта отчета следует определить процедуру `ПриЗагрузкеПользовательскихНастроекНаСервере` по шаблону: + +```bsl +// Параметры: +// Форма - ФормаКлиентскогоПриложения +// НовыеПользовательскиеНастройкиКД - ПользовательскиеНастройкиКомпоновкиДанных +// +Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Форма, НовыеПользовательскиеНастройкиКД) Экспорт + +КонецПроцедуры +``` +Вызывается в обработчике одноименного события формы отчета после выполнения кода формы. Подробнее см. "Расширение управляемой формы для отчета.ПриЗагрузкеПользовательскихНастроекНаСервере" в синтакс-помощнике. + + - `ПередЗаполнениемПанелиБыстрыхНастроек` – если установить в значение `Истина`, то в модуле объекта отчета следует определить процедуру `ПередЗаполнениемПанелиБыстрыхНастроек` по шаблону: + +```bsl +// Параметры: +// Форма - ФормаКлиентскогоПриложения +// ПараметрыЗаполнения - Структура +// +Процедура ПередЗаполнениемПанелиБыстрыхНастроек(Форма, ПараметрыЗаполнения) Экспорт + +КонецПроцедуры +``` +Вызывается до перезаполнения панели настроек формы отчета. + + - `ПослеЗаполненияПанелиБыстрыхНастроек` – если установить в значение `Истина`, то в модуле объекта отчета следует определить процедуру `ПослеЗаполненияПанелиБыстрыхНастроек` по шаблону: + +```bsl + +// Параметры: +// Форма - ФормаКлиентскогоПриложения +// ПараметрыЗаполнения - Структура +// +Процедура ПослеЗаполненияПанелиБыстрыхНастроек(Форма, ПараметрыЗаполнения) Экспорт + +КонецПроцедуры + +``` +Вызывается после перезаполнения панели настроек формы отчета. + + - `ПриОпределенииОсновныхПолей` – если установить в значение `Истина`, то в модуле объекта отчета следует определить процедуру `ПриОпределенииОсновныхПолей` по шаблону: + +```bsl +// См. ОтчетыПереопределяемый.ПриОпределенииОсновныхПолей. +Процедура ПриОпределенииОсновныхПолей(Форма, ОсновныеПоля) Экспорт + +КонецПроцедуры +``` +Позволяет задать список часто используемых полей, которые будут выводиться в подменю для команд контекстного меню "Вставить поле слева", "Вставить группировку ниже" и т.п. + + - `ПередФормированиемОтчета` – если установить в значение `Истина`, то в модуле объекта отчета следует определить процедуру `ПередФормированиемОтчета` по шаблону: + +```bsl + +// Параметры: +// ФормаОтчета - ФормаКлиентскогоПриложения +// ДополнительныеПараметры - Структура: +// * ТекстПредупреждения - Строка +// * ИмяПараметраХраненияОтказаОтПредупреждения - Строка +// +Процедура ПередФормированиемОтчета(Форма, ДополнительныеПараметры) Экспорт + +КонецПроцедуры + +``` +Позволяет перед формированием отчета показать вопрос с текстом `ТекстПредупреждения` и кнопками `Продолжить` и `Отмена`. Например, предупредить о том, что отчет будет очень долго формироваться и потребует много памяти и порекомендовать более узкую настройку отборов. Если также задать свойство `ИмяПараметраХраненияОтказаОтПредупреждения`, то в окне вопроса появится опция больше его не показывать + + - `ПриОпределенииПараметровВыбора` – если установить в значение `Истина`, то в модуле объекта отчета следует определить процедуру `ПриОпределенииПараметровВыбора` по шаблону: + +```bsl +// См. ОтчетыПереопределяемый.ПриОпределенииПараметровВыбора. +Процедура ПриОпределенииПараметровВыбора(Форма, СвойстваНастройки) Экспорт + +КонецПроцедуры +``` +Вызывается в форме отчета и в форме настройки отчета перед выводом настройки для указания дополнительных параметров выбора. Это устаревшее событие, вместо него рекомендуется применять событие `ПослеЗагрузкиНастроекВКомпоновщик`. + +
+ +### Обновить данные справочника ВариантыОтчетов + +- Для **перезаполнения** этих данных (рекомендуется при разработке) предназначена внешняя обработка ОбновлениеВспомогательныхДанных.epf, которая входит в состав дистрибутива библиотеки. +- Для **стандартного обновления** (только в части изменений конфигурации) можно указать параметр запуска `ЗапуститьОбновлениеИнформационнойБазы` в конфигураторе или через параметр командной строки /С. +- При закладке изменений в хранилище, которые могут привести к необходимости обновления вспомогательных данных, можно увеличивать номер версии конфигурации, тогда у других участников коллективной разработки автоматически запустятся обязательные обработчики обновления. \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Общие/Дополнительные отчеты и обработки/Примеры дополнительных отчетов и обработок.md b/src/content/docs/knowledge-base/Общие/Дополнительные отчеты и обработки/Примеры дополнительных отчетов и обработок.md new file mode 100644 index 0000000..84dd961 --- /dev/null +++ b/src/content/docs/knowledge-base/Общие/Дополнительные отчеты и обработки/Примеры дополнительных отчетов и обработок.md @@ -0,0 +1,32 @@ +--- +title: Примеры дополнительных отчетов и обработок +slug: общие-дополнительные-отчеты-и-обработки/примеры-дополнительных-отчетов-и-обработок +--- + +## Глобальные + +[Глобальная_ВызовКлиентскогоМетода.epf](/bsp-dop-otchety/Глобальные/ДополнительнаяОбработка_ВызовКлиентскогоМетода.epf) +[Глобальная_ОткрытиеФормы.epf](/bsp-dop-otchety/Глобальные/ДополнительнаяОбработка_ОткрытиеФормы.epf) +[Глобальная_ВызовСерверногоМетода.epf](/bsp-dop-otchety/Глобальные/ДополнительнаяОбработка_ВызовСерверногоМетода.epf) + +## Назначаемые + +### Заполнение объектов +[Назначаемая_ЗаполнениеОбъекта.epf](/bsp-dop-otchety/Назначаемые/ЗаполнениеОбъекта.epf) + +[Назначаемая_ЗаполнениеОбъектаБезЗаписи.epf](/bsp-dop-otchety/Назначаемые/ЗаполнениеОбъекта_БезЗаписиОбъекта.epf) + +### Отчеты +[Назначаемая_Отчет.epf](/bsp-dop-otchety/Назначаемые/Отчет.erf) + +### Печатные формы + +[Назначаемая_ПечатнаяФорма.epf](/bsp-dop-otchety/Назначаемые/ПечатнаяФорма.epf) + +[Назначаемая_ПечатнаяФорма_OpenOfficeXML.epf](/bsp-dop-otchety/Назначаемые/ПечатнаяФорма_OpenOfficeXML.epf) + +[Назначаемая_ПечатнаяФорма_ВводПараметров.epf](/bsp-dop-otchety/Назначаемые/ПечатнаяФорма_ВводПараметров.epf) + +### Создание на основании +[Назначаемая_СозданиеНаОсновании.epf](/bsp-dop-otchety/Назначаемые/СозданиеНаОсновании.epf) + diff --git a/src/content/docs/knowledge-base/Общие/СКД и отчеты/Добавить произвольные команды на общую форму отчета.md b/src/content/docs/knowledge-base/Общие/СКД и отчеты/Добавить произвольные команды на общую форму отчета.md new file mode 100644 index 0000000..8d516e0 --- /dev/null +++ b/src/content/docs/knowledge-base/Общие/СКД и отчеты/Добавить произвольные команды на общую форму отчета.md @@ -0,0 +1,121 @@ + +## Установить настройки вариантов отчетов +Настройки вариантов отчетов задаются в процедуре `НастроитьВариантыОтчетов` общего модуля `ВариантыОтчетовПереопределяемый` + +```bsl +Процедура НастроитьВариантыОтчетов(Настройки) Экспорт + + ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ИмяОтчета); + +КонецПроцедуры +``` + +Далее. для указанных в этой процедуре отчетов в **модуле менеджера** вставить процедуру по шаблону +```bsl + +// Параметры: +// Настройки - см. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов.Настройки. +// НастройкиОтчета - см. ВариантыОтчетов.ОписаниеОтчета. +// +Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт + НастройкиОтчета.ОпределитьНастройкиФормы = Истина; +КонецПроцедуры + +``` + +В модуле объекта отчета +```bsl +// Параметры: +// Форма - ФормаКлиентскогоПриложения, Неопределено +// КлючВарианта - Строка, Неопределено +// Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию +// +Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт + Настройки.События.ПриСозданииНаСервере = Истина; +КонецПроцедуры + +// См. ОтчетыПереопределяемый.ПриСозданииНаСервере. +Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт + + Команда = Форма.Команды.Добавить("<ИмяКоманды>"); + Команда.Действие = "Подключаемый_Команда"; + Команда.Заголовок = НСтр("ru = '<Представление команды...>'"); + ОтчетыСервер.ВывестиКоманду(Форма, Команда, "<ВидГруппы>"); + +КонецПроцедуры + +``` + +Обработчик команды устанавливается в процедуре `ОтчетыКлиентПереопределяемый.ОбработчикКоманды` +```bsl +// Обработчик команд, добавленных динамически и подключенных к обработчику "Подключаемый_Команда". +// Пример добавления команды см. ОтчетыПереопределяемый.ПриСозданииНаСервере(). +// +// Параметры: +// ФормаОтчета - ФормаКлиентскогоПриложения +// - РасширениеУправляемойФормыДляОтчета - форма отчета: +// * Отчет - ОтчетОбъект - структура данных формы аналогичная объекту отчета. +// +// Команда - КомандаФормы - команда, которая была вызвана. +// Результат - Булево - Истина, если вызов команды обработан. +// +Процедура ОбработчикКоманды(ФормаОтчета, Команда, Результат) Экспорт + + // _Демо начало примера + ПолноеИмяОтчета = ФормаОтчета.НастройкиОтчета.ПолноеИмя; + + Если ПолноеИмяОтчета = "Отчет._ДемоФайлы" И Команда.Имя = "_ДемоКоманда" Тогда + + // Обработчик команды, определенной в модуле отчета Отчет._ДемоФайлы в процедуре ПриСозданииНаСервере. + _ДемоСтандартныеПодсистемыКлиент.НачатьРедактированиеОтчета(ФормаОтчета); + + ИначеЕсли СтрНайти(ПолноеИмяОтчета, "_Демо") > 0 И СтрНачинаетсяС(Команда.Имя, "_ДемоОформить") Тогда + + // Обработчик команды, определенной в ОтчетыПереопределяемый.ПриСозданииНаСервере. + _ДемоСтандартныеПодсистемыКлиент.ОформитьВыделенныеОбластиОтчета(ФормаОтчета, Команда.Имя); + + КонецЕсли; + // _Демо конец примера + +КонецПроцедур + +... + +// примеры +// См. ОтчетыКлиентПереопределяемый.ОбработчикКоманды. +Процедура НачатьРедактированиеОтчета(ФормаОтчета) Экспорт + + ПараметрыФормы = СтандартныеПодсистемыКлиент.ПараметрыРедактораТабличногоДокумента(); + ПараметрыФормы.ИмяДокумента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Редактирование таблицы сформированного отчета ""%1""'"), + ФормаОтчета.Заголовок); + ПараметрыФормы.Редактирование = Истина; + СтандартныеПодсистемыКлиент.ПоказатьРедакторТабличногоДокумента(ФормаОтчета.ОтчетТабличныйДокумент, ПараметрыФормы); + +КонецПроцедуры + +// См. ОтчетыКлиентПереопределяемый.ОбработчикКоманды. +Процедура ОформитьВыделенныеОбластиОтчета(ФормаОтчета, КатегорияДанных) Экспорт + + Если СтрЗаканчиваетсяНа(КатегорияДанных, "ОшибочныеДанные") Тогда + ЦветОформления = WebЦвета.СветлоРозовый; + ИначеЕсли СтрЗаканчиваетсяНа(КатегорияДанных, "КорректныеДанные") Тогда + ЦветОформления = WebЦвета.СветлоЗеленый; + ИначеЕсли СтрЗаканчиваетсяНа(КатегорияДанных, "СомнительныеДанные") Тогда + ЦветОформления = WebЦвета.СветлоЖелтый; + Иначе + Возврат; + КонецЕсли; + + ТабличныйДокумент = ФормаОтчета.ОтчетТабличныйДокумент; + Для Каждого Область Из ТабличныйДокумент.ВыделенныеОбласти Цикл + Для НомерСтроки = Область.Верх По Область.Низ Цикл + Для НомерКолонки = Область.Лево По Область.Право Цикл + Ячейка = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки); // ОбластьЯчеекТабличногоДокумента + Ячейка.ЦветФона = ЦветОформления; + КонецЦикла; + КонецЦикла; + КонецЦикла; + +КонецПроцедуры +``` \ No newline at end of file