|
План обмена, связанные изменения | ☑ | ||
---|---|---|---|---|
0
OnePrg
07.10.22
✎
14:21
|
Настроен план обмена. Данные выгружаются в приёмник (база SQL) в виде таблиц. Но приёмник проверяет данные на связанность таблиц между собой.
Таблицы: Номенклатура, Характеристики, Единицы измерения, цены. Проблема в том, что время от времени приёмник не принимает данные, потому-что определяет, например, что в таблице номенклатуры нет ссылки, на которую ссылается таблица характеристики. Думаю, что причина в том, что 1С регистрируют изменения в одном объекте, не регистрирую для выгрузки связанные объекты. Например, если записывается номенклатура, то характеристики и единицы измерения не записываются и наоборот. Я попробовал перед обменом перебирать таблицы изменений и записывать связанные данные, но время от времени обмен опять клинит. Думаю, что во время самой выгрузки может происходит запись несвязанных данных. Какое есть решение? Отключить авторегистрацию и выполнять её ПриЗаписи с учётом связанных объектов? |
|||
1
Serg_1960
07.10.22
✎
15:10
|
(0) "Настроен план обмена. Данные выгружаются в приёмник" - пропущено "НСИ - синхронизированы". Впрочем это необязательно, но тогда нужно корректно настроить выгрузку/загрузку объектов по ссылкам.
|
|||
2
Naumov
07.10.22
✎
15:11
|
1С считает, что все, на что ссылается выгружаемое ранее (или в текущем пакете) зарегистрировано и отправлено.
если у вас этого не произошло, то вопросы к настройкам обмена |
|||
3
Serg_1960
07.10.22
✎
15:17
|
В конвертации данных нечто подобное происходит если у правила была установлена галочка "Не выгружать объекты свойств источника по ссылкам".
|
|||
4
OnePrg
07.10.22
✎
15:32
|
Каждый раз как клинит обмен, я вручную делаю резет обмена: очищаю служебную таблицу в SQL и запускаю процедуру обмена в 1С.
Пока решил так: сделаю проверку, что если долгое время нет приёма от SQL, то 1С сама очищает служебную таблицу в SQL. Всем спасибо. |
|||
5
pavig
07.10.22
✎
17:33
|
(0)
Приемник - это не 1С? |
|||
6
pavig
07.10.22
✎
17:33
|
(4)
Что за служебная таблица SQL? |
|||
7
pavig
07.10.22
✎
17:37
|
(0)
Если приемник 1С, то такого быть не должно. Если всё-таки есть, то проблема в правилах обмена. По-хорошему, правила должны учитывать такие проблемы (или логикой преобразований, или ссылками). К примеру, если загружается характеристика по номенклатуре, которой нет в приемнике, то характеристика должна таки загрузиться, но в поле Владелей у неё будет что-то типа "объект не найден 384к52аг5ь2с48". Если обмен выбивает на ошибке, то бага в правилах. Или это фича. Тут надо понять логику конкретного обмена и конкретных правил. |
|||
8
Eiffil123
10.10.22
✎
13:53
|
(0) обратите внимание, что выборка из плана обмена не дает гарантии, что элементы выбираются в порядке, в котором они добавлялись регистрировались в плане обмена. Возможно в этом загвоздка
|
|||
9
Naumov
10.10.22
✎
14:19
|
(8) Обмену пофиг порядок, если зарегистрировано все, что нужно.
|
|||
10
Eiffil123
10.10.22
✎
14:33
|
(9) вот же автор пишет "время от времени приёмник не принимает данные, потому-что определяет, например, что в таблице номенклатуры нет ссылки". Т.е. характеристика пришла, а номенклатура еще нет. При этом у него на уровне sql стоит проверка возможности записи.
|
|||
11
Smallrat
10.10.22
✎
15:23
|
Типичная фигня в обменах, особенно если разбивать объекты по разным сообщениям - вполне реальны ситуации, например, при загрузке сотрудника, что физлицо от сотрудника приедет в следующем сообщении, потому что (8). Я выкручиваюсь так, как это сделано в универсальном обмене - создаю "битые ссылки" на объекты, которые должны когда-нибудь приехать.
|
|||
12
Naumov
10.10.22
✎
15:53
|
(10) Если приемник не принимает, то нет ответа о приеме пакета, данные должны отправляться повторпно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |