При разработке и доработке конфигураций 1С часто возникает необходимость программно отобрать конкретную организацию. Однако при попытке найти реквизит Код на форме элемента справочника Организации в 1С:ERP разработчики и пользователи сталкиваются с тем, что данного поля просто нет.
Рассмотрим подробно причины отсутствия кода на форме, а также разберем проверенные и методически верные способы обращения к элементам справочника из программного кода без использования поиска по названию.
Выясним причину, почему реквизит Код отсутствует в режиме «1С:Предприятие» и не добавляется через пользовательские настройки формы.
В типовых конфигурациях, таких как 1С:ERP Управление предприятием, 1С:Комплексная автоматизация и 1С:Управление торговлей, длина реквизита Код для справочника Организации на уровне метаданных изначально установлена равной 0. Это означает следующее:
Код в таблице базы данных для организаций не существует.Объект.Код бессмысленно — конфигурация выдаст ошибку отсутствия реквизита.Поиск элемента справочника по наименованию (особенно если оно содержит кавычки или специальное форматирование) считается ненадежным решением. Разберем основные альтернативные способы программного получения ссылки на организацию.
Наиболее правильный с точки зрения архитектуры 1С способ — исключить жесткое кодирование данных в тексте программы. Вместо поиска по коду или строке создается константа или определяемый параметр, в котором пользователь или администратор выбирает нужную организацию.
Проанализируем пример получения ссылки из константы:
НашаОрганизация = Константы.ОсновнаяОрганизация.Получить();
Если ЗначениеЗаполнено(НашаОрганизация) Тогда
// Выполняем необходимые действия с объектом
КонецЕсли;
Если необходимо найти конкретное юридическое лицо программно, надежнее всего ориентироваться на уникальные комбинации реквизитов ИНН и КПП.
Рассмотрим пример поиска организации с помощью языка запросов 1С:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ Первые 1
| Организации.Ссылка КАК Ссылка
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.ИНН = &ИНН
| И Организации.КПП = &КПП";
Запрос.УстановитьПараметр("ИНН", "7700000000");
Запрос.УстановитьПараметр("КПП", "770101001");
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ОрганизацияСсылка = Выборка.Ссылка;
КонецЕсли;
Если требуется жестко зафиксировать конкретную организацию в разовой обработке или отладочном коде, можно использовать ее уникальный идентификатор (GUID).
Получить UUID элемента можно в режиме «1С:Предприятие» несколькими путями:
Посмотрим на пример применения UUID в программном коде:
Идентификатор = Новый УникальныйИдентификатор("e1cib/data/Справочник.Организации?ref=80c100155d03010311e4f3c7d6051234");
// Или непосредственно строка GUID:
Идентификатор = Новый УникальныйИдентификатор("a3b2c1d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d");
ОрганизацияСсылка = Справочники.Организации.ПолучитьСсылку(Идентификатор);
Таким образом, отсутствие кода у организаций в 1С:ERP является штатным поведением системы, а использование ИНН/КПП, констант или UUID позволяет эффективно решать задачи отбора объектов без поиска по нестабильным строковым наименованиям.