Как исправить ошибку "Свойство вариантов 'Хранилище вариантов' не заполнено" при подключении внешнего отчета в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе с внешними отчетами в системе 1С пользователи часто сталкиваются с ошибкой «Свойство вариантов "Хранилище вариантов" не заполнено». Эта ошибка указывает на то, что отчету не указано место, где должны храниться пользовательские варианты его настроек. Без правильно заполненного свойства функциональность сохранения и выбора этих вариантов будет ограничена или недоступна. Давайте подробно разберем, почему возникает эта ошибка и как ее эффективно устранить, а также рассмотрим связанные вопросы с размещением отчетов в подсистемах.

Заполнение свойства "Хранилище вариантов" для внешних отчетов

Основная причина появления ошибки – это отсутствие указания стандартного хранилища вариантов для внешнего отчета. Система 1С, особенно типовые конфигурации, разработанные с использованием Библиотеки стандартных подсистем (БСП), ожидает, что внешние отчеты будут использовать предопределенный механизм для сохранения пользовательских настроек. Если этот механизм не указан, возникает данная ошибка. Варианты отчетов – это сохраненные наборы настроек, позволяющие быстро переключаться между различными представлениями данных без необходимости каждый раз настраивать отчет заново.

  1. Открываем внешний отчет в Конфигураторе: Прежде всего, нам необходимо открыть файл вашего внешнего отчета (с расширением .erf) в режиме Конфигуратора. Для этого запускаем 1С:Предприятие в режиме Конфигуратора, затем переходим в меню «Файл» -> «Открыть» и выбираем файл вашего отчета.
  2. Переходим в свойства отчета: После того как отчет будет открыт в Конфигураторе, мы увидим его структуру. Нам необходимо получить доступ к его общим свойствам. Для этого переходим в главное меню Конфигуратора, выбираем пункт «Действия», а затем в выпадающем списке нажимаем «Свойства». Откроется панель свойств объекта отчета.
  3. Находим свойство "Хранилище вариантов": В открывшейся панели свойств мы внимательно ищем свойство с названием «Хранилище вариантов». Оно может быть не на самом видном месте, поэтому будьте внимательны.
  4. Выбираем предопределенный элемент "ХранилищеВариантовОтчетов": Когда мы найдем свойство «Хранилище вариантов», нам потребуется его заполнить. Нажимаем на кнопку выбора (обычно это кнопка с тремя точками или стрелкой вниз) рядом с полем этого свойства. Откроется форма выбора объекта. В этой форме нам нужно будет выбрать предопределенный элемент с именем «ХранилищеВариантовОтчетов». Это стандартное системное хранилище, предназначенное для сохранения пользовательских вариантов отчетов в типовых конфигурациях 1С.
  5. Сохраняем и перезагружаем отчет: После выбора «ХранилищеВариантовОтчетов» обязательно сохраняем изменения в файле внешнего отчета, нажав на кнопку сохранения или выбрав «Файл» -> «Сохранить». Затем, если отчет уже был загружен в информационную базу, нам потребуется заново загрузить его через раздел «Администрирование» -> «Дополнительные отчеты и обработки», чтобы изменения вступили в силу.

Что такое "ХранилищеВариантовОтчетов"?

ХранилищеВариантовОтчетов – это ключевой элемент, входящий в состав подсистемы «Варианты отчетов» из Библиотеки стандартных подсистем (БСП). Эта подсистема предоставляет универсальный механизм для работы с вариантами отчетов, включая их сохранение, изменение и доступ для разных пользователей. Все пользовательские варианты отчетов, созданные в режиме 1С:Предприятие, будут сохраняться именно в этом хранилище, а затем отображаться в специальном справочнике «Варианты отчетов». Таким образом, привязка внешнего отчета к ХранилищеВариантовОтчетов обеспечивает его полноценную интеграцию со стандартной функциональностью 1С по управлению пользовательскими настройками.

Работа с видимостью подсистем и размещением внешних объектов

После устранения ошибки с незаполненным хранилищем, пользователи могут столкнуться с другой проблемой: внешний отчет или обработка не отображается в ожидаемых подсистемах интерфейса 1С или же список доступных подсистем при размещении не соответствует действительности. Разберем, как повлиять на видимость и размещение внешних объектов.

Видимость внешних отчетов и обработок в интерфейсе 1С, а также список подсистем, к которым их можно отнести, в значительной степени определяется содержимым функции СведенияОВнешнейОбработке в модуле объекта внешнего файла. Эта функция возвращает структуру ПараметрыРегистрации, которая содержит метаданные для системы 1С.

Исходный код функции СведенияОВнешнейОбработке, представленный в первом сообщении, выглядит следующим образом:


Функция СведенияОВнешнейОбработке Экспорт
    ПараметрыРегистрации = Новый Структура ;
    ПараметрыРегистрации.Вставить("Вид","ДополнительныйОтчет");
    ПараметрыРегистрации.Вставить("Наименование","Сравнение данных 1С SF");
    ПараметрыРегистрации.Вставить("Версия","1.0");
    ПараметрыРегистрации.Вставить("Информация","Отчет «Сравнение данных 1С SF»");
    ПараметрыРегистрации.Вставить("БезопасныйРежим",Ложь);
    Команды = ПолучитьТаблицуКоманд;
    ПараметрыРегистрации.Вставить("Команды",Команды);
    Возврат ПараметрыРегистрации;
КонецФункции

Ключевую роль в размещении и видимости играет параметр "Назначение".

  1. Использование параметра "Назначение": Чтобы отчет или обработка отображались в определенных разделах или привязках к конкретным объектам (документам, справочникам), необходимо добавить в структуру ПараметрыРегистрации ключ "Назначение". Этот параметр может принимать различные значения:
    • Список объектов метаданных: Например, если мы хотим, чтобы отчет был доступен из формы документа «Поступления (акты, накладные)», мы можем указать его назначение как конкретный объект метаданных.
    • Список значений: Мы можем передать Новый СписокЗначений() и наполнить его элементами, соответствующими видам метаданных или даже конкретным объектам.
    • Строка: Для более простых случаев, или если нам нужно привязать отчет к одному конкретному типу объекта.
  2. Пример добавления "Назначения": Чтобы добавить отчет к конкретному документу, например, «Документ.Поступления», мы можем модифицировать функцию СведенияОВнешнейОбработке следующим образом:
  3. 
    Функция СведенияОВнешнейОбработке Экспорт
        ПараметрыРегистрации = Новый Структура ;
        ПараметрыРегистрации.Вставить("Вид","ДополнительныйОтчет");
        ПараметрыРегистрации.Вставить("Наименование","Сравнение данных 1С SF");
        ПараметрыРегистрации.Вставить("Версия","1.0");
        ПараметрыРегистрации.Вставить("Информация","Отчет «Сравнение данных 1С SF»");
        ПараметрыРегистрации.Вставить("БезопасныйРежим",Ложь);
        // Добавляем параметр "Назначение"
        СписокНазначений = Новый СписокЗначений();
        СписокНазначений.Добавить("Документ.Поступление"); // Например, привязка к документу "Поступление"
        // Или более общий вариант для привязки к конкретному типу документа
        // СписокНазначений.Добавить(Новый ОписаниеТипов("ДокументСсылка.Поступление"));
        ПараметрыРегистрации.Вставить("Назначение", СписокНазначений);
        Команды = ПолучитьТаблицуКоманд;
        ПараметрыРегистрации.Вставить("Команды",Команды);
        Возврат ПараметрыРегистрации;
    КонецФункции
    

    Если нам нужно разместить отчет в общих разделах, соответствующих подсистемам, то система "Дополнительные отчеты и обработки" (части БСП) обычно предоставляет соответствующие опции при регистрации внешнего объекта в режиме 1С:Предприятие, ориентируясь на тип внешнего объекта (`Вид`) и его общую природу. Если список подсистем не виден или не полон, это часто указывает на проблемы с конфигурацией метаданных самой базы, правами пользователя или неправильно указанным Вид для внешнего объекта, либо отсутствие в конфигурации соответствующей подсистемы БСП для управления дополнительными отчетами.

Особенности для внешних обработок

Важно различать внешние отчеты и внешние обработки. Обсужденное выше свойство «Хранилище вариантов» в первую очередь относится к внешним отчетам. Для внешних обработок (файлы с расширением .epf) это свойство может отсутствовать или иметь иное назначение, поскольку обработки не всегда имеют такую же логику сохранения вариантов, как отчеты.

Если мы работаем с внешней обработкой и сталкиваемся с проблемами регистрации или видимости, нам следует обратить внимание на следующие параметры в функции СведенияОВнешнейОбработке:

  1. Параметр "Вид": Для обработки необходимо убедиться, что параметр «Вид» установлен как "ДополнительнаяОбработка".
  2. 
    ПараметрыРегистрации.Вставить("Вид","ДополнительнаяОбработка");
    

    Это явно указывает системе, что мы регистрируем именно обработку, а не отчет.

  3. Параметр "Назначение": Как и для отчетов, параметр "Назначение" будет определять, где и к каким объектам будет привязана обработка. Например, если обработка должна запускаться из формы элемента справочника «Номенклатура», мы можем указать "Справочник.Номенклатура" в параметре "Назначение".

Дополнительные рекомендации по работе с внешними отчетами и обработками

Рассмотрим несколько дополнительных, но не менее важных моментов, которые помогут вам избежать проблем при работе с внешними объектами в 1С:

  1. Безопасный режим: В функции СведенияОВнешнейОбработке присутствует параметр "БезопасныйРежим". Настоятельно рекомендуем устанавливать его в Истина (True) для повышения безопасности.
  2. 
    ПараметрыРегистрации.Вставить("БезопасныйРежим",Истина);
    

    Это ограничивает доступ внешнего объекта к файловой системе и COM-соединениям, что критически важно в многопользовательских средах или при работе с непроверенными внешними файлами. Если внешний отчет или обработка требует доступа к файловой системе (например, для чтения или записи файлов), тогда, возможно, придется установить Ложь, но при этом необходимо четко осознавать риски.

  3. Таблица команд: Параметр "Команды" в структуре ПараметрыРегистрации определяет действия, которые пользователь может выполнять с внешним отчетом или обработкой. Это может быть запуск отчета, вызов какой-либо функции или другое специфическое действие. Функция ПолучитьТаблицуКоманд, а также вспомогательная процедура ДобавитьКоманду, служат для формирования этой таблицы.
  4. 
    Функция ПолучитьТаблицуКоманд
        Команды = Новый ТаблицаЗначений;
        Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
        Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
        Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); // Например, "ОткрытиеФормы"
        Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
        Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
        Возврат Команды;
    КонецФункции
    
    Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
        НоваяКоманда = ТаблицаКоманд.Добавить;
        НоваяКоманда.Представление = Представление;
        НоваяКоманда.Идентификатор = Идентификатор;
        НоваяКоманда.Использование = Использование;
        НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
        НоваяКоманда.Модификатор = Модификатор;
    КонецПроцедуры
    

    Обычно для отчетов команда с Использование = "ОткрытиеФормы" используется для непосредственного открытия формы отчета.

  5. Механизм регистрации в 1С:Предприятие: Все внешние отчеты и обработки подключаются в режиме 1С:Предприятие через раздел «Администрирование» -> «Дополнительные отчеты и обработки». Здесь мы добавляем новые внешние файлы, указываем их наименование, вид и при необходимости связываем с определенными рабочими местами или разделами конфигурации.

Понимание и правильная настройка этих свойств и параметров позволит нам избежать распространенных ошибок и обеспечить корректную работу и удобное размещение внешних отчетов и обработок в системе 1С. Всегда помните о необходимости сохранения изменений в файле отчета/обработки и его повторной загрузки в информационную базу после любых модификаций в Конфигураторе.

← На главную