КД 2.0: Объект загружается при отказе

1. nt- 18.06.26 16:49 Сейчас в теме
Всем привет,

надо перенести присоединенные файлы к РТУ между двумя БП;
сами РТУ уже есть, их переносить не надо, переносим только файлы.

Тестирую ситуацию: а если в источнике есть РТУ и файл к ней, а в приемнике этой РТУ нет - тогда создавать РТУ не надо и элемента справочника РеализацияТоваровУслугПрисоединенныеФайлы тоже не надо, ну и пару связанных регистров сведений тоже не надо.

РТУ в приемнике не создается, ок.

Если выгружать и загружать только файлы - то они не создаются, ок.

А если выгружать РеализацияТоваровУслугПрисоединенныеФайлы и РС ХранилищеФайлов, в котором измерением является файл, - то файл создается, хотя не должен. В этом и вопрос. Видимо, этот связанный объект влияет.

У РС ХранилищеФайлов в ПКС в обработчике ПослеЗагрузки:

Если НЕ ОбщегоНазначения.СсылкаСуществует(Объект.Файл.ВладелецФайла) ИЛИ Объект.Файл.ВладелецФайла.Пустая() Тогда
	Отказ = ИСТИНА;
КонецЕсли;


Отладка заходит в этот обработчик, отказу присваивается истина, но это не помогает(

Что еще можно проверить?
Или я еще вообще не с той стороны к вопросу подхожу?
По теме из базы знаний
Найденные решения
4. nt- 19.06.26 09:58 Сейчас в теме
Нашла решение:

1) Создаю ПКО на справочник РТУПрисоединенныеФайлы, в котором разрешаю создавать новые объекты.
Это ПКО указываю в ПВД.

2) Создаю ПКО на этот же справочник, в котором запрещаю создавать новые объекты.
Этот ПКО указываю в ПКС Файл у регистра сведений ХранилищеФайлов.
3) Идентификаторы ПКО у этих ПКО разные, поэтому все норм.

Идея в том, что вообще в справочнике РТУФайлы можно создавать элементы, но уж если в приемнике нет владельца и в справочник РТУФайлы ничего не создаем, то и в РС запись создавать не надо, и пусть РС ориентируется - найден элемент справочника РТУФайлы или нет.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. MissionOnly 27 19.06.26 08:31 Сейчас в теме
(1) Может самом коде встречается Объект.Записать()?
3. nt- 19.06.26 09:53 Сейчас в теме
5. MissionOnly 27 19.06.26 10:18 Сейчас в теме
(3) Возможно, "отказ" правильнее выставлять "перед выгрузкой" (а не в момент, когда объект уже создан в памяти).
6. nt- 19.06.26 10:39 Сейчас в теме
(5) Была такая мысль, но перед выгрузкой мы не знаем, есть ли РТУ (владелец файла) в приемнике.
Мы это знаем только находясь в приемнике.
Либо вот, двумя ПКО на 1 объект метаданных с разными идентификаторами.
8. MissionOnly 27 19.06.26 11:20 Сейчас в теме
(6) Остается взять обработку, которой Объект пишется и проверить ее на проверку "отказа" перед записью.

Вот такая функция еще должна отрабатывать:

Процедура УдалитьИзСтекаНеЗаписанныхОбъектов(Нпп, ГНпп)
	
	НомерДляСтека = ?(Нпп = 0, Гнпп, Нпп);
	мГлобальныйСтекНеЗаписанныхОбъектов.Удалить(НомерДляСтека);	
	
КонецПроцедуры
4. nt- 19.06.26 09:58 Сейчас в теме
Нашла решение:

1) Создаю ПКО на справочник РТУПрисоединенныеФайлы, в котором разрешаю создавать новые объекты.
Это ПКО указываю в ПВД.

2) Создаю ПКО на этот же справочник, в котором запрещаю создавать новые объекты.
Этот ПКО указываю в ПКС Файл у регистра сведений ХранилищеФайлов.
3) Идентификаторы ПКО у этих ПКО разные, поэтому все норм.

Идея в том, что вообще в справочнике РТУФайлы можно создавать элементы, но уж если в приемнике нет владельца и в справочник РТУФайлы ничего не создаем, то и в РС запись создавать не надо, и пусть РС ориентируется - найден элемент справочника РТУФайлы или нет.
7. nt- 19.06.26 10:40 Сейчас в теме
Еще важно порядок выполнения у ПКО, который "не создавать" выставить меньше, чем у ПКО "создавать".
Для отправки сообщения требуется регистрация/авторизация

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