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

Обменданными загрузка как установить

  • автор:

Использование признака ОбменДанными.Загрузка в обработчиках событий объекта

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

1. Все действия в процедурах-обработчиков событий ПередЗаписью, ПриЗаписи, ПередУдалением должны выполняться после проверки на ОбменДанными.Загрузка :

Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

// код обработчика
// .
КонецПроцедуры

Это необходимо для того, чтобы никакая бизнес-логика объекта не выполнялась при записи объекта через механизм обмена данными, поскольку она уже была выполнена для объекта в том узле, где он был создан. В этом случае все данные загружаются в ИБ «как есть», без искажений (изменений), проверок или каких-либо других дополнительных действий, препятствующих загрузке данных.

Кроме механизма обмена данными есть и другие случаи, когда это должно быть так. В общем виде следует руководствоваться следующим подходом: механизмы, не рассчитанные на особенности конкретных конфигураций, должны иметь возможность загрузить данные при установленном флаге загрузки так, как будто текста обработчика нет вообще:

Например, требуется загрузить всю базу из XML «как есть». Для этого должно быть достаточно установить записываемым объектам ОбменДанными.Загрузка = Истина и все данные должны загрузиться без искажений, проверок и дополнительных действий, т. е. так же как и при пустом обработчике.

2. Исключение составляет механизм обмена данными, который в ходе загрузке данных в базу регистрирует эти данные к выгрузке на других узлах плана обмена.

В тех случаях, когда в конфигурации используется подсистема «Обмен данными» БСП, и возникла необходимость отключить ее, следует устанавливать дополнительное свойство ОтключитьМеханизмРегистрацииОбъектов :

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

3. Требования выше также распространяются на обработчики подписок на эти события.

4. При этом вызывающая сторона, выставляя записываемому объекту признак ОбменДанными.Загрузка в Истина , берет на себя ответственность за целостность данных этого объекта.

Например, при записи объекта через механизм обмена данными в РИБ это обеспечивается корректным состоянием объекта в том узле, где он был создан (или изменен).

В других случаях вызывающая сторона должна принять меры по корректному заполнению записываемого объекта. Например, при загрузке данных через механизм обмена данными по правилам конвертации или с помощью формата EnterpriseData, следует выполнять все необходимые действия по (до)заполнению объекта. Эти действия рекомендуется размещать в экспортных процедурах самого объекта, которые используются вызывающей стороной при записи объекта в режиме обмена данными.

Обменданными загрузка как установить

Всем привет!
При выгрузке через обработку «УниверсальныйОбменДанными. » есть возможность установить галочку «ОбменаДанными.Загрузка = Истина».
Как установить эту галочку в конфигурации «Конвертация данных»? Можно ли задать эту опцию для отдельных объектов конфигурации?

Обмен данными происходит через план обмена с прямым подключением к базе-приёмнику.

это проперти Объекта
ПослеЗагрузки
Если Не ОбъектНайден Тогда
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
КонецЕсли;

(2) — хм. Что-то не работает. Всё равно выполняет код после

Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

Может попробовать в событии ПКО «При загрузке»?

(3)Так оно для того там и проверяется
(3)Чтобы обойти всякие хитрые проверки и всю подобную лабуду

(4) вот я написал в ПКО:

И в «ПриЗагрузке», и в «ПослеЗагрузки», а при выполнении кода в модуле документа

Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

всё равно Обмен.Данными.Загрузка = Ложь.

значит (Объект.ОбменДанными.Загрузка <> ОбменДанными.Загрузка) = true
(6) и что этот код не падает с ошибкой?
(6)Такой код прервет загрузку. потому что ты выйдешь из процедуры ЗагрузитьИзФайла()
Или ЗагрузитьОбъект() . не помню уже точно

(6) — параметр «Объект.ОбменДанными.Загрузка» я устанавливаю в «Истину» в ПКО.
НО: в модуле документа он по-прежнему равняется «Ложь» 🙁

С ошибкой не вылетает.

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

(12) Для чего режим «ОбменДанными.Загрузка = Истина» и так понятно. Вопрос: кто, где его устанавливает? Вроде как УниверсальныйОбменДаннымиXML, но где, в каком месте? Отловить это мне не удалось. для одних документов он Истина, для других — Ложь. Прописывал в правилах обмена — игнорируется!?

понятно же, что все работает и не игнорируется. просто ты торопишься
в конвертации многое автоматом обернуто в попытку, надо быть аккуратнее
вероятно, если ты детально все опишешь — сам же найдешь косяк

а может это свойство не работает если объект не включен ни в один план обмена
Окуеть зyатоки o_O

Я был не прав — параметр «Объект.Обмен.ЗагрузкаДанных» устанавливается и срабатывает корректно. Дело было в том, что объект выгружался два раза, и при повторной выгрузке параметр равнялся «ложь».
Всем спасибо!

Как я понял, процедура «ПередЗаписью» в модуле документа выполнялась один раз перед записью, и один раз перед проведением.
В связи с этим возникает вопрос: как выгрузить документ таким образом, чтобы он не проводился в базе-приёмнике, но чтобы переносились его движения по регистрам и пометка проведения равнялась истине?

(18) связи нету между посылкой и вопросом. чтобы не выполнялась 2 раза — найди галку не выгружать ляляля по ссылке, чтобы док целиком выгружался 1 раз

(19) — объясню иначе. Я выгружаю только один документ. Загрузка = Истина срабатывает при записи документа. Если же документ проводится, тогда Загрузка автоматом ставится в «Ложь» и выполняются действия, которые не должны (по задумке) выполняться.
Флаг «Не выгружать объекты свойств источника по ссылкам» относится к подчинённым объектам. В своём же случае я выгружаю только один документ и на него не ссылаются другие, так как они попросту не выгружаются.
Я же хочу, чтобы не срабатывал код, который написан в модуле документа в процедуре «Перед записью». Как я понял, при проведении он будет срабатывать в любом случае (или я ошибаюсь?). И единственный способ — не проводить документ, а переносить его движения. Но как это сделать? 🙁

в заказе УТ 10.3
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
так что, если избавишься от двойной загрузки и так взлетит

При выгрузке документа (только одного!) при первом выполнении (при записи) процедуры оператор заходит в цикл (так как ОбменДанными.Загрузка = Истина), а при втором выполнении (при проведении) процедуры оператор НЕ заходит в цикл (так как ОбменДанными.Загрузка = Истина). Какие есть варианты сделать ОбменДанными.Загружка = Истина при проведении? Если написать команду в ПКО, то всё равно при проведении параметр будет равен «Ложь».

(22) — напутал немного.
При выгрузке документа (только одного!) при первом выполнении (при записи) процедуры оператор заходит в цикл (так как ОбменДанными.Загрузка = Истина), а при втором выполнении (при проведении) процедуры оператор НЕ заходит в цикл (так как ОбменДанными.Загрузка = ЛОЖЬ). Какие есть варианты сделать ОбменДанными.Загрузка = Истина при проведении? Если написать команду в ПКО, то всё равно при проведении параметр будет равен «Ложь».

(23) >Какие есть варианты сделать ОбменДанными.Загрузка = Истина при проведении?
Так нельзя. Это в нарушение логики работы конфигурации.
Мучился с такой же проблемой, перенести документ 1 к 1 со всеми движениями из базы в базу.
Получилось только переделкой модуля обмена и модулей документа.
Но на данный момент отказался от переноса 1 к 1, решил, что для нас лучше будет это проведение документа при загрузке. (И при не успешном проведении документ остается старый).

(24) — хм. А на что тогда влияют наборы движений регистров накопления в КД в конвертации свойств? Ведь если бы движения не переносились вручную, а только создавались заново при проведении в базе-приёмнике, то какой смысл от этих строчек («Набор движений регистра накопления») в конвертации свойств? Или я Вас неправильно понял?

(25) В этой конвертации столько заморочек, черт ногу сломит. 🙁
Регистр сведений есть (видимо для переноса независимых регистров), регистра накоплений нет (тоже доделывал, что бы был, но сейчас вернул назад).

CommerceML (Обмен данными)¶

Автоматизированный процесс обмена данными интернет-магазина с системой учета в формате CommerceML позволяет производить автоматическую выгрузку каталога товаров на сайт и заказов клиентов с сайта с учетом категорий, свойств, характеристик и изображений. А также проводить обновление остатков и цен товаров.

Обмен данными¶

  • Обмен данными CS-Cart
    • Выгрузка всех товаров в заказе
    • Загрузка цен в CS-Cart
    • Настройка валют
    • Обмен с несколькими магазинами

    Обмен с 1С¶

    • 1С — синхронизация, настройки и инструкции
      • Возможности
        • Выгрузка из системы учета
        • Загрузка с сайта в систему учета
        • А также
        • Обмен данными между интернет-магазином и 1С УТ 11.1
        • Обмен данными между интернет-магазином и 1С УТ 10.3
        • Обмен заказами между интернет-магазином и 1С УТ 11
        • Обмен заказами между интернет-магазином и 1С УТ 10.3
        • Добавление характеристики товара на стороне 1С
        • Добавление цены товарам
        • Обмен характеристиками
        • Возможности
        • Инструкция
        • Обмен данными “1С в облаке” и CS-Cart
        • Настройки интернет-магазина
        • Настройки 1С
        • Проверка обмена

        Обмен с системой МойСклад¶

        • Настройка обмена данными с системой МойСклад в формате CommerceML
          • Настройки в системе МойСклад
            • Настройте обмен с интернет-магазином
            • Выбор версии схемы
            • Общие настройки
            • Характеристики
            • Цены
            • Доставка
            • Заказы
            • Товарные предложения

            Обмен с Class365¶

            • Настройка обмена данными с системой Class365 в формате CommerceML
              • Настройки в системе Class365
                • Настройте обмен с интернет-магазином
                • Выбор версии схемы
                • Общие настройки
                • Характеристики
                • Цены
                • Доставка
                • Заказы
                • Товарные предложения

                Модификация и расширение¶

                • CommerceML (1С)
                  • Процесс обмена, модификация и тестирование
                    • Выгрузка каталога из системы учета в интернет-магазин
                    • Обмен заказами в формате CommerceML
                    • Этапы проверки модуля обмена для разработчика
                    • Описание import.xml и offers.xml
                    • Описание orders.xml

                    УстановитьОбменДаннымиЗагрузка (БСП)

                  Установить обмен данными загрузка. Устанавливает значение параметра «Загрузка» для свойства объекта «ОбменДанными».

                  // Устанавливает значение параметра "Загрузка" для свойства объекта "ОбменДанными". // // Параметры: // Объект - Любой объект - объект, для которого устанавливается свойство. // Значение - Булево - значение устанавливаемого свойства "Загрузка". // ОтправкаНазад - Булево - признак необходимости регистрации данных к обратной отправке. // УзелОбмена - ПланОбменаСсылка - признак необходимости регистрации данных к обратной отправке. // Процедура УстановитьОбменДаннымиЗагрузка(Объект, Значение = Истина, ОтправкаНазад = Ложь, УзелОбмена = Неопределено) Экспорт Объект.ОбменДанными.Загрузка = Значение; Если Не ОтправкаНазад И УзелОбмена <> Неопределено И НЕ УзелОбмена.Пустая() Тогда ТипЗначенияОбъекта = ТипЗнч(Объект); ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗначенияОбъекта); Если Метаданные.ПланыОбмена[УзелОбмена.Метаданные().Имя].Состав.Содержит(ОбъектМетаданных) Тогда Объект.ОбменДанными.Отправитель = УзелОбмена; КонецЕсли; КонецЕсли; КонецПроцедуры /////////////////////////////////////////////////////////////////////////////////////////////////////// // Copyright (c) 2019, ООО 1С-Софт // Все права защищены. Эта программа и сопроводительные материалы предоставляются // в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) // Текст лицензии доступен по ссылке: // https://creativecommons.org/licenses/by/4.0/legalcode ///////////////////////////////////////////////////////////////////////////////////////////////////////
                  // Устанавливает значение параметра "Загрузка" для свойства объекта "ОбменДанными". // // Параметры: // Объект - Любой объект - объект, для которого устанавливается свойство. // Значение - Булево - значение устанавливаемого свойства "Загрузка". // ОтправкаНазад - Булево - признак необходимости регистрации данных к обратной отправке. // УзелОбмена - ПланОбменаСсылка - признак необходимости регистрации данных к обратной отправке. // Процедура УстановитьОбменДаннымиЗагрузка(Объект, Значение = Истина, ОтправкаНазад = Ложь, УзелОбмена = Неопределено) Экспорт Объект.ОбменДанными.Загрузка = Значение; Если Не ОтправкаНазад И УзелОбмена <> Неопределено И НЕ УзелОбмена.Пустая() Тогда ТипЗначенияОбъекта = ТипЗнч(Объект); ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗначенияОбъекта); Если Метаданные.ПланыОбмена[УзелОбмена.Метаданные().Имя].Состав.Содержит(ОбъектМетаданных) Тогда Объект.ОбменДанными.Отправитель = УзелОбмена; КонецЕсли; КонецЕсли; КонецПроцедуры /////////////////////////////////////////////////////////////////////////////////////////////////////// // Copyright (c) 2019, ООО 1С-Софт // Все права защищены. Эта программа и сопроводительные материалы предоставляются // в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) // Текст лицензии доступен по ссылке: // https://creativecommons.org/licenses/by/4.0/legalcode ///////////////////////////////////////////////////////////////////////////////////////////////////////

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *