Имя: Пароль:
1C
 
Не работает УстановитьСсылкуНового
, ,
0 cmex
 
28.12.17
11:41
Доброго дня!
Не работает УстановитьСсылкуНового, что я делаю не так? Подскажите, кто чем может.


Процедура ПриКопировании(ОбъектКопирования)

    Статус                  = Перечисления.СтатусыСоглашенийСПоставщиками.НеСогласовано;
    Согласован              = Ложь;
    ДатаНачалаДействия      = '00010101';
    ДатаОкончанияДействия   = '00010101';

    ИнициализироватьСправочник(Ложь);
    
    УстановитьСсылкуНового(Справочники.СоглашенияСПоставщиками.ПолучитьСсылку(Новый УникальныйИдентификатор));    
    НоваяЗапись = РегистрыСведений.ДополнительныеСведения.СоздатьМенеджерЗаписи();
    НоваяЗапись.Объект = ПолучитьСсылкуНового();
    НоваяЗапись.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ПредыдущееСоглашение");
    НоваяЗапись.Значение = ОбъектКопирования.Ссылка.УНикальныйИдентификатор();
    НоваяЗапись.Записать();
    
КонецПроцедуры
1 cmex
 
28.12.17
11:44
После записи объекта ссылка отличается от ранее мной установленной
2 Рэйв
 
28.12.17
11:49
а зачем ты ее устанавливаешь?
Ладно если бы какой то определенный уид ставил. А так - УИД все рвно сгенерится новый при записи.
3 Рэйв
 
28.12.17
11:51
и в РС надо писать ПриЗаписи. а то неизвестно что будет с объектом и будет ли он в итоге записан,
4 Рэйв
 
28.12.17
11:52
имеешь не нулевые шансы заполучить записи с <Объект не найден>
5 cmex
 
28.12.17
11:56
(4) При записи на форме, я спрашиваю пользователя, надо ли сохранять ссылку на соглашение и в случае отказа удаляю запись из РС
6 cmex
 
28.12.17
11:57
(2) мне надо сделать сейчас и обновить динамически, без монопольного доступа, поэтому Реквизит не могу создать, а ссылку на копируемый объект мне надо сохранить для решения поставленной задачи
7 cmex
 
28.12.17
11:58
(2) я и без УИДа пробовал, не работает
8 Гипервизор
 
28.12.17
12:06
лСсылкаНового = Справочники.СоглашенияСПоставщиками.ПолучитьСсылку();
УстановитьСсылкуНового(лСсылкаНового);
НоваяЗапись.Объект = лСсылкаНового;
9 cmex
 
28.12.17
12:08
(8) так тоже пробовал, не работает
10 Serg_1960
 
28.12.17
12:08
"Бывает ситуации, когда при записи элемента справочника 1С 8.3 или 8.2 (или другой объектной сущности) необходимо выполнить запись какого-либо набора регистра сведений, где в измерении (или ресурсе) необходимо установить ссылку на записываемый объект..." - продолжение по ссылке, ссылка - далее :)
http://programmist1s.ru/sozdanie-zapisi-registra-svedeniy-s-izmereniem-ssyilkoy-na-novyiy-obekt/
11 Fragster
 
гуру
28.12.17
12:12
(5) ну и нафига?, делай как в (3), а объект копирования можно в форме сохранять. Брать в ПриСозданииНаСервере из Параметры.
12 Fragster
 
гуру
28.12.17
12:15
можно перенести саму запись в объект, а в ПриСозданииНаСервере формы заполнять ДополнительныеСвойства
13 Serg_1960
 
28.12.17
12:17
Ещё раз обращаю Ваше внимание на конструкцию [почему и зачем именно так реализовано]:

СсылкаНового = ЭтотОбъект.ПолучитьСсылкуНового();
Если НЕ ЗначениеЗаполнено(СсылкаНового) Тогда
   СсылкаНового = Справочники.Контрагенты.ПолучитьСсылку();
КонецЕсли;
14 Serg_1960
 
28.12.17
12:21
(0) При записи объекта это нужно делать или после записи (когда гарантирована запись объекта в базу и когда ссылка уже есть). Имхо.
15 Serg_1960
 
28.12.17
12:26
(12) Угу, но лучше в подписку. А ответ пользователя - в ДополнительныеСвойства. Классика жанра :)
16 cmex
 
28.12.17
12:57
(11) вот я дебил, я думал где мне сохранить ссылку на копируемый объект, а он в Параметрах уже есть "Значение копирования". Спасибо, вопрос закрыт
17 Fragster
 
гуру
28.12.17
12:59
(16) синтакс-помощник вообще классная штука, жаль, не у всех он есть по какой-то причине
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн