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