Имя: Пароль:
1C
1С v8
Регистрация изменений: ОбменДанными.Получатели.Добавить работает через раз!
0 Mr_Best
 
06.08.14
06:00
Всем привет! Уже скоро 5:40 утра, а я все кручу-верчу 1С, а она чето не работает :(

1С:Предприятие 8.3 (8.3.4.496)
Альфа-Авто: Автосалон+Автосервис+Автозапчасти. Редакция 4.1 (4.1.01.22)

Суть проблемы: обмен - РИБ(2 узла), для новых документов не регистрируются изменения для узлов, авторегистрация установлена в Запретить, если после создания документа его перепровести - все изменения зарегистрируются как надо.

Механизм: в обработчике события документа ПриЗаписи вызывается функция в которой получается список узлов для регистрации и собственно регистрируется. Сначала регистрируется сам документ, потом по очереди в цикле его движения. Выглядит это так:

            Для каждого НаборЗаписей из ДвигаемыеРегистры Цикл
                МетаданныеРегистр = НаборЗаписей.Метаданные();
                // отсечем сразу, чтобы потом не обращаться лишний раз к процедуре..
                Если (ПланОбменаМетаданныеСостав.Найти(МетаданныеРегистр) = неопределено) Тогда
                    Продолжить; // нет в составе плана обмена
                КонецЕсли;
                Если ЭтоУдаление Тогда
                    // При удалении объекта, если у нас уже были зарегистрированы его движения
                    //правильнее будет их отменить - пусть в сообщении отправится одно лишь удаление объекта
                    ПланыОбмена.УдалитьРегистрациюИзменений(МассивУзловПолучателей,НаборЗаписей);
                Иначе
                    //ПланыОбмена.ЗарегистрироватьИзменения(МассивУзловПолучателей,НаборЗаписей);
                    // Виталий + 2014.08.06
                    Для Каждого УзелПолучатель Из МассивУзловПолучателей Цикл
                        НаборЗаписей.ОбменДанными.Получатели.Добавить(УзелПолучатель);
                    КонецЦикла;
                    // Виталий - 2014.08.06
                КонецЕсли;
            КонецЦикла;

погуглив обнаружил, что вместо этого ЗарегистрироватьИзменения можно использовать это ОбменДанными.Получатели.Добавить ну и сделал так.
Все заработало, только хотел начинать радоваться как обнаружил что это работает для всех регистров кроме одного! Ну все одинаков и регистры однотипные(регистры накопления), помогите люди знающие, помогите люди знающие, ну шо ей, этой одинС надо то?
1 Mr_Best
 
06.08.14
06:11
И еще чуть чуть о проблеме: документ на котором я провожу тесты делает движения всего по 3-м регистрам, если использовать ЗарегистрироватьИзменения, то:
- при создании нового регистраций движений нет вообще
- при перепроведении все три регистра с регистрацией
Если использовать ОбменДанными.Получатели.Добавить, то:
- при создании есть регистрация только по 2 регистрам
- при перепроведении будет регистрация по этим же 2 регистрам
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.