Имя: Пароль:
1C
1С v8
План обмена, связанные изменения
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) Если приемник не принимает, то нет ответа о приеме пакета, данные должны отправляться повторпно.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn