Имя: Пароль:
1C
1С v8
КД: обмен предопределенных объектов
0 Mikhail Volkov
 
24.11.12
16:49
В типовых правилах вроде все логично сделано: синхронизация по гуидам, если по гуид не найден, по полям поиска. Но встречаются косяки у предопределенных объектов, которые дают сбои. Например, ВидыКонтактнойИнформации в наименованиях телефонов УПП "физ.лица", а УТ10.3 - "физ. лица"?! Исправлять эти баги после каждого обновления - не выход. Решил у предопределенных объектов во всех базах сделать одинаковые гуиды. В ПКО после загрузки прописал:

Если ОбъектНайден Тогда
   Если Объект.Ссылка.Предопределенный Тогда
       Отказ = Истина;    // Не замещаем предопределенные.
   КонецЕсли;
КонецЕсли;

Не помогло:
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4795)}: Ошибка записи объекта
   ТипОбъекта             =  Виды контактной информации
   Объект                 =  Телефон физ. лица служебный
   ОписаниеОшибки         =  Ошибка при вызове метода контекста (Записать): Ошибка при попытке вставки записи с неуникальным значением ссылки.
Microsoft OLE DB Provider for SQL Server: Нарушение "PK___Referen__AC8ED0C4499C3B8A" ограничения PRIMARY KEY. Не удается вставить повторяющийся ключ в объект "dbo._Reference49". Повторяющееся значение ключа: (0xb9493d07ec2909514bd24a29a071e1b7).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2627, line=1

   ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4788)
   КодСообщения           =  26

Получается, что по гуиду объект не найден, была попытка создать новый объект с эти гуид!? Почему?

Есть более надежный способ, чтобы предопределенные объекты не замещались?
1 Mikhail Volkov
 
24.11.12
18:16
Оказывается предопределенные объекты в КД прописаны на вкладке "Конвертация значений", а телефоны с "физ.лица" были "красными" - исправил...
И замена гуид предопределенных объектов не произошла, наверное средствами 1С это сделать невозжно!? (в SQL-таблицы лесть?) Но это отдельная тема...
Я только одного не понял, дублей ВидыКонтактнойИнформации до обмена не было, появились при обмене. Получается, в процессе обмена они создались, но при загрузке последующей КИ не были найдены по гуид, и была попытка создать их вновь?
2 Сияющий Асинхраль
 
24.11.12
19:16
Как много вам открытий чудных
Готовит просвещенья дух... :-)
3 Mikhail Volkov
 
24.11.12
20:26
Выходит то, что прописано на вкладке "Конвертация значений", имеет более высокий приоритет, и правила синхронизации на них не действуют?
4 Mikhail Volkov
 
25.11.12
06:49
Теперь обмен работает надежно, не смотря на косяки в наименованиях. Но это годится только когда в обеих базах один и тот же объект определен как предопределенный.
Например, УПП консолидирующая база, для обмена с УТ11 КИ партнера можно сделать предопределенный. Но при этом гуид сменится!? Рухнет обмен с остальными УТ10.3...
Как сделать имеющийся объект предопределенным, сохранив ему прежний гуид?
5 Mikhail Volkov
 
25.11.12
10:30
Или средствами 1С это сделать невозможно, надо в SQL-таблицы лесть?
6 Mikhail Volkov
 
28.11.12
02:54
Похоже, надо новую тему открыть: Как сделать имеющийся объект предопределенным, сохранив ему прежний GUID?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший