При разработке расширений для 1С:Предприятие 8.3 программисты часто сталкиваются с ситуацией, когда при написании запроса к виртуальным таблицам регистра бухгалтерии (например, Остатки или ОстаткиИОбороты), платформа «не видит» стандартные реквизиты Субконто1, Субконто2 и так далее. В основной конфигурации запрос работает идеально, а в расширении конструктор запроса выдает ошибку, либо поля просто отсутствуют в списке доступных.
Рассмотрим подробно, почему это происходит и как правильно настроить метаданные в расширении, чтобы работа с аналитикой бухгалтерского учета стала возможной.
Выясним причину такого поведения платформы. Когда мы добавляем объект метаданных в расширение (например, РегистрБухгалтерии.Хозрасчетный), расширение получает лишь «оболочку» этого объекта. Многие критически важные связи между объектами не переносятся автоматически. Для формирования полей субконто в виртуальных таблицах системе необходимо знать структуру плана счетов, связь регистра с этим планом и максимально допустимое количество субконто. Если эти связи в расширении разорваны или не настроены, платформа считает, что субконто у регистра просто нет.
Разберем по шагам правильный алгоритм настройки расширения для работы с бухгалтерскими остатками.
Прежде всего, убедимся, что в состав расширения включены все базовые компоненты бухгалтерского учета. Недостаточно добавить только регистр, нам нужен весь комплекс метаданных:
Хозрасчетный).Хозрасчетный).ВидыСубконтоХозрасчетные).Номенклатура, Контрагенты).Это один из самых важных моментов, который часто упускают. После добавления регистра бухгалтерии в расширение, его свойство ПланСчетов может оказаться пустым, даже если в основной конфигурации оно заполнено.
Проанализируем ситуацию: откройте палитру свойств регистра бухгалтерии в расширении. Найдите поле План счетов. Если оно не заполнено, выберите соответствующий план счетов из списка объектов расширения. Без этой явной привязки регистр внутри расширения «не знает», какую структуру аналитики ему использовать.
Даже если план счетов добавлен в расширение, проверьте его свойства. В палитре свойств ПланаСчетов обратите внимание на параметр Максимальное количество субконто. Часто при добавлении объекта в расширение это значение сбрасывается в 0.
Установите в этом поле число, соответствующее настройкам в основной конфигурации (обычно это 3). Пока это значение равно нулю, платформа не будет генерировать поля СубконтоN в виртуальных таблицах запроса.
Посмотрим на ПланВидовХарактеристик.ВидыСубконтоХозрасчетные. В расширении у этого объекта есть свойство Тип значения характеристик.
Если вы хотите в запросе обращаться к реквизитам субконто через точку (например, Субконто1.Артикул), вам необходимо зайти в настройку типов этого свойства в расширении и проставить галочки напротив тех справочников, которые вы планируете использовать. Если тип справочника Номенклатура не будет отмечен в ПВХ внутри расширения, система будет считать Субконто1 типом ЛюбаяСсылка, и вы не увидите его специфических реквизитов.
В некоторых случаях (особенно на старых релизах платформы 8.3.10–8.3.12) даже после выполнения всех настроек выше, поля субконто могут не появиться. Практика показывает, что добавление в расширение стандартной формы списка регистра бухгалтерии форсирует обновление внутренних кэшей метаданных расширения.
Попробуйте добавить форму списка регистра Хозрасчетный в расширение. Часто именно после этого действия поля Субконто1, Субконто2 внезапно становятся доступными в конструкторе запросов.
Рассмотрим пример запроса, который мы хотим реализовать в расширении для получения остатков номенклатуры. После выполнения всех настроек, код будет выглядеть следующим образом:
ВЫБРАТЬ
СправочникНоменклатура.Ссылка КАК Номенклатура,
Остатки10.КоличествоОстатокДт КАК Кол10
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
&НачалоПериода,
Счет В ИЕРАРХИИ (&СчетаМатериальныхАктивов),
,
) КАК Остатки10
ПО Остатки10.Субконто1 = СправочникНоменклатура.Ссылка
Важный нюанс: Если конструктор запроса все равно ругается, попробуйте просто сохранить текст запроса и запустить программу в режиме «Предприятие». Часто бывает так, что конструктор в конфигураторе отображает ошибку из-за особенностей кэширования, но сам программный код при выполнении отрабатывает корректно, так как среда исполнения (Runtime) видит метаданные более полно.
Подведем итог и составим список действий для быстрой проверки, если субконто все еще не видно:
Проанализировав ситуацию и последовательно выполнив эти шаги, мы добьемся того, что расширение начнет полноценно работать с бухгалтерской аналитикой, не требуя внесения изменений в основную типовую конфигурацию.