Как настроить регистр бухгалтерии в расширении 1С, чтобы конструктор запросов видел счет и субконто?

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

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

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

Настройка метаданных в расширении: пошаговое решение

Чтобы конструктор запросов в расширении корректно отображал все поля регистра бухгалтерии, платформе необходимо "понимать" всю цепочку связей метаданных. Недостаточно просто добавить сам регистр — нужно перенести и правильно настроить связанные с ним объекты. Выполним следующие шаги:

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

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

Важность свойства "Корреспонденция"

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

Если при добавлении в расширение галочка "Корреспонденция" случайно слетит или вы забудете ее установить, регистр переключится в режим работы с одним измерением Счет и стандартным реквизитом ВидДвижения (Дебет/Кредит). Из-за этого архитектурного изменения все ваши старые запросы, обращающиеся к СчетДт или СчетКт, перестанут проходить синтаксический контроль и будут выдавать ошибки.

Альтернативный метод: Лайфхак с внешними обработками

Даже если вы правильно заимствовали План Счетов и План Видов Характеристик, конструктор запросов в расширении может всё ещё не видеть субконто. Выясним причину: расширение "не знает" о типах данных, которые выступают в качестве значений этих субконто. Например, если субконто имеет тип справочника Контрагенты или ДоговорыКонтрагентов, то без добавления этих справочников в расширение конструктор не сможет с ними работать.

Чтобы не "раздувать" расширение и не заимствовать в него десятки справочников и документов только ради работы конструктора, разработчики используют проверенный обходной путь:

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

Посмотрим на пример того, как может выглядеть такой запрос:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |    ХозрасчетныйОстатки.Счет КАК Счет,
    |    ХозрасчетныйОстатки.Субконто1 КАК Контрагент,
    |    ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &СчетОтбора, , ) КАК ХозрасчетныйОстатки";

Запрос.УстановитьПараметр("Период", ТекущаяДата());
Запрос.УстановитьПараметр("СчетОтбора", ПланыСчетов.Хозрасчетный.РасчетыСПоставщиками);

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

Дополнительные проверки при нестабильной работе расширения

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

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

2. Влияние обновлений основной конфигурации. Расширения жестко привязаны к структуре метаданных. Если всё работало, а после обновления 1С реквизиты пропали или появились ошибки, проанализируем изменения. Если в оригинальном Плане счетов изменилось максимальное количество субконто (например, разработчики 1С увеличили его с 2 на 3) или поменялись типы в ПВХ, расширение начнет конфликтовать. При запуске программы на это укажет системное предупреждение (значок колокольчика с ошибками применения расширения). В этом случае потребуется удалить заимствованные объекты из расширения и добавить их заново с обновленными свойствами.

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

← На главную