Синхронизация ЗУП 3.1 - БП
Народ, всем добрый день!
Нужен совет куда глядеть. На текущий момент жаль потерянного времени. Чувствую что проблема где то на поверхности, но не вижу. Есть синхронизация между двумя базами: Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.28.84) с одной стороны, и БП Парус с другой. Реализована через стандартный типовой план обмена: "ОбменЗарплата3Бухгалтерия3" без каких либо дописок/переписок/расширений и т.п. В обмене учавствовал всего один документ по одной организации.
Все было хорошо, но в какой то момент этот документ перестал регистрироваться в автоматическом режиме (Отражение з/п в бухучете). При этом вручную документы этого типа регистрируются без проблем и учавствуют в обмене. Подозреваю что случилась эта проблема после какого то очередного обновления. ЗУПа. Но это только догадки.
Если использовать отладчик то видно, что система заходит в процедуру:
ОбменДаннымиСобытия.ЗарегистрироватьИзменениеОбъекта()
и добавляет нужных получателей (узлы) для данного документа.
Но сама регистрация не происходит. В чем может быть проблема?
Т.е. система верно определяет куда именно надо зарегистрировать объект. Но сама регистрация почему то не происходит. Смотрел правила регистрации, - ничего криминального там не увидел: отбор по организации + отбор по периоду (должен быть больше чем дата начала обмена)
Пробовал вообще отключать отбор по организациям, - тот же результат. Ничерта не регистрируется автоматом. Только вручную.
Вот меня больше всего бесит полное отсутствие, или очень скудная справочная информация по вопросам устройства БСП.
Для чего созданы табличные части с названием "Организации" в каждом из типовых планов обменов? И почему где то они заполнены, а где то нет? И как это влияет на сам обмен?
Нужен совет куда глядеть. На текущий момент жаль потерянного времени. Чувствую что проблема где то на поверхности, но не вижу. Есть синхронизация между двумя базами: Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.28.84) с одной стороны, и БП Парус с другой. Реализована через стандартный типовой план обмена: "ОбменЗарплата3Бухгалтерия3" без каких либо дописок/переписок/расширений и т.п. В обмене учавствовал всего один документ по одной организации.
Все было хорошо, но в какой то момент этот документ перестал регистрироваться в автоматическом режиме (Отражение з/п в бухучете). При этом вручную документы этого типа регистрируются без проблем и учавствуют в обмене. Подозреваю что случилась эта проблема после какого то очередного обновления. ЗУПа. Но это только догадки.
Если использовать отладчик то видно, что система заходит в процедуру:
ОбменДаннымиСобытия.ЗарегистрироватьИзменениеОбъекта()
и добавляет нужных получателей (узлы) для данного документа.
Но сама регистрация не происходит. В чем может быть проблема?
Т.е. система верно определяет куда именно надо зарегистрировать объект. Но сама регистрация почему то не происходит. Смотрел правила регистрации, - ничего криминального там не увидел: отбор по организации + отбор по периоду (должен быть больше чем дата начала обмена)
Пробовал вообще отключать отбор по организациям, - тот же результат. Ничерта не регистрируется автоматом. Только вручную.
Вот меня больше всего бесит полное отсутствие, или очень скудная справочная информация по вопросам устройства БСП.
Для чего созданы табличные части с названием "Организации" в каждом из типовых планов обменов? И почему где то они заполнены, а где то нет? И как это влияет на сам обмен?
Прикрепленные файлы:
По теме из базы знаний
- Синхронизация под контролем (на примере синхронизации «1С:Зарплата и управление персоналом 3.1» и «1С:Бухгалтерия 3.0»)
- Настройка соответствий подразделений ЗУП 3.1 и БП 3.0
- Односторонний обмен данными ЗУП 3.1 - БП 3.0 (при настроенной синхронизации данных)
- Замена кадровых подразделений на затратные в ЗУП 3.1 при отражении в бухгалтерском учете зарплаты и резервов
- Перенос документов "Отражение зарплаты в бухучете" из ЗУП 3.1 в БП 3.0 сводно для физических лиц и подразделений БП
Найденные решения
(3) Немного скорректировал, вот такая конструкция пожалуй будет более правильная, чем представленная ранее:
Эта конструкция выполняет регистрацию изменений как надо, в автоматическом режиме.
&После("ЗарегистрироватьИзменениеОбъекта")
Процедура р_ЗарегистрироватьИзменениеОбъекта(ИмяПланаОбмена, Объект, Отказ, ДополнительныеПараметры)
Если СтрСравнить(ИмяПланаОбмена, "ОбменЗарплата3Бухгалтерия3") = 0 Тогда
ЗерегистрироватьПринудительноИзмененияДляПАРУСа(Объект);
КонецЕсли;
КонецПроцедуры
Процедура ЗерегистрироватьПринудительноИзмененияДляПАРУСа(Объект)
Если ТипЗнч(Объект) <> Тип("ДокументОбъект.ОтражениеЗарплатыВБухучете")
И ТипЗнч(Объект) <> Тип("ДокументСсылка.ОтражениеЗарплатыВБухучете") Тогда
Возврат;
КонецЕсли;
ОбменДаннымиСобытия.ВыполнитьПравилаРегистрацииДляОбъекта(Объект, ИмяПланаОбмена);
КонецПроцедуры
ПоказатьЭта конструкция выполняет регистрацию изменений как надо, в автоматическом режиме.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) В общем, так толком и не разобравшись в причинах этой поломки, решил её радикальным способом: принудительная регистрация. Опишу логику этого решения, и выкладываю программный код, - вдруг кому пригодится.
Логика проста: я знаю, что при выполнении процедуры "ОбменДаннымиСобытия.ЗарегистрироватьИзменениеОбъекта()" система типовыми алгоритмами ПРАВИЛЬНО и КОРРЕКТНО определяет получателей объекта (узлы). Эти узлы система помещает в соответствующий реквизит объекта "Объект.ОбменДанными.Получатели". Причем, как показали опыты, при выполнении этой процедуры система уже проверяет условия регистрации объекта! Это обозначает, что в получатели запишутся только те узлы, которые соответствуют параметрам отбора, определенным в настройках плана обмена. Моя задача была проста: принудительно зарегистрировать этот объект.
Для этого я создал расширение, в нем определил свою процедуру с директивой "после" для процедуры: "ОбменДаннымиСобытия.ЗарегистрироватьИзменениеОбъекта()".
Логика проста: я знаю, что при выполнении процедуры "ОбменДаннымиСобытия.ЗарегистрироватьИзменениеОбъекта()" система типовыми алгоритмами ПРАВИЛЬНО и КОРРЕКТНО определяет получателей объекта (узлы). Эти узлы система помещает в соответствующий реквизит объекта "Объект.ОбменДанными.Получатели". Причем, как показали опыты, при выполнении этой процедуры система уже проверяет условия регистрации объекта! Это обозначает, что в получатели запишутся только те узлы, которые соответствуют параметрам отбора, определенным в настройках плана обмена. Моя задача была проста: принудительно зарегистрировать этот объект.
Для этого я создал расширение, в нем определил свою процедуру с директивой "после" для процедуры: "ОбменДаннымиСобытия.ЗарегистрироватьИзменениеОбъекта()".
&После("ЗарегистрироватьИзменениеОбъекта")
Процедура р_ЗарегистрироватьИзменениеОбъекта(ИмяПланаОбмена, Объект, Отказ, ДополнительныеПараметры)
Если СтрСравнить(ИмяПланаОбмена, "ОбменЗарплата3Бухгалтерия3") = 0 Тогда
ЗерегистрироватьПринудительноИзмененияДляПАРУСа(Объект);
КонецЕсли;
КонецПроцедуры
Процедура ЗерегистрироватьПринудительноИзмененияДляПАРУСа(Объект)
Если ТипЗнч(Объект) <> Тип("ДокументОбъект.ОтражениеЗарплатыВБухучете")
И ТипЗнч(Объект) <> Тип("ДокументСсылка.ОтражениеЗарплатыВБухучете") Тогда
Возврат;
КонецЕсли;
УзлыДляРегистрации = Объект.ОбменДанными.Получатели;
Если УзлыДляРегистрации.Количество() = 0 Тогда
Возврат;
КонецЕсли;
мУзлыДляРегистрации = Новый Массив;
Для Каждого ТекУзел из УзлыДляРегистрации Цикл
мУзлыДляРегистрации.Добавить(ТекУзел);
КонецЦикла;
ПланыОбмена.ЗарегистрироватьИзменения(мУзлыДляРегистрации, Объект);
КонецПроцедуры
Показать
Несмотря на то, что проблема, по-сути, решена, прошу совета, чем именно могла быть вызвана проблема? Повторяю:
1. Весь обмен был типовой, вплоть до решения этой проблемы. Решение этой проблемы, - это единственная "дописка" этого, конкретно взятого, плана обмена.
2. План обмена настроен между ЗУП КОРП и БП Парус
3. Раньше все работало без проблем. Документ автоматом регистрировался. В какой то момент времени (два - три месяца назад) авторегистрация пропала. Стала доступной только ручная регистрация.
4. Отладка кода показала, что типовой алгоритм верно определяет получателей для документа при его изменении в автоматическом режиме с учетом параметров отбора, указанных в настройках плана обмена. Но сама регистрация при этом не происходит.
Если мне кто нибудь подскажет, в каком именно общем модуле (по БСП) вызывается метод "ПланыОбмена.ЗарегистрироватьИзменения" при регистрации изменений объектов ИБ буду примного благодарен. Думаю этого будет достаточно для более детального расследования причин произошедшего. В процедуре "ЗарегистрироватьИзменениеОбъекта" хоть ее название и близко по смыслу к регистрации изменений, - всё таки напрямую изменения не регистрируются. В этой процедуре определяются лишь получатели изменений. Далее для этих получателей, как я понимаю, где то в общих модулях должна вызываться процедура, очень близкая к моей, описанной выше.
1. Весь обмен был типовой, вплоть до решения этой проблемы. Решение этой проблемы, - это единственная "дописка" этого, конкретно взятого, плана обмена.
2. План обмена настроен между ЗУП КОРП и БП Парус
3. Раньше все работало без проблем. Документ автоматом регистрировался. В какой то момент времени (два - три месяца назад) авторегистрация пропала. Стала доступной только ручная регистрация.
4. Отладка кода показала, что типовой алгоритм верно определяет получателей для документа при его изменении в автоматическом режиме с учетом параметров отбора, указанных в настройках плана обмена. Но сама регистрация при этом не происходит.
Если мне кто нибудь подскажет, в каком именно общем модуле (по БСП) вызывается метод "ПланыОбмена.ЗарегистрироватьИзменения" при регистрации изменений объектов ИБ буду примного благодарен. Думаю этого будет достаточно для более детального расследования причин произошедшего. В процедуре "ЗарегистрироватьИзменениеОбъекта" хоть ее название и близко по смыслу к регистрации изменений, - всё таки напрямую изменения не регистрируются. В этой процедуре определяются лишь получатели изменений. Далее для этих получателей, как я понимаю, где то в общих модулях должна вызываться процедура, очень близкая к моей, описанной выше.
(3) Немного скорректировал, вот такая конструкция пожалуй будет более правильная, чем представленная ранее:
Эта конструкция выполняет регистрацию изменений как надо, в автоматическом режиме.
&После("ЗарегистрироватьИзменениеОбъекта")
Процедура р_ЗарегистрироватьИзменениеОбъекта(ИмяПланаОбмена, Объект, Отказ, ДополнительныеПараметры)
Если СтрСравнить(ИмяПланаОбмена, "ОбменЗарплата3Бухгалтерия3") = 0 Тогда
ЗерегистрироватьПринудительноИзмененияДляПАРУСа(Объект);
КонецЕсли;
КонецПроцедуры
Процедура ЗерегистрироватьПринудительноИзмененияДляПАРУСа(Объект)
Если ТипЗнч(Объект) <> Тип("ДокументОбъект.ОтражениеЗарплатыВБухучете")
И ТипЗнч(Объект) <> Тип("ДокументСсылка.ОтражениеЗарплатыВБухучете") Тогда
Возврат;
КонецЕсли;
ОбменДаннымиСобытия.ВыполнитьПравилаРегистрацииДляОбъекта(Объект, ИмяПланаОбмена);
КонецПроцедуры
ПоказатьЭта конструкция выполняет регистрацию изменений как надо, в автоматическом режиме.
(4) В общем, исходя из описания процедуры "ЗарегистрироватьИзменениеОбъекта" можно сделать вывод, что эта процедура действительно НЕ регистрирует изменения, а инициализирует правила регистрации объекта, и в своответствии с ними уже производит получение узлов-получателей для данного объекта:
"
//Определяет список узлов получателей плана обмена ИмяПланаОбмена, для которых необходимо выполнить
// регистрацию объекта Объект для последующей его выгрузки."
Что значит вот это выражение: "Объект для последующей его выгрузки." - что значит для последующей выгрузки? Когда именно происходит регистрация изменений объекта в соответствии с БСП?
Версия БСП - 3.1.9.261
Версия БСД (БиблиотекаСинхронизацииДанных) - 1.0.3.409
"
//Определяет список узлов получателей плана обмена ИмяПланаОбмена, для которых необходимо выполнить
// регистрацию объекта Объект для последующей его выгрузки."
Что значит вот это выражение: "Объект для последующей его выгрузки." - что значит для последующей выгрузки? Когда именно происходит регистрация изменений объекта в соответствии с БСП?
Версия БСП - 3.1.9.261
Версия БСД (БиблиотекаСинхронизацииДанных) - 1.0.3.409
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот