Занятие № 10. Курс «1С:Конвертация данных 2.1 – Профессиональная настройка правил обмена и типовые сценарии переноса данных»

Настройки Конвертации данных

Изучите теорию модуля № 2:

  • Глава 2. Настройки Конвертации данных. Правила очистки данных

 

Выполните практическое задание:

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

Ваши вопросы по материалам данного занятия задавайте в комментарии ниже.
Общие вопросы по курсу, не связанные с конкретным занятием, задавайте на странице: http://kursy-po-1c.ru/data-conv/all-hw/convdata-common-qa/

К сожалению, у Вас недостаточно прав для дальнейшего просмотра.

Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.

Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.

Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.

Комментарии / обсуждение (42):

  1. droplet

    Подскажите , когда мы используем параметры в правилах ПОД для обмена на основе БСП, то установку параметров можно выполнить только в коде обработчиков правил, или можно выполнить это где-нибудь в модулях подсистемы обмена данными?

    • Ольга Кузнецова

      Добрый день

      Структура Параметры существует как глобальная переменная в модуле обработки Конвертация объектов информационных баз. Поэтому она доступна из всех обработчиков. А чтобы заполнять ее в общих модулях, ее туда нужно передать. А можно выполнить метод общего модуля, вернуть значение в обработчик и записать его в структуру Параметры.

  2. se1c@yandex.ru

    Здравствуйте. Вопрос по ПКО вкладка Настройки.
    Не включена опция “При переносе объекта по ссылке не создавать новый объект, а только создавать ссылку”
    и включена опция “Не замещать существующие объекты в приемнике при загрузке, а только создавать новые и заполнять их”. В этом случае будет ли изменен объект при переносе по ссылке, если он изменен в базе-источнике?

    • Ольга Кузнецова

      Здравствуйте!
      Нет, если флажок “Не замещать существующие” стоит, то те объекты, которые в базе-приемнике будут найдены, не будут перезаписываться. То есть при выполнении загрузки не изменятся

  3. vitaly.karpov

    Здравствуйте. Файл ConvData-Session-07-BoundaryBox-QA02.avi весит 2 кб, битый что-ли… Хотелось бы посмотреть его.

    • Татьяна Гужавина

      Доброго дня, Виталий!
      Вес файл должен быть 5,69 МБ.
      Попробуйте скачать файл повторно.
      Какой браузер Вы используете? Другие файлы у Вас скачались без проблем?

      • vitaly.karpov

        Браузер Mozilla Firefox. Сейчас нормально скачал файл.

  4. Сергей Онучин

    Здравствуйте!
    В вопросе для самопроверки: “Параметры конвертации могут использоваться:…”
    указан как один из правильных ответов “Для передачи данных из одного ПКО в другое”.
    Мне кажется, что нельзя гарантированно воспользоваться передачей параметров из одного ПКО в другое. При наличии большого количества ПВД, в которых может вызываться как привязанное к нему ПКО, так и какое-либо ПКО программно, а также с учетом вызовов ПКО по ссылкам невозможно установить порядок, в котором будут вызываться различные ПКО. Поэтому нельзя гарантировать того, что ПКО, в котором мы хотим использовать некоторый параметр, будет выполняться после того ПКО, в котором этот параметр устанавливается.

    • Ольга Кузнецова

      Здравствуйте!
      Когда разработчик сам пишет правила и всегда явно указывает ПКО в ПКС, он может точно прогнозировать, в каком порядке будут выполняться ПКО, даже если правила объемные. Вы всегда можете открыть xml-файл правил и выполнить поиск по имени ПКО, и увидите все места, где оно вызывается, программно, из ПВД или из ПКС. Но для этого, повторюсь, во всех ПКС должны быть явно указаны ПКО.

  5. Александр

    Здравствуйте! Не пойму где в справке Конвертации найти информацию о том как подключать внешние обработки, алгоритмы, запросы.

    • Ольга Кузнецова

      Здравствуйте!
      В справке по конвертации нет такой информации. Она есть только в видео-уроках этого курса.

      • Александр

        1С:Справка скоро станет нарицательным :)

        • Ольга Кузнецова

          Информацию о конкретных приемах работы с всеми известными мне обменами данных в 1с можно найти только в отладчике.

          • Александр

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

            • Ольга Кузнецова

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

              • Александр

                Всё хорошо, прекрасная маркиза.
                Дела идут, и жизнь легка.
                Ни одного печального сюрприза
                За исключеньем пустяка.

                Тысячи извинений :)

  6. Александр

    Проясните, пожалуйста, ситуацию с параметрами конфигурации.

    Ситуация первая. Создадим параметр, укажем, что он и в диалоге будет, и при загрузке, и передается в приемник. Вручную проставим значение в обработке выгрузки.
    Далее, например в ПКО, после загрузки мы можем работать с этим значением.

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

    Ситуация третья. Если мы не хотим, чтоб параметр отображался (сняли флаги или вообще создали программно параметр), то передать его в приемник не выйдет вообще? Соответственно, придется писать какой-то свой код (в обработчиках конфигурации или ПКО), который будет создавать доп. узел, атрибут или еще что-то подобное, что на стороне приемника уже обрабатывать.
    Или же есть более простой вариант?

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

    Пробовал следующую схему:
    1. Создал дополнительную обработку, где в модуле разместил 2 экспортные процедуры. Обработку добавил в конвертацию.
    2. Первая процедура вызывается из обработчика “после загрузки правил обмена” так: Процедура1(ЭтотОбъект). В самой процедуре этот параметр (по факту ОбработкаОбъект унив. обмена) присваивается в реквизит обработки.
    3. Далее в этом же обработчике конвертации создается описание оповещения:
    ОписаниеОповещения = Новый ОписаниеОповещения(“ЗавершениеДиалогаНастроек”, ДопОбработки.БиблиотекаПроцедур_ДляКонвертации)

    Где “ЗавершениеДиалогаНастроек” – это имя второй процедуры в доп. обработке.
    А “ДопОбработки.БиблиотекаПроцедур_ДляКонвертации” сама эта обработка.

    4. Далее открываем форму.
    ОткрытьФорму(“ВнешняяОбработка.ВнешняяОбработка_Задание10_1.Форма.Форма”, , , , , , ОписаниеОповещения);

    5. Получается следующая картина: если установить значение реквизита как описано в пункте 2, то прочитав повторно его значение до открытия формы, я получаю тоже количество параметров, что и в обработке обмена.

    6. Но если в процедуре “ЗавершениеДиалогаНастроек” доп. обработки я обращусь к реквизиту (т.е. уже после открытия формы), который устанавливал в пункте 2, то там количество параметров будет 0. Как будто создался новый объект обработки универсального обмена.

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

    Надеюсь что-то возможно понять из моей писанины.
    Возможно ли что-то подобное реализовать? Или единственный вариант – это обычные формы, обычное приложение.

    Спасибо

    • Ольга Кузнецова

      Здравствуйте!

      Если Вы создадите параметр в Конвертации данных и установите флажок “Передавать при выгрузке”, а потом в каком-нибудь обработчике на стороне выгрузки присвоите ему значение, то оно будет доступно в этом параметре и на стороне загрузки. Т.е. значение не обязательно задавать в пользовательском диалоге, оно может быть задано и программно.

      Если Вы хотите, чтобы параметр не отображался в пользовательском диалоге, но передавался в приемник, нужно было бы установить флажок “Передавать при выгрузке”, а флажок “Диалог” не устанавливать. Другое дело, что КД не дает этого сделать. Поэтому стандартного способа передать значение параметра, не показывая параметр в диалоге, нет. Но если очень нужно, можно, например, поправить форму в КД, чтобы эти флажки друг от друга не зависели. Можно подправить сам xml-файл правил, установив для параметра нужные атрибуты. Или можно вручную значение параметра записать в узел, а потом прочитать.

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

  7. Vitaliy Pidopryhora

    Добрый день! есть вопрос по 3-му вопросу теста:
    “В ПКО для Справочника у ПКС Наименование стоит флаг «Поиск объекты при загрузке по свойству». Что будет, если включить у этого ПКС флажок «Не замещать значение свойства у существующих объектов в приемнике»?
    неправильно – В любом случае он не повлияет на то, как будут перенесены данные.
    правильно – Этот флажок может повлиять на загружаемые данные, если производится поиск по Уникальному идентификатору.
    правильно – Этот флажок может повлиять на загружаемые данные, если что-то написано в обработчике Поля поиска.”

    КАК данное ПКС может повлиять на загрузку если не установлен флаг “продолжать поиск по полям поиска”?

    “Этот флажок может повлиять на загружаемые данные, если производится поиск по Уникальному идентификатору”
    почему? разве поиск идет по наименованию?

    “Этот флажок может повлиять на загружаемые данные, если что-то написано в обработчике Поля поиска.”
    разве обработчик “Поля поиска” автоматически включает поля поиска?

    или я запутался… ?

    • Ольга Кузнецова

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

  8. RomanB

    Добрый день!
    Вопрос по тесту для самопроверки №4:
    При настройке правил было создано два ПКО для справочника Товары, одно для выгрузки по ссылкам из документов, другое — для выгрузки из ПВД Товары. Как настроить кэширование, чтобы каждый элемент справочника Товары выгружался в файл данных один раз?

    Разве кеширование происходит не по ключу выгружаемых данных? В данном случае КлючВыгружаемыхДанных = Ссылка на товар.

    • Ольга Кузнецова

      Здравствуйте!
      Кэширование производится только в рамках одного ПКО. Стандартными средствами эта задача не решается

  9. Игорь

    Когда сделал автоматическое создание всех правил исходная-конечная базы. при обновлении в базе “источник” появляется ошибка “Тип не определен”

    {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(2160)}: Тип не определен (ДокументСсылка.ПоступлениеДенег)
                        НоваяСтрока.Источник = Тип(Значение);

    • Ольга Кузнецова

      Здравствуйте!
      А в той базе, где Вы загружаете правила, есть такой документ “ПоступлениеДенег”? Может, Вы не для тех баз настраивали правила, или Источник с Приемником перепутали?

  10. Станислав Бобков

    При настройке правил было создано два ПКО для справочника Товары, одно для выгрузки по ссылкам из документов, другое — для выгрузки из ПВД Товары. Как настроить кэширование, чтобы каждый элемент справочника Товары выгружался в файл данных один раз?
    Поясните пожалуйста, как решается задача

    • Ольга Кузнецова

      Здравствуйте!
      Эта задача не решается стандартными средствами никак. Ее можно решить при большом желании, но будет много “ручной” работы с XML, формирование и добавление узлов.

      • alest

        Здравствуйте, коллеги
        С узлами даже? А ВыгруженныеОбъекты не поможет?

        • Ольга Кузнецова

          Здравствуйте!
          ВыгруженныеОбъекты – это объекты, выгруженные по данному ПКО.

          • alest

            Хорошо, ну а если создать свою коллекцию, которую заполнять для обоих ПКО?

            • Ольга Кузнецова

              Можно и так. Но тогда в ней придется хранить узлы ссылок, которые мы будем подставлять в файл там, где нам встретился этот объект. Поэтому это и есть работа с узлами

              • alest

                Ок. Хотя моя идея была из своей коллекции вставлять в ВыгруженныеОбъекты. Вкакой именно момент система проверяет по ней уже выгруженные объекты?
                Или в ВыгруженныеОбъекты узлы и хранятся? %)

                • Ольга Кузнецова

                  В соответствии ВыгруженныеОбъекты хранятся узлы ссылок. Проверка выполняется сразу после события ПКО Перед выгрузкой. Теоретически можно в одном ПКО “запоминать” узлы ссылок в Параметры, а в другом вставлять их в коллекцию ВыгруженныеОбъекты. Если есть желание, попробуйте и напишите потом, что получилось :)

  11. Alexander Fokin

    Попытался в конечной иб воспользоваться выгрузкой, причем в правилах обмена подцепил внешнюю обработку с флагом “Это обработка с формой настройки”. Кнопка с открытием формы обработки наверху не появилась – почему?

    • Ольга Кузнецова

      Здравствуйте!
      В Управляемой форме вообще не предусмотрена кнопка для обработок настроек. Как вариант, можно открыть форму своей обработки в событии После загрузки правил обмена

  12. aPOSTAL

    В видеоуроке 2.2.6 продемонстрирована очень странная логика работа настройки ПКО “При переносе объекта по ссылке не создавать новый объект, а только переносить ссылку”. Что она на самом деле делает и зачем она нужна?

    • Ольга Кузнецова

      Здравствуйте!
      Вообще говоря, мне ни разу не случалось пользоваться этой настройкой, видимо, она нужна только в каких-то экзотических случаях. Она работает не сама по себе, а только вместе с другими настройками. В видео-уроке демонстрировалась выгрузка Должностей по ссылкам из Подразделений. Вот если в ПКО для Подразделений поставить флажок “Не выгружать объекты свойств источника по ссылкам”, то те должности, которые встретятся по ссылкам из Подразделений, не будут выгружены в отдельный узел-объект, а от них будет выгружена только ссылка – т.е. свойства, отмеченные флагом поиска + UUID, если по нему установлен поиск. И при загрузке будут созданы элементы справочника Должности, заполненные лишь частично.
      Если же кроме флажка “Не выгружать объекты свойств источника по ссылкам” в ПКО для Подразделений установить еще флажок “При переносе объекта по ссылке не создавать новый объект, а только переносить ссылку” в ПКО для Должностей, то те должности, которые не будут найдены в базе-приемнике, не будут созданы вовсе, а в Подразделении будет “битая” ссылка на справочник Должности.
      Если же после этого загрузить отдельно справочник Должности, то “битые” ссылки будут заполнены, так как элементы с этими ссылками будут записаны в справочник.

      • aPOSTAL

        Пример практического применения понятен, спасибо.
        А почему в примере из видеоурока поле КодПоОКПДРТ восстановилось после повторного переноса данных?
        Судя по всему, в названии настройки под “ссылкой” понимается не просто UUID, а узел ссылки, т.е. все свойства, отмеченные флагом поиска + UUID.
        Т.е. если бы в примере видеоурока свойство КодПоОКПДРТ было помечено галочкой Поиск – все было бы понятно: при загрузке объект нашли по UUID и перезаписали в нем все реквизиты, которые были в файле обмена.
        Так ведь не был же КодПоОКПДРТ помечен флагом поиска! Как он вообще в файл выгрузки попал?

        • Ольга Кузнецова

          Нет, в данной настройке под ссылкой понимается именно UUID. На мой взгляд, в видео-уроке должны были все свойства заместиться. Эта настройка относится к загрузке – если в свойстве встретилась ссылка, то от нее устанавливается только UUID. Но в настроенных правилах не было ничего, что помешало бы должности выгрузиться в отдельный узел-объект. А к отдельным объектам эта настройка отношения не имеет.

Комментарии закрыты