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

Синхронизация объектов

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

  • Глава 4. Синхронизация данных

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

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

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

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

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

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

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

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

  1. Templ

    Здравствуйте.
    Индексацию по полям поиска обязательно нужно ставить? Если база типовая например, лучше снять с поддержки и поставить индексацию?

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

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

  2. Assem

    Как сделать чтобы документы загружались проведенными?

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

      Самое простое — в ПКО для документа Перед загрузкой написать
      РежимЗаписи = «Проведение»;
      РежимПроведения = «Неоперативный»;
      Тогда после загрузки каждого документа будет выполняться его проведение

  3. Assem

    Если в полях поиска задать свое условие и поставить галочку поиска по ГУИД, что сперва срабатывает? Поля поиска и потом только ГУИД?

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

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

  4. Виталий Тарасов

    Добрый день. При решении ДЗ 1.3.1, помимо установки флажков можно написать код в обработчике:

    Если СвойстваПоиска["ЭтоГруппа"] Тогда
        СтрокаИменСвойствПоиска = "Наименование, ЭтоГруппа";
    Иначе
        СтрокаИменСвойствПоиска = "ИНН, Наименование, ЭтоГруппа";
    КонецЕсли;

    Почему в ветке Иначе можно не указывать ЭтоГруппа? Я думал, что передав элемент с пустым ИНН, мы можем найти в конечной базе по пустому ИНН и наименованию — элемент-группу. Однако на практике это не подтвердилось. Получается что при передаче элемента, поиск в любом случае работает среди элементов?

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

      Здравствуйте!
      По пустому ИНН группа найдена не будет, потому что для элемента пустой ИНН — это пустая строка, а для группы — значение NULL, поскольку свойство для группы не используется

  5. Дмитрий

    Добрый день! Подскажите по примеру из видео «Синхронизация по внешним данным», там используются конфигурации где в исходной и конечной базе есть реквизиты «Артикул». Как реализовать обмен если в базе приемника нет реквизита «Артикул» в справочнике номенклатуры, а есть только регистр сведений соответствия артикула и номенклатуры?

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

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

      • Дмитрий

        Добрый день!
        А если данные получать из ПКД произвольным алгоритмом? У меня почему то не получается из ПКД передать его в ПКС с видом «Передавать данные в параметр».

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

          Здравствуйте!
          Да, если произвольный алгоритм настроен, то автоматически значение в параметр не выгружается, даже если поле Выборки данных названо так же, как параметр. Это небольшая ошибка в КД. Чтобы ее обойти, в ПКС для параметра Перед выгрузкой нужно написать
          Значение = Источник.{ИмяПараметра};
          Вместо {ИмяПараметра} укажите наименование колонки со значением параметра в Выборке данных

  6. CT

    Для справочника «Сотрудники» создано 2 ПКО. В ПВД для этого справочника явно указано правило конвертации. Почему при выгрузке срабатывает другое правило конвертации?

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

      Ответила на странице вопросов по домашним заданиям

  7. palkor@list.ru

    Задание 1.4.5. «Поиск объектов в приемнике».
    У преподавателя в базе на экране на закладке «Поиск объектов в приемнике» 4 объекта, у меня только один — Контрагенты.
    Почему? В моей базе все настройки поиска, кроме контрагентов, типовые, а у преподаватели заданы поля поиска.

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

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

  8. Дмитрий

    Добрый день!
    1.Стоят флажки с поиском по uuid и продолжить поиск по полям поиска.
    Код в обработчике не прописан
    Сколько полей поиска при этоим будет перебирать прогорамма? Только один или все, где проставлены галочки в ПКС? Подчеркну — код в обработчике не прописан!
    Так вот в продолжение вопроса, пусть в ПКС также стоят флажки например у Код, ИНН, КПП
    Судя по уроку, то система (т.к. не прописан код в обработчике) будет искать соответстие в приемнике только по uuid и (если оно произошло неудачно) по Код. А ИНН и КПП система трогать не будет. Ведь ,судя по уроку, для поиска по ИНН и КПП нужно использовать код в обработчике. Правильно?
    Т.е можно наставить кучу галочек в ПКС, но реально отработает только одна (а какая по очередности в строках ПКС — самая верхняя?), если не прописан код в обработчике…
    Тут же встает вопрос с галочкой у ЭтоГруппа — у нее особый статус и на общее количество галочек она не оказывает влияния?
    2. В продолжение п.1. А если сняты флажки uuid и продолжить поиск по полям поиска
    Код в обработчике не прописан
    Поставлены флажки Код, ИНН, КПП. Сколько полей переберет прграмма?

    На практике у меня получалась путиница….по п.1 и п.2

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

      Здравствуйте!
      1. Если не прописан код в обработчике ПоляПоиска, то поиск по полям происходит по всем тем свойствам, ПКС для которых отмечены флажком. То есть если ПКС для свойств Код, ИНН и КПП отмечены флажком поиска, то в базе-приемнике ищется объект, у которого такие же значения кода, ИНН и КПП, как у загружаемого объекта. А в обработчике, наоборот, можно написать код, чтобы какие-то из этих свойств не использовать для поиска
      Флажок ЭтоГруппа в этом смысле не отличается от остальных. Если установлен поиск по свойствам ЭтоГруппа и Код, например, то при загрузке элемент с таким кодом, как у загружаемого, ищется среди элементов, а группа — среди групп.
      2. Поиск по полям может происходить в двух случаях: 1) если установлены флажки «Поиск по УИД…» и «Продолжить поиск…», а по УИД элемент не найден; 2) сняты оба флажка, и поиск происходит только по полям. В обоих этих случаях поиск по полям производится одинаково, по значениям всех полей, отмеченных флажком.

      • Дмитрий

        Спасибо, Ольга!
        Но прошу особо уточнить, если отмечены в ПКС флажки Код, КПП, ИНН, Код по классификации и проч., то система ищет в приемнике соответствие согласно совпадению ВСЕХ данных по этим проставленным галочкам, т.е. по логичному И или все таки система использует логичное ИЛИ…?

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

          Именно по всем (логическое И). То есть значения всех полей поиска — это ключ уникальности объекта (при поиске по полям)

  9. Олег

    Здравствуйте, не удается установить соответствие через регистр, номенклатура дублируется.

    01.PNG03.PNG04.PNG05.PNG

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

      Здравствуйте!
      Лучше делать не через отключенное ПКС, а через ПКС с видом «Передача в параметр».Параметру нужно будет указать имя, например, Артикул. Тогда это значение будет не в параметре СвойстваПоиска, а в соответствии ПараметрыОбъекта. То есть нужно будет написать
      Запрос.УстановитьПараметр(«АртикулПоставщика», ПараметрыОбъекта[«Артикул»]);

  10. xman64

    По тесту:
    1. Почему при переносе справочника с контролем уникальности кодов в пустой аналогичный надо указывать и код и группу? Контроль уникальности в первой базе ведь уже есть?

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

      Здравствуйте!
      Потому что по условиям задачи синхронизация по уникальному идентификатору не производится. Но какая-то синхронизация все равно нужна, поскольку программе нужно знать, что она загружает разные элементы. Иначе она их все загрузит как один элемент. Если контроль уникальности кодов настроен, вполне можно выполнять эту синхронизацию по кодам. А флажок поиска у ПКС ЭтоГруппа позволяет корректно загружать группы

  11. Alex13185

    Добрый день!
    В описании обработчиков, в частности «перед выгрузкой» указано, что:»Параметры — Структура, в которой хранятся переменные доступные во всех обработчиках».
    Хотел с помощью нее передать УИН, для записи нового объекта.
    Вопрос: Почему тогда структура «Параметры» не доступна в обработчике «После загрузки»? Или я что-то не так делаю? Как правильно организовать передачу УИНа для записи нового объекта из источника в приемник?

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

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

  12. VitalyTarasov

    Добрый день!

    1. В видео 1.4.7 говорится, на схеме, что из документа 1 и 13 пара Алхимов+Иван выгрузится дважды. Но почему «пара» дважды? Ведь свойство «не запоминать выгруженные данные» стоит только у Ивана! И вообще в примере с документами, на мой взгляд, не возникает ошибочной ситуации (т.е. флаг не выгружать можно и не ставить), ведь выгружая документ 1 мы уже выгрузим Алхимов+Иван, выгружая документ 13, система их просто подставит, т.к. они уже выгружались. Или я не так понял?!

    2. Далее в этом же видео, при первой выгрузке — выгружено 7 объектов. Евгений начинает считать — «выгружено 2 документа, контрагент — 3, конт.лицо — 4, у контрагента группа — 5, 6 — Второй документ!!, 7 — повторно выгружено контактное лицо». Таким образом он не посчитал контрагента второй раз, хотя в первом вопросе говорится, что выгружается пара, и дважды посчитал сам документ. Так что это за 7 объект? Если я правильно понимаю это контактное лицо, указанное в контрагенте?

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

      Здравствуйте!
      1. Да, Контрагенты будут выгружены по одному разу. Именно контактное лицо будет выгружено столько раз, сколько оно встретится в процессе выгрузки.
      2. Да, все правильно. Контрагент выгружается единожды, а контактное лицо в результате — трижды, по ссылке из одного документа, из второго, а также, действительно, из свойства контрагента.

  13. adanos@ngs.ru

    Здравствуйте.
    В лекционных материалах в ПКО Контрагенты в обработчике Поля поиска был приведен код:
    Если СвойстваПоиска[«ЭтоГруппа»] Тогда
    СтрокаИменСвойствПоиска = «Наименование, ЭтоГруппа»;
    ……
    А если указать только СтрокаИменСвойствПоиска = «Наименование», без группы то результат изменится? А то при выполнении ДЗ без указания поля ЭтоГруппа в параметре СтрокаИменСвойствПоиска, только наименование все нормально работало, синхронизировалась и не двоилось.

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

      Здравствуйте!
      Добавление в строку свойства ЭтоГруппа исключает ситуацию, когда вместо группы по наименованию будет найден элемент, который называется так же

  14. Turkish

    Можно ли в обработчике ПослеВыгрузки после записи объекта в транзакции вместо ОбъектМодифицирован =Ложь; использовать Отказ=Истина; ?

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

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

      • Turkish

        Извиняюсь. В обработчике ПослеВыгрузки мы записали объект в транзакции. Чтобы повторно он не записывался мы обозначили параметр ОбъектМодифицирован =Ложь; . Можно ли его заменить на Отказ=Истина; ?

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

          Здравствуйте!
          Да, можно и так

  15. Turkish

    Видео 1.4.8. Синхронизация по внешним данным. Манипуляция с номенклатурой Диван-Кровать. Делал как говорил преподаватель — у меня Диван не определялся как диван-кровать. Вроде все просмотрел, но не получалось. В итоге включил ПКС Артикул, но поставил галку «не замещать значение свойства у существующих объектов в приемнике» и отработалось как надо. По сути получается, что отключенное ПКС не выгружается вообще. Может я что-то не так делаю?

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

      Нет, все правильно. ПКС Артикул должно быть включено. Можно еще в этом ПКС установить переключатель в положение Передавать данные в параметр (флажок поиска должен быть включен), назвать параметр «Артикул», и в обработчике его значение брать тогда не из свойств поиска, а из соответствия ПараметрыОбъекта:
      ПараметрыОбъекта[«Артикул»]

      • Klyacksa

        Видео 1.4.8. При выключенном ПКС для Артикула, значение Артикула не попадает в СвойстваПоиска. Включила ПКС, отключила замещение Артикула у существующих объектов, теперь перенос самих объектов корректен, но Артикул замещается из Источника. С чем это может быть связано?

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

          Здравствуйте!
          А флажком Поиска ПКС Артикул отмечено?
          Есть проблема с работой флажка «Не замещать значения свойств…», она рассматривается в лучших вопросах на этой странице. Но она решается включением флага поиска для этого ПКС.

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

              Прикрепите правила, запакованные в архив с раширением zip или rar к комментарию, я посмотрю, что там происходит

              • Klyacksa

                Вопрос снят, нашла ошибку — создалось два ПКС для Артикула. Спасибо за помощь!

  16. Turkish

    В начале занятия преподаватель говорит что поля поиска в конечной базе должны быть с настройкой индексирования. Но для некоторых полей, таких как КодПоКлассификации для справочника Контрагенты такой настройки нет. Может я что-то упустил?

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

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

  17. Practic75

    Добрый день. Посмотрел решение домашнего задания и у меня возник вопрос — точнее два.
    1. Будет ли корректно работать код:
    Если СвойстваПоиска[«ЭтоГруппа»]Тогда
    СтрокаИменСвойствПоиска=»Наименование,ЭтоГруппа»;
    Иначе
    Если НомерВариантаПоиска = 1 Тогда
    СтрокаИменСвойствПоиска = «ИНН»;
    ИначеЕсли НомерВариантаПоиска = 2 Тогда
    СтрокаИменСвойствПоиска = «Наименование»;
    КонецЕсли;
    КонецЕсли;
    Ведь по логике отработав по ИНН (когда он пустой)и не найдя соответствия система продолжит поиск по Наименованию? Или я чего-то не допонял?
    2. В решении задачи в последней строке был добавлен поиск по «Наименованию» и «ЭтаГруппа» — но ведь это противоречит условиям задачи, что поиск должен быть только по «Наименованию»? И посмотрев первую часть решения (но без второй) — не понимаешь зачем автор добавил в конце поиск по ЭтаГруппа, когда как в начале он отсек дальнейшую работу с Группами проверкой. Заранее огромное спасибо.

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

      Здравствуйте!
      1. Если ИНН пустой, то поиск будет производиться на равенство ИНН пустой строке, и будут найдены те элементы, у которых ИНН не заполнен. В данном случае пустая строка — это такое же значение, как и остальные
      2. Если СвойстваПоиска[«ЭтоГруппа»] = Ложь, это значит, что загружаемое значение — элемент. Но если указать, что искать нужно только по наименованию, то может быть найдена и группа, если она вдруг называется также. А нужно найти именно элемент с таким наименованием, поэтому свойство ЭтоГруппа тоже включаем в поля для поиска.

  18. salikoff

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

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

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

      • salikoff

        Спасибо, понятно. Тогда ещё один вопрос вдогонку: вы говорите, что поиск элемента справочника выполняется соответствующим методом. Этот метод СправочникМенеджер.НайтиПоНаименованию(, , , ) имеет параметр. Особый интерес представляет параметр ТочноеСоответствие, которое, как я вижу из эксперимента, выставляется в Ложь. Впрочем, это неудивительно, по-умолчанию он действительно равен Ложь. Можно ли в ПКО как-то управлять этим параметром, если я хочу искать точное совпадение?
        P.S Кстати, попробовал делать синхронизацию по полю ПолноеНаименование справочника Номенклатура в типовой БП, и в этом случае тоже выполняется нечёткий поиск. Ведь поиск по ПолномуНаименованию должен выполняться запросом, верно? Какое же тогда стоит сравнение в условии запроса?

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

          Нет, параметр ТочноеСоответствие при этом всегда установлен в значение Истина. Им управлять Вы не можете, но можете прописать любой поиск, который хотите, для этого существует обработчик ПоляПоиска. Как им пользоваться, подробно рассказано в курсе.
          По полному наименованию справочника Номенклатура в типовой БП 3.0 должен выполняться четкий поиск, условие будет на равенство, так как строка имеет ограниченную длину. Для строк неограниченной длины поиск выполняется с применением оператора «Подобно».

  19. salikoff

    Здравствуйте! Хотелось бы получить разъяснения по вопросу из теста:
    «Если в ПКО поиск настроен только по уникальному идентификатору, без продолжения поиска по полям, нужно ли ставить флаги поиска у каких-либо ПКС?»
    Я полагал, что пиктограмма с лупой у ПКО означает включение поиска по УИД и игнорирование галочек в ПКС в колонке «Поиск». Судя по правильному ответу, игнориуются все галочки, кроме одной. Такое поведение системы кажется непоследовательным. Прокомментируйте, пожалуйста, этот момент

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

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

      • salikoff

        Да, я помню, об этом говорилось в видеоуроке. Только хочется знать немного больше, не просто зазубрить правило «для иерархических справочников всегда ставь галку на ЭтоГруппа», а понимать, почему это именно так, почему возникает подобное непоследовательное поведение системы. Почему система автоматически не ставит эту галку? Ведь если я в ПКС добавил свойство ЭтоГруппа, значит я хочу это свойство перенести. Но система ведёт себя нестандартно, не так, как это интуитивно от неё ожидается, и хочется знать, почему.

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

          Если бы КД многое делала автоматически, это бы сильно снизило ее универсальность. Она позволяет делать то, что нужно разработчику.
          Когда Вы отмечаете в правилах некоторые ПКС флажком поиска, эти свойства выгружаются в качестве Узла ссылки, а все остальные — вне этого узла, непосредственно в узле Объект. Свойства, которые входят в Узел ссылки, читаются первыми — еще до попытки поиска объекта в базе. Потом происходит поиск объекта в базе. Потом, если он не найден, создается новый, заполняется свойствами, входящими в узел ссылки. А уже после происходит чтение остальных свойств из узла Объект.
          И в тот момент, когда объект не был найден в базе и создается новый, должно быть известно, что создавать, элемент или группу. Все остальные свойства можно будет у объекта переопределить, а это — нет. Поэтому свойство ЭтоГруппа на данный момент должно уже быть прочитано

          • salikoff

            Спасибо. Теперь я понял. Всё дело в том, что существует два метода — СправочникМенеджер.СоздатьЭлемент() и СправочникМенеджер.СоздатьГруппу(). И нужно заранее знать, какой из методов вызывать. У меня существовало непонимание, что свойство ЭтоГруппа можно только прочитать, но не установить.

      • salikoff

        Немного подумал и возник вопрос — а есть ли УИД у элемента, являющегося группой? Может быть в этом дело? Но почитав справку вижу, что идентификатор есть. То есть, в принципе, группа и элемент различаются лишь значением поля ЭтоГруппа. Почему же тогда при снятом флаге поиска группа превращается в элемент?

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

          Группа, которая найдена в базе-приемнике, элементом не станет. Но новая группа будет загружена в виде элемента. Я чуть раньше написала, почему

  20. SnowMan83

    Коллеги, просмотрел решение, просмотрел десятка 2 вопросов. Понял, что изначально задачу прочитал не правильно. Но возник вопрос: как решить задачу в таком виде «обеспечить поиск по ИНН+наименование, а если не найдено то по UUID для всех объектов и новых и уже существующих». То есть Исх контрагент Наименование Вася ИНН 00000000001 UUID Х а в приемнике Вася, 00000000001, Y должен быть найден даже если есть Петя 0000000002 но UUID у него X. Но если первого Васи нет, тогда взят вот этот Петя. В таком виде изначально понял задачу, но решить не сумел. Ну или вопрос по другому: как обеспечить поиск по полям поиска, ДО поиска по UUID? Прошу прощения если такой ответ был, но я не нашел

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

      Здравствуйте!
      Посмотрите на этой странице в разделе «Лучшие вопросы участников курса» Вопрос №3 «Синхронизация по полям поиска»

  21. spv

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

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

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

  22. spv

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

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

      Здравствуйте!
      Да, нужно в обработчике Поля поиска написать
      ПрекратитьПоиск = Истина;

  23. spv

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

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

      Здравствуйте!
      Нет, ПКО нужно создавать по мере необходимости, иногда их нужно несколько, избежать этого не получится. В случае, если создано несколько ПКО, нужно установить везде флажки «Продолжить поиск» и далее использовать обработчик ПоляПоиска. В нем можно прописать ПрекратитьПоиск = Истина;, и тогда поиск идти не будет — как будто флажок «Продолжить поиск» снят.

  24. spartak10

    В видео 1.4.7 при введении механизма КлючаВыгружаемыхДанных не надо было обратно включить поиск по UUID, ведь его отключали из-за кэша?

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

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

  25. spv

    Если получилось так, что поля, по которым настроен поиск, и конечной базе не уникальные, т.е. существует несколько объектов с одинаковыми значениями полей поиска, какой объект будет выбран? Есть какое-то правило, или результат нельзя предсказать однозначно?

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

      Поиск по полям поиска в большинстве случаев выполняется запросом (исключения: поиск по номеру и дате документов выполняется с помощью функции НайтиПоНомеру(), а поиск только по наименованию или только по коду у справочников и пвх — с помощью функций НайтиПоКоду() и НайтиПоНаименованию()).
      Для поиска составляется простой запрос, в котором в разделе ГДЕ указаны отборы по всем нужным свойствам поиска. Никакой сортировки в нем нет. Первый элемент, который окажется в выборке из результата запроса, и будет найденным объектом.

  26. spv

    Добрый день.
    Вопрос по материалам урока 1.4.4 (11:26)
    Добавляем обработку групп, код обработчика Поля поиска:

    Если СвойстваПоиска[«ЭтоГруппа»] Тогда
    СтрокаИменСвойствПоиска = «Наименование, ЭтоГруппа»;
    Иначе
    Если НомерВариантаПоиска = 1 Тогда
    СтрокаИменСвойствПоиска = «ИНН, КПП»;
    ИначеЕсли НомерВариантаПоиска = 2 Тогда
    СтрокаИменСвойствПоиска = «КодПоКлассификации»;
    КонецЕсли;
    КонецЕсли;
    …..

    Вопрос: Почему при поиске групп учитываем свойство ЭтоГруппа, а при поиске элементов — нет? Корректно ли будет задать для элементов строку поиска СтрокаИменСвойствПоиска = «ИНН, КПП, ЭтоГруппа», СтрокаИменСвойствПоиска = «КодПоКлассификации, ЭтоГруппа»? Или же это поле поиска понадобится только для реквизитов, определенных и для групп, и для элементом, т.е. если бы мы продолжали поиск по наименованию для элемента, т.е.

    ИначеЕсли НомерВариантаПоиска = 3 Тогда
    СтрокаИменСвойствПоиска = «Наименование, ЭтоГруппа»;

    Если какой-то реквизит определен только для групп, в строке поиска групп поле поиска ЭтоГруппа также можно не использовать?

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

      Здравствуйте!
      Да, если свойство определено только для элементов, то по нему будут найдены только элементы. Даже в случае, если это свойство пустое, группа по нему найдена не будет. То же касается свойств, определенных только для групп. А если свойство определено для групп и элементов, то нужно использовать для поиска и поле ЭтоГруппа тоже.

  27. spv

    Добрый день.
    Вопрос по материалам урока 1.4.4 (16:16)
    Учитываем, что ИНН может быть пустым, код обработчика Поля поиска:
    Если НомерВариантаПоиска = 1 Тогда
    Если ЗначениеЗаполнено(СвойстваПоиска[«ИНН»]) Тогда
    СтрокаИменСвойствПоиска = «ИНН, КПП»;
    Иначе
    СтрокаИменСвойствПоиска = Строка(НомерВариантаПоиска);
    КонецЕсли;
    …..

    Вопрос: зачем, если ИНН пустой, присваивать переменной вычисляемое значение, более того, зачем ей вообще присваивать какое-то непустое значение? ведь это присваивание делается специально так, чтобы ничего не найти. вариант СтрокаИменСвойствПоиска = «» тоже будет работать или есть какие-то подводные камни?

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

      Здравствуйте!
      Если СтрокаИменСвойствПоиска пустая, то поиск выполняется по всем свойствам, которые в ПКО отмечены флагом поиска. Поэтому переменной нужно присвоить какое-то непустое значение, а какое — не важно.

  28. Валерий Швабинский

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

    В обработчике ПКО После загрузки упоминаются «ПараметрыОбъекта».
    Подскажите пожалуйста как в этот параметр передать данные.

    При решении задания 1.3.1 хочу передавать в него строковое
    представление уникального идентификатора для создания ссылки
    с этим идентификатором.

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

      Здравствуйте!
      Для этого нужно создать в ПКО ПКС с видом «Передавать данные в параметр», указать наименование этого ПКС, например, УИД. Там в событии Перед выгрузкой в параметр Значение записать нужное значение. Если отметить это ПКС флагом поиска, оно будет доступно в обработчике «Поля Поиска», а если не отмечать, то в обработчике «После загрузки». Записанное значение будет доступно из соответствия ПараметрыОбъекта по имени ПКС: ПараметрыОбъекта[«УИД»]

  29. LeonidMessin22

    Добрый день!
    В видео-уроке 1.4.7 Евгений использовал прием с параметром «КлючВыгружаемыхДанных»:
    «КлючВыгружаемыхДанных = ЗначениеВСтрокуВнутр(Источник)+ ЗначениеВСтрокуВнутр(ВходящиеДанные.Владелец);»
    Я повторил перенос документов «Контакт», залез в конечной ИБ в Контрагента «Гамма» и реквизит «Основное контактное лицо» у него оказался пустой. В видео Евгений не проверял этот момент. При выгрузке самого справочника «Контрагенты» реквизит «Основное контактное лицо» заполнился. Может я что-то пропустил?
    P.S. Пересмотрел видео 3 раза, так и не нашел у себя ошибку, если она вообще есть..)
    P.S.S. Скачал правила, выложенные Вами, воспользовался ими, результат тоже отрицательный.
    Получается проблема циклических ссылок не решается с помощью КлючаВыгружаемыхДанных?

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

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

  30. kinlex

    Здравствуйте. Не нашел этого вопроса выше. Вопрос по видео 1.4.8. Синхронизация по внешним данным.
    Повторял урок за вами. При создании вами в конечной базе номенклатуры «Диван-Кровать» код совпал с диваном из источника (0….01). Создав правила переноса — у вас соответственно диван не задублировался при загрузке а подхватил диван-кровать по артикулу. Но если у номенклатуры диван-кровать указать код отличный от источника — то номенклатура по артикулу не подхватывается а создается новая (дублируется).
    Или я сделал что то неправильно?

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

      Здравствуйте!
      Да, такое может быть. Попробуйте внутри условного оператора, там же, где заполняется переменная СсылкаНаОбъект, следующей строкой написать
      ПрекратитьПоиск = Истина;

  31. also11

    Не могу открыть 1C-ConvData-Module1-HomeWork03.1.pdf. Пишет, что страница недоступна?

  32. RBEvgeny

    Добрый вечер. У меня еще один вопрос. В обучающем видео, о том когда заносятся значения Артикула в регистр соответствия номенклатуры, там идет одинаковый артикул. То есть артикул создаваемого объекта. А если у нас идет сопоставление по другим регистрам. Так что при поиске вышло то что товар с разным артикулом. Так как в начале значения регистра заполняли вручную. Артикулы отличались. Вопрос в том, как получить Артикул объекта источника?

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

      Здравствуйте!
      То есть Вы планируете, что поиск в базе должен быть по регистру сведений, в котором хранятся артикулы, но сейчас используете какой-то другой поиск, поскольку регистр заполнен не корректными данными? А эти данные в регистре еще нужны, возможно, его нужно очистить и заполнять по мере загрузки объектов? Артикул объекта источника переносится вместе с объектом источником, например, в параметрах объекта.

      • RBEvgeny

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

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

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

  33. RBEvgeny

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

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

    • RBEvgeny

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

      Сори за вопрос. Забыл про схему из лучшего 11 вопроса.

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

      Здравствуйте!
      Обработчик события Поля поиска выполняется либо если оба флажка («Искать по идентификатору…» и «Продолжать поиск…») установлены, либо если они оба сняты. Если установлен только один, то обработчик выполняться не будет, даже если он заполнен

  34. RBEvgeny

    Добрый день. У меня вопрос по установки в конфигурации для реквизитов справочника свойства Индексировать. Выполняя задачу 1.3.1 настроил поиск по Наименованию и ИНН. Он сработал. В учебных материалах устанавливают значение свойства в «Индексировать с доп. упорядочиванием», так же там есть «Индексировать». На что это влияет и нужно ли это проставлять в конфигурации, если есть необходимость при обмене осуществлять поиск по этому реквизиту?

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

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

  35. IT_Times

    Добрый день! Смотрю видео «Несколько критериев поиска.Часть 1». Там в приемнике создается контрагент «Эталон ООО» с кодом по классификации как у контрагента «Омега ЗАО» и при загрузке они должны сопоставиться и выдаться сообщение что СтрокаИменСвойствПоиска «КодПоКлассификации», еще в видео не корректно создаются группы. У меня все группы создались как надо, все контрагенты сопоставились, только Эталон не сопоставился, и выдаются сообщения что поиск осуществлялся только по «ИНН, КПП». Никак не могу понять в чем дело

  36. Александр

    Корректно ли в рамках данного курса будет поинтересоваться некоторым более подробным описанием UUID, GUID и результата, возвращаемого функцией ЗначениеВСтрокуВнутр()?

    Если брать в общем, то GUID — это некоторая реализация стандарта UUID, т.е. формирование уникального значения по некоему алгоритму.

    Выполняя функцию Ссылка.ПолучитьИдентификатор() я получаю объект с типом «УникальныйИдентификатор».

    При этом, когда в уроке создавался новый идентификатор на основе строки, то использовалось строковое представление уникального идентификатора. Из синтаксис помощника следует, что передаваемая строка — «Строка GUID» (строка в формате GUID, если быть точным).
    Получается, что строковое представление значение, возвращаемого ПолучитьИдентификатор() — строка GUID.
    Что же тогда в таком случае UUID? GUID + Тип объекта (или таблицы), в котором этот GUID будет уникальным?

    Дополнительно вопрос навеян темой восстановлением/расшифровкой битых ссылок. Как пример могу привести одну из тем: http://infostart.ru/public/99109/.
    Там идет преобразования GUIDa в UUID и обратно.

    Теперь добавим к вопросу значение, возращаемое функцией ЗначениеВСтрокуВнутр(). Насколько мне известно, с ее помощью можно даже таблицы в строковом представлении передавать. Но что же она возвращает? По идее первый параметр — это тип данных, второй — сами данные. И «сами данные» включают в себя UUID, который есть ни что иное, как номер таблицы в БД + перевернутый (переставленный) GUID.
    Для чего происходит это преобразование GUID’a? Или все совсем не так?

    Также хотелось быть уточнить насчет ключа выгружаемых данных. Он влияет только на то, какой объем данных будет выгружен или же это значение может как-то участвовать в синхронизации?

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

      Здравствуйте!
      Вот информация по теме Вашего вопроса со ссылками на партнерский форум:

      Русанов Дмитрий (1С, Москва)
      https://partners.v8.1c.ru/forum/t/241287/m/241357
      Для каждого из типов объектов базы данных имеется свой собственный тип ссылки. Например, для объектов типа СправочникОбъект.Товары ссылка имеет тип СправочникСсылка.Товары. Значения ссылок для каждого из типов объектов уникальны. Из значения ссылки можно получить Значение типа УникальныйИдентификатор (он же GUID),
      УИД = СпрСсылка.УникальныйИдентификатор();
      Из значения типа УникальныйИдентификатор можно сконструировать значение ссылки заданного типа
      СпрСсылка = Справочники.Товары.ПолучитьСсылку(УИД);
      Таким образом, можно точно сослаться на объект базы данных, если знать его тип и значение ссылки.


      Русанов Дмитрий (1С, Москва)
      https://partners.v8.1c.ru/forum/t/1300879/m/1301799
      Ссылка и UUID — это разные вещи. Но при этом существует однозначное преобразование UUID в ссылку и наоборот. Ссылка представляет собой массив из 16 байт. Если рассматривать UUID как последовательность байт, то получается что в ссылке те же самые байты переставлены в другом порядке. Определение структуры GUID можно найти в файле Guiddef.h Windows SDK. Выглядит она следующим образом:

      typedef struct _GUID {
      unsigned long Data1;
      unsigned short Data2;
      unsigned short Data3;
      unsigned char Data4[ 8 ];
      } GUID;

      В ссылке данные переставлены следующим образом:
      — Data4 — 8 байт
      — 1-й байт Data3
      — 0-й байт Data3
      — 1-й байт Data2
      — 0-й байт Data2
      — 3-й байт Data1
      — 2-й байт Data1
      — 1-й байт Data1
      — 0-й байт Data1

      При автоматической генерации ссылок, UUID’ы, используемые для получения ссылок, генерируются в Windows с помощью функции Win32 API UuidCreateSequential(). В результате ссылки, полученные по последовательно сгенерированным UUID’ам отличаются в байтах с максимальными индексами. То есть две последовательно сгенерированные ссылки будут отличаться значениями байтов с индексом 15 (0-базированный индекс).
      Такая дисциплина генерации ссылок дает очень компактные индексы по ссылкам в файловой базе данных, так как в терминальных страницах индекса (листьях дерева) для упаковки ключей используется общий префикс. Другими словами, на терминальной странице индекса целиком обязательно записывается только первый ключ. Если последующий ключ имеет общий префикс с предыдущим, то для последующего ключа записываются только отличающиеся хвостовые байты.
      Еще одной особенностью является то, для автоматической генерации ссылок, соединение с базой данных получает сразу пакет из последовательно сгенерированных UUID’ов. Размер пакета равен 64. При необходимости генерации новой ссылки используется очередной UUID из этого пакета. Как только пакет заканчивается соединение запрашивает новый пакет и т. д. Пакеты были введены для борьбы с неприятными последствия KeyRange блокировок, используемых MS SQL Server в режиме изоляции транзакций SERIALIZABLE. Не вдаваясь в излишние подробности, рассмотрим простой пример. Если в режиме SERIALIZABLE в рамках транзакции выполнить SELECT с WHERE <ссылка>=<значение ссылки>, то для индекса, построенного по ссылке, до конца транзакции окажется заблокированным диапазон ключей от ближайшего меньшего, чем <значение ссылки> до ближайшего большего, чем <значение ссылки>. (Если ближайшего меньшего или ближайшего большего нет, то блокируется все начало или весь хвост индекса.) Соответственно, внесение другими транзакциями новых записей с ключами попадающими в этот диапазон будет заблокировано до завершения транзакции, заблокировавшей диапазон.
      Пакеты ссылок позволяют возможное пространство ключей разделить на диапазоны, каждый из которых «принадлежит» определенному соединению. Диапазоны непостоянны и меняются со временем. Но в идеальном случае такой диапазон с одной стороны ограничен максимальной использованной ссылкой из пакета, принадлежащего данному соединению, а с другой стороны — минимальной ссылкой из пакета, принадлежащего другому соединению.
      В режиме управляемых блокировок режим SERIALIZABLE не используется и использование пакетов в значительной мере утратило свой смысл.


      Функцию ЗначениеВСтрокуВнутр() Сергей Нуралиев комментирует следующим образом:
      https://partners.v8.1c.ru/forum/t/933826/m/934250
      Результат данной функции не нужно интерпретировать. Это закрытый формат (не документируемый). Он может использоваться только для обратного преобразования.

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

  37. Мария

    Здравствуйте. У меня релиз конвертации 2.1.8.2. При настройке правил по ключу, в точности по видео возникла проблема: При переносе документов корректно переносятся контактное лицо в реквизит документа и как элемент справочника, но в контрагенте, поле «Основное контактное лицо» остается пустым. Я эту проблему решила следующим образом: изменила порядок ПКС для документа «Контакт», таким образом сначала выгрузился контрагент со своим реквизитом «основное контактное лицо», а только потом реквизит Контакт по ссылке. Возможно этой проблемы в старых релизах не существовало, потому что порядок ПКС документа «Контакт» был такой, что сначала выгружалось контактное лицо. Жаль только, что в видео не зашли в элемент справочника «Контрагенты»

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

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

  38. Агеев Владислав

    У меня возникла одна проблема. Исходная база в Номенклатуре строка (50), Конечная строка (100). Переносим товарную часть документа. Номенклатуру в одну и в другую были загружены из одного и того-же места. Когда длина в конечной <=50 все находится. А вот как быть где символов больше чем 50. Как можно сделать поиск без (=)? UUID не подходит т.к. Исходная 7.7. Других полей кроме наименования нету.

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

      Здравствуйте!
      А конечная база на восьмерке? Нужно в обработчике ПоляПоиска написать запрос по поиску элементов по наименованию. Используйте вместо «=» оператор «Подобно».

  39. Henkin

    Не замещать значения свойства-3
    По поводу лучших вопросов № 5 и № 13. Флаг «Не замещать значение свойства…» не срабатывает для тех ПКС, у которых не включен флаг «Поиск». Соответственно, если включить ПКС в число поисковых полей, то флаг «Не замещать значение свойства…» будет работать корректно

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

      Здравствуйте!
      Да, это тоже вариант, спасибо!

  40. Denis

    Добрый день!
    объясните такой момент в видеоуроке про синхронизацию по ключу

    КлючВыгружаемыхДанных = ЗначениеВСтрокуВнутр(Источник)+ ЗначениеВСтрокуВнутр(ВходящиеДанные.Владелец);

    а почему нельзя взять Источник.Владелец вместо ВходящиеДанные.Владелец ?

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

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

  41. aret

    Здравствуйте.
    В бухгалтерии 30 введен доп реквизит по контрагенту УникальныйКод (не в конфигураторе, а через пользовательский интерфейс). Возможна ли синхронизация по такому виртуальному реквизиту?

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

      Здравствуйте!
      А доп реквизит введен с использованием табчасти Допоонительные реквизиты? В нем хранится идентификатор объекта в другой базе? Можно так синхронизировать. Контрагенты добавляются пользователем в обеих базах?

      • aret

        Доп реквизит введен с использованием ТЧ Доп реквизиты. Идентификатор объекта не хранится. Контрагент может быть добавлен в базе приемнике вручную.

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

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

          • aret

            В этом дополнительном реквизите хранится значение доп реквизита по контрагенту УникальныйКод. Этот реквизит есть в исходной конфигурации в объекте табл Контрагент. А в приемнике он введен как доп свойство — реквизит УникальныйКод.

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

              Ну да, в случае одностороннего переноса эта схема будет работать

  42. aret

    Прошел тест, и по вопросу 2 не понятно.
    Если необходимо поместить некоторые элементы в определенную группу, как это сделать не создавая ПКС для свойства ЭтоГруппа?.

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

      Здравствуйте!
      Дело в том, что самый оптимальный способ помещения элементов в определенную группу — это перед загрузкой найти/создать эту группу в базе-Приемнике, поместить ее в параметры и присваивать каждому загружаемому объекту в событии ПКО После загрузки

  43. aret

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

    Извините, я нашел ответ самостоятельно. Надо применить метод синхронизации по внешним данным, описанном в видео лекции 1.4.8

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

      Здравствуйте!
      Да, синхронизация по внешним данным в таких случаях — самый лучший подход

  44. classic891

    Ольга прошу еще раз помощи по моему вопросу от 02.10
    по уроку 1.4.8
    Вы пишите : Этот прием с отключением свойства не работает, нужно передавать Артикул в параметры объекта, т.е. создавать ПКС с видом “Передача в параметр” и отмечать его флажком поиска, а в обработчике Поля поиска брать это значение из соответствия ПараметрыОбъекта, тогда все работает
    1. Тоесть я в ПКС артикул отмечаю передавать данные в параметр, ставлю флаг поиска, а что еще тут надо написать, я так делаю, нажимаю ок, система возвращает все назад.
    2. в ПКО номенклатура, в обработчике ПОля поиска, в запросе пишу
    Запрос.УстановитьПараметр(«АртикулПоставщика», ПараметрыОбъекта[«Артикул»]);

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

      1. Нужно еще указать имя этого самого параметра, например, «Артикул». По умолчанию его система не устанавливает.
      2. Да, все правильно.

  45. Валентина Галанова

    Добрый день.

    Для ПКО Номенклатура стоит «Искать объект приемника по внутреннему идентификатору объекта источника», «Продолжить поиск по полям поиска, если по идентификатору объект приемник не найден». Поля поиска Наименование, Родитель, ЭтоГруппа.

    При загрузке в приемник возникает ошибка
    Ошибка записи объекта
    ТипОбъекта = Номенклатура
    Объект = мед Хирургия грудной стенки Рук-во (Вишневский А.А.)
    ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Попытка вставки неуникального значения в уникальный индекс:
    ERROR: duplicate key value violates unique constraint «_reference150ng_pkey1»
    DETAIL: Key (_idrref)=(\x108768b5996fd8c211e13ce615dd7afb) already exists.

    Элемент справочника с наименованием «мед Хирургия грудной стенки Рук-во (Вишневский А.А.)» существует в обеих базах, и в обеих базах имеет УИ «15dd7afb-3ce6-11e1-1087-68b5996fd8c2».

    Куда смотреть? Что не уникально? Что такое x108768b5996fd8c211e13ce615dd7afb ?

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

      Здравствуйте!
      Какой это вид обмена? На базе БСП (on-line)? Полный текст ошибки скопируйте, пожалуйста. Чтобы понять, в каком модуле и на какой строчке возникает ошибка

    • Валентина Галанова

      Я разобралась. Ситуация возникала, когда выгружалась табличная часть с номенклатурой и единицей измерения подчиненной номенклатуре. В полях поиска ед. измерения был владелец.
      А для ПКО Номенклатура и ЕдиницаИзмерения были отключены поиск по уникальному идентификатору, был поиск по полям, и было включено «не запоминать выгруженные объекты».
      Неуникальная ссылка — это ссылка на ед. измерения.

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

        Здравствуйте!
        Спасибо за информацию, раньше не сталкивалась с такой ситуацией почему-то

  46. classic891

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

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

      Здравствуйте!
      Нет, поиск будет производиться только по номеру, за все время ведения базы. Чтобы проверялось соответствие и даты тоже, нужно установить у ПКС Дата флажок «Поиск по дате на равенство»

  47. classic891

    Добрый день, делаю по уроку 1.4.8 все как преподаватель, до 10 минуты, использовал конечную и исходную базы с страницы курсов. КД 2.1.8.2
    все равно при загрузке у меня диван и диван-кровать получаются разные елементы, при этом артикул дивана не переносится, тоесть диван создается как новый елемент в конечной базе.
    При этом изначально у меня в конечной базе в номенклатуре был предопределенный елемент с кодом 000100, и когда я создал диван-кровать то у него код стал 000101. А у дивана в исходной 00001 код, может это с этим связано.

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

      Здравствуйте!
      На этой же странице чуть ниже Надежда спрашивала тоже насчет этого видео-урока. Там просто нужно немножко иначе делать. Этот прием с отключением свойства не работает, нужно передавать Артикул в параметры объекта, т.е. создавать ПКС с видом «Передача в параметр» и отмечать его флажком поиска, а в обработчике Поля поиска брать это значение из соответствия ПараметрыОбъекта, тогда все работает.

  48. alest

    Здравствуйте, Ольга
    В СтрокаИменСвойствПоиска не нужно включать свойство «ЭтоГруппа», главное, чтобы оно было в СвойстваПоиска?

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

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

  49. classic891

    Ясно, пример в видеоуроке, если и ИНН и КПП пустое, если хоть что-то есть, то не заместятся. Спасибо, разобрался

  50. classic891

    Ольга подскажите а то запутался. урок 1.4.4,
    1. когда проводим синхронизацию по ИНН,КПП. то если совпало и ИНН и КПП то происходит замещение объектом из исходной, если совпало например только ИНН а КПП не совпало, то создается новый елемент в конечной базе. Правильно ли понял?
    2. При этом рассматривается вариант когда ИНН пустая и мы загружаем, первый елемент с пустым ИНН запишется в конечной как новый, потом идет другой елемент с пустым ИНН но другим КПП, и по уроку он должен в конечной поменять первый. почему? КПП то у них разные

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