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

Обработчики событий конвертации данных

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

  • Глава 1. Обработчики событий и особенности их применения

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

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

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

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

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

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

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

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

  1. AVorobeva

    Добрый день. При загрузке данных возникла ошибка (во вложении). Правила прикладываю.

    • Кузьмин Сергей


      (текст комментария доступен только участникам Мастер-группы)

        • AlexeyDubrovin

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

          Ошибка в обработчике события ПриЗагрузкеОбъекта
              ИмяПКО                 =  Пользователи
              ТипОбъекта             =  Пользователи
              Объект                 =  <>
              Обработчик             =  ПриЗагрузкеОбъекта
              ОписаниеОшибки         =  Ошибка при вызове метода контекста (Записать): Попытка изменения информации о пользователе информационной базы по умолчанию.
              ПозицияМодуля          =  (22)
              КодСообщения           =  20

          Эта ошибка из-за отсутствия строчки Значение = Источник.ПолноеИмя; в обработчике ПКС Наименование для справочника Пользователи. В результате значение не заполнено и при загрузке получаем ругань.

            • AlexeyDubrovin

              Добрый день
              Ваша выгрузка загрузилась в учебной платформе 8.3.22.1603 без ошибок.
              8.3.22.1851 у меня нет. Возможно, что какой-то глюк в Вашей версии платформы. Базу не изменяли ?

                • AlexeyDubrovin

                  Проверьте внимательно, точно ли Вы загружаете тот же файл, который приложили к сообщению ?
                  И, тогда, для полной картины приложите базу в которую загружаете (конечную)

  2. Roma1

    Добрый день! Как узнать что вызывает ПКО. Есть несколько мест где есть вызов.

    • AlexeyDubrovin

      Либо по косвенным признакам, включив комментирование выгрузки.
      Либо передавать что-нибудь через Исходящие/Входящие Данные и через сообщить выводить информацию

  3. Ponomalena

    Добрый день! Каким образом можно привязать пользователя к пользователю ИБ? Пытаюсь в ПКО После загрузки найти пользователя ИБ методом НайтиПоУникальномуИдентификатору() передав туда УИД. УИД пыталась получить и из источника, и после записи пользователя ИБ передав его в параметр, безрезультатно

    • AlexeyDubrovin

      Что-то не очень понял откуда уникальный идентификатор все-таки ?

      Если у Вас и в приемнике и в источнике уже есть ПользовательИБ, то УИД у них разный, искать по УИД бесполезно. Вообще сценарий примерно такой

      1) в обработчике ПриВыгрузке ПКО Пользователи пишем

      ИнформацияОПользователе = СоздатьУзел("ИнформацияОПользователе");
      УстановитьАтрибут(ИнформацияОПользователе, "АутентификацияОС", Источник.АутентификацияОС);
      УстановитьАтрибут(ИнформацияОПользователе, "АутентификацияСтандартная", Источник.АутентификацияСтандартная);
      УстановитьАтрибут(ИнформацияОПользователе, "ПоказыватьВСпискеВыбора", Источник.ПоказыватьВСпискеВыбора);
      УстановитьАтрибут(ИнформацияОПользователе, "ПользовательОС", Источник.ПользовательОС);
      УстановитьАтрибут(ИнформацияОПользователе, "ПолноеИмя", Источник.ПолноеИмя);
      УстановитьАтрибут(ИнформацияОПользователе, "Имя", Источник.Имя);
      ДобавитьПодчиненный(Приемник, ИнформацияОПользователе);

      2) В обработчике ПриЗагрузке

      Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени(Объект.Код);
      Если Пользователь = Неопределено Тогда
          Пользователь = ПользователиИнформационнойБазы.СоздатьПользователя();
          Пользователь.Имя      = СокрЛП(Объект.Код);
          Пользователь.ПолноеИмя = СокрЛП(Объект.Наименование);
      КонецЕсли;
      Пока ФайлОбмена.Прочитать() Цикл
          ИмяУзла = ФайлОбмена.ЛокальноеИмя;
          ТипУзла = ФайлОбмена.ТипУзла;
          Если ИмяУзла = "ИнформацияОПользователе" И (ТипУзла = одТипУзлаXML_НачалоЭлемента) Тогда
              Пользователь.АутентификацияОС          = одАтрибут(ФайлОбмена, одТипБулево, "АутентификацияОС");
              Пользователь.АутентификацияСтандартная = одАтрибут(ФайлОбмена, одТипБулево, "АутентификацияСтандартная");
              Пользователь.ПоказыватьВСпискеВыбора   = одАтрибут(ФайлОбмена, одТипБулево, "ПоказыватьВСпискеВыбора");
              Пользователь.ПользовательОС            = одАтрибут(ФайлОбмена, одТипСтрока, "ПользовательОС");
              Пользователь.ПолноеИмя                 = одАтрибут(ФайлОбмена, одТипСтрока, "ПолноеИмя");
          ИначеЕсли (ИмяУзла = "ИнформацияОПользователе") И (ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда
              Прервать;
          КонецЕсли;
      КонецЦикла;            
      РольПолныеПрава = Метаданные.Роли.Найти("ПолныеПрава");
      Пользователь.Роли.Добавить(РольПолныеПрава);
      Пользователь.Записать();
      Объект.ПользовательИБ = Пользователь.УникальныйИдентификатор; //привязали по УИД
      • Ponomalena

        Да, так я тоже пробовала, при таком коде выдает ошибку
        Ошибка в обработчике события ПриЗагрузкеОбъекта
        ИмяПКО = Пользователи
        ТипОбъекта = Пользователи
        Объект = Администратор
        Обработчик = ПриЗагрузкеОбъекта
        ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Попытка изменения информации о пользователе информационной базы по умолчанию.
        ПозицияМодуля = (52)
        КодСообщения = 20

        • AlexeyDubrovin

          Воспроизвел подобную ошибку.
          Если в базе нет ни одного ПользовательИБ и написать нечто типа такого

          Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
          Пользователь.Записать();

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

          • Ponomalena

            В исходной 2 пользователя, в конечной 1, все с полными правами

            • AlexeyDubrovin

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

  4. Юрий

    Добрый день!
    Заметил интересную особенность при выполнении задачи 2.9.2 . Я взял эталонное решение преподователя и немного его изменил. В ПКО «Пользователи» включил синхронизацию по УИД (хотя в данном случае у нас не ссылочный тип данных же?), отключил ПКО «Код» и включил «Поиск объекта при загрузке по свойству» для ПКС «Наименование». Так же в ПКО «Пользователи» «ПриЗагрузке» заменил везде» Объект.Код» на «Объект.Наименование».
    При многократном выгрузке данные не дублируются – синхронизация работает. Но в данных нет узла {УникальныйИдентификатор}, значит синхронизация проходит по наименованию, не смотря на то, что у нас не стоит флаг для ПКО «Продолжить поиск по полям поиска».
    Можно ли из данного примера сделать вывод, что если узел {УникальныйИдентификатор} не создался в файле выгрузки(ссылка из ПВД не пришла), и у нас есть ПКС с флагом(ми) «Поиск объекта при загрузке по свойству», то синхронизация будет проходить по данным полям независимо от флага ПКО «Продолжить поиск по полям поиска»?
    Спасибо!

    • AlexeyDubrovin

      Добрый день
      Да, Вы правы. Поиск по уникальному идентификатору происходит только для типов, имеющих ссылку.
      При выгрузке уникальный идентификатор получается в процедуре ВыгрузитьСвойства из модуля обработки УниверсальныйОбменДаннымиXML.
      ИначеЕсли ПКС.Имя = “{УникальныйИдентификатор}”
      И ПКС.Источник = “{УникальныйИдентификатор}”
      И ПКС.Приемник = “{УникальныйИдентификатор}” Тогда
      Попытка
      УникальныйИдентификатор = Источник.УникальныйИдентификатор();
      Исключение
      Попытка
      УникальныйИдентификатор = Источник.Ссылка.УникальныйИдентификатор();
      Исключение
      Продолжить;
      КонецПопытки;
      КонецПопытки;

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

  5. Nessy-888

    Задание 2.9.1.
    1. Корректно ли написан текст задания?
    “При загрузке правил обмена…” у нас нет такого обработчика, только “После загрузки правил обмена..”
    2. В обработчике “После загрузки правил обмена” не работают интерактивные функции

    Сообщить("Ввод даты загрузки");
    ВвестиДату(ДатаПереноса, Подсказка, ЧастиДаты.Дата);

    Функция сообщить() не выводит сообщение на экран, а ВвестиДату() не создает соответствующее диалоговое окно.
    В задании предполагалось создание внешней обработки для ввода и проверки даты?
    Или достаточным решением был бы код в обработке “перед выгрузкой данных” проверяющий правильность введенной даты, что не совсем соответствует тексту задания “Интерактивно запрашивать значение параметра….”

    С уважением,

    Леонид

    По п. 2 Вопрос снят. Все заработало.

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

      Добрый день

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

  6. Алексей

    Добрый день!
    В уроке 7 было отмечено, что при использовании ПВД с произвольным алгоритмом обязательно необходимо устанавливать флаг “Не запоминать выгруженные объекты”. Однако и в предыдущих уроках, и при выполнении практических заданий такие ПВД часто использовались, при этом данный флаг не устанавливался и все работало вроде бы как корректно. Проясните, пожалуйста, на что влияет данный флаг вообще и в случае ПВД с произвольным алгоритмом в частности.

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

      Добрый день

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

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

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

  7. maksobninsk

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

    СтрЗаменить("СправочникСсылка.Сотрудники","СправочникСсылка.Работники")

    Но что делать, если этих типов предостаточно? Каким образом настроить универсально?
    Заранее, спасибо!

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

      Добрый день.

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

  8. zvivla

    Здравствуйте. При выполнении задания 2.9.2 выходит ошибка:
    Ошибка формата файла обмена
    ИмяУзла = ИнформацияОПользователе

    Код вставляла как в ответе на вопрос “1. Запись произвольных данных в обработчике конвертации «После выгрузки данных»” на этой странице

  9. Сергей

    Хочу уточнить насчет “КлючВыгружаемыхДанных”. В каких случаях он может использоваться?
    Я понял, что, во-первых, когда нужно расщепить один объект на несколько (например, в случае когда независимый справочник нужно перенести в подчиненный).
    Во-вторых, для уменьшения объема выгружаемых данных. Например, если не определен источник и мы его заполняем программно. Тогда можно определить ключ и принудительно включить запоминание выгруженных объектов.
    Есть еще какое-то применение? На синхронизацию при загрузке объекта этот параметр ведь никак не влияет?

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

      КлючВыгружаемыхДанных определяется всегда, когда стандартное кэширование не может работать или не подходит.
      Стандартное кэширование использует в качестве ключа результат функции ЗначениеВСтрокуВнутр() от значения, содержащегося в параметре Источник. А ключ должен быть уникальным для каждого итогового объекта, то есть объекта в базе-приемнике. Поэтому если, например, в Источник по очереди попадают строки таблицы значений, сформированной в произвольном алгоритме, то стандартный ключ от них всех будет одинаковый, и его нужно переопределить. И если один объект выгружается в два разных, ключ от этого объекта тоже нужно переопределить, иначе объекты “сливаются”.

      К синхронизации при загрузке ключ не имеет никакого отношения. Он используется только при выгрузке и на сторону загрузки не передается

      • Сергей

        Стандартное кэширование – это стандартный способ получения ключа выгружаемых данные, описанный в справке конфигураци (“По умолчанию – это ссылка на объект Источник, а если Источник неопределен, то используется ИмяПКО (подразумевается, что правило описывает в таком случае один объект-приемник)”?

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

          Да, стандартное кэширование – это стандартное получение ключа.

          В случае, если ПКО настраивается без источника, кэширование вообще автоматически отключается.

          • Сергей

            Спасибо большое. Теперь все понял.

            (тут чуть ниже мой ответ от 09.05.2017 все никак модерацию не пройдет. Не то, чтобы мне там нужен был какой-то ответ, просто как-то неправильно это)

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

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

  10. Aleko

    Добрый день. Проверил решение по заданию 2.9.1. Получается, что окно ввода даты вызывается дважды — событие «После загрузки правил обмена» вызывается и при чтении правил, и при выгрузке данных. Причем оказывается, что при втором вызове программа «не видит» значение параметра, установленного при первом вызове, и опять предлагает его ввести. Что-то здесь не так…

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

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

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

      • Сергей

        Тоже столкнулся с такой проблемой. Это, видимо, ошибка обработки “Универсальный обмен данными”.

        При нажатии кнопки “Прочитать правила обмена” все отрабатывает нормально. А при нажатии кнопки “Выгрузить данные” выполняются другие процедуры и происходит интересная вещь:
        1. Загружаются правила обмена, в процессе выполняется код обработчика “После загрузки правил обмена”, в нем присваивается нужное значение параметра.
        2. Затем выполняется какая-то процедура инициализации этих параметров (судя по описанию это должно быть обновление значений параметров на форме обработки “Универсальный обмен данными”)
        3. Затем выполняется еще одна процедура (судя по описанию параметры из значений на форме помещаются в какую-то таблицу значений). И вот здесь видна проблема. Потому что значение параметров на форме старые, то есть те, которые были до начала выгрузки данных.
        Получается, что таблица со значениями параметров на форме на этапе 2 и таблица со значениями параметрво на форме на этапе 3 – это разные таблицы. Поэтому не происходит обновление данных, хотя обработчик отрабатывает правильно.

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

          Добрый день!

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

          • Сергей

            Нет, не стоит. Дело видно в версих обработки “Универсальный обмен данными”.
            На 2.1.6 обработчик “После загрузки правил обмена” отрабатывает только один раз, при нажатии на кнопку “Прочитать правила обмена”. При нажатии на кнопку “Выгрузить данные” этого не происходит.
            На 2.1.8 обработчик “После загрузки правил обмена” отрабатывае два раза, один при нажатии на кнопку “Выгрузить данные”, второй раз при нажатии кнопки “Выгрузить данные”. При этом во второй выбранное значение не сохраняется. Просто это немного сбивает с толку.

            Приложил правила обмена. В них только установка этого параметра.

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

              Нет, все равно у меня не воспроизводится.

              Сайт поддерживает не все виды вложений, поэтому, чтобы прикрепить правила к комментарию, их нужно запаковать в архив с расширением zip или rar

  11. Aleko

    Добрый день. Подскажите, а есть ли возможность перенести пароли Пользователей ИБ? Например, при создании чистой базы, в которую будут перенесены начальные остатки на определенную дату из старой ИБ, для того же самого состава пользователей?

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

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

      Не пробовала, но должно быть можно. У пользователя информационной базы есть свойство СохраняемоеЗначениеПароля. Значение этого свойства нужно получить у пользователя в одной базе, выгрузить в файл, и потом установить у пользователя в другой базе.

  12. Aleko

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

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

      Здравствуйте!
      Тогда нужно проверять значение параметра в обработчике конвертации Перед выгрузкой данных. Здесь уже можно проверить, не отключил ли пользователь конкретное ПВД. Список правил выгрузки хранится в глобальной таблице ТаблицаПравилВыгрузки. Там нужно проверять колонку “Включить”, если в ней значение 0, то правило выключено. Наименование ПВД хранится там в колонке “Имя”.

  13. cezarj

    Здравствуйте! Не пойму как в задании 2.9.2 Обратиться к пользователям Исходный базы созданным в конфигураторе. Я так понял нужно именно их получить запросом и передать в узел обмена.

    • cezarj

      А все понял, спасибо)

      ПользователиИнформационнойБазы.ПолучитьПользователей();
  14. Nei

    Добрый день. В решении задания 2.9.2 в ПКО Пользователи, в о/с При загрузке используется ФайлОбмена. Я так понимаю, что это вероятно параметр, но почему он не описан в Информации по обработчикам? ФайлОбмена.ЛокальноеИмя – это свойство его? Где можно прочитать об этом?

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

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

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

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

      ФайлОбмена – объект типа ЧтениеXML, он создается для чтения файла данных. При загрузке он анализируется построчно. ФайлОбмена.ЛокальноеИмя – имя текущего читаемого узла.

  15. mars505

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

    • mars505

      Похоже, мне ответили в видеоуроке 2.5.5. Теперь понятно.

  16. KolG

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

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

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

  17. adanos@ngs.ru

    Здравствуйте.
    Если мы записываем в XML файл произвольную информацию в событии ПКО ПослеВыгрузки, то она запишется после свойств, но возникает вопрос как ее обработать.

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

      Здравствуйте!
      Вы, видимо, добавляете информацию не в файл, а в Приемник – формируемый узел объекта. Туда на данном этапе можно добавить только те реквизиты, которые могут быть прочитаны автоматически. Какая задача у Вас?

      • adanos@ngs.ru

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

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

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

  18. Александр

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

    Помогите пожалуйста не знаю в какую сторону копать.
    Есть справочник номенклатура в одной базе и такой же в другой, нужно что бы из источника выгружалось в приемник в определенную группу к примере “Номенклатура Источника”.
    Создаю 2 ПКО для номенклатуры один для переноса второй чисто для поиска этой группы, можно конечно было в одном ПКО проверять при загрузке родителя и если пустой подставлять эту группу но мне кажется что это не оптимально так как при каждой загрузке объекта такого будет обращение на поиск группы по наименованию.
    Поэтому решил сделать второе ПКО служебное с поиском этого родителя все таки в УВД содержатся свои механизмы кеширования и оптимизации.
    У родителя в первом ПКО основном пишу код:

    Если ЗначениеЗаполнено(Источник.Родитель) Тогда
        ИмяПКО = "Номенклатура";
    Иначе
        ИмяПКО = "НоменклатураПоискПоНаименованию";
    КонецЕсли;
    Сообщить(ИмяПКО);

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

    Сообщить("Правило НоменклатураПоискПоНаименованию");

    И как выяснил перехода на это ПКО не происходит, а выгружается все по первому
    Если у первого правила удалить код и оставить только:

        ИмяПКО = "НоменклатураПоискПоНаименованию";

    То выгружается все по этому ПКО, что я не так делаю в чем причина?
    Правила прикрепил к сообщению.

    • Александр

      все сделал сам, а ларчик просто открывался
      при пустом источнике правило просто не вызывалось, как установил источник правило заработало
      об этом говорили, но я забыл )))

      Если ЗначениеЗаполнено(Источник.Родитель) Тогда
         ИмяПКО = "Номенклатура";
      Иначе
         Значение = 1;
         ИмяПКО = "НоменклатураПоискПоНаименованию";
      КонецЕсли;
  19. vitaly.karpov

    Вопрос снят. Стояла галка “Режим отладки обработчиков загрузки”.

  20. vitaly.karpov

    В ПКО Товары “При Загрузке”, даже если написать “//”, появляется ошибка
    ОписаниеОшибки = Метод объекта не обнаружен (ПКО_ПриЗагрузке_Товары). Подозреваю что так будет в любом другом ПКО в событиях на стороне Конечной ИБ. Что не так?

  21. vitaly.karpov

    “alexeyal 29.06.2015 Здравствуйте! В ходе выполнения ДЗ 2.9.2 создал ПВД с произвольным алгоритмом + ПКО, получил ошибку Ошибка в обработчике события ПослеЗагрузкиОбъекта ИмяПКО = Пользователи ТипОбъекта = Пользователи Объект = Админ Обработчик = ПослеЗагрузкиОбъекта ОписаниеОшибки = Метод объекта не обнаружен (ПКО_ПослеЗагрузки_Пользователи) ПозицияМодуля = (1) КодСообщения = 21 понимаю, что проблема в ПКО обработчике после загрузки. Решил Вывести Сообщение, остальной код закомментировать, но ошибка осталась, закомментировал вообще весь код, ошибка осталась, на момент получения ошибки обработчик выглядит так : //Сообщить(«1″); //ТекПользователь = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Объект.ПользовательИБ); Ошибка исчезает после полной очистки обработчика и справочник Пользователи в конечной базе загружается, но почему так происходит и как писать обработчик ПослеЗагрузки ?”

    Здравствуйте. Возникает точно такая же ошибка. Куда копать?

  22. alexeyal

    Здравствуйте!
    В ходе выполнения ДЗ 2.9.2 создал ПВД с произвольным алгоритмом + ПКО, получил ошибку

    Ошибка в обработчике события ПослеЗагрузкиОбъекта
    ИмяПКО = Пользователи
    ТипОбъекта = Пользователи
    Объект = Админ
    Обработчик = ПослеЗагрузкиОбъекта
    ОписаниеОшибки = Метод объекта не обнаружен (ПКО_ПослеЗагрузки_Пользователи)
    ПозицияМодуля = (1)
    КодСообщения = 21

    понимаю, что проблема в ПКО обработчике после загрузки.
    Решил Вывести Сообщение, остальной код закомментировать, но ошибка осталась, закомментировал вообще весь код, ошибка осталась, на момент получения ошибки обработчик выглядит так :
    //Сообщить(“1”);
    //ТекПользователь = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Объект.ПользовательИБ);

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

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

      Здравствуйте!
      Напишите на странице вопросов по домашним заданиям и прикрепите к комментарию правила в zip или rar архиве, я посмотрю, в чем проблема

  23. vovic

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

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

      Здравствуйте!
      Дело в том, что при повторной загрузке элемента справочника, он не будет перезаписан. При загрузке объекта сначала осуществляется поиск аналогичного ему объекта в базе. Если этот объект найден, происходит сравнение свойств загружаемого объекта и найденного. Если все свойства совпадают, и при загрузке не выполняются обработчики “При загрузке” и “После загрузки”, то считается, что объект в процессе загрузки не изменен и перезаписи его не происходит.
      А документ содержит табличную часть. В курсе рассказывается, что сравнения табличных частей при загрузке не происходит, табличная часть просто заменяется на новую. В этом случае объект считается измененным и перезаписывается

      • vovic

        Спасибо за разъяснения. Правда не помню, где в курсе говорилось о том, что если ни одно свойство объекта не изменилось, то вообще перезаписи не будет, хотя это разумно конечно.

  24. Andy

    Добрый день!
    В задании 2.9.2 наблюдается странный эффект. Создаю одного пользователя и его же ищу в спр-ке Пользователи по имени. Отладочное сообщение выдает создан 1 пользователь в справочнике, но по факту получается два. Один (с кодом 0000001) создается правильно,а второй (скодом 0000002)создается без наименования и без ссылки на пользователя ИБ. В чем может быть проблема? Вот код создания.
    Пока ФайлОбмена.Прочитать() Цикл
    ИмяУзла = ФайлОбмена.ЛокальноеИмя;
    ТипУзла = ФайлОбмена.ТипУзла;
    Если ИмяУзла = “ИнформацияОПользователе” И (ТипУзла = одТипУзлаXML_НачалоЭлемента) Тогда
    ИмяПользователя = одАтрибут(ФайлОбмена, одТипСтрока, “ПолноеИмя”);
    Если ЗначениеЗаполнено(ИмяПользователя) тогда
    Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);
    Если Пользователь = Неопределено Тогда
    Пользователь = ПользователиИнформационнойБазы.СоздатьПользователя();
    Пользователь.Имя = СокрЛП(ИмяПользователя);
    Пользователь.ПолноеИмя = СокрЛП(ИмяПользователя);
    КонецЕсли;
    Пользователь.АутентификацияОС = одАтрибут(ФайлОбмена, одТипБулево, “АутентификацияОС”);
    Пользователь.АутентификацияСтандартная = одАтрибут(ФайлОбмена, одТипБулево, “АутентификацияСтандартная”);
    Пользователь.ПоказыватьВСпискеВыбора = одАтрибут(ФайлОбмена, одТипБулево, “ПоказыватьВСпискеВыбора”);
    Пользователь.ПользовательОС = одАтрибут(ФайлОбмена, одТипСтрока, “ПользовательОС”);
    Пользователь.ПолноеИмя = ИмяПользователя;
    СтрокаРоль1 = одАтрибут(ФайлОбмена, одТипСтрока, “Роль1”);
    СтрокаРоль2 = одАтрибут(ФайлОбмена, одТипСтрока, “Роль2”);
    СтрокаРоль3 = одАтрибут(ФайлОбмена, одТипСтрока, “Роль3”);

    //Пользователь.ОсновнойИнтерфейс = Метаданные.Интерфейсы.Полный;
    Пользователь.Язык = Метаданные.Языки.Русский;
    Пользователь.Роли.Очистить();
    Роль1 = Метаданные.Роли.Найти(СокрЛП(СтрокаРоль1));
    Роль2 = Метаданные.Роли.Найти(СокрЛП(СтрокаРоль1));
    Роль3 = Метаданные.Роли.Найти(СокрЛП(СтрокаРоль1));
    Если НЕ Роль1 = Неопределено Тогда
    Пользователь.Роли.Добавить(Роль1);
    КонецЕсли;
    Если НЕ Роль2 = Неопределено Тогда
    Пользователь.Роли.Добавить(Роль2);
    КонецЕсли;
    Если НЕ Роль3 = Неопределено Тогда
    Пользователь.Роли.Добавить(Роль3);
    КонецЕсли;
    Пользователь.Записать();

    спрПользователь = Справочники.Пользователи.НайтиПоНаименованию(ИмяПользователя);

    Если спрПользователь = Справочники.Пользователи.ПустаяСсылка() тогда
    спрПользователь = Справочники.Пользователи.создатьЭлемент();
    спрПользователь.Наименование = ИмяПользователя;
    спрПользователь.ПользовательИБ = Пользователь.УникальныйИдентификатор;
    спрПользователь.Записать();
    Сообщить(“Создан пользователь ” + ИмяПользователя);
    конецесли;

    ИмяПользователя = “”;
    спрПользователь = неопределено;
    конецесли;
    ИначеЕсли (ИмяУзла = “ИнформацияОПользователе”) И (ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;

    Спасибо!

    • Andy

      Разобрался, нашел один способ. В ПКО Пользователи в обработчике “После загрузки” добавил код “Отказ = Истина;” – теперь пустой пользователь не создается. Возможно, есть более красивое решение.

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

        Здравствуйте!
        Без правил я не могу сказать, почему так получается. Можете прикрепить правила к комментарию в zip или rar архиве, тогда я напишу, что происходит.

  25. CTmuB

    Объясните, пожалуйста, на пальцах чем отличается в обработчиках “при выгрузке” и “После Выгрузки”

    Приемник – инициализированный xml-узел объекта приемника
    и
    УзелСсылки – инициализированный xml-узел ссылки.

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

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

  26. serk@rarus.ru

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

    В задании 2.9.2 сделал ПВД “Пользователи” с универсальным алгоритмом. получаю пользователей ИБ. Создаю ПКО “Пользователи” с двумя ПКС “Код” и “Наименование” с алгоритмом “Значение = Источник.Имя;” На этом этапе все в порядке – пергружается в справочник “Пользователи”.
    Начинаю усложнять в обработчтке при выгрузке перенес код со справки. Выгрузка прошла. дополнительные атрибуты в файле появились. Но когда я начинаю загружать и пытаюсь зайти в отладчик то при загрузки возникает ошибка. “Ошибка формата файла обмена”. До обработчика при загрузки объекта даже не доходит.

    Что может быть не так в файле?

    • serk@rarus.ru

      Реализовал через параметры ПКС. все получилось.

  27. RomanB

    Здравствуйте!
    Не понимаю почему в тесте для самопроверки во 2 вопросе ответ:
    Будет перезаписан только документ. Почему справочник не перезапишется?
    Текст вопроса: В базе-источнике один документ «Продажа продукции» и один элемент справочника «Должности сотрудников». Для них настроены правила.
    Остальные настройки в правилах оставлены по умолчанию.
    Эти объекты были выгружены и дважды загружены в базу-приемник. Как будет происходить вторая загрузка?

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

      Здравствуйте!
      Дело в том, что когда загружается объект, сначала происходит попытка найти соответствующий ему объект в базе-приемнике. Потом, если объект найден, то выполняется проверка, нужно ли перезаписать объект. Это зависит от того, есть ли у него измененные свойства. Если один и тот же файл данных загружается дважды подряд в базу-приемник, то объекты не перезаписываются, у них нет измененных свойств. В этом случае параметр ОбъекМодифицирован на протяжении всей загрузки объекта имеет значение Ложь. Но есть исключения – это элементы справочников и документы с табличной частью. Проверки табличных частей на совпадение не производится, а просто табличная часть целиком заменяется на загружаемую, а в этом случае объект считается модифицированным и записывается.

  28. hjkl

    Добрый день.

    Скажите почему мой отчет по решению дом задания 2.9.2 до сих пор находится в ожидании модерации?

    1 или 2 моих отчета, написанные позже даты написания отчета по 2.9.2 уже прошли модерацию?

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

      Здравствуйте!
      В вашем отчете были вопросы, поэтому он не был одобрен сразу. Сейчас он одобрен

  29. imagik

    Добрый день. Из-за чего может выдаваться сообщение при выгрузке
    “Значение не является значением объектного типа (ИмяТипа)” ?

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

      Здравствуйте!
      Возможно, ошибка в настройке ПВД, указана Стандартная выборка, а объект выборки не указан

      • imagik

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

  30. toypaul

    Хочу понять, мой отчет по заданию 2.9.2 принят или нет.

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

      Здравствуйте!
      Да, отчет принят

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

    в 2.9.2 не работает выгрузка нормально, и хочу отладку запустить, но мешает ошибка в строке (в выгрузке ХМЛ):
    ВнешняяОбработкаОбработчиковСобытий = ВнешниеОбработки.Создать(ИмяФайлаВнешнейОбработкиОбработчиковСобытий, Ложь);
    В чем может быть дело?
    Текст ошибки:
    Ошибка инициализации модуля: ВнешняяОбработка.ОтладкаВыгрузкиПользователей.МодульОбъекта

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

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

      Здравствуйте!
      Отладка не работает в тонком клиенте. Либо нужно использовать обычное приложение, либо толстый клиент управляемое приложение

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

    Добрый день. Как можно сделать домашку 2.9.1 на управляемых формах? Можно вкратце

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

      Здравствуйте!
      Самое простое решение задачи не зависит от интерфейса, нужно создать параметр и указать, что он должен редактироваться в диалоге

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

        просто я так понял задание, что нужно принудить пользователя ввести дату, и чтобы она у него прямо перед ним появилась (пользователь может не знать, что нужно искать дату на вкладках)

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

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

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

    здравствуйте. не могу придумать, что писать в пвд в 2.9.2. Прошу подсказку)

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

      Здравствуйте!
      Напишите в ПВД (Произвольный алгоритм)
      ВыборкаДанных = ПользователиИнформационнойБазы.ПолучитьПользователей();
      Дальше нужно будет использовать обработчики ПКО “При выгрузке” и “При загрузке”

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

        спасибо, я сначала спросил, а потом подумал и сам догадался)

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

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

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

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

  34. petrovka_42

    Задание 2.9.1
    Ввод параметра хочу сделать через внешнюю обработку. Открывается модально внешняя обработка и пока в ней не введешь нужную дату, она не закрывается.При подключении внешней обработки есть таблица соответствия параметров обработки и параметров конвертации. Как они взаимодействуют? Как указать, что параметр обработки соответствует параметру конвертации?

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

      Здравствуйте!
      Достаточно, чтобы параметры назывались также, как и параметры обработки, соответствие будет установлено автоматически

  35. Павел Невасилевский (Paul_Nevada)

    Добрый вечер!
    Вопрос по услышанному в видео 2.1.6.
    Флаг “Не запоминать выгруженные объекты” – разве мы его до этого – в модуле №1 проставляли для всех ПВД с ВыборкойДанных?) Получается, что отнюдь необязательно выполнять это условие-требование, описанное в справке “КД”?

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

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

  36. Shamil

    Добрый день в задании 2.9.1
    При загрузке правил обмена у пользователя нужно было интерактивно запрашивать значение параметра, необходимого для переноса остатков. здесь все нормально для версии 8.

    а как интерактивно ввести параметры при выгрузке из 77?
    например, зачастую требуется выгружать документы по определенной фирме.
    например, этот код почему-то не обновляет параметр Фирма на закладке Параметры
    сзн = СоздатьОбъект(“СписокЗначений”);
    спр = СоздатьОбъект(“Справочник.Фирмы”);
    спр.ВыбратьЭлементы();
    Пока спр.ПолучитьЭлемент() = 1 Цикл
    сзн.ДобавитьЗначение(спр.ТекущийЭлемент());
    КонецЦикла;
    выбФирма = “”;
    Пока сзн.ВыбратьЗначение(выбФирма,”Выберите фирму”,,,0) 1 Цикл
    КонецЦикла;
    Параметры.НоваяСтрока();
    Параметры.Фирма = выбФирма;

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

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

  37. Klukva

    Добрый день! В информации по обработчикам ПВД написано: “Если для выборки данных ПВД используется произвольный алгоритм и в обработчике ПВД “Перед обработкой” инициируется параметр ВыборкаДанных, то для ПКО следует установить признак “Не запоминать выгруженные объекты”.” Вы не могли бы пояснить почему это так важно?

    И еще вопрос, как я понял сначала вызываются ПВД из них вызываются ПКО, а на каком событии ПКО обрабатываются ПКС?

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

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

      После передачи объекта в ПКО происходит примерно следующее
      1. происходит событие ПКО.ПриВыгрузке,
      2. обрабатываются ПКС, отмеченные флагом поиска и выгружаются в узел “Ссылка”, создается узел “Объект” и туда вставляется узел “Ссылка”
      3. происходит событие ПКО.ПриВыгрузке
      4. обрабатываются остальные ПКС и выгружаются в узел “Объект” следом за узлом “Ссылка”
      5. происходит событие ПКО.ПослеВыгрузки
      6. узел “Объект” записывается в файл данных
      7. происходит событие ПКО.ПослеВыгрузкиВФайл

  38. mamalena57

    Здравствуйте! Не подскажете ли, как можно программным образом задать роль Пользователя БД?

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

      Здравствуйте!
      Посмотрите Информацию по обработчикам, событие ПКО При загрузке. Там добавляются роли новому пользователю ИБ

  39. mamalena57

    Здравствуйте! Не знаю, по адресу ли – но хочу указать на ошибочку в ИнформацииПоОбработчикам.
    В информации по Обработчику Конвертации “Перед выгрузкой” в примере – синтаксическая ошибка. Так не работает:

    Если ЗначениеНеЗаполнено(Параметры.Организация) Тогда

    Работает так:

    Если НЕ ЗначениеЗаполнено(Параметры.Организация) Тогда…

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

      Здравствуйте!
      Да, информация по обработчикам давно не обновлялась. Этот код был написан для платформы 8.0, тогда не было метода ЗначениеЗаполнено()

  40. zels

    В задании 2.9.2 у нас есть 3 объекта с 4 УИДами:
    1. О1 -Пользователь исходнойИБ с УИДиб
    2. О2 -Пользователь конечнойИБ с УИДкб
    3. О3 -Пользователь из Справочника пользователи конечной базы с УИДкс
    4. Реквизит ПользовательИБ с УИДкр.

    Как я понимаю, УИДкр предназначен для связи О2 и О3, т.е. УИДкр=УИДкб для некоторого ПользователяИБ.
    1. Если попытаться синхронизировать О1 и О3 через УИДкр, то разорвется связь О2 и О3.

    2. Хотелось бы синхронизировать О1 и О2, но при создании ПользователяИБ нет возможности указать УИД.

    3. Попробуем синхронизировать О1 и О2 через УИДкс=УИДиб. Да, при создании элемента справочника Пользователи ему можно присвоить нужный УИД. Но перед тем, как создать новый элемент, надо попытаться его найти. Как сказать обработке: найди элемент справочника по УИД, а сам уид возьми отсюда? У ПКО нет источника-объекта. Возможно, поможет УзелСсылки (но я не пойму, как он устроен).

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

      Здравствуйте!
      Реквизит ПользовательИБ нужен, чтобы связать элемент справочника Пользователи с Пользователем информационной базы Конечной. Синхронизировать пользователей из исходной и конечной базы можно, например, по наименованию справочника Пользователи.

  41. Hauliod

    Доброго времени суток!

    В разборе ДЗ Евгений упоминает, что “…в одном из видео мастер групп…” разбирается функция “ВыгрузитьПоПравилу(…)”. Подскажите, пожалуйста, о каком видео идёт речь?

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

      Здравствуйте! Посмотрите на странице Занятия 5 Вопрос №1, “Выгрузка связанных данных”. Там находится это видео

  42. Валерий Фисенко

    Пыталась использовать приведенный ответ преподавателя на вопрос 1.
    При загрузки данных проблема.
    Ошибка в обработчике события ПослеЗагрузкиДанных (конвертация)
    Обработчик = ПослеЗагрузкиДанных (конвертация)
    ОписаниеОшибки = Метод объекта не обнаружен (ЗаписатьСтроку)
    ПозицияМодуля = (70)
    КодСообщения = 23

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

      Здравствуйте!
      Этот код должен быть в обработчиках “После выгрузки данных” и “Перед загрузкой объекта”, а не “После загрузки данных”

  43. r-garden

    При выполнении задания 2.9.1 обнаружил, что в настройках параметров конвертации, если указать вариант редактирования параметра “в диалоге”, у параметра можно определить событие ПослеЗагрузки. Для чего может использоваться это событие? Аналогично ли оно событию ПослеЗагрузкиПравилОбмена для конвертации?

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

      Здравствуйте!
      Это событие не зависит от редактирования в диалоге. Оно происходит на стороне загрузки после того, как значение этого параметра было загружено из файла данных в базу-приемник

  44. nikilin

    Как можно использовать параметр “УзелСсылки” в обработчике ПКО ПриВыгрузке. В справке сказано что это “xml-узел ссылки” , хотя в отладчике показывает ,что это узел ссылки представленный в строковом виде. Пытался его переопределить, добавить поиск по УИД не получилось, есть ли такая возможность синхронизации по УИД(не храня УИД в реквизитах ИБ-Приемника)

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

      Здравствуйте!
      Если честно, я тоже плохо себе это представляю. Этот узел в этом обработчике уже в виде текста, поскольку закрыт. Насколько я понимаю, этот процесс необратим. Единственный способ, который я вижу – вручную сформировать нужный Вам узел ссылки, закрыть его и поместить в эту переменную

  45. Nik

    Хорошо бы было если бы вы предоставили в Лучших вопросах небольшой ответ или статью на тему модуля 2 главы 1 про обработчики событий в виде сравнительной таблицы с указанием порядка срабатывания обработчиков (например сначала обработчики у конвертации, потом у ПВД т.д.) и их основные отличительные черты(сколько раз срабатывает, что в нем доступно и т.д.)
    Видео конечно тоже хорошо, но обработчиков много и они созвучны после первого просмотра видео в голове каша. Таблица была бы здесь более наглядной памяткой, которой можно было бы пользоваться при разработке правил

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

      Здравствуйте!
      Спасибо за пожелание, записали, учтем ))

  46. aPOSTAL

    Как записать нового пользователя с заданным УникальнымИдентификатором?
    Есть ли для пользователей ИБ аналог метода УстановитьСсылкуНового()?

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

      Нет, пользователя информационной базы нельзя записать с заданным идентификатором

  47. A.Timofeev

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

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

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

  48. natzelv

    Добоый день!
    Пыталась использовать приведенный ответ преподавателя на вопрос 1.
    При выгрузке выдается ошибка
    Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(10482)}: Значение не является значением объектного типа (ИмяТипа)

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

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

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

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