Почему не заполняется организация по умолчанию в новых документах 1С:БГУ и как это исправить

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

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

Анализ проблемы: почему стандартные процедуры в форме не помогают

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

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

Решение 1: Использование обработчика ОбработкаЗаполнения в модуле объекта

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

Проанализируем пример правильного заполнения организации через стандартные механизмы БГУ:


Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
    
    // Если это новый документ и он не заполняется на основании другого объекта
    Если ДанныеЗаполнения = Неопределено Тогда
        // Используем механизмы БГУ для заполнения реквизитов по умолчанию
        ЗаполнениеОбъектовБГУ.Заполнить(ЭтотОбъект);
    КонецЕсли;
    
КонецПроцедуры

В этом коде вызов ЗаполнениеОбъектовБГУ.Заполнить(ЭтотОбъект) инициирует обращение к подсистеме настроек пользователя, которая автоматически подставит основное учреждение (организацию), ответственное лицо и другие параметры, заданные в персональных настройках.

Решение 2: Проверка определяемых типов (Метаданные)

Это один из самых «скрытых» нюансов. Многие универсальные процедуры БСП и БГУ работают только с теми объектами, которые включены в определенные списки метаданных — Определяемые типы. Если вашего нового документа нет в нужном типе, то процедура ОбщегоНазначенияБГУ.ПриСозданииНаСервере или аналогичные просто проигнорируют его, так как объект «не знаком» системе.

Рассмотрим, какие именно типы стоит проверить в дереве метаданных:

  1. Организация: Проверьте определяемый тип Организация. Ваш документ должен быть в списке типов для тех реквизитов, которые связаны с организацией.
  2. ВладелецНастроек: Если документ должен использовать персональные настройки пользователя, он должен входить в соответствующие определяемые типы подсистемы настроек.
  3. ОбъектыСНастраиваемымПорядкомЗаполнения: В некоторых версиях БГУ это критично для корректной работы процедур заполнения.

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

Решение 3: Настройка функциональных опций и свойств реквизита

Посмотрим на ситуацию со стороны платформы. В сообщении 4 автор упоминает свойство «Заполнять из данных заполнения». Это свойство полезно, когда документ создается из формы списка, где установлен отбор по организации. Однако для автоматической подстановки «просто так» этого недостаточно.

Важно проверить следующие моменты:

Решение 4: Персональные настройки пользователя

В БГУ 2.0 значение основной организации хранится в регистре сведений «Настройки пользователя». Выясним, почему у одного документа подставляется значение, а у другого — нет. Система ищет настройку по ключу, который часто привязан к метаданным объекта. Если ваш документ абсолютно новый, для него может просто не существовать «истории выбора».

Рассмотрим алгоритм действий для проверки:

  1. Зайдите в раздел «Администрирование» — «Настройки пользователей и прав».
  2. Найдите «Персональные настройки» текущего пользователя.
  3. Убедитесь, что там выбрано «Основное учреждение».

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

Почему копирование старого документа решает проблему?

В сообщении 8 автор отмечает странный факт: при копировании старого документа всё работает. Проанализируем эту ситуацию. Когда вы копируете существующий объект метаданных в конфигураторе:

  1. Копируются все функциональные опции, к которым привязан оригинал.
  2. Копируется состав определяемых типов (если вы копировали объект целиком, а не создавали новый с нуля).
  3. Сохраняются настройки состава подсистем.

Вывод: Если новый документ «не хочет» работать, а копия старого работает — значит, вы пропустили регистрацию документа в одном из системных списков (Определяемые типы или Подсистемы), на которые завязаны общие модули ОбщегоНазначенияБГУ.

Итоговые рекомендации

Для того чтобы в вашем новом документе гарантированно заполнялась организация, выполните следующие шаги:

  1. Перенесите логику заполнения в Процедура ОбработкаЗаполнения модуля объекта.
  2. Используйте типовой метод ЗаполнениеОбъектовБГУ.Заполнить(ЭтотОбъект).
  3. Проверьте в свойствах реквизита Организация на форме, стоит ли галочка «Автоотметка незаполненного» и корректно ли настроены «Параметры выбора».
  4. Обязательно добавьте ваш документ в определяемый тип Организация (или аналогичный в вашей версии конфигурации), чтобы универсальный код БГУ понимал, что с этим документом нужно работать.

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

← На главную