Имя: Пароль:
1C
1С v8
Универсальный обмен XML + регистрация изменений БП 1.6 на 8.2 и ЕП 2
0 Leo_Lito
 
23.01.23
09:07
Всем здравствуйте, я начинающий программист 1С. Нужно реализовать односторонний обмен данными с синхронизацией между БП 8.2 и ЕП 2 на 8.3  (ЕП->БП).  Создал правила конвертации через Конвертацию данных 2.1, создал регламентное задание, вызывающее созданный мной общий модуль, в котором используется Универсальный обмен данными XML (УОД). В модуле инициализировал УОД, указал правила конвертации, файл выгрузки данных, но не разобрался с регистрацией изменений. Планы обмена создал, узлы тоже, авторегистрацию поставил. В стандартной форме можно подключить узел обмена через таблицу, но что за процедура или функция за это отвечает и как ее вызывать, я так и не понял. Помогите разобраться, пожалуйста. Спасибо!
1 Leo_Lito
 
23.01.23
16:37
1
2 kerm
 
23.01.23
16:46
БП 8.2 это БП 1.6, а ЕП это УПП или ЕРП?
3 Leo_Lito
 
24.01.23
14:10
(2) Это ЕРП
4 OldCondom
 
24.01.23
14:20
&НаСервере
Процедура УстановитьУзелОбменаУСтрокДерева(Дерево, УзелОбмена)
    
    Для Каждого Строка Из Дерево Цикл
        
        Если Строка.ЭтоГруппа Тогда
            
            УстановитьУзелОбменаУСтрокДерева(Строка.ПолучитьЭлементы(), УзелОбмена);
            
        Иначе
            
            Строка.СсылкаНаУзелОбмена = УзелОбмена;
            
        КонецЕсли;
        
    КонецЦикла;
    
КонецПроцедуры
5 Leo_Lito
 
24.01.23
14:32
(4) Сработает, если дописать:

Процедура УстановитьУзелОбменаУСтрокДерева(Дерево, УзелОбмена) Экспорт

И как записать его в модуле?

Процедура ВыгрузкаИзЕрп() Экспорт
    // Вставить содержимое обработчика.
    Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
    Обработка.РежимОбмена = "Выгрузка";    
    Обработка.ДатаНачала     = НачалоДня(ДобавитьМесяц(ТекущаяДата(),-1));
    Обработка.ДатаОкончания   = КонецМесяца(ТекущаяДата());
    Обработка.ИмяФайлаОбмена  = "D:\xxx\ЕРП--БУХ.xml";
    Обработка.ИмяФайлаПравилОбмена  = "D:\xxx\ЕРП-БУХ.xml";
    Обработка.ЗагрузитьПравилаОбмена();
    Обработка.УстановитьУзелОбменаУСтрокДерева(?, ПланОбменаЕРП);
    Обработка.ВыполнитьВыгрузку();
КонецПроцедуры
6 Leo_Lito
 
24.01.23
14:38
Это вопрос!!   "Сработает, если дописать,"
7 Leo_Lito
 
24.01.23
14:38
(6) "Сработает, если дописать?"
8 OldCondom
 
24.01.23
14:51
Это что?

Обработка.УстановитьУзелОбменаУСтрокДерева(?, ПланОбменаЕРП);
9 OldCondom
 
24.01.23
14:52
Ааа, понял)
Нет, так не сработает.
УстановитьУзелОбменаУСтрокДерева(Обработка.ТаблицаПравилВыгрузки.ПолучитьЭлементы(), ПланОбменаЕРП);
10 Leo_Lito
 
24.01.23
14:54
(9) Спасибо, буду пробовать
11 Leo_Lito
 
24.01.23
15:28
(9) Сделал так, так как код узла - БП (но пробовал и по названию узла, и по названию плана обмена), НО ничего не получилось. Процедура у меня немного иначе называется.

Процедура ВыгрузкаИзЕрп() Экспорт
    // Вставить содержимое обработчика.
    Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
    Обработка.РежимОбмена = "Выгрузка";    
    Обработка.ДатаНачала     = НачалоДня(ДобавитьМесяц(ТекущаяДата(),-1));
    Обработка.ДатаОкончания   = КонецМесяца(ТекущаяДата());
    Обработка.ИмяФайлаОбмена  = "D:\Литовских\1Cv8\XML для КОНВ\ЕРП--БУХ.xml";
    Обработка.ИмяФайлаПравилОбмена  = "D:\Литовских\1Cv8\XML для КОНВ\ЕРП-БУХ.xml";
    Обработка.ЗагрузитьПравилаОбмена();
    Обработка.УстановитьУзелОбменаУСтрокДереваНаСервере.УстановитьУзелОбменаУСтрокДерева(Обработка.ТаблицаПравилВыгрузки.ПолучитьЭлементы(), БУХ);

    //Обработка.ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки= 2;
    Обработка.ВыполнитьВыгрузку();
КонецПроцедуры



А выводит вот такое:

{ОбщийМодуль.ВыгрузкаИзЕрп.Модуль(21,139)}: Переменная не определена (ПланОбменаЕРП)
    Обработка.УстановитьУзелОбменаУСтрокДереваНаСервере.УстановитьУзелОбменаУСтрокДерева(Обработка.ТаблицаПравилВыгрузки.ПолучитьЭлементы(), <<?>>ПланОбменаЕРП); (Проверка: Сервер)
{ОбщийМодуль.ВыгрузкаИзЕрп.Модуль(21,139)}: Переменная не определена (БП)
    Обработка.УстановитьУзелОбменаУСтрокДереваНаСервере.УстановитьУзелОбменаУСтрокДерева(Обработка.ТаблицаПравилВыгрузки.ПолучитьЭлементы(), <<?>>БП); (Проверка: Сервер)
{ОбщийМодуль.ВыгрузкаИзЕрп.Модуль(21,139)}: Переменная не определена (БУХ)
    Обработка.УстановитьУзелОбменаУСтрокДереваНаСервере.УстановитьУзелОбменаУСтрокДерева(Обработка.ТаблицаПравилВыгрузки.ПолучитьЭлементы(), <<?>>БУХ); (Проверка: Сервер)
12 OldCondom
 
24.01.23
15:42
Что то мне подсказывает, правила, общий модуль и регламент писали не вы.
13 Leo_Lito
 
24.01.23
15:52
(12) Модуль я нагуглил, но как он работает я понимаю) В остальном тоже искал в интернетах, но делал все сам.
14 Leo_Lito
 
24.01.23
15:58
Извиняюсь, что задаю совсем глупые вопросы) Но учиться же ведь как-то нужно...
15 FIXXXL
 
24.01.23
16:35
(11) Узел - это элемент ПланаОбмена, его надо как то получить, хоть НайтиПоКоду()
16 kerm
 
24.01.23
16:42
(11) Посмотри код плана обмена которого ты создал для обмена и получи его через НайтиПоКоду().
В ЕРП есть обмен с БУХ30.  Зачем обмениваться с Бух 1,6 которая только внутри УПП осталась непонятно.
17 FIXXXL
 
24.01.23
16:44
(16) код УЗЛА
а то совсем запутается :)
18 FIXXXL
 
24.01.23
16:46
ПланыОбмена.Название ПЛАНА ОБМЕНА как в метаданных.НайтиПоКоду("код твоего УЗЛА, откуда забираешь изменения");
19 Leo_Lito
 
24.01.23
16:51
(18) Я так и написал, спасибо. Сейчас пробую.
20 Leo_Lito
 
24.01.23
17:49
(18)  Так-с. Процедура УстановитьУзелОбменаУСтрокДерева(Дерево, УзелОбмена) имеет два параметра. Если с узлом все стало понятно, то для того, чтобы заполнился пармаетр дерево нужно сначала заполнить таблицу выгрузки данных. В стандартной форме обработки она заполняется после нажатия на кнопку "Прочитать правила обмена". Кнопка вызывает процедуру ПрочитатьПравилаОбмена(Команда) , которая забирает значения с правил, вызывает следующую процедуру ПрочитатьПравилаОбменаЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт , параметры которой заполняются значениями, которые забрала процедура ПрочитатьПравилаОбмена(Команда) . И если самому объявить эти значения и записать в параметры при вызове процедуры ПрочитатьПравилаОбменаЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт , то вроде как все должно сработать. Ну или почти...   Буду продолжать, ну и потом расскажу, что получится, если интересно.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший