При разработке новых объектов в конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), таких как 1С:Бухгалтерия государственного учреждения (БГУ), программисты часто сталкиваются с тем, что стандартные реквизиты, такие как Организация, не заполняются автоматически. Даже если скопировать вызовы процедур из типовых документов, результат может быть отрицательным. Рассмотрим подробнее, почему это происходит и как правильно интегрировать новый документ в общую экосистему конфигурации.
В первом сообщении темы мы видим, что разработчик добавил в форму документа вызовы процедур ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтаФорма) и ОбщегоНазначенияБГУ.ПриСозданииНаСервере(ЭтотОбъект, Объект). Однако эти процедуры отвечают за интерфейсные настройки, программное изменение доступности полей или подключение механизмов версионирования. Они не предназначены для инициализации данных самого объекта при его создании.
Выясним причину, по которой простое копирование кода формы не дает результата. В современных конфигурациях 1С логика разделена: форма отвечает за отображение, а данные должны инициализироваться в модуле объекта. Если вы создаете документ программно или через механизм «Создать на основании», код формы вообще не сработает.
Разберем по шагам основной механизм инициализации реквизитов. Вместо того чтобы пытаться «поймать» момент создания документа в коде формы, необходимо использовать предопределенную процедуру ОбработкаЗаполнения в модуле объекта. Именно здесь система 1С ожидает увидеть логику первоначальной установки значений.
Проанализируем пример правильного заполнения организации через стандартные механизмы БГУ:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
// Если это новый документ и он не заполняется на основании другого объекта
Если ДанныеЗаполнения = Неопределено Тогда
// Используем механизмы БГУ для заполнения реквизитов по умолчанию
ЗаполнениеОбъектовБГУ.Заполнить(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
В этом коде вызов ЗаполнениеОбъектовБГУ.Заполнить(ЭтотОбъект) инициирует обращение к подсистеме настроек пользователя, которая автоматически подставит основное учреждение (организацию), ответственное лицо и другие параметры, заданные в персональных настройках.
Это один из самых «скрытых» нюансов. Многие универсальные процедуры БСП и БГУ работают только с теми объектами, которые включены в определенные списки метаданных — Определяемые типы. Если вашего нового документа нет в нужном типе, то процедура ОбщегоНазначенияБГУ.ПриСозданииНаСервере или аналогичные просто проигнорируют его, так как объект «не знаком» системе.
Рассмотрим, какие именно типы стоит проверить в дереве метаданных:
Организация. Ваш документ должен быть в списке типов для тех реквизитов, которые связаны с организацией.Без включения документа в эти типы, стандартный код внутри общего модуля увидит, что тип ссылки документа не совпадает с ожидаемым, и выполнение алгоритма будет прервано без ошибок, но и без результата.
Посмотрим на ситуацию со стороны платформы. В сообщении 4 автор упоминает свойство «Заполнять из данных заполнения». Это свойство полезно, когда документ создается из формы списка, где установлен отбор по организации. Однако для автоматической подстановки «просто так» этого недостаточно.
Важно проверить следующие моменты:
Организация связан с этой функциональной опцией. Если опция выключена, система может скрывать или игнорировать реквизит.В БГУ 2.0 значение основной организации хранится в регистре сведений «Настройки пользователя». Выясним, почему у одного документа подставляется значение, а у другого — нет. Система ищет настройку по ключу, который часто привязан к метаданным объекта. Если ваш документ абсолютно новый, для него может просто не существовать «истории выбора».
Рассмотрим алгоритм действий для проверки:
Если в коде используется устаревшая конструкция типа Справочники.Организации.ОрганизацияПоУмолчанию, она может вернуть пустую ссылку, если в справочнике более одной записи. В современных версиях 1С следует использовать ПараметрыСеанса.ТекущееУчреждение (в БГУ) или методы БСП для получения настроек.
В сообщении 8 автор отмечает странный факт: при копировании старого документа всё работает. Проанализируем эту ситуацию. Когда вы копируете существующий объект метаданных в конфигураторе:
Вывод: Если новый документ «не хочет» работать, а копия старого работает — значит, вы пропустили регистрацию документа в одном из системных списков (Определяемые типы или Подсистемы), на которые завязаны общие модули ОбщегоНазначенияБГУ.
Для того чтобы в вашем новом документе гарантированно заполнялась организация, выполните следующие шаги:
Процедура ОбработкаЗаполнения модуля объекта.ЗаполнениеОбъектовБГУ.Заполнить(ЭтотОбъект).Организация на форме, стоит ли галочка «Автоотметка незаполненного» и корректно ли настроены «Параметры выбора».Организация (или аналогичный в вашей версии конфигурации), чтобы универсальный код БГУ понимал, что с этим документом нужно работать.Соблюдение этих правил обеспечит корректную работу документа в рамках типовых механизмов 1С и избавит от необходимости писать «костыли» в коде каждой отдельной формы.