Имя: Пароль:
1C
1С v8
ERP и обмены
0 ДенисЧ
 
12.08.21
11:49
Подскажите, кто в теме...
Есть ERP 2.4.13
Есть задача - синхронизировать между двумя такими некие данные.

В старых конфах всё просто - создал план обмена и настройки. И всё бегает.

А тут - не найду, куда вообще указывать план. Нашёл на старте обмен по правилам КД2 - там тоже только правила и ни слова о плане обмена...

Как правильно поступать (бежать не предлагать) ?
1 ДенисЧ
 
12.08.21
11:59
Вроде нашёл описание
https://its.1c.ru/db/metod8dev#content:5889:hdoc:chapter1.2
Будут пробовать..
2 d4rkmesa
 
12.08.21
12:50
(1) Немного не то. Там процесс не так уж сильно отличается от старых конф: создаешь план обмена, если существующие не подходят, включаешь его в состав типа параметров команд синхронизации, добавляешь в макет правила обмена, допустим, на КД2, а затем через сценарии синхронизации настраиваешь сам обмен.
Здесь, к примеру, описан процесс:
https://infostart.ru/1c/articles/1316278/
Правда, там ERP-УПП, но смысл тот же.
3 ДенисЧ
 
12.08.21
12:52
(2) Так по ссылке на ИТС именно это и написано )))
4 d4rkmesa
 
12.08.21
13:07
(3) Там несколько скупо. На Инфостарте лучше процесс описан, с картинками. =)
5 vicof
 
12.08.21
13:09
6 seevkik
 
12.08.21
13:13
(0) Обмен по универсальному формату не подходит?
Покури Enterprise Data
7 ДенисЧ
 
12.08.21
13:22
(6) Мне вообще правила не нужны. Мне нужно только выгрузить изменение и загрузить в практически аналогичную.
Ынтырпрайз тут будет "Солнцепёком" по комарам.
8 PLUT
 
12.08.21
13:34
(7) сериализация  

я из копии в прод переношу изменения с помощью выгрузить/загрузить объекты (документы/справочники) с движениями по регистрам (если это необходимо)

сериализация

процедура (по кнопочке сохранить в файл....)

        ИмяФайла = КаталогСохранения + "\" + ПредставлениеДокумента() + ".json";
    
    Текст = Новый ТекстовыйДокумент;
    Текст.УстановитьТекст(ДокументВТекстJSON());
    Текст.Записать(ИмяФайла);
    
    Сообщить("Файл записан: " + ИмяФайла);
    
    ИмяФайла = КаталогСохранения + "\Движения " + ПредставлениеДокумента() + ".json";
    
    Текст = Новый ТекстовыйДокумент;
    Текст.УстановитьТекст(ДвиженияДокументаВТекстJSON());
    Текст.Записать(ИмяФайла);
    
    Сообщить("Файл записан: " + ИмяФайла);
    
КонецПроцедуры

&НаСервере
Функция ДокументВТекстJSON()
    
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(, Символы.Таб));
    
    СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, Документ.ПолучитьОбъект(), НазначениеТипаXML.Явное);
    
    Возврат ЗаписьJSON.Закрыть();
    
КонецФункции

&НаСервере
Функция ДвиженияДокументаВТекстJSON()
    
    ДокОбъект = Документ.ПолучитьОбъект();
    
    НаборыЗаписей = Новый Соответствие();
    Для Каждого Движение из ДокОбъект.Движения Цикл
        Движение.Прочитать();
        Если Движение.Количество() = 0 Тогда
            Продолжить;
        КонецЕсли;
        НаборыЗаписей.Вставить(Движение.Метаданные().Имя, Движение.Выгрузить());
    КонецЦикла;

    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(, Символы.Таб));
    
    СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, НаборыЗаписей, НазначениеТипаXML.Явное);
    
    Возврат ЗаписьJSON.Закрыть();
    
КонецФункции


ну и чтение из файла:

   ОбъектИзФайла = СериализаторXDTO.ПрочитатьJSON(ЧтениеJSON);
    
   ОбъектИзФайла.ОбменДанными.Загрузка = Истина;
   ОбъектИзФайла.Записать();

//Движуха
        ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(ТекстJSON);
    
    НаборыДвижений = СериализаторXDTO.ПрочитатьJSON(ЧтениеJSON);
    
    Если НаборыДвижений.Количество() = 0 Тогда
        Возврат;
    КонецЕсли;
    
    //Регистры ОУ
    ОбъектПоСсылке = СсылкаНаОбъект.ПолучитьОбъект();
    
    Для Каждого НаборДвижений Из НаборыДвижений Цикл
        
        Если ОбъектПоСсылке.Движения.Найти(НаборДвижений.Ключ) <> Неопределено Тогда
                                    
            Если НаборДвижений.Ключ = "Международный" Тогда
                НаборЗаписей     = РегистрыБухгалтерии[НаборДвижений.Ключ].СоздатьНаборЗаписей();
                        ИначеЕсли НаборДвижений.Ключ = "Хозрасчетный" Тогда
                                НаборЗаписей     = РегистрыБухгалтерии[НаборДвижений.Ключ].СоздатьНаборЗаписей();
            Иначе
                Если Метаданные.РегистрыНакопления.Найти(НаборДвижений.Ключ) = Неопределено Тогда
                    НаборЗаписей = РегистрыСведений[НаборДвижений.Ключ].СоздатьНаборЗаписей();
                Иначе
                    НаборЗаписей = РегистрыНакопления[НаборДвижений.Ключ].СоздатьНаборЗаписей();
                КонецЕсли;
            КонецЕсли;
            
            НаборЗаписей.Отбор.Регистратор.Значение = СсылкаНаОбъект;
            НаборЗаписей.Прочитать();
            НаборЗаписей.Очистить();
            
            Для Каждого СтрокаТЗ из НаборДвижений.Значение Цикл
                НоваяЗапись = НаборЗаписей.Добавить();
                ЗаполнитьЗначенияСвойств(НоваяЗапись, СтрокаТЗ);
            КонецЦикла;
            НаборЗаписей.ОбменДанными.Загрузка = Истина;
            НаборЗаписей.Записать();
            
        КонецЕсли;
        
    КонецЦикла;
9 ДенисЧ
 
12.08.21
13:36
(8) Какие мы умные )))
Только не там, где нужно. Где у тебя слово "план обмена"? Как твою процедуру одной кнопкой запланировать? Как растиражировать обмен на 10 узлов?
10 PLUT
 
12.08.21
13:41
(9) читай внимательно (0) :)))

"между двумя такими некие данные"

я тебе идею предложил - сериализация. дальше сам думай )

ну и эта, синхронизация нужна на постянной основе или разово, в одну сторону или в обе? в (0) об этом ни слова
11 ДенисЧ
 
12.08.21
13:45
(10) Раз уж пошло... Читаем (0)
"синхронизировать "
"план обмена"

Я как бы не первый раз в жизни 1с вижу и термины немного знаю
12 PLUT
 
12.08.21
13:45
+(8) да, там небольшая (_!_)пка есть, нужна рекурсивная выгрузка ссылочных объектов, иначе в приемнике может быть "Объект не найден" при загрузке

но при исправлении косяков на копии и переносе в прод норм
13 PLUT
 
12.08.21
13:50
(11) в ERP 2.4.13 все функции - планы обмена - Распределенная информационная база (с полной синхронизацией данных)
14 ДенисЧ
 
12.08.21
14:04
(13) Ещё одно умствование...
Где написано а) что конфигурации полностью идентичные и б) мне нужен РИБ?

Чтобы ты не фантазировал больше - нужен обмен планом счетов между всеми базами холдинга. Сначала ерп, потом к ним пойдут БП и ЗУП. И УХ...
Давай ещё предложения по риб и сериализации
)))
15 Serg_1960
 
12.08.21
14:06
(0) С чего начать спрашиваешь? Как обычно в современных конфигурациях - Администрирование - Настройки синхронизации данных - установить флаг "Синхронизация данных" и префикс ИБ. Далее открыть помощник настройки синхронизации - Синхронизация данных - Настроить синхронизацию данных - пункт "Через универсальный формат"... не забыть настроить параметры синхронизации данных, правила выгрузки данных... короче: добраться до формы интерактивной синхронизации данных для сопоставить элементов в справочниках этих баз...
PS: ERP ниразу в глаза не видел :))
16 PLUT
 
12.08.21
15:07
(14) у меня был опыт синхронизации между УТ11 и УТ10.3 по определенному виду документов/справочников. Да, пришлось немного кода написать, добавить в каждую базу свой план обмена и регистрацию изменений и правила обмена в КД2. за 2 дня управился


вообще пох на твои проблемы зачеркнуто обмены :))

буду твои темы стороной обходить :)
17 vicof
 
12.08.21
15:26
(0) принципиально (5) не читаешь?)
18 ДенисЧ
 
12.08.21
15:29
(17) Я принципиально прочёл (1) и этого достаточно.
19 gae
 
12.08.21
21:22
(18) Так в (1) в тексте также потом и отправляют в (5), то бишь в основной мануал по БСП.
20 rozer76
 
13.08.21
09:49
(0) по правилам КД2 https://youtu.be/pKcI2nMjWoU
21 rozer76
 
13.08.21
09:54
(20) по этому мануалу пилил под регулярный обмен между ут11 и самопиской на УФ. В самописку пришлось внедрить БСП.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой