Имя: Пароль:
1C
1С v8
Планы обмена посоветуйте описание работы с ними
,
0 apdate by
 
28.06.21
15:45
Ребят подскажите где почитать (для особо тупых) о планах обмена интересует как реализовать  механизм собственной регистрации объектов к обмену и обменом по стуи только в одну сторону

из 1С в нужную мне программу

по сути к регистрации буду т идти только товары

механизм по сути подготовки данных к регистрации я реализовал

теперь нужно их зарегить в плане обмена

и я не понимаю как

1. зарегить их
2. как получать измененные объекты,
3. как получать номера сообщений что бы в случае ошибки при обмене записать это уведомление
4. как удалять только необходимые записи из плана обмена
1 Ёпрст
 
28.06.21
15:46
На итс жешь
2 apdate by
 
28.06.21
15:47
ИТС не для особо тупых ))))
3 apdate by
 
28.06.21
15:47
(1) но пойду читать мож пойму )
4 Ёпрст
 
28.06.21
15:48
1. зависит от галки авторегистрация в плане обмена у объекта. Если стоит, то оно само регится, если не стоит, то кодом
2. запросом жешь к табличке изменений объекта, или через менеджер
3. см п 2.
4. просто удаляешь регистрацию изменений
5 Ёпрст
 
28.06.21
15:49
4* или всю целиком, или конкретные объекты.

ЗЫ: там не так и много методов
6 apdate by
 
28.06.21
15:55
(4) + (5) спасибо буду пробовать )
просто ка кто делал да что то не получалось помню тогда плюнул и реализовал на регистре ))

теперь хочу переписать на план обмена )
7 apdate by
 
28.06.21
15:58
а как узнать что текущий выбранный узел не узел этой базы?
8 apdate by
 
28.06.21
16:02
номера ссобщения увеличиваются на каждую регитсрацию? или можно как то подлавить предыдущий номер и дополнить?
9 Ёпрст
 
28.06.21
16:03
(7) ГлавныйУзел() ?
или что ?
10 Ёпрст
 
28.06.21
16:05
11 apdate by
 
28.06.21
16:06
(9) да наверное я имею  в виду что бы ненароком не туда не записать объект (но я уже понял ка кэто сделать)

(8) в силе :-)
12 Ёпрст
 
28.06.21
16:07
(8) нет.
13 Ёпрст
 
28.06.21
16:07
они увеличиваются, после подтверждения
14 apdate by
 
28.06.21
16:08
понятно спасибо! буду зубрить матчасть ) ну и чувока в шляпе )
15 apdate by
 
28.06.21
22:05
Подскажите здесь

https://www.koderline.ru/upload/iblock/979/6.png

это вообще верный способ выборки измененных элементов?

я не очень понимаю зачем после того как в запросе мы получили измененные объекты по новой что то опрашивать в плане обмена?

и по номеру сообщения все же он задается в ручную выходит так?
16 ДенисЧ
 
28.06.21
22:17
(15) Это тебя надо спросить, зачем ты туда два раза лезешь ))
17 apdate by
 
29.06.21
09:46
(16) это - ж не мой код

это пример нашел я себе вот и спрашиваю верный ли он?
18 apdate by
 
29.06.21
09:47
(16) судя по Вашему ответу можно считать что все что ниже цикла в этом коде (что на картинке) можно не писать верно?
19 ДенисЧ
 
29.06.21
09:48
(18) нет
20 apdate by
 
29.06.21
09:50
Ребята подскажите еще один ньюанс

создал в форме узла диномический список и указал запрос вот такой

ВЫБРАТЬ
    НоменклатураИзменения.Узел,
    НоменклатураИзменения.НомерСообщения,
    НоменклатураИзменения.Ссылка
ИЗ
    Справочник.Номенклатура.Изменения КАК НоменклатураИзменения
ГДЕ
    НоменклатураИзменения.Узел = &Узел

установил при создании на сервере

ТоварыКОбмену.Параметры.УстановитьЗначениеПараметра("Узел",Объект.Ссылка);


оставил ссылку (товар) и номер сообщения

и вижу товары зарегенные а вот номер сообщения пустой это нормлаьно?
21 apdate by
 
29.06.21
09:52
(19) ок. После запроса мы помещаем в массив измененные объекты

для чего далее Мы делаем ПланыОбмена.ВыбратьИзменения()?
22 apdate by
 
29.06.21
10:01
+(21) этот вопрос закрыт

Формирует выборку измененные данные для передачи их в тот или иной узел плана обмена. При этом в процессе выборки изменений в записи регистрации изменений проставляется номер сообщения обмена данными, в котором должны передаваться изменения. Номер сообщения в записи регистрации проставляется для того, чтобы при подтверждении приема сообщения, в котором передавались изменения соответствующие записи регистрации изменений были удалены и в дальнейшем изменения больше не передавались.

:-)
23 apdate by
 
29.06.21
10:39
я делаю обмен с андроидом и с сайтом

при обмене при обходе изменений каждый товар будет улетать в другое ПО

Будет ли верным следующее

Например делаю я выборку изменений

и на каждую интерацию отправляю в другое ПО данные далее то ПО отвечает или не отвечает короче если все ок если товар ушел и другое ПО его удачно съело

то оно вернет ответ следовательно я удаляю запись именно по этому товару

но если например другое ПО не ответило в нужный момент или по каким то причинам вернуло ошибку то правильно ли будет остовлять такие изменения к следующим попыткам обмена?

я просто не могу понять если опираться на (22) то при ПланыОбмена.ВыбратьИзменения()? мои сообщения помечаются каким то флагом и как их потом выбирать?
24 apdate by
 
29.06.21
10:42
(23) они помечаются флагом типа готов к обмену но после если я не удалил их они остаются в изменениях и ожидают пока я не обменяюсь удачно

подтверждением удачного обмена является именно удаление этих сообщений?
25 ДенисЧ
 
29.06.21
10:42
Когда ты делаешь ВыбратьИзменения - твоим ещё неотправленным записям присваивается номер. Это и есть "флаг".
А выбирать - да хоть запросом, ГДЕ Номер<не помню точно> = &твойНомер
26 ДенисЧ
 
29.06.21
10:43
(24) Пока записи есть в таблице изменений - они считаются неотправленными (по идеологии 1с).
27 apdate by
 
29.06.21
10:58
Верно ли будет такого рода работа с планом обмена?

Функция ВыполнитьОбменССайтом()
    УзелОбмена = ПолучитьУзелОбмена();// потом можно будет переделать на несколько узлов следовательно здесь может быть цикл но в нашем случе не нужно этого делать
    Если УзелОбмена <> Неопределено Тогда
       ТоварыКОбмену = ПолучитьИПОложитьВМассивИзмененныеОбъекты(УзелОбмена); //"ТоварыКОбмену" => Массив
       Если ТоварыКОбмену.Количество() > 0 Тогда
           //Здесь сперва всегда выливаем группы товаров (все),
           //А так - же выливаем вс ехарактеристики твоаров
           Для Каждого Товар из  ТоварыКОбмену Цикл
               //Здесь Формируем XML пакет с данными о товаре, его цены, фото и т д
               //Далее пакуем в зип и скармливаем Сайту
              
               //Далее Сайт вернет ответ при положительном ответе выполняем
               //ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена,Товар); // что подтвердить факт удачного обмена
               //Иначе пишу ошибку в журнал!
           КонецЦикла;
       КонецЕсли;
    КонецЕсли;
КонецФункции

Функция ПолучитьИПОложитьВМассивИзмененныеОбъекты(УзелОбмена)
    МассивИзменений = Новый Массив;
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    НоменклатураИзменения.Ссылка
        |ИЗ
        |    Справочник.Номенклатура.Изменения КАК НоменклатураИзменения
        |ГДЕ
        |    НоменклатураИзменения.Узел = &Узел";
    
    Запрос.УстановитьПараметр("Узел", УзелОбмена);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        МассивИзменений.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
    КонецЦикла;
    
    Если МассивИзменений.Количество() > 0 Тогда
        ПланыОбмена.ВыбратьИзменения(УзелОбмена,УзелОбмена.НомерОтправленного,МассивИзменений);
        
        УзелОбъект = УзелОбмена.ПолучитьОбъект();
        УзелОбъект.НомерОтправленного = УзелОбъект.НомерОтправленного+1;
        УзелОбъект.Записать();
        
        Возврат МассивИзменений;
    Иначе
        
        Возврат МассивИзменений;
    КонецЕсли;
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    
КонецФункции
28 apdate by
 
29.06.21
11:00
//При всем при этом все-равно не понимаю зачем выполнять этот кусок кода

УзелОбъект = УзелОбмена.ПолучитьОбъект();
        УзелОбъект.НомерОтправленного = УзелОбъект.НомерОтправленного+1;
        УзелОбъект.Записать();

когда в (22) указано что он сам нумеруется автоматом (
29 ДенисЧ
 
29.06.21
11:00
(28) Чтобы получить номер сообщения, разумеется. Он нумеруется сам, но тебе, лысому, этого номера просто так не говорит.
30 apdate by
 
29.06.21
11:03
(29) все равно не понимаю нужно выполнять эту часть кода? (28) я имею  в виду

зачем увеличивать номер если он сам это делает?

я из примера это брал (

вот и не понимаю зачем это.
31 ДенисЧ
 
29.06.21
11:04
Он (автор кода) так захотел. По мне - так достаточное условие.
32 apdate by
 
29.06.21
11:17
заремил этот кусок кода

УзелОбъект = УзелОбмена.ПолучитьОбъект();
        УзелОбъект.НомерОтправленного = УзелОбъект.НомерОтправленного+1;
        УзелОбъект.Записать();

выполнил метод

получил все равно пустые номера сообщений

затем вернул и добавил удаление записей но не всех теперь все отлично работает

спасибо  за помощь!

я теперь умею регистрировать изменения, читать их и удалять
33 rozer76
 
29.06.21
11:56
обмен с андроидом - почитай на ИТС пример как создавать МП и простейший обмен
Номер сообщения нужно делать через НачатьЗапись(<ЗаписьXML>, <Узел>) тогда он автоматом инкрементируется и фиксируется в узле в момент ЗакончитьЗапись()
Про это почитай в СП и "профразработке".


Вот пример если хочешь не все данные в плане отправить но только те которые в МассивИзменений:

ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена);
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения, МассивИзменений);
    Пока ВыборкаИзменений.Следующий() Цикл
        Данные = ВыборкаИзменений.Получить();
        ЗаписатьДанные(ЗаписьXML, Данные, УзелОбмена);
    КонецЦикла;
    
    ЗаписьСообщения.ЗакончитьЗапись();
    СтрXML=ЗаписьXML.Закрыть();
34 apdate by
 
29.06.21
12:21
(33) а если мне необходимо своя структура XML?
(33) я рассматривал этот пример но от того что мне нужна моя структура XML не стал его использовать.
(33) подскажите есть ли возможность использовать Ваш пример но при этом свою структуру XML?
35 apdate by
 
29.06.21
12:23
а пока для таких же как я :-) (как меня тут Лысым обозвали? )

вот то что я сделал и оно в принципе работает


//Процедура выполняется подпиской на событие
//ПриЗаписи здесь источником являются ка кдокументы так и справочники
Процедура НоменклатураПриЗаписиОбъектаПриЗаписи(Источник, Отказ) Экспорт
    
    УзелОбмена = ПолучитьУзелОбмена();
    Если УзелОбмена <> Неопределено Тогда
        //Проверяем тип источника и если это Номенклатура тогда созаем одну запись иначе это документ! тогда из таблицы Товаров
        ТипОбъектаЗаписи = Неопределено;
        Если ТипЗнч(Источник) = Тип("ДокументОбъект.РеализацияТоваровУслуг") Тогда
            ТипОбъектаЗаписи = "Документ";    
        ИначеЕсли ТипЗнч(Источник) = Тип("ДокументОбъект.ПеремещениеТоваров") Тогда
            ТипОбъектаЗаписи = "Документ";
        ИначеЕсли ТипЗнч(Источник) = Тип("ДокументОбъект.ПоступлениеТоваровУслуг") Тогда
            ТипОбъектаЗаписи = "Документ";
        ИначеЕсли ТипЗнч(Источник) = Тип("ДокументОбъект.УстановкаЦенНоменклатуры") Тогда
            ТипОбъектаЗаписи = "Документ";
        ИначеЕсли ТипЗнч(Источник) = Тип("ДокументОбъект.ОприходованиеИзлишковТоваров") Тогда
            ТипОбъектаЗаписи = "Документ";
        ИначеЕсли ТипЗнч(Источник) = Тип("ДокументОбъект.СписаниеНедостачТоваров") Тогда
            ТипОбъектаЗаписи = "Документ";
        ИначеЕсли ТипЗнч(Источник) = Тип("СправочникОбъект.Номенклатура") Тогда
            ТипОбъектаЗаписи = "Справочник";
        КонецЕсли;
        
        Если ТипОбъектаЗаписи = Неопределено Тогда        
            ЗаписатьОшибкиПредупреждения("Неопределенный тип объекта записи", ТекущаяДата(), "Ошибка", "НоменклатураПриЗаписиОбъектаПриЗаписи");    
        ИначеЕсли ТипОбъектаЗаписи = "Справочник" Тогда    
            ОтвечаетТребованиям = ОтвечаетТребованиям(УзелОбмена, Источник.Ссылка);
            Если ОтвечаетТребованиям = Истина Тогда
                ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена,Источник.Ссылка);
            КонецЕсли;
        ИначеЕсли ТипОбъектаЗаписи = "Документ" Тогда
            Если Источник.Товары.Количество() > 0 Тогда
                Для Каждого СтрТовар ИЗ Источник.Товары Цикл
                    ОтвечаетТребованиям = ОтвечаетТребованиям(УзелОбмена, СтрТовар.Номенклатура.Ссылка);
                    Если ОтвечаетТребованиям = Истина Тогда
                        ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена,СтрТовар.Номенклатура.Ссылка);
                    КОнецЕсли;
                КонецЦикла;
            Иначе
                ЗаписатьОшибкиПредупреждения("Объект "+ТипЗнч(Источник)+" не имеет товаров Немер объекта"+Источник.Номер, ТекущаяДата(), "Ошибка", "НоменклатураПриЗаписиОбъектаПриЗаписи");
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

//Перед тем как поместить товар в измененные
//Проверим его на вхождение необходимых групп
//и на то что у него все необходимые данные заполнены
Функция ОтвечаетТребованиям(УзелОбмена, Товар)
    Отвечает = Ложь;
    //Проверим не состоит ли товар в ненужных нам группах
    Если УзелОбмена.ГруппыИсключения.Количество() > 0 Тогда
        МассивГруппИсключений = УзелОбмена.ГруппыИсключения.ВыгрузитьКолонку("ГруппаИсключения");
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Ссылка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.Ссылка В ИЕРАРХИИ(&ГруппаИсключение)
        |    И Номенклатура.Ссылка = &ВыбТовар";
        
        Запрос.УстановитьПараметр("ВыбТовар", Товар);
        Запрос.УстановитьПараметр("ГруппаИсключение", МассивГруппИсключений);
        
        РезультатЗапроса = Запрос.Выполнить();
        
        Если НЕ РезультатЗапроса.Пустой() Тогда
            ЗаписатьОшибкиПредупреждения("Товар "+Товар+" не попал в обмен так как указанная группа не ссответвует отбору!", ТекущаяДата(), "Предупреждение", "ОтвечаетТребованиям");
            Возврат Ложь;
        КонецЕсли;
    КонецЕсли;
    //Проверим все ли заполнено у товара
    Запрос_ = Новый Запрос;
    Запрос_.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.Ссылка
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.ФайлКартинки <> ЗНАЧЕНИЕ(Справочник.НоменклатураПрисоединенныеФайлы.ПустаяСсылка)
    |    И Номенклатура.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
    |    И Номенклатура.ФайлКартинки.ПометкаУдаления = &ПометкаУдаления
    |    И Номенклатура.Ссылка = &ВыбТовар";
    
    Запрос_.УстановитьПараметр("ПометкаУдаления", Ложь);
    Запрос_.УстановитьПараметр("ВыбТовар", Товар);
    
    РезультатЗапроса_ = Запрос_.Выполнить();
    
    Если НЕ РезультатЗапроса_.Пустой() Тогда
        Возврат Истина;
    КонецЕсли;
    ЗаписатьОшибкиПредупреждения("Товар "+Товар+" не попал в обмен так как (Либо) незаполнена картинка, картинка помечена на удаление или у товара не указана группа!", ТекущаяДата(), "Предупреждение", "ОтвечаетТребованиям");
    Возврат Отвечает;
КонецФункции

//ПОлучить узел обмена
//Здесь я реализовал получение только одного узла так как у данного клиента должен быть только один
Функция ПолучитьУзелОбмена()    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ОбменССайтомНовый.Ссылка
        |ИЗ
        |    ПланОбмена.ОбменССайтомНовый КАК ОбменССайтомНовый
        |ГДЕ
        |    ОбменССайтомНовый.ОбменТоварами = &ВыполнятьОбменТоварами";
    
    Запрос.УстановитьПараметр("ВыполнятьОбменТоварами", Истина);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Возврат ВыборкаДетальныеЗаписи.Ссылка;
    КонецЦикла;
    Возврат Неопределено;
КонецФункции

//Просто пишем ошибки в журнал
Процедура ЗаписатьОшибкиПредупреждения(ОписаниеОшибки, ДатаОшибки, ТипСообщения,ДействиеИсточник)
    
    Если ТипСообщения = "Ошибка" Тогда
        МенеджерЗаписи                = РегистрыСведений.ЖурналОбменаССайтом.СоздатьМенеджерЗаписи();
        МенеджерЗаписи.Период              = ТекущаяДата();
        МенеджерЗаписи.ОписаниеСообщения   = ОписаниеОшибки;
        МенеджерЗаписи.ДействиеИсточник    = ДействиеИсточник;
        МенеджерЗаписи.ТипСообщения        = ТипСообщения;
        МенеджерЗаписи.Записать();    
    ИначеЕсли ТипСообщения = "Предупреждение" Тогда
        МенеджерЗаписи                = РегистрыСведений.ЖурналОбменаССайтом.СоздатьМенеджерЗаписи();
        МенеджерЗаписи.Период              = ТекущаяДата();
        МенеджерЗаписи.ОписаниеСообщения   = ОписаниеОшибки;
        МенеджерЗаписи.ДействиеИсточник    = ДействиеИсточник;
        МенеджерЗаписи.ТипСообщения        = ТипСообщения;
        МенеджерЗаписи.Записать();    
    Иначе // Забыл описать тип сообщения
        МенеджерЗаписи                = РегистрыСведений.ЖурналОбменаССайтом.СоздатьМенеджерЗаписи();
        МенеджерЗаписи.Период              = ТекущаяДата();
        МенеджерЗаписи.ОписаниеСообщения   = ОписаниеОшибки;
        МенеджерЗаписи.ДействиеИсточник    = ДействиеИсточник;
        МенеджерЗаписи.ТипСообщения        = "Неопознаный тип сообщения";
        МенеджерЗаписи.Записать();    
    КонецЕсли;
    
КонецПроцедуры

//Подготовительная функция
//Здесь мы готовим данные к обмену
Функция ВыполнитьОбменССайтом() Экспорт
    УзелОбмена = ПолучитьУзелОбмена();// потом можно будет переделать на несколько узлов следовательно здесь может быть цикл но в нашем случе не нужно этого делать
    Если УзелОбмена <> Неопределено Тогда
       ТоварыКОбмену = ПолучитьИПОложитьВМассивИзмененныеОбъекты(УзелОбмена); //"ТоварыКОбмену" => Массив
       Если ТоварыКОбмену.Количество() > 0 Тогда
           //Выгружаем всегда сперва Склады затем Виды цен
           Для Каждого Товар из  ТоварыКОбмену Цикл
               //Получаем на товар его группы в которых он состоит и пихаем их в шапку XML
               //Получаем характеристики товара и то же в шапку их
               //********************************************************************************
              
               //********************************************************************************
               //Здесь Формируем XML пакет с данными о товаре, его цены и остатки, фото и т д
               //Далее пакуем в зип и скармливаем Сайту
              
               ДанныеУспешноОтправлены = Ложь;
               //Отправляем данные на сайт
               //********************************************************************************
              
               //********************************************************************************
               ДанныеУспешноОтправлены = ОтправитьДанныеНаСайт(ДанныеУспешноОтправлены);
              
               Если ДанныеУспешноОтправлены = Истина Тогда
                   ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена,Товар);
               Иначе
                   //Пишем в журнал ожибку о том что не выполнено
               КонецЕсли;
           КонецЦикла;
       КонецЕсли;
    КонецЕсли;
КонецФункции

//Соединяемся с сайтом и отправляем ему данные
//При ошибке возвращаем ее описание и флаг Успех = Ложь
Функция ОтправитьДанныеНаСайт(Успех)
    Успех = Истина;
    
    Если Успех = Ложь Тогда
        //Пишем в журнал ошибку с указанием на товар    
    КонецЕсли;
    
    Возврат Успех
КонецФункции

//Выбираем измененные объекты Ложим их в массив и устонавливаем флаг о том что мы готовы к обмену!
Функция ПолучитьИПОложитьВМассивИзмененныеОбъекты(УзелОбмена)
    МассивИзменений = Новый Массив;
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    НоменклатураИзменения.Ссылка
        |ИЗ
        |    Справочник.Номенклатура.Изменения КАК НоменклатураИзменения
        |ГДЕ
        |    НоменклатураИзменения.Узел = &Узел";
    
    Запрос.УстановитьПараметр("Узел", УзелОбмена);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        МассивИзменений.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
    КонецЦикла;
    
    Если МассивИзменений.Количество() > 0 Тогда
        ПланыОбмена.ВыбратьИзменения(УзелОбмена,УзелОбмена.НомерОтправленного,МассивИзменений);
        
        УзелОбъект = УзелОбмена.ПолучитьОбъект();
        УзелОбъект.НомерОтправленного = УзелОбъект.НомерОтправленного+1;
        УзелОбъект.Записать();
        
        Возврат МассивИзменений;
    Иначе
        
        Возврат МассивИзменений;
    КонецЕсли;    
КонецФункции
36 rozer76
 
29.06.21
13:45
(34) ну, да, пилишь свой xdto пакет, заполняешь его и пишешь в ЗаписьXML
37 apdate by
 
29.06.21
13:57
(36) спасибо за подсказку буду читать я с XDTO не работал ни разу (
38 rozer76
 
29.06.21
16:55
(37) да пиши хоть руками XML хоть черед DOM - XDTO проще и типизация гвоздями прибита ) Вон Хрусталева без XDTO обходиться https://its.1c.ru/db/pubintromobile/content/131/hdoc
39 fisher
 
29.06.21
17:03
(0) Что касается платформенных механизмов, то в "Проф-разработке" хорошо расписано.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.