1С создать элемент справочника программно: пошаговый пример
Новый объект создаёт менеджер справочника: Справочники.Контрагенты.СоздатьЭлемент().
До вызова Записать() он существует только в памяти. Заполните обязательные реквизиты,
при необходимости задайте Код, Наименование, Родитель,
Владелец и строки табличной части, затем запишите объект.
Проверяйте бизнес-ключ — например, ИНН — до создания. Иначе повторный запуск интеграции или обработки добавит дубль либо завершится ошибкой уникальности.
Создать элемент справочника 1С 8.3 программно: базовый пример
Метод СоздатьЭлемент() вызывается у менеджера конкретного справочника и возвращает
изменяемый объект. Ссылка появится у объекта после успешной записи:
НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагент.Наименование = "ООО Ромашка";
НовыйКонтрагент.ИНН = "7701234567";
НовыйКонтрагент.Записать();
СсылкаНаКонтрагента = НовыйКонтрагент.Ссылка;
По данным синтакс-помощника, сигнатура метода — СоздатьЭлемент(): параметров у него нет.
Для иерархического справочника группа создаётся другим методом — СоздатьГруппу().
Обязательные реквизиты, код и наименование
Универсального списка обязательных полей нет: его определяют метаданные и обработчики записи конкретной
конфигурации. Обычно требуется Наименование, а прикладная логика может дополнительно проверять
ИНН, вид контрагента, единицу измерения или другие реквизиты.
Элемент = Справочники.Номенклатура.СоздатьЭлемент();
Элемент.Наименование = "Кабель ВВГ 3x2,5";
Элемент.Артикул = "VVG-3-2-5";
Элемент.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.Штука;
// Код обычно присваивается автоматически при записи.
// Задавайте его явно только по правилам конкретной базы.
Элемент.Записать();
Если у справочника включено автонумерование, оставьте Код пустым: платформа назначит его
при записи. Явный код нужен при миграции или синхронизации, но должен соответствовать длине, типу и
уникальности кода в метаданных. Наименование обычно не уникально и не подходит как единственная
защита от дублей.
Проверка дублей до создания элемента
Сначала ищите запись по устойчивому бизнес-ключу, и только при пустом результате создавайте объект. Для контрагента таким ключом часто служит ИНН; если уникальность зависит ещё от КПП или владельца, проверяйте все поля одним запросом. Подробные способы разобраны в статье как найти элемент справочника в 1С.
ИНН = "7701234567";
Ссылка = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ИНН);
Если Ссылка.Пустая() Тогда
Контрагент = Справочники.Контрагенты.СоздатьЭлемент();
Контрагент.ИНН = ИНН;
Контрагент.Наименование = "ООО Ромашка";
Контрагент.Записать();
Ссылка = Контрагент.Ссылка;
КонецЕсли;
Проверка и запись — две отдельные операции. При параллельной загрузке два сеанса могут одновременно не найти запись и создать дубли. Для критичного импорта обеспечьте уникальность ключа средствами конфигурации либо сериализуйте создание в транзакции с подходящей блокировкой.
Иерархия: Родитель и владелец элемента
Для иерархического справочника свойство Родитель принимает ссылку на группу того же справочника.
Для подчинённого справочника свойство Владелец принимает ссылку типа, указанного в метаданных:
Элемент = Справочники.Номенклатура.СоздатьЭлемент();
Элемент.Наименование = "Кабель ВВГ 3x2,5";
Элемент.Родитель = Справочники.Номенклатура.КабельнаяПродукция;
Элемент.Записать();
Договор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
Договор.Владелец = СсылкаНаКонтрагента;
Договор.Наименование = "Основной договор";
Договор.Записать();
Родитель должен быть группой, а не обычным элементом. Владельца задавайте до записи: без него поиск, контроль уникальности и обработчики объекта могут работать в неверном контексте.
Как заполнить табличную часть нового элемента
Строки добавляют через метод Добавить() табличной части до записи объекта. Имена табличной части
и её колонок зависят от конфигурации:
Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
Номенклатура.Наименование = "Набор кабелей";
СтрокаКомплекта = Номенклатура.Комплектующие.Добавить();
СтрокаКомплекта.Номенклатура = СсылкаНаКабель;
СтрокаКомплекта.Количество = 10;
Номенклатура.Записать();
Табличная часть записывается вместе с владельцем-объектом отдельным вызовом не требуется. До добавления строк
проверьте обязательные колонки и типы значений; очистка через Очистить() удалит все подготовленные строки.
Записать объект и обработать результат
Метод Записать() сохраняет новый или изменённый элемент в базе и запускает проверки и события
записи. Он не возвращает ссылку — после успешного вызова берите её из свойства Ссылка объекта.
Элемент = Справочники.Контрагенты.СоздатьЭлемент();
Элемент.Наименование = "ООО Ромашка";
Элемент.ИНН = "7701234567";
Элемент.Записать();
Результат = Элемент.Ссылка;
По данным синтакс-помощника, сигнатура для объекта справочника — Записать(). При ошибке
платформа вызывает исключение, поэтому код после метода выполняется только при успешной записи. Несколько
связанных объектов записывайте в транзакции, если они должны сохраниться как единое целое.
Предопределённые элементы справочника
Предопределённые элементы задаются в конфигураторе и доступны по имени, например
Справочники.ВидыЦен.Розничная. Их не следует повторно создавать через СоздатьЭлемент():
используйте готовую ссылку для заполнения реквизитов других объектов.
ВидЦены = Справочники.ВидыЦен.Розничная;
Если ВидЦены.Пустая() Тогда
ВызватьИсключение "Предопределённый вид цены не найден";
КонецЕсли;
Имя предопределённого элемента стабильно в рамках конфигурации, а код и наименование пользователь может изменить. Не подменяйте обращение по имени поиском по отображаемому наименованию.
Частые ошибки при программном создании элемента справочника
- Забыли вызвать
Записать(). Объект остался в памяти и в базе не появился. - Проверяют дубль после создания. Лишняя запись уже могла попасть в базу; поиск выполняйте раньше.
- Не заполнен обязательный реквизит. Срабатывает проверка заполнения или обработчик
ПередЗаписью. - В
Родительпередан элемент. Для иерархии групп нужен объект с признаком группы. - Неверный тип владельца. Ссылка должна входить в список типов владельцев справочника.
- Код назначен вручную без проверки. Возникает ошибка уникальности или превышения длины.
- Использовано имя реквизита из другой конфигурации. Сверяйте имена с метаданными текущей базы.
- Создаётся копия предопределённого элемента. Обращайтесь к существующему элементу по предопределённому имени.
Частые вопросы о создании элементов справочника в 1С
Когда новый элемент справочника получает ссылку?
Объект можно получить через СоздатьЭлемент сразу, но рабочая ссылка на запись формируется после успешного вызова Записать.
Нужно ли программно задавать код элемента?
Обычно нет: при включённом автонумеровании платформа присвоит код при записи. Задавайте код вручную только по правилам обмена или миграции и проверяйте его уникальность.
Как не создать дубли справочника?
До вызова СоздатьЭлемент найдите запись по устойчивому бизнес-ключу, например ИНН. При параллельной загрузке дополнительно обеспечьте уникальность или сериализацию записи.
ИИ Консоль кода 1С
Лайт
Для ознакомления с возможностями
- Полный набор инструментов без урезаний
- Без ввода карты
Старт
Для индивидуального использования
- До 5 конфигураций
- Встроенный агент запросов 1С
-
≈ 100 задач Подробнее про лимиты
- Техническая поддержка
Продвинутый
Популярный выборДля интенсивного использования или команд
- До 15 конфигураций
- Встроенный агент запросов 1С
-
≈ 300 задач Подробнее про лимиты
-
Свои подписки Codex, Claude и любые OpenAI-совместимые
-
Внешние обработки без Конфигуратора
- Приоритетная техническая поддержка