|
v8: Обмен данными (Конвертация данных) | ☑ | ||
---|---|---|---|---|
0
Romich1981
20.12.13
✎
10:32
|
Настраиваю правила выгрузки документа. В обработчике "При загрузке" прописываю что-то типа:
Если ОбъектНайден И Объект.Утверждено Тогда НеЗамещатьОбъект = Истина; КонецЕсли; При этом считаю, что документ с установленным флагом "Утверждено", не будет изменен (так, собственно, написано в помощнике) Однако при загрузке происходит полтергейст. Часть реквизитов документа (похоже, что только ссылочного типа) просто напросто очищается! Подскажите, что я не так делаю? |
|||
1
Wobland
20.12.13
✎
10:39
|
при загрузке в правиле выгрузки?
|
|||
2
Romich1981
20.12.13
✎
10:40
|
В правиле конвертации
|
|||
3
Romich1981
20.12.13
✎
10:41
|
Умом то я понимаю, что решение об отказе от загрузки нужно принимать перед загрузкой, но на том этапе объект еще не найден...
|
|||
4
Wobland
20.12.13
✎
10:41
|
можно ещё не выгружать лишнее
|
|||
5
Romich1981
20.12.13
✎
10:45
|
можно, но в моей задаче не нужно.
|
|||
6
Romich1981
20.12.13
✎
10:51
|
(0) Самое главное то сказать забыл.
Реквизиты очищаются только тогда, когда условие не отрабатывает. |
|||
7
ИсчадиеADO
20.12.13
✎
10:54
|
(6) ты ж сам ответил на свой вопрос :)
|
|||
8
Romich1981
20.12.13
✎
11:03
|
(7) да с собой вообще полезно разговаривать иногда.
Если обработчик пустой, то документ обновляется нормально. Если там что-то есть (похоже, что даже комментарий), то очищаются реквизиты. Пришел к выводу, что надо учить матчасть, в которой написано: "обработка загрузки считает, что если выполнялся какой-либо обработчик, то объект мог быть модифицирован, и его необходимо записать в информационную базу" Добавил в обработчик ОбъектМодифицирован = Ложь и проблема ушла |
|||
9
Romich1981
20.12.13
✎
11:03
|
(8) пришла другая =)
|
|||
10
Romich1981
20.12.13
✎
11:17
|
(8) Поторопился с выводами.
"ОбъектМодифицирован = Ложь" проблему не решило! После второй выгрузки/загрузки пропал один реквизит табличной части. После третей пропали все ссылочные реквизиты кроме перечислений... матчасть не помогла, хелп! |
|||
11
ИсчадиеADO
20.12.13
✎
11:27
|
после загрузки есть какой-нибудь обработчик?
|
|||
12
Romich1981
20.12.13
✎
11:28
|
(11)нет
|
|||
13
ИсчадиеADO
20.12.13
✎
11:31
|
давай уточним: 1)после загрузки обработчика нет
2) при загрузке для нужных объектов установлен НеЗамещатьОбъект = Истина; 3) объекты все равно замещаются Попробуй НеЗамещатьОбъект поставить для всех объектов без условий, мож невнимательно что посмотрел... |
|||
14
MKZM
20.12.13
✎
11:32
|
А отладка что говорит?
|
|||
15
Romich1981
20.12.13
✎
11:39
|
(13) Криво описал проблему в (0), т.к. она прояснялась по ходу описания =)
После загрузки обработчиков нет. При загрузке, если НеЗамещатьОбъект = Истина, то он не замещается, к пуговицам претензий нет. Но если, все таки нужно замещать, то вместо обновления документа очищаются реквизиты. (14) Отладку еще не смотрел, обработка непростая - долго вкуривать |
|||
16
Romich1981
20.12.13
✎
11:44
|
(13) Если очищаю обработчик "При загрузке", то документ обновляется правильно
|
|||
17
Йохохо
20.12.13
✎
11:48
|
(16) проверь по ключевым полям редактором в файле выгрузки, что док выгружается однократно
|
|||
18
Romich1981
20.12.13
✎
11:57
|
(16) выгружается через АДО, но проверял через файл - объект присутствует в файле однократно.
Провел ряд экспериментов над содержимым обработчика. Результатs такие: 1. Документ обновляется правильно, если в обработчике: ОбъектМодифицирован = Ложь; 2. Документ не обновляется, если в обработчике: НеЗамещатьОбъект = Истина; ОбъектМодифицирован = Ложь; 3. Начинается котовасия с очисткой реквизитов, если добавляю условие: Если ОбъектНайден И Объект.Утверждено Тогда НеЗамещатьОбъект = Истина; КонецЕсли; ОбъектМодифицирован = Ложь; |
|||
19
Romich1981
20.12.13
✎
12:01
|
И уже совсем тупиковый эксперимент
4. Документ обновляется правильно, если в обработчике: Если Ложь Тогда НеЗамещатьОбъект = Истина; КонецЕсли; ОбъектМодифицирован = Ложь; |
|||
20
Romich1981
20.12.13
✎
12:45
|
Проблемы начинаются с добавлением условия
Объект.Утверждено = Истина |
|||
21
Aleksey
20.12.13
✎
12:59
|
(20) а почему при выгрузке не прописать
НеЗамещатьОбъектПриЗагрузке = источник.Утверждено НеЗамещатьОбъектПриЗагрузке - Булево. По умолчанию - определяется в правилах обмена, но может быть изменено. Если для данного параметра установить значение Истина, то объект идентифицированный при загрузке (т.е. найденный в информационной базе приемнике по значению синхронизирующих полей) не будет изменен/замещен. |
|||
22
Romich1981
20.12.13
✎
13:06
|
(21) Потому что загружать или нет зависит от значения флага в приемнике. А из источника выгружаются только утвержденные документы.
Я полез в отладку |
|||
23
Йохохо
20.12.13
✎
13:48
|
Отказ = Истина; // Против классики не попрешь (с)
|
|||
24
Aleksey
20.12.13
✎
13:51
|
(23) при загрузке нет отказа
А вот после загрузки можно попробовать |
|||
25
Romich1981
20.12.13
✎
14:03
|
После загрузки значение "Утверждено" уже изменено
|
|||
26
Йохохо
20.12.13
✎
14:05
|
(25) там есть Объект и ОбъектВБД
|
|||
27
Romich1981
20.12.13
✎
14:27
|
(26) Это где это есть ОбъектВБД?
|
|||
28
Romich1981
20.12.13
✎
14:28
|
(26)Если что, у меня Типовая УПП 1.3
|
|||
29
Йохохо
20.12.13
✎
14:35
|
(27) я про то, что Объект, у которого изменен Утверждено, еще не записан
|
|||
30
Necessitudo
20.12.13
✎
14:39
|
(15) А обработчик в ПВД "После загрузки данных" не считается?
|
|||
31
Romich1981
20.12.13
✎
14:56
|
(29) это риторический вопрос?
|
|||
32
Romich1981
20.12.13
✎
14:58
|
(30) В ПВД нет обработчика "После загрузки данных"
предыдущее тоже в (30) =) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |