Почему в СКД пропадает поле «Группа финансового учета» и как это исправить?

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

Разработчики отчетов в системе «1С:Предприятие» часто сталкиваются с загадочным поведением Системы компоновки данных (СКД). Вы создаете запрос, тестируете его в консоли запросов — все работает идеально, нужные данные выбираются. Открываете схему компоновки в конфигураторе — поле присутствует в списке доступных, его можно добавить в группировки или выбранные поля. Однако при запуске отчета в режиме «1С:Предприятие» поле бесследно исчезает из настроек отчета, колонка не выводится, а пользователи не могут его выбрать.

В этой статье мы подробно разберем, почему в СКД пропадает поле НоменклатураГруппаФинансовогоУчета (или любое другое аналогичное поле, получаемое через цепочку связей) на примере конфигураций «Управление торговлей 11», «ERP Управление предприятием» или «Комплексная автоматизация», и рассмотрим пошаговые методы решения этой проблемы.

Анализ исходного запроса

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


ВЫБРАТЬ РАЗРЕШЕННЫЕ
    АналитикаНоменклатуры.Номенклатура.ГруппаФинансовогоУчета КАК НоменклатураГруппаФинансовогоУчета,
    АналитикаНоменклатуры.Номенклатура КАК Номенклатура,
    ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот КАК КоличествоОборот,
    ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот КАК СуммаВыручкиОборот
ИЗ
    РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(, , , ) КАК ВыручкаИСебестоимостьПродажОбороты
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаНоменклатуры
        ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры = АналитикаНоменклатуры.КлючАналитики

В данном запросе поле ГруппаФинансовогоУчета выбирается через «длинную» цепочку связей: мы берем его из измерения Номенклатура, которое, в свою очередь, получается через левое соединение с регистром сведений АналитикаУчетаНоменклатуры. Именно такие составные пути и левые соединения чаще всего становятся источником проблем в компоновщике данных.

Рассмотрим по шагам все возможные причины исчезновения поля и способы их устранения.

---

Решение 1. Явное приведение типов с помощью оператора ВЫРАЗИТЬ

Поскольку поле ГруппаФинансовогоУчета выбирается через левое соединение, в результирующей выборке СУБД для некоторых записей значение поля АналитикаНоменклатуры.Номенклатура может принимать значение NULL. При оптимизации запроса СКД пытается определить точные типы данных.

Если цепочка связей слишком длинная, а промежуточные звенья могут содержать неопределенные значения, СКД в режиме «1С:Предприятие» может просто исключить это поле из дерева доступных из-за невозможности однозначно сопоставить типы на уровне метаданных.

Что нужно сделать:

В тексте запроса схемы компоновки данных явно приведите тип промежуточного объекта (в данном случае справочника Номенклатура) к его конкретному типу. Измените исходный запрос следующим образом:


ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВЫРАЗИТЬ(АналитикаНоменклатуры.Номенклатура КАК Справочник.Номенклатура).ГруппаФинансовогоУчета КАК НоменклатураГруппаФинансовогоУчета,
    АналитикаНоменклатуры.Номенклатура КАК Номенклатура,
    ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот КАК КоличествоОборот,
    ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот КАК СуммаВыручкиОборот
ИЗ
    РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(, , , ) КАК ВыручкаИСебестоимостьПродажОбороты
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаНоменклатуры
        ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры = АналитикаНоменклатуры.КлючАналитики

Использование оператора ВЫРАЗИТЬ гарантирует платформе, что по данной ветке связи всегда будет возвращаться либо пустая ссылка справочника Номенклатура, либо заполненный объект этого типа, что позволит СКД беспрепятственно прочитать реквизит ГруппаФинансовогоУчета.

---

Решение 2. Проверка ограничений на вкладке «Наборы данных» в СКД

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

Разберем по шагам, как это проверить:

  1. Откройте схему компоновки данных (файл .xsd вашего отчета) в конфигураторе.
  2. Перейдите на вкладку «Наборы данных».
  3. В верхней правой части найдите таблицу со списком полей набора данных.
  4. Найдите строку с полем НоменклатураГруппаФинансовогоУчета.
  5. Обратите внимание на колонки-флаги в правой части таблицы:
    • Ограничение поля — если здесь стоит флажок, поле будет полностью недоступно для выбора в режиме «1С:Предприятие».
    • Ограничение условия — запрещает использовать поле в отборах.
    • Ограничение группировки — запрещает делать группировку по этому полю.
    • Ограничение упорядочивания — запрещает сортировку по данному полю.

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

---

Решение 3. Проверка функциональных опций

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

Поле ГруппаФинансовогоУчета напрямую связано с функционалом финансового учета номенклатуры. Проблема может крыться в следующем:

Как проверить влияние ФО:

  1. В конфигураторе найдите в дереве метаданных реквизит ГруппаФинансовогоУчета справочника Номенклатура.
  2. Нажмите на него правой кнопкой мыши и выберите пункт «Поиск ссылок в конфигурации».
  3. Посмотрите, в какие Функциональные опции входит данный реквизит.
  4. Убедитесь в режиме «1С:Предприятие» (через разделы администрирования), что все эти опции активны.

---

Решение 4. Установка флага «Обязательное» в свойствах поля СКД

Оптимизатор запросов СКД работает достаточно агрессивно. Если поле не выведено напрямую в текущую группировку или в область видимости отчета, СКД может принять решение «выкинуть» его из результирующего SQL-запроса к базе данных в целях повышения производительности.

Чтобы заставить СКД гарантированно выбирать это поле из СУБД, выполните следующие действия:

  1. Перейдите на вкладку «Наборы данных» схемы компоновки.
  2. Найдите нужное поле НоменклатураГруппаФинансовогоУчета.
  3. В строке этого поля найдите колонку «Обязательное» и установите в ней флаг (галочку).

После этого СКД принудительно будет включать данное поле во все генерируемые запросы, вне зависимости от текущих настроек компоновки пользователем.

---

Решение 5. Сброс кэша пользовательских настроек и вариантов отчетов

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

Рекомендуется выполнить комплексную очистку:

  1. Сброс настроек в режиме Предприятия: В окне отчета нажмите кнопку «Еще» -> «Прочее» -> «Установить стандартные настройки».
  2. Очистка кэша конфигурации: Запустите базу данных с параметром командной строки /ClearCache или вручную удалите папки кэша из каталогов %localappdata%\1C\1Cv8 и %appdata%\1C\1Cv8.
  3. Тестирование на новом объекте: Попробуйте скопировать схему компоновки во вновь созданный внешний отчет, задать ему уникальное имя и запустить его. Если в новом отчете поле появится — значит, дело было в кэшировании вариантов отчетов в базе данных.

---

Решение 6. Обновление вспомогательных данных БСП

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

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

Для исправления ситуации воспользуйтесь специальной обработкой БСП:

  1. Найдите во внешних источниках или в составе дистрибутива БСП обработку ИнструментыРазработчикаОбновлениеВспомогательныхДанных.epf.
  2. Запустите ее в режиме «1С:Предприятие» под полными правами.
  3. Выполните обновление вариантов отчетов и метаданных. Это заставит систему перечитать схемы компоновки из метаданных конфигурации и обновить кэш в справочниках БСП.

Применяя данные методы последовательно — от простого приведения типов к конкретному справочнику с помощью ВЫРАЗИТЬ до анализа функциональных опций и сброса кэша настроек, — вы гарантированно решите проблему с отображением поля НоменклатураГруппаФинансовогоУчета в вашем отчете.

← На главную