Как вывести отбор СКД в быстрый доступ отчета, особенно в 1С:Управление торговлей 11?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При работе с Системой компоновки данных (СКД) в 1С:Предприятии 8.3, особенно в конфигурации 1С:Управление торговлей 11 (УТ 11), разработчики и продвинутые пользователи часто сталкиваются с ситуацией, когда настроенный отбор, предназначенный для "быстрого доступа" на форме отчета, по каким-то причинам не отображается. Эта проблема может быть вызвана целым рядом факторов: от неправильных настроек самого отбора до особенностей сохранения вариантов отчета, кэширования или специфики работы типовых форм в УТ 11. Давайте подробно разберем, как мы можем диагностировать и решить эту распространенную проблему.

1. Проверка базовых настроек отбора СКД

Прежде всего, давайте убедимся, что мы правильно настроили отбор в схеме компоновки данных. Это первый и самый важный шаг. Мы должны понимать разницу между "Быстрым доступом" и "Обычным" режимом редактирования для элементов пользовательских настроек.

  1. Откроем схему компоновки данных: Перейдите на вкладку "Отборы" в конструкторе СКД.
  2. Добавим необходимый отбор: Например, для поля "Контрагент". Установим необходимое поле, вид сравнения и значение по умолчанию, если требуется (также можно реализовать отбор на соответствие шаблону списком).
  3. Настроим свойства элемента пользовательских настроек:
    • Выделим наш отбор в списке отборов.
    • Нажмем правой кнопкой мыши на нем и выберем пункт меню "Свойства элемента пользовательских настроек". Это ключевой шаг, который часто упускают.
    • Установим флаг "Включать в пользовательские настройки". Без этого флага отбор не будет доступен для настройки пользователем, и, соответственно, не появится в быстром доступе.
    • Выберем "Режим редактирования" как "Быстрый доступ". Это гарантирует, что элемент будет выведен непосредственно на форму отчета. Если выбрать "Обычный", отбор будет доступен только через кнопку "Настройки" на форме отчета (для более сложных условий полезны дополнительные отборы по диапазону значений).
    • Установим "Представление отбора": Если мы хотим, чтобы в быстрых настройках отображался только флаг использования отбора, а значение пользователь не мог менять (то есть, отбор был фиксированным по значению, но пользователь мог его включать/выключать), мы можем заполнить поле "Представление отбора" в свойствах пользовательских настроек. В этом случае в быстрые настройки добавится только флаг использования отбора.
  4. Проверим "Ограничение доступности": На вкладке "Параметры" в схеме компоновки данных убедимся, что для нашего отбора не установлена галочка "Ограничение доступности". Если она активна, отбор не будет доступен для редактирования и отображения пользователю.

После всех этих настроек обязательно сохраним изменения в отчете.

2. Правильное сохранение варианта отчета

Одной из наиболее частых причин, по которой изменения в отчете не отображаются, является загрузка старого варианта отчета. Даже если мы внесли все необходимые настройки в конфигураторе, при открытии отчета в режиме "Предприятие" может загрузиться ранее сохраненный пользовательский или предопределенный вариант, в котором эти настройки отсутствуют. Давайте разберем, как избежать этой ситуации:

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

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

3. Диагностика и решение проблем, связанных с кэшем

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

  1. Перезапуск платформы: Самый простой шаг – полностью закрыть 1С:Предприятие и запустить его заново. Иногда этого достаточно.
  2. Очистка кэша базы данных:
    • Закройте все сеансы 1С:Предприятия.
    • Откройте список информационных баз.
    • Выделите проблемную базу, нажмите "Изменить".
    • В поле "Дополнительные параметры запуска" или "Каталог информационной базы" найдите путь к базе. Обычно кэш находится в каталоге пользователя по пути: %USERPROFILE%\AppData\Roaming\1C\1CE\ или %USERPROFILE%\AppData\Local\1C\1CE\.
    • В этих папках мы найдем подкаталоги с длинными буквенно-цифровыми именами. Эти каталоги содержат кэш для разных информационных баз. Удалим содержимое этих каталогов (или сами каталоги), связанные с нашей базой.
  3. Переименование отчета: Как предлагали на форуме, иногда помогает не переименование файла отчета, а изменение наименования отчета в конфигураторе (свойство "Имя" или "Представление"). Это заставит платформу воспринять его как новый объект и построить для него новый кэш. После переименования необходимо сохранить конфигурацию базы данных.

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

4. Специфика конфигурации 1С:УТ 11

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

В УТ 11 часто встречаются дополнительные механизмы, которые управляют отображением и сохранением настроек. Например, могут использоваться определенные методы общих модулей БСП для передачи заполненных пользовательских настроек в открываемую форму отчета. Мы можем попытаться изучить код типовых отчетов УТ 11, чтобы понять, как они работают с СКД и быстрыми настройками. Это может дать нам подсказку о специфических свойствах или методах, которые нужно использовать.

4.1. Программное управление отборами в УТ 11

Если стандартные настройки не дают желаемого результата в УТ 11, мы можем рассмотреть вариант программного управления отборами. Этот подход предоставляет максимальную гибкость и контроль. Мы можем:

  1. Добавлять элементы отбора через код: Вместо того чтобы полагаться на настройки в конфигураторе, мы можем программно создать или изменить элементы отбора в коллекции Отбор.Элементы объекта КомпоновщикНастроек.Настройки.
  2. Устанавливать значения и вид сравнения: Для каждого элемента отбора мы можем задать ЛевоеЗначение, ПравоеЗначение, ВидСравнения (например, ВидСравненияСКД.Равно, ВидСравненияСКД.ВСписке) и другие свойства.
  3. Управлять флагом использования: Мы можем установить свойство Использование в Истина или Ложь, чтобы активировать или деактивировать отбор.
  4. Передавать структуру с условиями отбора: При открытии формы отчета мы можем передать структуру с заранее подготовленными условиями отбора в параметры формы, которые затем будут использованы для инициализации настроек СКД.

Пример (концептуальный) программного добавления отбора:


// В модуле объекта или менеджера отчета
// ...
КомпоновщикНастроек = ОтчетОбъект.КомпоновщикНастроек;

// Добавляем новый элемент отбора или находим существующий
НовыйЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовыйЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент");
НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовыйЭлементОтбора.ПравоеЗначение = СсылкаНаКонтрагента; // Полученная ссылка
НовыйЭлементОтбора.Использование = Истина;
НовыйЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

// ...

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

4.2. Создание собственной формы отчета

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

При создании собственной формы мы получаем полный контроль над расположением элементов, их поведением и привязкой к СКД:

  1. Создадим новую форму: В конфигураторе для нашего отчета создадим новую управляемую форму.
  2. Разместим элементы управления: На форме мы можем разместить любые элементы управления (поле ввода, флажок и т.д.), которые будут представлять наш отбор.
  3. Программно свяжем элементы с СКД: В модуле формы мы должны будем программно связать эти элементы с соответствующими элементами компоновки данных. Это включает в себя чтение текущих значений отбора из КомпоновщикНастроек.Настройки.Отбор при открытии формы и запись измененных пользователем значений обратно в настройки перед формированием отчета.

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

5. Проверка пользовательских идентификаторов (userSettingID)

Иногда, особенно при работе со сложными отчетами и множеством вариантов, проблема может заключаться в некорректных или отсутствующих пользовательских идентификаторах для элементов настройки СКД. Эти идентификаторы хранятся в XML-схеме компоновки данных и используются платформой для уникальной идентификации настроек в различных вариантах отчета.

Если userSettingID отсутствуют или дублируются, система может путаться, не загружая правильные настройки для отбора.

  1. Выгрузим схему в XML: В конфигураторе откройте схему компоновки данных. На панели инструментов СКД найдите кнопку "Загрузить/сохранить настройки" или "Прочие", выберите "Сохранить схему в XML-файл".
  2. Проанализируем XML-файл: Откройте сохраненный XML-файл в текстовом редакторе. Найдите секции, относящиеся к вашим отборам, и проверьте наличие тега <dcsset:userSettingID>. Каждый элемент настройки, который должен быть в пользовательских настройках, должен иметь уникальный идентификатор.
  3. Добавим или скорректируем userSettingID: Если идентификатор отсутствует или повторяется, можно вручную добавить его или изменить на уникальный. Формат идентификатора обычно представляет собой строку, например, <dcsset:userSettingID>МойОтборКонтрагент</dcsset:userSettingID>.
  4. Загрузим схему обратно: После внесения изменений сохраним XML-файл и загрузим его обратно в схему компоновки данных отчета через соответствующую кнопку в конфигураторе ("Загрузить схему из XML-файла").

Этот метод является более продвинутым и требует осторожности, так как некорректное редактирование XML может повредить схему компоновки данных.

В заключение, проблема с выводом отбора СКД в быстрый доступ, особенно в конфигурации 1С:УТ 11, является комплексной. Мы рассмотрели все возможные причины, начиная от базовых настроек и сохранения вариантов, до специфики кэша и особенностей типовых форм УТ 11. В большинстве случаев тщательная проверка настроек и правильное сохранение варианта отчета решают проблему. Если же это не помогает, программные методы или создание собственной формы отчета предоставляют необходимый контроль для достижения желаемого результата.

← На главную