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