Конвертация реквизитов Проведен и ПометкаУдаления из 8 в 7.7

0. 130 12.12.13 14:22 Сейчас в теме
Все кто сталкивался с переносом данных из 8 в 77 через конвертацию данных, знают что перенести значение реквизитов Проведен и ПометкаУдаления без танцев с бубнами, ни как не получится, При загрузке обработка ругается, что реквизит Проведен или ПометкаУдаления у документа нет. И это правда, вместо этих реквизитов у документов есть аналогичные методы, которые только возвращают значение. Точно такие танцы пришлось выполнить и мне, хотя все оказалось проще...

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. bashinsky 130 12.12.13 17:55 Сейчас в теме
Эта статья рассчитана на тех, кто уже немного знаком с конфигурацией Конвертация данных. Если у кого-нибудь есть другое решение расскажите.
4. aves 227 18.12.13 10:52 Сейчас в теме
(1) - Общий реквизит = -1=Удален\0=норм\1=проведен
После загрузки документа - добавляем его в массив для обработки.
После обработки конвертации - обработка всех документов массива
2 года on-line - полет нормальный
5. bashinsky 130 18.12.13 12:47 Сейчас в теме
(4) aves, Общий реквизит - это в документе? Если да, то его нужно добавлять в каждый документ.
6. aves 227 18.12.13 14:46 Сейчас в теме
(5) в 77 есть общие реквизиты документов :-)
10. M_Volkov 2 09.02.19 02:19 Сейчас в теме
2. nick_krsk 17 13.12.13 05:03 Сейчас в теме
А что если производить установку пометки удаления в обработчике "После загрузки"?
3. bashinsky 130 13.12.13 09:24 Сейчас в теме
обработка будет ругается, Неверное имя реквизита: ПометкаУдаления. Потому-что сначала идет проверка на ТипРеквизита, а так как это не реквизит, обработка возвращает пустое значение и пропускает код ниже. После проверки выполнятся обработчик "После загрузки".
8. gep 19 13.02.15 20:37 Сейчас в теме
Здравствуйте!
Во-первых, спасибо за ценную информацию - очень помогло.
Во-вторых, хочу добавить небольшую поправку:
Если документ проведен в базе-приемнике, а в базе-источнике снято проведение, то при обмене не произойдет отмена проведения в приемнике (во всяком случае при обмене м/у 7.7->7.7), т.к. в строках:
    Если ПустоеЗначение(Проведен) = 0 Тогда
        Если Проведен = 1 Тогда 
            ОбъектБД.Провести();
        ИначеЕсли Проведен = 0 Тогда  
            Если ОбъектБД.Проведен() = 1 Тогда    ОбъектБД.СделатьНеПроведенным();    КонецЕсли;  
        КонецЕсли;
    КонецЕсли;

Пустое значение и 0 в 7.7 - одно и тоже (а булево из 8-ки конвертируется в 0/1)
Следовательно если документ не проведен в источнике, и проведен в приемнике - ничего не произойдет, т.к. выражение ПустоеЗначение(Проведен) вернет 1, хотя Проведен не пуст, а равен 0. (7.7 такая 7.7)
Доработка проста. В строках:
ИначеЕсли ИдРеквизита = "Проведен" Тогда             
    Проведен = Значение;

меняем на
ИначеЕсли ИдРеквизита = "Проведен" Тогда             
    Проведен = Значение + 1;

И соответственно:
    Если ПустоеЗначение(Проведен) = 0 Тогда
        Если Проведен = 2 Тогда 
            ОбъектБД.Провести();
        ИначеЕсли Проведен = 1 Тогда  
            Если ОбъектБД.Проведен() = 1 Тогда    ОбъектБД.СделатьНеПроведенным();    КонецЕсли;  
        КонецЕсли;
    КонецЕсли;
9. bashinsky 130 16.02.15 11:56 Сейчас в теме
(8) gep, Спасибо, что нашли ошибку. У себя я ее давно исправил, но сюда внести изменения не было времени.
11. compaud 27.02.19 16:02 Сейчас в теме
На строчке
ОбъектБД.УстановитьВремя(Число(Сред(ВремяДокумента, 1, 2)), Число(Сред(ВремяДокумента, 4, 2)), Число(Сред(ВремяДокумента, 7, 2)));

Возникает ошибка

{путьдообработки(2879)}: Не выбран документ!
Оставьте свое сообщение
Вопросы с вознаграждением