Программное получение объекта, имени и формы документа в 1С 8.3
Разбираем, как получить объект, имя и форму документа в 1С 8.3. Используйте методы ПолучитьОбъект(), Метаданные().Имя и ПолучитьФорму(). Ниже приведен точный синтаксис для каждого действия.
Оглавление
Получение объекта документа
Использование метода ПолучитьОбъект() внутри циклов (например, при переборе списка из 100+ документов) категорически запрещено. Это приводит к многократным обращениям к СУБД и блокировке интерфейса. Для пакетной обработки данных необходимо использовать язык запросов 1С.
Чтобы загрузить данные документа из базы в оперативную память, используйте метод ПолучитьОбъект() у ссылки:
СсылкаНаДокумент.ПолучитьОбъект()
Для получения нового или существующего объекта по имени метаданных применяются методы менеджера:
Документы.ИмяДокумента.ПолучитьОбъект()
Документы.ИмяДокумента.СоздатьДокумент()
Метод ПолучитьОбъект() загружает все данные документа в память. Если вам нужно только узнать имя метаданных или открыть форму, в управляемых формах это можно сделать напрямую через ссылку: Ссылка.Метаданные().Имя и Ссылка.ПолучитьФорму("ИмяФормы"). Это сэкономит ресурсы системы.
Получение имени и представления
Для получения программного названия (имени) документа используется свойство Метаданные:
Объект.Метаданные().Имя
Метод возвращает строку, например, "РеализацияТоваровУслуг".
Для получения пользовательского названия (синонима) применяется метод Представление:
Объект.Метаданные().Представление()
Метод возвращает строку, например, "Реализация (акт, накладная)".
Открытие формы документа
Получить форму можно напрямую через объект или через глобальный контекст:
// Через объект
Объект.ПолучитьФорму("ИмяФормы")
// Через глобальный контекст
ПолучитьФорму("Документ.ИмяДокумента.ФормаДокумента", Объект)
Для вывода формы на экран используется метод Открыть():
ПолученнаяФорма.Открыть();
У документа может быть несколько форм (ФормаДокумента, ФормаСписка, ФормаВыбора). Имя основной формы обычно совпадает с именем метаданных, но лучше проверять его в дереве метаданных в Конфигураторе.
Обычный пользователь не может ввести этот код в стандартном интерфейсе. Чтобы это сделать, пользователю необходимо либо включить функциональную опцию «Разработчик» в настройках интерфейса, либо использовать специальную «Внешнюю обработку» с программным модулем.
Частые ошибки
- Загрузка объекта в цикле. Вызов
ПолучитьОбъект()для каждого элемента в цикле приводит к потере производительности и зависанию клиента. Используйте запросы для пакетной работы с данными. - Путаница между Ссылкой и Объектом. Разработчики часто загружают объект в память (
ПолучитьОбъект()) только для того, чтобы прочитать его имя или открыть форму. В управляемых формах эти действия выполняются напрямую через ссылку без загрузки данных в память.
FAQ
Как получить форму, если есть только ссылка, а не объект?
В управляемых формах это можно сделать напрямую через ссылку: Ссылка.ПолучитьФорму("ИмяФормы"). Загружать объект в память методом ПолучитьОбъект() не нужно.
Почему обычный пользователь не может выполнить этот код? Эти методы требуют доступа к инструментам разработки. Пользователю нужно включить опцию «Разработчик» в настройках интерфейса или использовать внешнюю обработку с программным модулем.