Имя: Пароль:
1C
1С v8
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) =)
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс