helpf.pro
Регистрация
 +13 
Распечатать

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

Установить ссылку нового это специальный механизм программиста, который позволяет присваивать новому объекту нужную ссылку. В основном это задача обмена, во многих типовых обменах используется синхронизация по UID объекта.
Рассмотрим этот метод на конкретной задаче: «Если в базе в справочнике «номенклатуры» нет объекта с UID = «1014270d-d794-11df-825c-001517542b79», то необходимо его создать с таким же UIDом и присвоить название – «Служебная номенклатура» »
Код 1C v 8.х
 // получаем новый UID объекта
Новый_UID = Новый УникальныйИдентификатор(«1014270d-d794-11df-825c-001517542b79»);
// пытаемся получить объект по UID
НоваяСсылка = Справочники.Номенклатура.ПолучитьСсылку(Новый _UID);
// пытаемся получить объект
НашаНоменклатура = НоваяСсылка.ПолучитьОбъект();
// проверяем есть ли объект
Если НашаНоменклатура = неопределено Тогда
// создаем новый элемент
НашаНоменклатура = Справочники. Номенклатура.СоздатьЭлемент();
// для нового объекта – еще не записанного мы можем присвоить UID
НашаНоменклатура.УстановитьСсылкуНового(НоваяСсылка);
// говорим программе что это загрузка объекта
НашаНоменклатура.ОбменДанными.Загрузка = Истина;
// присваем наименование
НашаНоменклатура.Наименование = «Служебная номенклатура»;
//записываем
НашаНоменклатура.Записать();
КонецЕсли;

Подробнее остановимся на строке
Код 1C v 8.х
 НашаНоменклатура.ОбменДанными.Загрузка = Истина;   

В типовых конфигурациях обычно все служебные программные кода в модулях объектов перед записью заключены в условие «не ОбменДанными.Загрузка». Т.е. если Это загрузка то эти программные кода не выполняются. Если процедура присвоения UIDа не работает, то возможно вам нужно еще выполнить глобальный поиск, чтобы найти сторонние программные строки «УстановитьСсылкуНового» – «камни преткновения»
Источник


Битая ссылка, <Объект не найден>, Уникальный Идентификатор, GUID
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 64271
 +13 
Распечатать
Возможно, вас также заинтересует
Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" 11
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки " Универсальный обме
Автоматическая выгрузка загрузка данных используя регламентное задание 18
Для обмена данными между программами необходимо сделать следующее: 1. При помощи Конвертации Данных создать правила выгрузки данных 2. Нужно чтобы в конфигурации была обработка УниверсальныйОбменДаннымиXML , желательно последней версии! (При помо
Альтернативный перенос остатков между 7.7 и 8.1 (обработкой с ИТС ЗагрузкаДанныхИзТаблДокум) 2
Нашел альтернативный, практически моментальный способ переноса остатков между семерой и восьмерой (так и между восмерками). Не требуется никаких дополнительных усилий, программирования, писания обработок и т.д. и т.п. На ИТС есть обработка под наз
Битая ссылка, <Объект не найден>, Уникальный Идентификатор, GUID 76
Когда кто-то удаляет данные из базы без проверки ссылок на эти объекты, то везде где этот объект использовался появляется сообщение вида: Объект не найден (84:bf5600145e3710ab11dda4c605dbe824) . https://helpf.pro/uploads/img/_1-46z7I4U7Ww.png В
Быстрая загрузка данных большого размера файла Excel в многомерный Массив 0
// OldthiefXXX Перем СерверExcel; Процедура КнопкаВыполнитьНажатие(Кнопка) ФайлХЛС=СерверExcel.Application.Workbooks.Open(ДокументХЛС); КонечнаяСтрокаДанных=ФайлХЛС.ActiveSheet.UsedRange.Rows.Count; КоличествоКолонокДанных=ФайлХЛС.ActiveSheet
Посмотреть все результаты поиска похожих
Комментарии
Racurs
13.10.2024 11:29Комментарий: 2
Racurs

НЕ работает

// получаем новый UID объектаНовый_UID  = Новый УникальныйИдентификатор(«1014270d-d794-11df-825c-001517542b79»);// пытаемся получить объект по UIDНоваяСсылка = Справочники.Номенклатура.ПолучитьСсылку(Новый _UID); // !!! Если такого объект в базе нет, то здесь уже будет <объект не найден>// пытаемся получить объектНашаНоменклатура = НоваяСсылка.ПолучитьОбъект(); // !!! ЗАЧЕМ?...// для нового объекта – еще не записанного мы можем присвоить UIDНашаНоменклатура.УстановитьСсылкуНового(НоваяСсылка); // !!! присваивать новому объекту несуществующую ссылку - бессмысленно. Если ссылка не существует, то программа итак присвоит ему новый GUID и никого не спросит[/pre]

Пока не нашел как работает

ab
03.11.2017 15:30Комментарий: 1
ab

Если нужно назначить ссылку нового в процедуре ПередЗаписью рекомендую вот такой код:

Код 1C v 8.х
 Если ЭтоНовый() Тогда     	СсылкаНового = ПолучитьСсылкуНового();     	Если ЗначениеНеЗаполнено(СсылкаНового) Тогда	    СсылкаНового = Справочники.Номенклатура.ПолучитьСсылку();            УстановитьСсылкуНового(СсылкаНового);        КонецЕсли;      КонецЕсли;   
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.