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 регистрам
|
|