|
КД Обмен 7.7-8.2 Установка родителя | ☑ | ||
---|---|---|---|---|
0
kn
13.05.14
✎
08:39
|
Приветствую, уважаемые форумчане.
Не получается при переносе номенклатуры из ТиС в БП по своим правилам установить родителя для новой номенклатуры, т.е новую номенклатуру в БП при переносе надо положить в папку "Новая номенклатура". Использую параметр - НаименованиеПапки, подсмотрев идею на форуме для передачи параметра в 7.7 получилось создать новый элемент в нужной папке, но при повторной загрузке, как ни бьюсь, элемент создается заново - второй, причем все пусто кроме кода, посмотрите что не так, спасибо. В ПКО Номенклатуры ПослеЗагрузки пишу Отказ = Ложь; Если Не (ОбъектНайден Или Объект.ЭтоГруппа) Тогда Запрос = Новый Запрос("ВЫБРАТЬ | КОЛИЧЕСТВО(*) КАК КоличествоСКодом |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Код = &Код"); Запрос.УстановитьПараметр("Код", Объект.Код); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Сообщить("Выборка.КоличествоСКодом = " + Строка(Выборка.КоличествоСКодом)); Если Выборка.КоличествоСКодом > 0 Тогда Отказ = Истина; КонецЕсли; КонецЕсли; Если Не Отказ Тогда Если ЗначениеЗаполнено(ПараметрыПКО) Тогда НаименованиеПапки = ПараметрыПКО.Получить("НаименованиеПапки"); КонецЕсли; Если ЗначениеЗаполнено(НаименованиеПапки) Тогда Родитель = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(НаименованиеПапки)); Объект.Родитель = Родитель; Объект.ОбменДанными.Загрузка = Истина; Объект.Записать(); КонецЕсли; КонецЕсли; КонецЕсли; |
|||
1
cons74
13.05.14
✎
09:30
|
"элемент создается заново - второй"
в кд вроде есть галка "не записывать если не найден", плюс искать перед загрузкой |
|||
2
kn
13.05.14
✎
09:32
|
так я ищу по коду и родителю, и он не находит для второго элемента, т.к первый в Новой папке
|
|||
3
kn
13.05.14
✎
09:33
|
А если в ПередЗагрузкой - Отказ поставить Истина, то в Послезагрузки, где устанавливаю нового родителя, Отказ сработает, или нет?
|
|||
4
kn
13.05.14
✎
09:37
|
флажок есть только Не создавать новый элемент в приемнике если он Не найден, но он не подходит
|
|||
5
kn
13.05.14
✎
09:47
|
В ПередЗагрузкой нет еще Объект, а есть Источник, как
получить код объекта здесь. |
|||
6
Aleksey
13.05.14
✎
09:51
|
(5) В перед загрузкой НЕТ источника
Обработчики "Правила конвертации объектов" При загрузке Условия возникновения события Только для платформы V8. Событие выполняется после попытки идентификации. В случае успешной синхронизации доступен найденный объект. В противном случае его значение Неопределено. Можно произвести произвольную инициализацию, заполняемого данными объекта. Параметры: ОбъектНайден - Булево. Если значение параметра равно Ложь, то объект не идентифицирован, то есть не найден в информационной базе Если не ОбъектНайден тогда Объект.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(НаименованиеПапки)) КонецЕсли |
|||
7
kn
13.05.14
✎
09:53
|
В перед загрузкой НЕТ источника - с чего это.
У меня первоначально не получалось в ПриЗагрузке, попробую еще. |
|||
8
Aleksey
13.05.14
✎
09:54
|
(7) Учи матчасть
|
|||
9
Aleksey
13.05.14
✎
09:55
|
Источник - СТРОКА (!!!). Представление (!!!!) объекта источника.
Представление <> Источник. Представления - это строка |
|||
10
kn
13.05.14
✎
09:57
|
а где-нибудь в ветке написано противное?
скорее вопрос не в установке родителя, а в том что криво срабатывает Отказ, запись все равно происходит хоть и пустого элемента |
|||
11
Aleksey
13.05.14
✎
10:22
|
(10) У тебя в в коде нет проверки на новый, он у тебя меняется ВСЕГДА когда грузишь элемент
|
|||
12
kn
13.05.14
✎
10:26
|
А это нет? Если Не (ОбъектНайден Или Объект.ЭтоГруппа) Тогда
|
|||
13
kn
13.05.14
✎
10:27
|
вот почему написано, но не срабатывает
После загрузки Условия возникновения события Только для платформы V8. Событие выполняется после прочтения и установки атрабутов объекта из файла, но до его записи в информационную базу. Возможна модификация загруженного объекта. Параметры: Отказ - Булево - Если Истина, то объект загружен не будет. |
|||
14
kn
13.05.14
✎
10:27
|
или потому что из 7.7, тогда как обойти
|
|||
15
Aleksey
13.05.14
✎
10:28
|
(12) оно, немного нетак код прочёл
|
|||
16
kn
13.05.14
✎
10:31
|
к сожелению при выгрузки из 7.7 нельзя искать по уникальному
идентификатору, и когда отключаю поиск по родителю, оставив только по коду, тоже не то. |
|||
17
kn
13.05.14
✎
10:54
|
как быть, ведь по идее при выгрузке документов с этой номенклатурой, должна подставляться первая номенклатура, т.е
вторая должна быть найдена как первая, но каким способом искать для случая перекладки в другую папку, почему при поиске по коду без поиска по родителю эффекта нет, какой смысл в поиске по родителю, кто может поясните, пжл-та |
|||
18
kn
13.05.14
✎
11:04
|
(17)+ если просто выгрузить только номенклатуру, то все нормально, а вот если документ в составе которого номенклатура, то создается вторая номенклатура, пустая.
Т.е вопрос свелся к поиску номенклатуры, если родитель не тот. |
|||
19
kn
13.05.14
✎
13:13
|
Получилось так
1.Поиск по Коду,ЭтоГруппа 2.В ПКС Родитель - флажок Не замещеть значения свойств существующих объектов в Приемнике 3.Т.к соответствие ПараметрыПКО доступно только ПослеЗагрузки то там и устанавливать родителя надо Если Не Объект.ЭтоГруппа Тогда Если ЗначениеЗаполнено(ПараметрыПКО) Тогда НаименованиеПапки = ПараметрыПКО.Получить("НаименованиеПапки"); КонецЕсли; Если ЗначениеЗаполнено(НаименованиеПапки) Тогда Родитель = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(НаименованиеПапки)); Если Не ОбъектНайден Тогда Объект.Родитель = Родитель; Объект.ОбменДанными.Загрузка = Истина; Объект.Записать(); КонецЕсли; КонецЕсли; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |