1с установитьссылкунового как использовать
Перейти к содержимому

1с установитьссылкунового как использовать

  • автор:

1с установитьссылкунового как использовать

Что означает ПолучитьСсылкуНового и УстановитьСсылкуНового
я понял что они работают только для нового справочника
в СП посмотрел так и не понял что они означают

Для начала надо разобраться с тем что же такое «Ссылка».

(0) Зачем это тебе? Ты собрался это где-то применять и думаешь, что эти методы тебе помогут? Или просто читаешь СП перед сном?

(0) если до записи нового объекта вызвать УстановитьСсылкуНОвого(новый уникальныйИдентификатор), то поле Ссылка до записи будет возвращать не пустую ссылку. Если этого всего не сделать, то до записи Ссылка содержит 000-000-000000.

(2) я сейчас занимаюсь самообразованием вот хочу узнать что означает каждый метод

используется тогда, когда вместе с объектом надо записать какие-то сведения и хочется все это в одной транзакции сделать.
Например — при создании номенклатуры одновременно записать и цену ее. Тогда:
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
//заполнить новый элемент
НовыйЭлемент.УстановитьСсылкуНового(Новый УникальныйИдентификатор);
Запись = РегистрыСведений.ЦеныНоменклатуры.СоздатьМенеджерЗаписи();
Запись.Номенклатура = НовыйЭлемент.ПолучитьСсылкуНового(); // вот сюда внимательно потому. Что в предыдущем посте я тебя наиграл

Или еще — когда ты загружаешь объекты из другой системы и тебе для синхронизации надо сохранить ГУИД объектов из другой системы. Тогда ты делаешь так:
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.УстановитьСсылкуНового(ГУИДИзДругойСистемы);
НовыйЭлемент.Записать();

(4) открывай глаза до щелчка, когда СП читаешь. Должно помочь

НовыйЭлемент.УстановитьСсылкуНового(Новый УникальныйИдентификатор); здесь возникает ошибка потому что должна быть ссылка

СсылкаНового = СправочникОбъект.ПолучитьСсылкуНового();
Если СсылкаНового.Пустая() Тогда
СсылкаНового = Справочники[СправочникОбъект.Метаданные().Имя].ПолучитьСсылку();
СправочникОбъект.УстановитьСсылкуНового(СсылкаНового);
КонецЕсли;

вот так еще понятнее

Если СправочникОбъект.ЭтоНовый() Тогда
СсылкаНового = СправочникОбъект.ПолучитьСсылкуНового();
Если СсылкаНового.Пустая() Тогда
СсылкаНового = Справочники[СправочникОбъект.Метаданные().Имя].ПолучитьСсылку();
СправочникОбъект.УстановитьСсылкуНового(СсылкаНового);
КонецЕсли;
СправочникОбъект[ИмяРеквизита] = Строка(СсылкаНового.УникальныйИдентификатор());
КонецЕсли;

1с установитьссылкунового как использовать

Ключевые слова: Запись, Справочник, ЭтоНовый, Новый, УстановитьСсылкуНового, ПолучитьСсылкуНового

Допустим, у нас есть переменная Контрагент типа СправочникОбъект.Контрагенты.
И нам необходимо обратиться к ссылке на этого контрагента с учетом того, что это может быть новый объект, и ссылка в таком случае будет пустой. В такой ситуации можно использовать следующий код:

Если Контрагент.ЭтоНовый() Тогда // Получаем возможно уже установленную ранее ссылку нового СсылкаНаОбъект = Контрагент.ПолучитьСсылкуНового(); Если НЕ ЗначениеЗаполнено(СсылкаНаОбъект) Тогда // Если ссылка нового пустая, то запрашиваем ее у менеджера и устанавливаем СсылкаНаОбъект = Справочники.Контрагенты.ПолучитьСсылку(); Контрагент.УстановитьСсылкуНового(СсылкаНаОбъект); КонецЕсли; Иначе СсылкаНаОбъект = Контрагент.Ссылка; КонецЕсли;

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

Анна Викулина

Поиск и устранение блокировок. Тонкая настройка СУБД под 1С. Перевод на PostgreSQL. Выбор сервера.

от 15 000 руб.

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

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

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

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

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

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

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

Распечатать

Установить ссылку нового это специальный механизм программиста, который позволяет присваивать новому объекту нужную ссылку. В основном это задача обмена, во многих типовых обменах используется синхронизация по 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

Разместил: E_Migachev Версии: | 8.x | Дата: 19.04.2011 Прочитано: 58765

Распечатать

Возможно, вас также заинтересует

Похожие FAQ

Автоматизация обмена данных используя обработку «Универсальный обмен данными в формате XML&quot 10
Автоматизация обмена между базами используя обработку » Универсальный обмен данными в формате XML» В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки » Универсальный обме Автоматическая выгрузка загрузка данных используя регламентное задание 16
Для обмена данными между программами необходимо сделать следующее: 1. При помощи Конвертации Данных создать правила выгрузки данных 2. Нужно чтобы в конфигурации была обработка УниверсальныйОбменДаннымиXML , желательно последней версии! (При помо Альтернативный перенос остатков между 7.7 и 8.1 (обработкой с ИТС ЗагрузкаДанныхИзТаблДокум) 2
Нашел альтернативный, практически моментальный способ переноса остатков между семерой и восьмерой (так и между восмерками). Не требуется никаких дополнительных усилий, программирования, писания обработок и т.д. и т.п. На ИТС есть обработка под наз Битая ссылка, , Уникальный Идентификатор, GUID 74
Когда кто-то удаляет данные из базы без проверки ссылок на эти объекты, то везде где этот объект использовался появляется сообщение вида: Объект не найден (84:bf5600145e3710ab11dda4c605dbe824) . https://helpf.pro/uploads/img/_1-46z7I4U7Ww.png В Быстрая загрузка данных большого размера файла Excel в многомерный Массив 0
// OldthiefXXX Перем СерверExcel; Процедура КнопкаВыполнитьНажатие(Кнопка) ФайлХЛС=СерверExcel.Application.Workbooks.Open(ДокументХЛС); КонечнаяСтрокаДанных=ФайлХЛС.ActiveSheet.UsedRange.Rows.Count; КоличествоКолонокДанных=ФайлХЛС.ActiveSheet Посмотреть все результаты поиска похожих

Еще в этой же категории

Полнотекстовый поиск в 1С (что это и пример использования) 27
Полнотекстовый поиск — позволит найти текстовую информацию, размещенную практически в любом месте используемой конфигурации. При этом искать нужные данные можно либо по всей конфигурации в целом, либо сузив область поиска до нескольких объектов Формат, функция форматирования значений 21
//Функция формирует удобное для чтения представление значений. // Примеры форматирования чисел ЗначФормат = Формат(123456.789, » ЧЦ=10; ЧДЦ=2″ ); // ЗначФормат = » 123 456,79″ ЗначФормат = Формат(123456.789, » ЧГ=0; ЧДЦ=2″ ); // Знач Обработчики событий при записи объектов. Зачем и что за чем? 19
Программисту, имеющего немного опыта на платформе 1С 8.2, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта, а-а-а-а-аааа. Именно такое сложное чувство непонимания МоментВремени, получение остатков до и после проведения 12
» Момент времени» — виртуальное поле, не хранится в базе данных. Содержит объект МоментВремени (который включает в себя дату и ССЫЛКУ НА ДОКУМЕНТ) В 7.7 было понятие ПозицияДокумента, а в 8.x Момент времени Для получения Остатков, Движений: М Как получить уникальный идентификатор объекта, GUID? 10
GUID (Globally Unique Identifier) — статистически уникальный 128-битный идентификатор. Его главная особенность — уникальность, которая позволяет создавать расширяемые сервисы и приложения без опасения конфликтов, вызванных совпадением идентификатор Посмотреть все в категории Встроенные Функции

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *