Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

ERP и обмены

ERP и обмены
Я
   ДенисЧ
 
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
Будут пробовать..
   d4rkmesa
 
2 - 12.08.21 - 12:50
(1) Немного не то. Там процесс не так уж сильно отличается от старых конф: создаешь план обмена, если существующие не подходят, включаешь его в состав типа параметров команд синхронизации, добавляешь в макет правила обмена, допустим, на КД2, а затем через сценарии синхронизации настраиваешь сам обмен.
Здесь, к примеру, описан процесс:
https://infostart.ru/1c/articles/1316278/
Правда, там ERP-УПП, но смысл тот же.
   ДенисЧ
 
3 - 12.08.21 - 12:52
(2) Так по ссылке на ИТС именно это и написано )))
   d4rkmesa
 
4 - 12.08.21 - 13:07
(3) Там несколько скупо. На Инфостарте лучше процесс описан, с картинками. =)
   vicof
 
5 - 12.08.21 - 13:09
   seevkik
 
6 - 12.08.21 - 13:13
(0) Обмен по универсальному формату не подходит?
Покури Enterprise Data
   ДенисЧ
 
7 - 12.08.21 - 13:22
(6) Мне вообще правила не нужны. Мне нужно только выгрузить изменение и загрузить в практически аналогичную.
Ынтырпрайз тут будет "Солнцепёком" по комарам.
   PLUT
 
8 - 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 узлов?
   PLUT
 
10 - 12.08.21 - 13:41
(9) читай внимательно (0) :)))
"между двумя такими некие данные"

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

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

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

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

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


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


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.