О чем речь
Любите делать отчеты для типовых конфигураций? Вы мастер СКД и отчет с вложенными схемами компоновки и собственным макетом для Вас тоже обычное дело? А может быть программное формирование схемы компоновки для Вас тоже норма? Или Вы новичок и только начинаете постигать сакральные знания СКД? Не важно!
Сегодня мы будем говорить о другом. О подсистеме "Варианты отчетов" из БСП, которую можно встретить практически во всех типовых конфигурациях. Вероятно, многие зададутся вопросом: "О чем тут вообще можно говорить?". Что ж, постараюсь Вас удивить!
Как она устроена
От одной версии БСП к другой, подсистема "Варианты отчетов" становилась все функциональней и интересней. Почти все мы ее используем в своих отчетах и можем даже об этом не подозревать. Сегодня мы поговорим о некоторых нюансах ее работы на примере версии БСП 3.0. Информация в большей части справедлива и для других версия библиотеки.
Прежде чем перейти к особенностям, дадим краткое описание принципа работы подсистемы. В составе метаданных она содержит не мало объектов для реализации всего функционала. Те, что нас интересуют, это:
- Общая форма "Форма отчета".
- Справочник "Варианты отчетов".
- Хранилище настроек "Хранилище вариантов отчетов".
- Общие модули с именем "ВариантыОтчетов*" и "Отчеты*".
- И некоторые настройки корня конфигурации.
Весь смысл подсистемы сводится к тому, что все варианты отчетов, адаптированных для использования в БСП, сохраняются в справочнике "Варианты отчетов" через переопределение основных событий хранилища "Хранилище вариантов отчетов":
- Автор
- Тип отчета
- Пользовательские настройки
- Ключ
- Представление варианта
- Различные настройки видимости
- Описание
- И многое другое.
Все еще непонятно? Сделаем небольшой пример, но отчет будет внешним! Вы когда-нибудь разрабатывали отчеты для ERP? Так вот, на ней и продемонстрируем как подсистема работает. Отчет будет отображать количество элементов номенклатуры в разрезе видов номенклатуры. Обязательно добавим в модуль объекта функции описания внешних отчетов и обработок для БСП, а также программное формирование отчета.
Ничего необычного. В модуле объекта добавлено описание внешнего отчета для БСП, а также программное формирование отчета в событии "ПриКомпоновкеРезультата".
#Область ПрограммныйИнтерфейс
Функция СведенияОВнешнейОбработке() Экспорт
ИмяОтчета = ЭтотОбъект.Метаданные().Имя;
Синоним = ЭтотОбъект.Метаданные().Синоним;
Синоним = ?(ЗначениеЗаполнено(Синоним),Синоним, ИмяОтчета);
РегистрационныеДанные = Новый Структура;
РегистрационныеДанные.Вставить("Вид","ДополнительныйОтчет");
РегистрационныеДанные.Вставить("Наименование", Синоним);
РегистрационныеДанные.Вставить("Версия", "1.0");
РегистрационныеДанные.Вставить("БезопасныйРежим", Ложь);
РегистрационныеДанные.Вставить("Информация", "Отчет """ + Синоним + """");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, Синоним, "СформироватьОтчет" , "ОткрытиеФормы", Истина, );
РегистрационныеДанные.Вставить("Команды", ТаблицаКоманд);
Возврат РегистрационныеДанные;
КонецФункции
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
ДокументРезультат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд,
Представление,
Идентификатор,
Использование = "ОткрытиеФормы",
ПоказыватьОповещение = Ложь,
Модификатор = "ПечатьMXL")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
#КонецОбласти
В схеме компоновки запрос тоже тривиальный.
ВЫБРАТЬ
Номенклатура.ВидНоменклатуры,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК КоличествоЭлементов
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.ЭтоГруппа = ЛОЖЬ
СГРУППИРОВАТЬ ПО
Номенклатура.ВидНоменклатуры
Для наглядности мы добавим в настройках отчета два одинаковых варианта, но с разными названиями.
Больше никаких настроек и функций не добавляем (ни форм отчетов, ни задание доп. настроек в свойствах отчета и др.). В режиме 1С:Предприятие отчет выглядит предсказуемо.
Как выглядит отчет в пользовательском режиме
Полный исходный код примера можно найти в соответствующем репозитории на GitHub.
Чтобы подсистема "Варианты отчетов" была задействована для нашего продвинутого отчета, прикрепим его в справочник "Дополнительные отчеты и обработки". Не зря же мы делали описание внешнего отчета в модуле объекта.
Прикрепляем отчет в дополнительные отчеты и обработки
Здесь тоже всем известная процедура — добавляем отчет из файла и выбираем размещение в подсистемах.
Так как это отчет и он совместим с подсистемой вариантов отчетов, то в настройках доступна вкладка "Варианты отчетов". Пока мы не запишем элемент — она недоступна.
После записи система позволит отобразить список вариантов.
Эти варианты были сформированы из настроек схемы компоновки отчета.
Но что это за варианты и где они в системе хранятся?
Под спойлером выше были показаны два варианта отчета, которые БСП сформировала автоматически. Они были получены из настроек вариантов схемы компоновки. В системе они сохраняются в виде элементов справочника "Варианты отчетов", в том самом справочнике, о котором мы уже говорили.
В корне конфигурации ERP (как минимум с версии 2.2) для свойства "Хранилище вариантов отчетов" установлен объект метаданных "ХранилищаВариантов.ХранилищеВариантовОтчетов". То есть, стандартное хранилище для сохранения настроек отчетов не используется. При этом в стандартных событиях этого хранилища переопределены события загрузки и сохранения настроек, в которых алгоритмы используют уже справочник "Варианты отчетов". Таким образом, подсистема перевела весь функционал по работе с вариантами отчетов на собственный справочник.
При этом, если варианты предопределены в схеме компоновки, то сами настройки в справочнике не сохраняются. Это и понятно — зачем их сохранять, если они есть в самой компоновке данных. Однако, если пользователь сохранит свой вариант, то настройки компоновки будут записаны в реквизит "Настройки" этого справочника (в виде хранилища значений).
Еще одной важной частью подсистемы является общая форма "ФормаОтчета", которая предоставляет расширенный функционал работы с отчетами. Если в объекте отчета (внешнем или встроенном в конфигурацию) нет явно заданной формы, то будет использоваться именно она. Достигается это за счет установки основных форм в корне конфигурации.
Кроме основной формы отчета, подсистема также содержит формы для настроек и выбора варианта, но в нашем случае эту часть подсистемы мы не будем рассматривать. Вот так выглядит форма отчета из подсистемы БСП.
И, кстати, Вы заметили, что мы переопределили событие "ПриКомпоновкеДанных" отчета и сделали полностью программное формирование. При этом отчет также формируется в фоновом режиме. В обычном случае, если сделать программное формирование отчета, то он блокирует основной интерфейс при выполнении.
Таким образом, подсистема "Варианты отчетов" позволяет разрабатывать и управлять отчетами эффективно за счет дополнительного функционала:
- Варианты отчетов и их настройки хранятся в справочнике "Варианты отчетов", что позволяет ими гибко управлять (видимость, права доступа, администрирование настроек) и хранить дополнительную информацию для них.
- Стандартизированные формы отчета и настроек создают единый интерфейс для работы с отчетами со стандартным набором функций, а также выстраивают удобную работу с "тяжелыми" отчетами за счет формирования в фоне любых произвольных отчетов за счет использования подсистемы "Длительные операции".
Пример был сделан для внешнего отчета, но встроить его в конфигурацию не составит труда. Фактически нужно еще меньше действий, но потребуется обновление конфигурации.
Пример встраивания отчета в конфигурацию
Для встраивания отчета в конфигурацию с подсистемой "Варианты отчетов" достаточно сделать несколько простых шагов.
1. Добавить отчет непосредственно в конфигурацию
Вставляем внешний отчет из файла.
И получаем тот же самый отчет, но уже в составе конфигурации. Для наглядности добавил к имени постфикс "Встроенный". То же самое сделал для вариантов отчета в настройке схемы компоновки данных.
Теперь перейдем к настройкам.
2. Установить подсистему для него
Выбираем подсистему "Закупки" для работы отчета.
Именно к этой подсистеме отчет будет привязан.
3. Создать описание отчета
В общем модуле "ВариантыОтчетовПереопределяемый" в процедуре "НастроитьВариантыОтчетов" добавим описание обоих вариантов нашего отчета:
Процедура НастроитьВариантыОтчетов(Настройки) Экспорт
// ... код типовой конфигурации ...
ОписаниеОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ПростоВнешнийОтчетДляERPВстроенный);
ОписаниеВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, ОписаниеОтчета, "ПростоОтчетДляERP");
ОписаниеВарианта.Описание = НСтр("ru='Просто отчет для ERP (встроенный)'");
ОписаниеВарианта.ВидимостьПоУмолчанию = Истина;
ОписаниеВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, ОписаниеОтчета, "ЕщеОдинВариант");
ОписаниеВарианта.Описание = НСтр("ru='Еще один вариант (встроенный)'");
ОписаниеВарианта.ВидимостьПоУмолчанию = Истина;
КонецПроцедуры
С помощью опции "ВидимостьПоУмолчанию" мы включили отображение отчета в панели отчетов для всех его вариантов. По умолчанию видимость включается только для первого основного варианта.
Ура, ура, ура! Отчет теперь виден в пользовательском интерфейсе.
И даже работает! Было не сложно 🙂
Дополнительно можно настраивать различные параметры (права доступа, отображение в панелях отчетов и многое другое), но сейчас на этом не останавливаемся. Более подробная информация есть на ИТС, в демобазах БСП и в других статьях на Инфостарт.
Конечно, все "внутренности" подсистемы мы не рассматриваем, но основная часть теперь должна быть понятна. А теперь поговорим о типичной ситуации в разработке отчетов, с которой приходится часто сталкиваться.
Обычная ситуация
Вроде все просто и никаких проблем не ожидается. Но давайте сделаем те же самые действия на другой конфигурации, например на Бухгалтерии КОРП 3.0.67.70 (не самая новая версия, но подойдет). Добавим как внешний отчет, так и внутренний.
Внешний отчет удалось добавить, а также настроить расположение в подсистеме "Продажи" и даже запустить. Вроде бы все работает, но на самом деле не так как надо:
- Для отчета недоступны варианты отчетов. Их нет не только в интерфейсе элемента внешнего отчета, но и в справочнике "Варианты отчетов" новых элементов не добавилось.
- Отчет использует общую форму отчетов подсистемы, но не весь функционал. Например, фоновое выполнение отчета недоступно.
Встроить отчет в конфигурацию мы смогли (добавлен элемент отчета, настроена подсистема и добавлен код описания вариантов в общий переопределяемый модуль). Запускаем с ключом обновления БСП и …
Думаю, по описанию ошибки Вы уже догадались что же произошло.
Примечание: в новых версиях БСП при добавлении отчета без указания хранилища вариантов отчетов появляется предупреждение:
Свойство отчета "Хранилище вариантов" не заполнено.
Сохранение (выбор) вариантов отчета будет работать в ограниченном режиме.
Обратитесь к разработчику дополнительного (внешнего) отчета.
Поэтому теперь ошибиться с настройками еще сложнее. Если, конечно, не игнорировать данное предупреждение…
Вы будете неприятно удивлены результату — отчеты не только не сформировали элементы справочника "Варианты отчетов", так еще и не выполняются в фоновом режиме, а также не отображаются в панели отчетов. А попытка встроить отчет в конфигурацию вообще приводит к ошибке при запуске базы с ключом обновления БСП.
Только форма отчета типовая, но остальное работает не как ожидалось. В чем же дело?
Что здесь не так и как быть
Ответ достаточно прост. Помните, в кратком описании принципа работы подсистемы говорилось, что она использует собственное хранилище вариантов отчетов, которое переопределяет работу с настройками на справочник "Варианты отчетов". В ERP это хранилище используется по умолчанию, так как оно установлено в качестве основного хранилища вариантов в настройках корня конфигурации. Сравните эти настройки с бухгалтерией.
Разница в настройках ERP и БУХ
В ERP хранилище вариантов отчетов по умолчанию установлено, а в Бухгалтерии нет.
Нет хранилища вариантов — нет и хранения настроек в справочнике "Варианты отчетов", и нет доступа ко всем функциям подсистемы.
То есть, в бухгалтерии в качестве хранилища вариантов отчета по умолчанию используется не хранилище вариантов из БСП, а стандартное хранилище настроек. Именно поэтому отчеты и не смогли использовать возможности подсистемы "Варианты отчетов".
Исправить это и просто, и сложно одновременно.
Просто, потому что в свойствах отчета достаточно явно указать хранилище вариантов отчетов.
Явное указание хранилища вариантов отчета
Для встроенного в конфигурацию отчета это делается здесь.
Для внешнего отчета это уже не так интуитивно понятно.
Теперь отчеты подходят для работы с подсистемой.
Но есть небольшая (а может и большая) сложность — если отчет был уже ранее добавлен и пользователи сохраняли свои варианты, то после таких манипуляций все настройки будут потеряны.
Для корректного исправления ситуации лучше всего изменения хранилища вариантов выполнять следующим образом.
Исправить без последствий
В первую очередь, нужно проверить — есть ли для отчета нестандартные (созданные пользователями) варианты отчетов, хранящиеся в стандартном хранилище настроек отчетов. Если их нет — отлично! Просто обновите отчет.
Если же пользовательские варианты уже есть, то установка нового хранилища вариантов сделает эти настройки недоступными для использования. Вас может ожидать шквал заявок от сотрудников 🙂
Чтобы этого избежать, можно конвертировать настройки стандартного хранилища вариантов в элементы справочника "Варианты отчетов". Пример такого скрипта ниже.
ПолноеИмяОтчета = "ВнешнийОтчет.ИмяОтчета"; // или "Отчет.ИмяОтчета"
// Здесь ведется работа со стандартным хранилищем настроек.
// Если в корне конфигурации уже определено хранилище вариантов отчетов,
// то данный код будет не рабочим и конвертировать варианты отчетов не получится.
// Работы по переносу настроек нужно проводить до установки хранилища для всей конфигурации,
// или временно убрать эту настройку.
ФильтрНастроек = Новый Структура("КлючОбъекта", ПолноеИмяОтчета);
ВыборкаХранилища = ХранилищеВариантовОтчетов.Выбрать(ФильтрНастроек);
Пока ВыборкаХранилища.Следующий() Цикл
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ВыборкаХранилища.Пользователь);
Если ПользовательИБ = Неопределено Тогда
Пользователь = Справочники.Пользователи.НайтиПоНаименованию(ВыборкаХранилища.Пользователь, Истина);
Если НЕ ЗначениеЗаполнено(Пользователь) Тогда
Продолжить;
КонецЕсли;
ИдентификаторПользователя = Пользователь.ИдентификаторПользователяИБ;
Иначе
ИдентификаторПользователя = ПользовательИБ.УникальныйИдентификатор;
КонецЕсли;
// Здесь можно добавить поиск уже существующего элемента справочника по
// полям: ключ варианта, отчет, наименование
ХранилищеВарианта = Справочники.ВариантыОтчетов.СоздатьЭлемент();
ХранилищеВарианта.Наименование = ВыборкаХранилища.Представление;
ХранилищеВарианта.Отчет = ВыборкаХранилища.КлючОбъекта;
ХранилищеВарианта.КлючВарианта = ВыборкаХранилища.КлючНастроек;
ХранилищеВарианта.Автор = Справочники.Пользователи.НайтиПоРеквизиту("ИдентификаторПользователяИБ", ИдентификаторПользователя);
ХранилищеВарианта.Пользовательский = Истина;
ХранилищеВарианта.ТолькоДляАвтора = Истина;
ХранилищеВарианта.ВидимостьПоУмолчанию = Истина;
Если ТипЗнч(ВыборкаХранилища.Настройки) = Тип("ХранилищеЗначения") Тогда
ХранилищеВарианта.Настройки = ВыборкаХранилища.Настройки;
Иначе
ХранилищеВарианта.Настройки = Новый ХранилищеЗначения(ВыборкаХранилища.Настройки);
КонецЕсли;
// Здесь может быть необходимым явное указание отчета (ссылки на доп. отчет в справочнике),
// а также установка типа отчета "Дополнительный".
// Все зависит от ситуации. Если Вы точно знаете какой отчет обрабатываете, то лучше явно укажите ссылки и тип.
ИнформацияОбОтчете = ВариантыОтчетов.СформироватьИнформациюОбОтчетеПоПолномуИмени(ВыборкаХранилища.КлючОбъекта);
Если НЕ ТипЗнч(ИнформацияОбОтчете.ТекстОшибки) = Тип("Строка") Тогда
ХранилищеВарианта.Отчет = ИнформацияОбОтчете.Отчет;
ХранилищеВарианта.ТипОтчета = ИнформацияОбОтчете.ТипОтчета;
КонецЕсли;
// Указание раздела размещения отчета
//Раздел = ХранилищеВарианта.Размещение.Добавить();
//Раздел.Использование = Истина;
//Раздел.Подсистема = "Администрирование";
ХранилищеВарианта.Записать();
КонецЦикла;
Это не законченный вариант, т.к. практика показывает, что конвертация вариантов отчетов сильно отличается от конфигурации, набора существующих вариантов, прав доступа и многого другого. Но принцип работы должен быть понятен.
В демобазах БСП Вы можете найти обработку "ПереносВариантовОтчетов", которая также позволяет конвертировать варианты. Она не имеет гибких настроек и используется при внедрении подсистемы вариантов отчета. Для точечной конвертации она не подойдет, но для изучения работы подсистемы подходит идеально.
Итого, при использовании подсистемы вариантов отчетов нужно обязательно проверять используется ли хранилище вариантов отчетов из БСП в отчете. Для использования полного функционала подсистемы его обязательно нужно включать. Если в конфигурации подсистема внедрена частично, то в отчетах (внешних и встроенных) необходимо указывать хранилище вариантов явно.
При исправлении хранилища вариантов у отчета все старые настройки пользователей могут быть потеряны, поэтому изменение хранилища настроек должно происходить осторожно.
Немного нюансов
При использовании подсистемы "Варианты отчетов" может возникнуть интересная ситуация в процессе разработки. Допустим, у вас есть внешний отчет (пусть будет тот самый отчет для ERP из примера выше). Он уже был добавлен в дополнительные отчеты и обработки и некоторое время использовался.
Теперь появилась необходимость изменить настройки отчета. Вы изменяете их в конфигураторе, сохраняете отчет, открываете в пользовательском режиме для проверки и … барабанная дробь … при открытии настройки не изменились.
Подобная ситуация может также быть, если Вы изменили настройки компоновки вариантов в конфигураторе, обновили информационную базу, но при открытии отчета снова никаких изменений не увидите.
Причина также проста — настройки хранятся в справочнике "Варианты отчетов". При внесении изменений в конфигураторе настройки в самом справочнике, конечно же, не обновляются. Поэтому в отчете и не видно изменений.
Решение:
- Для внешних отчетов:
- Обновить внешний отчет в справочнике "Дополнительные отчеты и обработки", после чего настройки предопределенных вариантов обновятся.
- На тестовом окружении изменить имя отчета, добавив например цифру. В итоге созданные настройки в справочнике не будут использоваться.
- Для встроенных отчетов:
- После применения изменений конфигурации запустить обновление информационной базы со специальным ключом запуска БСП.
- Отдельно запустить обновление данных вариантов отчета с помощью скрипта.
Дополнительной сложностью могут служить пользовательские варианты отчетов, которые автоматически не обновятся при внесении изменений в сам отчет. Тут придется продумывать варианты решения:
- Выпустить полностью новую версию отчета с новыми вариантами, которая не будет поддерживать существующие пользовательские варианты.
- Очистить все пользовательские варианты для измененного отчета.
- Написать обработку, которая исправит настройки существующих вариантов отчетов пользователей
Варианты решения выбирать только Вам. В остальном, особых проблем и нюансов нет. Подсистема стоит того, чтобы ее использовать и не изобретать велосипеды.
Вот и все
Теперь Вы знаете немного магии из мира БСП, хотя уверен, что для многих это не стало открытием. Надеюсь, что информация будет полезна и сэкономит время в случаях, когда от разработчиков можно услышать:
- Платформа создала кэш настроек отчета, сейчас его почищу. Хм, а не помогает. Компьютер перезапущу!
- Я напишу свой механизм управления вариантами отчетов. Тот, что в БСП, глючит сильно.
- Я делаю отчеты с помощью обработок, что еще за БСП.
И да, всех проблем с отчетами можно было бы избежать, если изучить официальную документацию.
До скорых встреч, вдохновения Вам и удачных код-ревью!
Другие ссылки
Нужно больше Золота, ам, хмм, Статей!!!
(1) хорошо, Милорд!
по последнему абзацу
и далее расширенная инструкция как изменить это положение дел.
Причем, эти действия рядовому пользователю выполнить сложно.
Кроме озвученных способов есть другой, понятный пользователю.
Причем, этот способ можно отправить пользователю письмом или СМС без простыни текста:
…
В общем и целом статья написана хорошо и структурировано подает …прописные истины для тех, кто плотно работает с типовыми.
А новичкам самое то.
(3) для пользователя, конечно, проще сбросить настройки.
Но здесь статья для разработчиков. Имелось ввиду, что можно адаптировать уже сохраненные варианты отчетов программно (добавить или удалить поля, отборы неработающие убрать и т.д.).
А истины и правда прописные 🙂
Было бы интересно посмотреть примеры использования процедуры ОпределитьНастройкиФормы в модуле внешнего отчета.
Я сейчас буду плакать от счастья.
Перевожу старую конфигурацию на базе УПП на английский. Пришлось в 440 объектах документах править захардкоженную структуру с описанием заголовков печатных форм — вставлять везде НСтр. Более того в общих модулях много где идет формирвоание текстов для интерфейса тоже захардкоженных и хрен где встретишь НСтр.
Пришлось писать внешний инструмент парсинга выгрузки конфы в файлы и самый геморой с модулями непуравляемых форм.
И сейчас я вижу что человек пишет код в котором в захардкоженное описание предусмотрительно ставит НСтр для поддержки мультиязычности.
Я сейчас расплачусь от уважения.
Не говоря уже обо всей другой стати — только за это 15 звезд тебе впаять надо! Респект!
(5) в БСП хорошие примеры, но взял на будущее.
(6) у Вас очень интересная задача. Если когда-нибудь сделайте публикацию как все провернули, то юудет очень интересно.
Честно признаться, я не всегда использую НСтр(), так что иногда можно и камнями закидать 🙂
Подскажите, как обозначить совместимость с подсистемой вариантов отчетов для внешнего отчета?
У меня не отображается страница «Варианты отчета» на форме элемента справочника «Дополнительные отчеты и обработки».
(9) посмотрите настройки внешнего варианта отчета. В статье есть пример, когда для внешнего отчета устанавливается хранилище вариантов отчета. Это то чно Вам нужно.
Если, конечно, в Вашей конфигурации есть БСП…
(9) Я думаю дело в том, что вид обработки вы указали «Отчет», а не «ДополнительныйОтчет». Это влияет только на наличие страницы «Варианты отчета» на форме элемента справочника. К настройке вариантов такого отчета можно добраться из «Администрирование — Печатные формы, отчеты и обработки — Отчеты» или из самого отчета.
(11) возможный вариант, +.
(6) видимо стандарты разработки 1с в вашем случае придумала позже ….https://its.1c.ru/db/v8std#content:761:hdoc:_top
(6) АПК умеет искать захаркоденные фрагменты строк и ругаться на них, что они без НСтр. Это сильно упрощает работу переводчикам.
А объясните мне. Вот не было хранилищ настроек и использовали справочники «Сохранённые настройки» и жили не тужили. Тут прогеры платформеры делают новую байду Хранилище всякой пурги. А потом появляются ещё тру прогеры и делают новый справочник «Варианты отчётов», который заменяет хранилище. Зачем вся это ерунда? На мой взгляд из всей БСП полезное это Универсальный отчёт. Всё остальное бред воспаленного мозга тру прогаммеров
И да. Статья гуд, однозначно плюс
(16) спасибо!
(15) думаю, тут нет злого умысла или желания у разработчиков 1С испортить Вашу жизнь 🙂
Хранилище вариантов, как и любое хранилище, имеет весьма ограниченный функционал и не подходит для всех задач. Но отчеты на уровне платформы тесно иннтегрированы с хранилищем для созранения и загрузки настроек. Поэтому, переопределив поведение хранилища, разработчики расширили функционал для работы с настройками.
Почему сразу не сделать справочником? Пришлось бы писать излишний код для событий созранения настроек, эмулировать стандартные соьытия отчета и т.д.
Поэтому нужно понять, простить, использовать 🙂
Недавно столкнулся с недостатком этой подсистемы. Разбирался, почему созданный в пользовательском режиме вариант отчета не записывает замеры времени. Оказалось, что ключевые операции формируются из справочника «Предопределенные варианты отчетов». Пришлось делать свою обработку, которая добавляет элемент в этот справочник.
Статья классная, однозначно плюс!
Сам хотел подобную написать, но также хорошо как у Вас не получилось бы наверно.
У меня такой вопрос, Вы пишите, что настройки предопределенных вариантов не сохраняются в справочнике «Варианты отчетов» — согласен. Дальше Вы пишите, что при изменении настроек варианта в конфигураторе, приходится перезаполнять варианты отчетов, чтобы увидеть настройки в пользовательском режиме. Зачем, если настройки не сохраняются в справочнике?
Кстати, я такой особенности не замечал. Меняешь вариант в конфигураторе, он меняется в пользовательском режиме. Разве что могут наложиться еще сохраненные пользовательские настройки.
(20) возможно, недостаточно раскрыл момент и неточно выразился.
Вы правы, пользовательские настройки могут наложиться.
Если вариант предопределенный, то есть из самой схемы, то да, вы такого поведения не увидите.
Но если вариант модифицированный, свой так сказать, то в этом случае настройки хранятся в справочнике.
Далее, если Вы меняете настройки отчета в конфигураторе (например, добавили новое поле в основной вариант в схеме), то при открытии этих изменений не увидите.
Еще бывают ситуации, когда предопределенные варианты могут быть модифицированы и эранить настройки в справочнике.
В текущей статье не буду описывать это подробнее, ибо здест это просто для информации, обзора. Но можно вернуться к этой теме в будущем.
За статью плюс поставил, т.к. приходится работать с этой подсистемой (проклятая любовь к деньгам 🙂 ). Но вывод нелогичен, ИМХО : » Подсистема стоит того, чтобы ее использовать и не изобретать велосипеды.». Этот вывод как раз в конце раздела «Немного нюансов», в котором как раз и подчеркивается бредовость и неудобства этой подсистемы. Вся эта подсистема — гигантский корявый переусложненный велосипед.
(22) спасибо за добрые слова 🙂
Все же это лучше, чем то что было в УПП иди многочисленные велосипеды.
Своего мнения не навязываю, но с учетом возможностей ее доработки, унификации работы и удобства интерфейса -для меня вывод именно такой.
Если у Вас есть опыт более удобных мезанизмов, то сообществу было бы интересно узнать / пощупать.
Как по варианту отчету в предприятии понять, какому отчету конфигурации он соответствует? В ERP2 сотни отчетов и каждый раз вызывает трудности поиск отчета.
(24) по представлению отчета найти элемент в справочнике вариантов. В реквизите Отчет будет полное имя метаданных отчета или ссылка на доп. отчет или идентификатор объекта метаданных.
Скажите, пожалуйста, для чего в модуле формы внешней обработки добавлена процедура «ПриКомпоновкеРезультата»? В статье написано, что она для программного формирования отчета. Но отчет формируется и без нее. Можете описать моменты, когда она будет действительно нужна.
(26) в этом случае практического смысла это не несет. Сделано для примера того, что когда отчет переведен на программное формирование отчета, то с помощью общей формы БСП отчет все равно формируется в фоновом режиме.
Без БСП, при программном формировании, отчет будет блокировать основной интерфейс пользователя, т.е. подвисать.
Вы модете это проверить самостоятельно на простом отчете без БСП.
(27) Спасибо, большое, за ваш ответ. Теперь все встало на свои места. Отдельно спасибо за публикацию! Получен ценный опыт. В срочном порядке переписываю свои внешние отчеты.
(27) Еще один вопрос. Не совсем понятно, что значит «без БСП»?. Это внешний отчет, у которого в модуле объекта отсутствует функция СведенияОВнешнейОбработке()?
(29) отчет, который не использует хранилище вариантов БСП, не использует общую форму отчетов БСП, ну и без описания о котором Вы написали.
(30) Хорошо. Я создал два отчета, которые не использует хранилище вариантов БСП и не содержат функцию СведенияОВнешнейОбработке().
Первый отчет содержит процедуру ПриКомпоновкеРезультата() в модуле отчета, второй нет.
Оба этих отчета при формировании блокирует интерфейс, т.е. выполняется НЕ в фоне.
Из вашего комментария (27), я понял, что отчет без процедуры ПриКомпоновкеРезультата() должна формироваться в фоне.
Или я что-то не правильно понял. Поправьте меня пожалуйста.
(31) приложите примеры отчетов к комментарии. Посмотрю по возможности.
Отчеты во вложении.
Написаны для Бухгалтерии 3.0, УХ 3.0.
(25) Спасибо большое! Дополню, что в варианте отчета есть скрытая группа «Техническая информация» и в ней как раз есть нужные данные.
Классная статья!
(35) Спасибо!
(33) проверил. Все дело в том, что Вы не добавили форму в оба отчета, поэтому использовалась форма БСП (основная форма конфигуарции для отчетов). В этом случае отчет не может выполняться в фоне, потому что для него необходима инициализация варианта отчетов и всего того, что описано в статье.
Я добавил в отчеты не БСПшную форму, а стандартную. В этом случае вариант без процедуры при компоновке выполняется в фоне.
Отчет выполняется очень быстро, поэтом выполнение в фоне можно не заметить. В этом случае можно проверить так:
1. Запускаете отчет
2. Смотрите что в журнале регистрации. Там появятся события запуска и остановки фонового задания.
(3) Прописные истины — это что-то постоянное, а тут от версии к версии все меняется на 180 градусов
(38) Во вселенной нет постоянных вещей и событий — все пребывает в движении, устремляясь к развитию и упадку.
Истины в каждой конкретной точке пространства-времени — это временные предрассудки наблюдателя этой точки.
Хотите об этом поговорить?
(39)
Да начнется сеанс психотерапии! :))))
(37) Спасибо, теперь все встало на свои места!
Полезная статья. Мои коллеги (по франчу) почем-то не любят читать документацию к БСП, но любят infostart. Надеюсь, что теперь у них мозги встанут на место. Особенно ценно — проведение параллелей между БП и ЕРП. Спасибо, автор, пишите еще про БСП в таком стиле.
(42) спасибо на добром слове:)
Респектище и уважение автору!
Понятно и логично изложено.
Мало того, что вы чувствуется сильный спец, у вас еще талант доносить информацию
поясните моментик один, чтобы у меня пазлики сложились до конца )
Пусть у меня есть свой собственный вариант:
— то есть я взял предопределенный
— изменил через изменить вараинт отчета. см. прикрепленный файл
— сохранил. в Вариантах отчета добавился элемент справочника. Все ок.
У меня вопрос к (рис 1) :
— сохранить настройки
— выбрать настройки
То есть я могу, находять в предопределенном варианте отчета сделать себе кучу настроек и потом через выбор выбирать (рис 2) .
Причем если я по кнопке настройки изменю вариант вывода, добавлю группировку и.т.п., то при закрытии он меня будет именно просить сохранить Вариант отчета. Если я скажу нет, то у меня настройка сохраниться и в ней сохраняться все мои отборы и.т.п., но вариант вывода останется изначальный.
То есть через сохранить настройки и выбрать настройки можно сохранить только отборы/параметры и.т.п
я правильно понимаю ситуацию ?
Это пользовательские настройки СКД ? Но тогда я бы и вариант вывода мог сохранять как я понимаю (группировки добавлять и.т.п., но нет не сохраняются).
Все таки что мы сохраняем по Сохранить настройки? Где это храниться?
(45) уже так много времени существует механизм СКД, но путаница между видами настроек все равно сохраняется. Может это повод для новой статьи…
Вообщем, у СКД три вида настроек:
— Пользовательские
— Фиксированные
— Настройки компоновки
Фиксированные пропустим.
Пользовательские — они сохраняются для пользователя и не создают нового варианта отчета. Это те самые настройки, что вы вбиваете при открытии отчета (период отчета, некоторые отборы). Пользовательские настройки не влияют на настройку варианта отчета. Состав пользовательских настроек изначально определяет разработчик.
А вот настройки компоновки… если вы поменяете настройки через «Изменить вариант», то это будут изменены как-раз настройки варианта отчета. Именно эти настройки и хранятся в справочнике вариантов отчета.
Как-то так в общих чертах. Надеюсь не запутал еще больше 🙂
(46) Спасибо услышал!
https://its.1c.ru/db/pubcomplexreports/content/140/hdoc
Ответ на мой вопрос: это пользовательские настройки СКД.
Ответ на мой второй вопрос: где хранятся. Кратко и точно тут:
(46)
100% статья будет востребована для сообщества.
(5) да, всякие жизненные ситуации, чтобы легче было разбираться
Коллеги, а кто-нибудь пробовал научить работать Варианты отчетов с произвольными СКД. Поясню, что подразумеваю под данным термином. Все отчеты мы создаем внутри или как внешние … А вот если у нас в режиме предприятия есть некий справочник, который хранит произвольные СКД, и мы хотим на основании подсистемы Варианты отчета формировать на базе данной СКД отчеты и сохранять для них варианты???