| 
    
            
         
         | 
    
  | 
План обмена, связанные изменения | ☑ | ||
|---|---|---|---|---|
| 
    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) Если приемник не принимает, то нет ответа о приеме пакета, данные должны отправляться повторпно.     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |