Регистр сведений ДополнительныеСведения, проблемы при синхронизации УТ 11.1 БП 3.0

1. golovinaea 17.08.17 14:29 Сейчас в теме
Всем добрый день!
Платформа 8.3.8.2054, синхронизация между конфигурациями Управление торговлей 11.1.10.103 и Бухгалтерия предприятия 3.0.51.27.
Добавляю в обмен регистр сведений ДополнительныеСведения. При автоматическом создании конвертации свойств по регистру Свойство сопоставились, но в результате значение Свойства <Объект не найден> (....). Попыталась задать значение поля ПередЗагрузкой свойства, ПослеЗагрузки свойства и ПослеЗагрузки объекта следующим кодом:
Объект.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Проект (Поступление (акты, накладные))").Ссылка;

Всякий раз ошибка следующая:
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(4216)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта
ИмяПКО = ДополнительныеСведенияПроектПоступление
ТипОбъекта = Регистр сведений набор записей: Дополнительные сведения
Объект = РегистрСведенийНаборЗаписей.ДополнительныеСведения
Обработчик = ПослеЗагрузкиОбъекта
ОписаниеОшибки = Поле объекта не обнаружено (Свойство)
ПозицияМодуля = (1)
КСообщенияОбОшибках = 21
ВызватьИсключение СтрокаСообщенияОбОшибке;
Подскажите пожалуйста может кто сталкивался, как задать данное значение правильно.
Найденные решения
14. golovinaea 22.09.17 10:55 Сейчас в теме
Получилось сделать следующим образом:
// добавляем признак проекта
Если ПараметрыОбъекта <> Неопределено Тогда
	Проект = ПараметрыОбъекта["Проект"];
КонецЕсли;

Если ЗначениеЗаполнено(Проект) Тогда
	Если Объект.ЭтоНовый() Тогда
		СсылкаНаОбъект = Документы.ПоступлениеТоваровУслуг.ПолучитьСсылку(); 
		Объект.УстановитьСсылкуНового(СсылкаНаОбъект);
    Иначе
        СсылкаНаОбъект = Объект.Ссылка;
    КонецЕсли;	
	
	МенеджерЗаписи = РегистрыСведений.ДополнительныеСведения.СоздатьМенеджерЗаписи();
	
	МенеджерЗаписи.Объект = СсылкаНаОбъект;
	МенеджерЗаписи.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Проект (Поступление (акты, накладные))");
	МенеджерЗаписи.Значение = Проект;
	МенеджерЗаписи.Записать();
КонецЕсли;
Показать
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Airlord 17.08.17 16:07 Сейчас в теме
Насколько помнится там Владелец должен быть. При записи должен присутствовать Владелец значения для текущего дополнительного свойства. например:
Справочник Номенклатура: элемент "Ботинки, артикул001" , Допсвойство "размер", при записи значение 41 непосредственно для этого элемента. В пустую значение без Владельца не записывается.
3. golovinaea 17.08.17 16:25 Сейчас в теме
(2) В моем случае получается Владелец это Объект (документ Поступление (акт, накладная)). Объект и значение заполняются верно. Не получается только конкретное свойство указать.
4. Airlord 17.08.17 17:40 Сейчас в теме
Стоп! конечно же неправильно! У Объекта (док, Справочник и все такое) нет такого реквизита и не будет! Не нужно искать по наименованию и присваивать его найденное свойство! Посмотрите в Справочниках "ЗначенияСвойствОбъектов" и "НаборыДополнительныхРеквизитовИСведений" как происходит присвоение владельцу.
5. golovinaea 22.08.17 15:22 Сейчас в теме
(4) Я говорю про реквизит Свойство конечно не документа, а регистра сведений ДополнительныеСведения. Там такой реквизит есть. И если просто добавить программно запись в этот регистр, то строка
Запись.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Проект (Поступление (акты, накладные))").Ссылка;

отрабатывает корректно. А при обмене нет. У меня при обмене только этот реквизит не заполняется нормально.
6. Airlord 23.08.17 12:23 Сейчас в теме
Не проще ли будет вытащить и дописать алгоритм после загрузки объекта в правилах обмена, если у вас судя по данным релизов - УТ старая (20.03.2015), а БП последний релиз?
7. golovinaea 23.08.17 12:40 Сейчас в теме
(6) дык я об этом и спрашиваю. У меня выдает указанную в тексте вопроса ошибку именно в коде алгоритма ПослеЗагрузки объекта.
8. Airlord 23.08.17 13:09 Сейчас в теме
Покажите полностью как вы пытаетесь записать (текст алгоритма) и фрагмент кода где передаете в алгоритм параметры (в модуле после загрузки объекта).
9. golovinaea 23.08.17 13:19 Сейчас в теме
(8) В обработчике события ПослеЗагрузки правила конвертации регистра
Выполнить(Алгоритмы.ДопСведениеПроектВПоступлении);

И собственно сам алгоритм
Объект.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Проект (Поступление (акты, накладные))");
10. Airlord 24.08.17 09:08 Сейчас в теме
(9) Вы меня не поняли - не обращение к Алгоритму, а текст Алгоритма.

Пар1 = ...;
Пар2 = ...;
Выполнить(Алгоритмы.РогаИКопыта);
[img][img]http://s018.radikal.ru/i509/1708/72/0dd9d5b5c249.png[/img][/IMG]
Прикрепленные файлы:
11. Airlord 24.08.17 09:09 Сейчас в теме
Что в тексте Алгоритма написано? Как обращаетесь к нему?
12. Airlord 24.08.17 09:24 Сейчас в теме
Если это и весь текст Алгоритма, то что является Объектом? Если "Регистр.ДополнительныеСведения", то просто так писать в него нельзя.

Пример текста из БП 3.0:
	// Проверка, что изменение пометки удаления произведено не из списка.
	// Наборы дополнительных реквизитов и сведений.
	СвойстваОбъекта = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "ПометкаУдаления");
	Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ
		|	Наборы.Ссылка КАК Ссылка
		|ИЗ
		|	%1 КАК Свойства
		|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений КАК Наборы
		|		ПО (Свойства.Ссылка = Наборы.Ссылка)
		|ГДЕ
		|	Свойства.Свойство = &Свойство
		|	И Свойства.ПометкаУдаления <> &ПометкаУдаления";
	Если ЭтоДополнительноеСведение Тогда
		ИмяТаблицы = "Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеСведения";
	Иначе
		ИмяТаблицы = "Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты";
	КонецЕсли;
	Запрос.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Запрос.Текст, ИмяТаблицы);
	Запрос.УстановитьПараметр("Свойство", Ссылка);
	Запрос.УстановитьПараметр("ПометкаУдаления", СвойстваОбъекта.ПометкаУдаления);
	
	Результат = Запрос.Выполнить().Выгрузить();
	
	Для Каждого СтрокаРезультата Из Результат Цикл
		НаборСвойствОбъект = СтрокаРезультата.Ссылка.ПолучитьОбъект();
		Если ЭтоДополнительноеСведение Тогда
			ЗаполнитьЗначенияСвойств(НаборСвойствОбъект.ДополнительныеСведения.Найти(Ссылка, "Свойство"), СвойстваОбъекта);
		Иначе
			ЗаполнитьЗначенияСвойств(НаборСвойствОбъект.ДополнительныеРеквизиты.Найти(Ссылка, "Свойство"), СвойстваОбъекта);
		КонецЕсли;
		
		НаборСвойствОбъект.Записать();
Показать
13. golovinaea 19.09.17 14:00 Сейчас в теме
В продолжении этой истории... добавляю записи в регистр сведений ДополнительныеСведения в обработчике ПослеЗагрузки самого объекта документа. Значение свойства передаю в параметр Проект. Код следующий:
// добавляем признак проекта
Если ПараметрыОбъекта <> Неопределено Тогда
	Если Объект.ЭтоНовый() Тогда
		СсылкаНаОбъект = Документы.ПоступлениеТоваровУслуг.ПолучитьСсылку(); 
		Объект.УстановитьСсылкуНового(СсылкаНаОбъект);
    Иначе
        СсылкаНаОбъект = Объект.Ссылка;
    КонецЕсли;	
	
	МенеджерЗаписи = РегистрыСведений.ДополнительныеСведения.СоздатьМенеджерЗаписи();
	
	МенеджерЗаписи.Объект = СсылкаНаОбъект;
	МенеджерЗаписи.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Проект (Поступление (акты, накладные))");
	МенеджерЗаписи.Значение = ПараметрыОбъекта["Проект"];
	МенеджерЗаписи.Записать();
КонецЕсли;
Показать


Записи регистра создаются корректно, но проверка на заполненность параметра Проект не проходит. Т.е. записи регистра создаются всегда. С условием
ПараметрыОбъекта["Проект"] <> Неопределено
результат тот же. Подскажите какое условие поставить, чтобы код выполнялся только когда в значении параметра что-то есть.
14. golovinaea 22.09.17 10:55 Сейчас в теме
Получилось сделать следующим образом:
// добавляем признак проекта
Если ПараметрыОбъекта <> Неопределено Тогда
	Проект = ПараметрыОбъекта["Проект"];
КонецЕсли;

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот