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