УстановитьСсылкуНового в 1С 8.3
Меню

УстановитьСсылкуНового в 1С 8.3

В платформе 1С изначально заложены достаточные возможности для работы с объектами конфигурации, но зачастую из-за отсутствия необходимых знаний программисты пишут неоптимальный код и замедляют работу программы, например, когда есть необходимость получить ссылку на объект до его записи. Оптимальным подходом к решению проблемы является использование метода «УстановитьСсылкуНового()».

Применение метода в 1С 8.3

Одна из самых распространенных подобных задач – программное создание элементов справочников, имеющих ссылки друг на друга. К примеру, создание контрагентов и их представителей. Чаще всего неопытные программисты сначала записывают элементы справочника, потом размещают ссылки в нужных реквизитах и снова производят запись. При наличии сложных алгоритмов проверок при сохранении элементов справочника эта процедура займет достаточно времени и ресурсов.

В таких ситуациях не нужно возмущаться, что импорт данных быстро не работает. Но в платформе 1С есть возможность оптимизировать подобные места и избавиться от двойной записи элементов. Для этого нужно внести правки и добавить в несложный алгоритм использование метода «УстановитьСсылкуНового()»:

  1. Создаем контрагента;

    
             НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
             НовыйКонтрагент.Наименование = "ОАО БАЛТИКА НЕВА";
    

  2. Устанавливаем ему ссылку с помощью уникального идентификатора (как бы резервируем его для нового элемента);

    
             НовыйКонтрагентСсылка = Справочники.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор);
             НовыйКонтрагент.УстановитьСсылкуНового(НовыйКонтрагентСсылка);
    

  3. Записываем элемент в справочнике «Представители», устанавливая зарезервированную ссылку в нужный реквизит;

    
             НовыйПредставитель = Справочники.Представители.СоздатьЭлемент();	
             НовыйПредставитель.ОбменДанными.Загрузка = Истина;
             НовыйПредставитель.Наименование = "Сергей";
             НовыйПредставитель.Компания = НовыйКонтрагентСсылка;
             НовыйПредставитель.Записать();
    

  4. Заполняем реквизит только что созданным представителем и записываем контрагента в базу.

    
             НовыйКонтрагент.Представитель = НовыйПредставитель.Ссылка;
             НовыйКонтрагент.Записать();
    

Данный метод не применяется в ежедневной работе, поэтому нет ничего странного в том, что многие о нем и не знают. Но в некоторых случаях он может серьезно помочь серверу избежать лишней нагрузки. Это главный повод помнить об этой и множестве других, не слишком часто используемых, возможностях платформы 1С 8.3.

Рассказать друзьям
Предыдущая статья статья
Отражение НДС к вычету в 1С 8.3
Следующая статья статья
1С:Управление торговлей 8 версия 11.5: обзор возможностей
Комментарии