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

Перенос бухгалтерской информации

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

  • Глава 8. Перенос бухгалтерских данных

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

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

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

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

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

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

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

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

  1. Юлия Чубукова

    Здравствуйте.
    При настройки отладки обработчиков при загрузке не формируется “Модуль отладки загрузки”

      • Юлия Чубукова

        Нет ни каких сообщений, окно с модулем не формируется.

        • AlexeyDubrovin

          Это очень странно
          Проверил у себя на тестовой конфигурации. Модуль сформировался.
          Попробуйте отладчиком пройтись. Без Вашего рабочего окружения сложно что-то посоветовать

  2. sergshell

    КонвертацияОбъектовИнформационныхБаз как найти?
    Ее нет в конфигураторе Конвертации?

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

      Вы в базе Конвертация данных не можете в отладчик попасть? Какой процесс Вы хотите отладить?

      • sergshell

        Извиняюсь заранее если вопросы кажутся глупыми.
        Открываю Конфигуратор Конвертации
        Захожу в Глобальный поиск меню Правка ввожу ПроизвестиЧтениеДанных()
        Надеюсь найти все вхождения этой процедуры в Конфигурации
        Результата нет
        Что делаю не так и как правильно?

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

          Я думала, вы отлаживаете загрузку в базу-приемник.
          Что в базе конвертации нужно отладить? Загрузку правил?

          • sergshell

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

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

              Понятно, а я подумала про стандартный обмен, который в типовых.
              Но в обработке УОД то же самое – в модуле обработки поставьте точку в начале процедуры ПроизвестиЧтениеДанных(). Это начало процесса Загрузки. То есть делать это надо в базе-приемнике, указав файл с данными.

            • sergshell

              Спасибо за терпение, в отладчик попал.
              Пока через код обработки УОД.

  3. sergshell

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

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

      Добрый день
      Не останавливается на точке? Попробуйте точку поставить в модуле обработки КонвертацияОбъектовИнформационныхБаз в начале процедуры ПроизвестиЧтениеДанных()

  4. Олег

    Ответ на мой вопрос прямым текстом был в следующем уроке (1-8-5). :-)
    Вопрос решен! Ниже идет текст моего вопроса, который уже не актуален.

    Добрый день. В ПКО для ПланаВидовХарактеристик пишу

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

    В источнике у меня справочник называется СотрудникиПоставщиков, а в приемнике Сотрудники. Поскольку я нахожусь на стороне базы источника (в обработчике ПриВыгрузке), когда я пытаюсь передать в ОписаниеТипов СправочникСсылка.Сотрудники, пишет про несоответствие типов, и правильно, потому что в базе источнике нет такого типа. А если я в описании типов передаю СправочникСсылка.СотрудникиПоставщиков, то при выгрузке не ругается, но зато ругается при загрузке, потому что в базе приемнике нет такого типа СправочникСсылка.СотрудникиПоставщиков. Если в обеих базах справочник называется одинаково, проблемы не возникает. Если вот так:

    УзелТипы = СоздатьУзел("Типы");
    УзелТип = СоздатьУзел("Тип");
    УзелТип.ЗаписатьТекст("СправочникСсылка.Сотрудники");
    ДобавитьПодчиненный(УзелТипы, УзелТип);
    ДобавитьПодчиненный(Приемник, УзелТипы);

    то проблемы тоже не возникает.
    Но все таки, как использовать функцию одПолучитьXMLПредставлениеОписанияТипов в случае когда справочники в разных базах называются по разному?

  5. Юрий

    Я попробовал задачу 1.7.3 решить с помощью разных ПВД. В первом варианте создал ПВД и соответствующее ПКО «БухгалтерскаяОперация_ВыгрузитьПоПравилу». Во втором варианте изменил структуру ВыборкаДанных и напрямую в ПКО «БухгалтерскаяОперация_УказаниеПравила» указал соответствующее правило выгрузки. И для теста создал 2-ой документ «Инвентаризация».
    В первом варианте все выгрузилось без проблем. Во втором варианте выгрузился только 1 документ (но в решении преподавателя (и его правилах) все выгрузилось, буду искать ошибку).

    С точки зрения оптимальности, какое лучше ПВД применять на реальных задачах?

    Спасибо!

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

      Добрый день

      Скорее всего, один документ выгружается из-за кэширования. Попробуйте в ПКО поставить флажок “Не запоминать выгруженные”. Тогда должны все документы выгрузиться

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

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

  6. Юрий

    Добрый день!
    Возникла сложность при выполнении дз 1.7.1
    Я решил выполнять задачу через уже имеющееся ПВД “Контрагенты”, что бы при переносе конкретных контрагентов выгружать их значения свойств “КлассВажности” и “ОсновнойМатериал”. За исключение ПВД, остальное решение практически полностью совпадает с решением преподавателя, но по факту, при загрузке данных на стороне приемника я получаю ошибку – Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(7175)}: Поле объекта не обнаружено» которую не смог отловить. Но данные по первому из 2х контрагентов перенеслись.

    В связи с этим возникло 3 вопроса:
    1) Можно ли в данной задаче использовать ПВД “Контрагенты”?
    2) Если можно использовать ПВД “Контрагенты”, как оптимальнее – использовать его или создавать новое (как в решении преподавателя) ? Плодить много ПВД мне кажется тоже не совсем правильно, раз в данном случае данные в реквизитах Контрагента, почему бы их и не перенести с ПВД “Контрагенты”.
    3) Если можно использовать ПВД “Контрагенты”, не сможете подсказать, где у меня ошибка в моих правила? Потратил кучу времени, но так и не смог понять где она.

    Спасибо!

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

      Добрый день

      Эта ошибка возникает из-за ПКС КлассВажности без указания свойства-приемника. Такие ПКС на этапе загрузки всегда приводят к ошибкам. Его нужно отключить.

      Текст обработчика из этого ПКС нужно перенести в ПКО, добавив вызов метода ВыгрузитьПоПравилу()

  7. leobrn

    при прохождение уроков в задании 8 столкнулся с ошибкой
    {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4867)}: Ошибка записи объекта
    ТипОбъекта = Операция бух
    Объект = Операция бух 000000002 от 19.07.2012 8:40:40
    ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Запись не верна! Не заполнены оба счета! (Регистр бухгалтерии: Проводки; Номер строки: 1)
    ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4860)
    КодСообщения = 26
    ВызватьИсключение СтрокаСообщенияОбОшибке;

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

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

      Добрый день

      Проверила, у меня не возникает.

      Посмотрите, в Исходной данные не повреждены? Откройте файл с данными, найдите этот документ и посмотрите, как заполнены счета.

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

      Там должны быть счета Товары и Поставщики

  8. Андрей

    Изучаю материал видео
    1C-ConvData-Module1-Chapter08-Lesson03.ufm
    мин 8-20
    пишу ПКС для ТипЗначения символ в символ, а выгрузка у меня не работает, да и как так в видео заработало если мы не определяем значение в случае если во входящихданных не структура, а неопределено.

    Если ТипЗнч(ВходящиеДанные) = Тип(“Структура”) Тогда
    Значение = ВходящиеДанные.ТипЗначения;
    Иначе
    Значение = Истина;
    КонецЕсли;

    Я дописал ветку иначе стало выгружать но на 1 объект меньше чем в видео у меня 18 объектов выгружает а не 19. Кто не прав в видео дальше комментируется и вопрос просто рано возник?

    сообщение об ошибке как на видео

    Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1693)}: Ошибка получения свойства объекта из входящих данных
    ПКО = СвойстваОбъектов (Строка: Строка)
    ПКС = 2 (–> ТипЗначения)
    Объект = Цвет (Строка)
    СвойствоПриемника = ()
    ОписаниеОшибки = Получение элемента по индексу для значения не определено
    ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8282)
    КодСообщения = 68

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

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

  9. Айгуль

    Добрый день.
    Делаю обмен данными договоров из 1С Документооборот (2.1.9) в 1С УПП (1.3.86).

    Аналогично уроку 1.7.1 настроила ПКО: спр.ВнутренниеДокументы->спр.ДоговорыКонтрагентов (ДоговорыКонтрагентов), РС.ЗначенияСвойствОбъектов, ПВХ.СвойстваОбъектов, ПВХ.НазначенияСвойствКатегорийОбъектов, спр.ЗначенияСвойствОбъектов, а так же РС.КатегорииОбъектов, спр.КатегорииОбъектов.
    Основная выгрузка ПВД – ВнутренниеДокументы->ДоговорыКонтрагентов.

    В ПКО.ДоговорыКонтрагентов доп.свойстве ПКС.Сумма ПередВыгрузкой передаю данные в ПКО РС.ЗначенияСвойствОбъектов:

    ИсходящиеДанные = Новый Структура("Объект, Свойство, Значение");
    ИсходящиеДанные.Свойство = "10 СуммаДоговора(руб)";
    ИсходящиеДанные.Значение = Источник.Сумма;
    ИсходящиеДанные.Объект   = Источник.Ссылка;

    В ПКО РС.ЗначенияСвойствОбъектов значение ПКС.Объект (в уроке он назывался Контрагент) передается ссылка на договор контрагента и не находит в уже выгруженных данных и поэтому зацикливается.

    Что нужно сделать, чтобы убрать цикличность ссылок?

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

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

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

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

      • Айгуль

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

        Нашла свою ошибку: дописала предопределенное значение у ПВХ Назначения свойств и т.п., убрала галку запоминать выгруженные элементы для ПКО.ДоговорыКонтрагентов – из-за этого была зацикленность)).

  10. Spodarenko

    Добрый день!
    задание 1.7.1 делаю для начала по одному реквизиту по уроку 1.8.1
    для Класс важности “Значение” не переносится
    для Основной материал без проблем
    В чем особенность? В том, что в справочнике Класс важности предопределенные значения?
    каким уроком пользоваться для решения этого задания?

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

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

      Все правильно, задание 1.7.1 аналогично задаче, решаемой в видео 1.8.1.
      Возможно, Вы не настроили ПКО для справочника КлассыВажностиКонтрагентов.
      Если не получается найти ошибку, прикрепите правила в архиве с расширением zip или rar к комментарию, я посмотрю

      Только лучше это делать на странице вопросов по домашним заданиям

  11. Nikolay

    Так как занятие финальное для модуля, посвященного основам переноса данных, задам пару общих вопросов, приближенным к реальным условиям переноса:

    1. Задача: В основной базе есть справочник “Номенклатура” – 1 млн элементов по группам. Предприятие внедряет отраслевое решение в другой ИБ и возникла необходимость синхронизации НСИ между основной базой и отраслевой ИБ. Структура метаданных идентична.
    Переносить всю Номенклатуру нет смысла. Стоит задача перенести только группу “Для переноса”, в которой 500 000 элементов.
    Вопрос: Есть 2 подхода:
    1. Добавить условный оператор в обработчик ПКО “Перед Выгрузкой”:
    Если Источник.Родитель В ИЕРАРХИИ “Для Переноса” Тогда Переносим Иначе Отказ = Истина.
    2. Добавить в ПВД произвольный алгоритм выборки нужных элементов и их переносить через ПКО.

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

    И второй вопрос:
    После переноса всех необходимых справочников нам необходимо перенести документы Поступления. Мы заранее уверены, что все ссылочные Типы свойств уже есть в конечной базе. Как нам явно указать, что необходимо переносить только ссылки на объекты без дальнейшего вызова их ПКО и обработки.
    На ум приходит только в обработчике ПКС ПередВыгрузкой указать параметр = ЛОЖЬ:
    ВыгрузитьОбъект – Булево – Если Истина, то объект выгружается целиком. Если Ложь, то выгружается только ссылка.

    Есть ли другие варианты решения?

    Заранее спасибо за ответы!

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

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

      1.Здесь важно, какой тип обмена Вы планируете использовать. Если обработку УниверсальныйОбменДаннымиXML, то лучше, конечно, настроить ПВД с произвольным алгоритмом выборки. Это на самом деле очень просто, создать элементарный запрос и сформировать выборку данных для выгрузки.
      Если Вы используете обмены на базе БСП, то там нельзя использовать произвольный алгоритм в ПВД

      2. В случае, если обмен на базе БСП, то там объекты свойств по ссылкам и так не переносятся по умолчанию.

      А если используете Универсальный обмен данными XML, то там нужно в ПКС перед выгрузкой написать

      ВыгрузитьТолькоСсылку = Истина;

      Это самый логичный вариант решения, более удобных вариантов нет

  12. Nikolay

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

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

    И правильно ли я понял, что если мы указываем данный параметр для любого объекта (справочник/план счетов и др), то это означает, что мы подставляем в значение в приемнике конкретно этот предопределенный элемент?
    То есть, например:
    Переносим Документ Поступление. У него есть Реквизит Склад. В базе приемнике есть справочник Склад и у него есть предопределенный элемент с именем Основной.
    Таким образом, указав в ПКО для Склада в обработчике “ПередВыгрузкой”:
    ИмяПредопределенногоЭлемента = “Основной”

    то в реквизит Склад Документа Поступление в приемнике “встанет” склад Основной. Так?

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

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

      Да, про Склад – все верно. Можно создать служебное ПКО, где будет только присваиваться имя предопределенного элемента. Если такое ПКО указать в ПКС, то в это свойство будет записана ссылка на этот предопределенный элемент.

  13. Sashokk

    Здравствуйте.
    Текст модуля отладки обработчиков и алгоритмов формируется следующим образом.
    В чём может быть дело?

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

      Здравствуйте!
      Не сталкивалась с таким. Посмотрите в отладчике в модуле обработки V8Exchan Процедуру ВыгрузитьОбработчикиСобытий(). Там формируется текст и записывается во временный файл. Можно посмотреть, в каком виде он записывается в файл.

  14. mulradik

    Здравствуйте!
    Попробовал сделать отладку в Исходной базе.
    Использую конвертацию 2.1.8.2.
    Когда перекидываю текст модуля, на этапе сохранения вылезает куча ошибок вида
    {ВнешняяОбработка.ВнешняяОбработка2.МодульОбъекта(458,14)}: Процедура или функция с указанным именем не определена (DOM_СоздатьУзел)
    УзелТипов = <>DOM_СоздатьУзел(“Типы”); (Проверка: Толстый клиент (обычное приложение))
    {ВнешняяОбработка.ВнешняяОбработка2.МодульОбъекта(460,3)}: Процедура или функция с указанным именем не определена (DOM_УстановитьАтрибут

    Т.е. модуль неверный изначально.

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

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

      • mulradik

        Спасибо, Ольга.
        Я пробовал. Добавил описания этих функций из УОД XML, ошибки ушли, но после подключения обработки и попытки выгрузки попадание на точку останова никак не получается. Система их все проскакивает.
        Пробовал ставить точки Перед выгрузкой в различных ПКО, например, в
        ПКО_ПередВыгрузкой_ПриемСотрудника или ПКО_ПередВыгрузкой_ДокБухгалтерскаяОперация.
        Что я делаю не так?

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

          К сожалению, да, такое бывает. Это особенности платформы 8.3, не связанные с обменом данными. Иногда срабатывает остановка по ошибке в обработчике. Если использовать конструкцию Попытка-Исключение, то можно далее отлаживать код

  15. Sergmain

    Здравствуйте. На производстве возникла такая проблема. Есть две базы Бухгалтерии 2.0 почти одинаковые, только для Документа ОперацияБух написаны правила конвертации(создавались автоматически, мастерами, включая ПКГС для регистра Хозрасчетный)и настроен обмен. И все работает хорошо – переносится документ, и движения, но только если я переношу за раз один документ. Если их 2 и более выдает ошибку: ОписаниеОшибки = Значение не является значением объектного типа (ЗаписатьКонецЭлемента). Поэтому приходится создавать и переносить документы по одиночке. Почему?

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

      Здравствуйте!
      Данные переносятся без изменения между двумя одинаковыми бухгалтериями? Почему в таком случае Вы не используете обработку ВыгрузкаЗагрузкаДанныхXML? Чем вызвана необходимость написания правил?

      Чтобы ответить на Ваш вопрос, мне нужно видеть правила. Можете прикрепить их в формате zip или rar архива к комментарию. И напишите, каким видом обмена Вы пользуетесь? Универсальный обмен, прочие обмены или обмен на базе БСП – с использованием отдельного плана обмена?

  16. salikoff

    Здравствуйте! Хотелось бы получить разъяснения по средству КД под названием “Алгоритмы”. Если я правильно понимаю, то алгоритм — это просто макрос кода, просто текст, передаваемый в качестве параметра оператору Выполнить(). Соответственно, внутри алгоритма доступны все переменные того контекста, откуда Алгоритм был вызван. Тогда для чего существует поле “Параметры”? Что в них нужно\можно записать?
    Встроенная справка пишет по этому поводу: «Поле “Параметры” используется при отключенном режиме совместимости. Используется для явного задания параметров алгоритмов при формировании отладочных модулей и модулей с кодом обработчиков. При включенном режиме совместимости в правилах заполнение не обязательно.» Вот только я не понимаю, что это значит. Можно ли то же самое объяснить другими словами?
    И ещё. Если мне хочется сделать свою библиотеку функций для использования в обработчиках, то как правильно это можно сделать?

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

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

      • salikoff

        А что такое режим совместимости? Что с чем совмещается? Для чего нужно?

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

          В конце 4 модуля есть видео-урок про режим совместимости.

  17. salikoff

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

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

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

  18. KhusainovT

    Здравствуйте!
    Отладка при загрузке не работает в обработке версии 2_1_8_2. Не могу понять, в чем причина. Причем код берется из обработки (это я понял по ошибкам при загрузке), но отладка не работает, не останавливается по точке останова.
    В чем причина?

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

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

  19. Abbra

    Здравствуйте. В уроке 1.8.6 используется заполнение регистра из входящих данных и ВыгрузитьПоПравилу для каждой операции. В чем преимущество перед использованием ВыборкаДанных? Или использовать ВыборкаДанных вообще не получится в этой задаче?

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

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

  20. adanos@ngs.ru

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

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

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

  21. Антон Губарьков

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

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

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

  22. IrinaVi

    Помогло повторное прочтение правил после настройки отладки. Спасибо.

  23. IrinaVi

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

  24. Антон Губарьков

    ДОбрый день. Есть вопрос по ДЗ 1.7.1. У меня отчего-то не срабатывает конструктор ОписаниеТипов для СправочникСсылка.Номенклатура. при этом конструктор для СправочникСсылка.ДополнительныеСвойства срабатывает нормально.

    Ошибка при вызове конструктора (ОписаниеТипов): Недопустимое значение параметра (параметр номер ‘1’) (СправочникСсылка.Номенклатура)

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

    Как бы это победить?

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

      Здравствуйте!
      Ничего не изменилось, с помощью конструктора ОписаниеТипов можно создать только тот тип, который есть в текущей конфигурации. В курсе были рассмотрены такие задачи. В случае, если наименования справочников отличались в источнике и приемнике, Евгений заменял в итоговой строке наименования справочников, пересмотрите урок 1.8.4 Конвертация ПВХ-ПВХ

  25. vitaly.karpov

    Здравствуйте. Обработка “Универсальный обмен данными в формате XML (2.1.8)”.
    Не работает режим отладки при загрузке. Действия, показанные в видео ConvData-Session-06-LabelTextColor-QA02.avi неактуальны для обработки версии 2.1.8. Проясните, пожалуйста, этот момент.

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

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

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

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

          • vitaly.karpov

            Отладка работает. Не пойму в чем дело, видимо что-то не так раньше делал.

          • Александр

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

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

              Здравствуйте!
              А платформа 8.2 или 8.3? Мне ранее сообщали о такой проблеме только на 8.3, причем она возникает не только при отладки в обмене. Но у меня она не воспроизводится. Попробуйте установить точку останова непосредственно в обработке универсального обмена. Если отлаживаете выгрузку, то в функции ВыгрузитьПоПравилу(), если загрузку – то ПрочитатьОбъект()

              • KolG

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

                Еще я заметил, при формировании текста модуля система пишет:
                “Обработчик: “ПослеЗагрузкиПравилОбмена”: Отладка обработчика “После загрузки правил обмена” не поддерживается.”

                А при отладке выгрузки данных после указания сохраненной обработки и нажатии “Готово”, система просит перечитать правила, в видео я такого не встречал: “Необходимо перезагрузить правила обмена для выгрузки данных.”

                Платформа 8.3.6.2237, конвертация 2.1.8.2

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

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

              • KolG

                Разобрался, в чем проблема.
                У нас в универсальной обработке есть код:
                Если ЭтоВнешняяОбработка Тогда
                ВнешняяОбработкаОбработчиковСобытий = ВнешниеОбработки.Создать(ИмяФайлаВнешнейОбработкиОбработчиковСобытий, Ложь);

                Система создает “Двойника” нашей обработки (см. скриншот) по тому же самому адресу как внешнюю и работает с ней.

                Я нашел выход следующий, прописал ошибочный код типа: “Сообщить(1 + “А”);”
                Установил флажок “Останавливаться по ошибке”, “Останавливаться по ошибке с текстом” – “Преобразование значения к типу Число не может быть выполнено”. Система остановилась на нужном месте.

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

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

  26. Владислав

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

    В видео-решении домашнего задания 1.7.3 создаётся служебное ПКО для конвертации счетов. Но для переноса предопределённых данных достаточно передать имя предопределенного элемента. В моём случае перенос счетов работает и без создания ПКО. Существует причина именно такого решения или было создано избыточное ПКО?

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

      Здравствуйте!
      Нет, в данном случае если не планируется расширение поставленной задачи, то ПКО действительно не нужно создавать, достаточно определения параметра Значение в ПКС.

  27. DStas

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

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

      Здравствуйте!
      Вы, наверное, имеете в виду базу для выполнения домашних заданий. Базы, которые использовались при записи курса, можно скачать на странице Стартовые материалы в разделе Методические материалы курса
      http://курсы-по-1с.рф/data-conv/start-materials/#_Toc006

  28. 87konstantin@mail.ru

    Здравствуйте,
    В Видео-уроке (1.8.3) переносились производные значения (в частности тип значения ПВХ). И там использовалась следующая структура:

    Типы
    Тип
    Типы

    В конечной базе у ПВХ есть реквизит “ТипЗначения”. Меня интересует каким образом при загрузке xml в конечную базу обработка универсального обмена данными поняла, что значение реквизита “ТипЗначения” нужно брать из тега Типы? Как автор этого видео урока понял, что нужно описать именно эту структуру, а не допустим:
    ТипЗначения
    Тип
    ТипЗначения
    ?
    Как можно понять какую точно структуру тегов нужно написать, чтобы при загрузке обработка универсального обмена поняла, что значения из этого тега нужно подставить в нужный мне реквизит некоторого объекта?

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

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

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

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

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

      • 87konstantin@mail.ru

        Зачем тогда флаг ОбъектМодифицирован в этом обработчике, если объект записывается только после загрузки? Смысл тогда его устанавливать в значение “Ложь”, если все равно объект будет записан после загрузки?

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

          Посмотрите на странице занятия №5 в лучших вопросах участников курса, там есть вопрос о параметре ОбъектМодифицирован

          • 87konstantin@mail.ru

            Я собственно говоря видел этот вопрос и ответ, но он к сожалению не дает ответа на мой вопрос. Приведу пример: Написал любое правило для ПКО зашел в событие после загрузки вывел допустим информационное сообщение, установил этот флаг в Ложь (вот тут судя из описания вопроса к занятию №5 флаг не будет сброшен в истину так как сам объект я не изменял). И если исходить из той логики, что объект у нас записывается после загрузки, он получается вообще не будет записан. Но ведь это не так … Получается что объект все-таки записывается до события после загрузки. Есть модуль формы, в котором тоже есть одноименные события,включая и после загрузки. Вот там это событие наступает когда уже сам объект записан в базу. Я вот этого вообще не пойму что-то, как тут-то у нас объект в событии после загрузки еще не записан?

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

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

  29. Бертыш Андрей

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

    На практике вызывается, но я не совсем понял пока каким образом.

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

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

  30. ZaytsevStepan

    Добрый день, не нашел или не внимательно смотрел, как можно перенести движения документа, если есть ручная коретировка.
    Необходимо формировать движения самому если источник и приемник одинаковые? Или можно как то автоматически это сделать?

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

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

      • ZaytsevStepan

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

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

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

  31. bogatyrev_as

    Здравствуйте!
    В упражнении 1.7.3 При конвертации субконто в качестве значения мы передаем коллекцию, в нашем случае структуру, ключем в которой является имя предопределенного элемента ПВХ, а значением, ссылка на элемент справочника материалы. Далее мы создаем ПКО для “ПланВидовХарактеристикСсылка.ВидыСубконто”, где указываем, что если передается строка, то ищется предопределенный элемент ПВХ и имя этого ПКО присваиваем переменной “ИмяПКОВидСубконто”. Т.е у нас есть явная ссылка на
    ПКО для ПВХ, а для его значения нет, т.е. явного указания на ПКО “СправочникСсылка.Материалы”в “СправочникСсылка.Номенклатура” НЕТ…это правило выбирается НЕ ЯВНО исходя из типов конвертируемых значений…Как быть если у меня есть несколько ПКО “Материалы->Номенклатура” и мне надо явно указать имя этого ПКО “Материалы->Номенклатура” для этого субконто.

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

      Здравствуйте!
      Посмотрите на этой странице в разделе “Лучшие вопросы участников курса” Вопрос №3, Перенос значений субконто

  32. YaroslavS

    Почему-то никак не хотела работать отладка в конечной базе для эмуляции сервера (для клиента работала нормально) если запускал базу в режиме платформы 8.3. Причем не работали именно точки останова, при установке опции отладки “останавливаться по ошибке”, в отладку можно было попасть. Задал в параметрах запуска базы 8.2 и отладка стала работать нормально. Какой-то злой баг.

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

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

      • ReflexP

        (А!) в степени n.
        Сколько-ж нервов я сжег пока не обнаружил сей факт. Разместите пожалуйста замечание на сайте, что при настройке режима запуска баз источника и приёмника надо указывать файл 1cv8.exe только из каталогов платформы 8.2. Иначе, при отладке, точки останова могут и не заработать.

        С уважением

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

          Да, можно работать на платформе 8.2, но тогда придется использовать БСП 2.1. БСП версии 2.2 уже работает только на 8.3.
          Судя по всему, эти проблемы – особенность платформы. Ждем, когда ее исправят

  33. MooM

    Была такая проблема в задании Домашнее задание №1.7.3, не удавалось перегрузить субконто. После анализа в обработчике универсального обмена с точкой останова нашел некую особенность не упомянутую в курсе: субконто конвертируется лишь в том случае, если для значения в ИБ существует ПКО с явным указанием, что в нем объект-источник является тот же объект, что конвертируется в субконто.
    Скажем у нас есть 3 справочника “Материалы”, “Товары”, “Продукция” и все они конвертируют объект ИБ в ПКО “Номенклатура” в объект справочника “Номенклатура” КБ. Если в субконто будет структура с данными “Номенклатура” – “Какая-то номенклатура” (с типом данным “Продукция”) то успешная конвертация возможна лишь в случае когда в ПКО “Номенклатура” в объекте-источнике указан справочник “Продукция”, если же его не заполнить, то конвертация в субконто не происходит.
    Вопрос: Есть ли механизм принудительно заставить при выгрузке значения субконто использовать определенное ПКО (для содержимого субконто), а не явно указывать в самом ПКО объект-источник? Ведь если в субконто могут быть и “Материалы” и “Товары” и “Продукция”, то придется создавать 3 ПКО, что не является оптимальным, если и при 1 правиле значения справочников не будучи помещенными в субконто (а скажем в табличной части документа) конвертируются успешно.

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

      Здравствуйте!
      Конечно, можно, и даже очень желательно указывать явно ПКО для конвертации значений субконто. Посмотрите на этой странице Лучшие вопросы участников курса, вопрос №3 “Перенос значений субконто”.

      • MooM

        И этого ответа я ждал 2 дня? ;( Это не ответ на мой вопрос. В том видео-файле на 4:54 явно видно что у ПКО “Материалы” есть источник. И когда указан источник вопросов нет, как я уже написал выше. Вопрос в том когда не указан у ПКО источник и есть 3 объекта которые используют данное ПКО при конвертации. Как быть в этом случае, есть ли возможность заставить при конвертации использовать конкретное ПКО, которое нормально конвертирует объекты по ссылке не из субконто?

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

          В любом случае можно “заставить” использовать для конвертации то ПКО, которое нужно. Для этого есть параметр ИмяПКО. В этом случае не важно, есть ли у ПКО Источник, или нет. Об этом рассказано в лучшем вопросе №3. Или вопрос в чем-то другом?

          • MooM

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

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

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

              • MooM

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

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

                  Здравствуйте!
                  Только что проверила обработки V8Exchan82.epf из версий 2.1.8.1 и 2.1.8.2. Если указать ИмяПКО в обработчике ПКС Перед выгрузкой, то конвертация свойства происходит по этому правилу.
                  Сайт, к сожалению, поддерживает не все форматы вложений. Чтобы прикрепить xml файл к комментарию, нужно запаковать его в zip или rar архив

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

                    Здравствуйте!
                    Не могу открыть файл. Лучше используйте формат avi

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

      Здравствуйте!
      Эта ошибка возникает из-за того, что в ПКС СубконтоДт и СубконтоКт входящим значением обязательно должна быть коллекция. Нужно в таблице ЗаписьРБХ в каждой строчке создать структуру в колонках СубконтоДт и СубконтоКт. Там, где по факту нет субконто, эти структуры можно оставить пустыми.

  34. Ruslan Abiev

    Здравствуйте! Не срабатывают точки останова в режиме отладки обработчиков в управляемом приложении. В обычном приложении срабатывают. Как сделать так, чтобы точки останова сработали в управляемом приложении?

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

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

  35. toypaul

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

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

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

      • salikoff

        То, что обязательно нужно правило, понятно. Но можно ли в этом правиле написать не
        ИмяПредопределенногоЭлемента = Источник, а
        Значение = Источник?
        В чём заключается разница, пока не вполне до меня доходит

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

          Здравствуйте!
          Если бы нужно было вести поиск элемента ПВХ по Наименованию, то в этом ПКО мы создали бы ПКС Наименование, в котором написали бы
          Значение = Источник;
          Потому что параметр Значение используется только в ПКС, и в нем содержится значение свойства.
          А поскольку нужно искать элемент по имени предопределенного элемента, а для этого имени ПКС создать нельзя, то используем этот параметр ИмяПреопределенногоЭлемента.

  36. oleg1117

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

    В примере переноса ПланаСчетов при анализе Вида используется конструкции:

    Значение = Строка(Источник.Вид);

    и:

    Если НЕ ОбъектНайден Тогда
    Объект.Родитель = ПараметрыОбъекта[“Родитель”];
    Вид = ПараметрыОбъекта[“Вид”];
    Если Вид = “Активный” Тогда
    Объект.Вид = ВидСчета.Активный;
    ИначеЕсли Вид = “Пассивный” Тогда
    Объект.Вид = ВидСчета.Пассивный;
    Иначе
    Объект.Вид = ВидСчета.АктивноПассивный;
    КонецЕсли;
    Объект.Забалансовый = ПараметрыОбъекта[“Забалансовый”];
    КонецЕсли;

    Как вариант, можно было переносить строку, формируемую
    при помощи ЗначениеВСтрокуВнутр(),
    а при загрузке восстанавливать значение системного перечисления ВидСчета.

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

      Здравствуйте!
      Да, хороший подход! Спасибо!

  37. nesteruk

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

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

      Здравствуйте!
      Если все заново настроить, ошибка повторяется? Попробуйте отключить-подключить сеанс отладки.

      • nesteruk

        Работает только в режиме обычного приложения на стороне выгрузки.

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

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

  38. icekimi23

    Здравствуйте !
    при выполнении ДЗ 1.7.3 появляется ошибка “Итератор для значения не определен” см. ниже.
    Вроде всё сделал правильно. Создал ПВД с произвольным алгоритмом.
    ПКО ИнвентаризацияВоперацию. Использовал отладочную печать см. ниже.
    Прошу помочь найти ошибку или скинуть решение. Правила обмена прилагаются.

    Начало выгрузки: 24.04.2014 11:08:17
    Из ПВД Кредитовая частьПолуфабрикат “Полка”
    Из ПВД Дебетовая частьНожка кровати
    Находимся в ПКС СубконтоДт
    Полуфабрикат “Полка”
    Материалы
    Находимся в ПКО ВидыСубконто
    Номенклатура
    Находимся в ПКО материалы

    Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
    ПВД = ИнвентаризацияВОперацию
    Обработчик = ПередОбработкойВыгрузкиДанных
    ОписаниеОшибки = Итератор для значения не определен
    ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8350)
    КодСообщения = 31

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

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

  39. segen

    Здравствуйте!
    В ответе от 02.04.14 вы написали:

    “Сложно ответить в двух словах, все сильно зависит от задачи. Обычно из ПВД ИсходящиеДанные не передают, просто формируют коллекцию ВыборкаДанных так, чтобы дополнительные данные не потребовались.”

    Если использовать ВыборкуДанных, то ее структура должна быть такой же, как и ИсходящиеДанные?

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

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

  40. oda

    Здравствуйте!
    При выполнении дом.задания 1.7.3 еще при выгрузке возникает ошибка:
    Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
    ПВД = ИнвентаризацияВОперациюБух
    Обработчик = ПередОбработкойВыгрузкиДанных
    ОписаниеОшибки = Итератор для значения не определен
    ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8360)
    КодСообщения = 31

    Хотела воспользоваться режимом отладки, но при попытке сохранить файл обработки с текстом отладки выгрузки тоже выдаются ошибки: {ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(466,14)}: Процедура или функция с указанным именем не определена (DOM_СоздатьУзел)
    УзелТипов = <>DOM_СоздатьУзел(“Типы”); (Проверка: Толстый клиент (обычное приложение)) и т.п.
    Т.е. ругается на все процедуры с префиксом DOM_.

    Ошибку в ПВД кое-как определила, а вот что не так с отладкой?

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

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

  41. bestteacher.1c

    Для чего нужен (как использовать) реквизит “Параметры” у Алгоритмов?

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

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

  42. tigreno

    Добрый день. В уроке 1.8.6 показан метод ПВД выгрузки через ИсходящиеДанные. Я так понимаю это частный случай для общего правила через ВыборкаДанных. В каких случаях необходимо использовать данный метод и в чем его отличие от ВыборкаДанных?? Если можно на примере.

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

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

  43. Alexey_Grishanov

    Здравствуйте!
    Не получается запустить отладку обработки V8Exchan82.epf:
    -устанавливаю флаг “Режим отладки обработчиков выгрузки”
    -по кнопке “Настройка отладки выгрузки…” устанавливаю переключатель “Режим отладки кода алгоритмов”, например, в “Вызывать алгоритмы как процедуры”.
    – Формирую текст модуля отладки для обработки.
    – Переношу сформированный текст в модуль новой обработки и при ее сохранении: Процедура или функция с указанным именем не определена (DOM_СоздатьУзел), DOM_УстановитьАтрибут и т.п.

    Подскажите, пожалуйста, в чем причина? Что не так делаю?

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

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

  44. Петр

    Хотелось бы уточнить один момент: в уроке 1.8.3 описывается прием, когда в файле XML в узел описания свойства ПВХ добавляется узел описания типов с помощью функции одПолучитьXMLПредставлениеОписанияТипов().
    В случае, когда значение свойства в разных базах имеет разные типы значений (например в ДЗ, ПВХ “СвойстваКонтрагентов”, свойство “ОсновнойМатериал” имеет тип значенияСправочникСсылка.Номенклатура в конечной базе, а в исходной это реквизит с типом значения СправочникСсылка.Материалы) то в обработчике “ПриВыгрузке” при выполнении кода:
    ОписаниеТипов = Новый ОписаниеТипов(ТипЗначения);
    Узел = одПолучитьXMLПредставлениеОписанияТипов(ОписаниеТипов);
    добавитьПодчиненный(Приемник,Узел);
    где ТипЗначения это строковое представление типа, полученное из входящих данных,
    на первой строке выдается ошибка, т.к. тип “СправочникСсылка.Номенклатура” не существует в исходной базе, хотя именно его необходимо передать, как тип свойства ПВХ.

    Получается такой прием работает, только при совпадении типов значения свойства ПВХ?

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

      Здравствуйте!
      В следующем видео-уроке рассмотрен прием замены строки с наименованием типа в уже готовом узле с помощью функции СтрЗаменить()

  45. nikola_nsk

    Поясните, в Занятие №7 рассказано два варианта переноса субконто:
    1-й: через формирование структуры и указание правила “ИмяПКОВидСубконто” для ключа структуры.

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

    2-й: через передачу значений будущего субконто через параметры и потом на стороне конечной базы заполнять субконто переданными параметрами по заданному алгоритму.

    Основной вопрос: какой из вариантов предпочтительнее использовать и в каких случаях? возможно, это нужно выделить в отдельный урок :)

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

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

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

  46. Владимир Выдрыч

    У была похожая проблема, как у Валерия Фисенко. При переносе объекта (из справочника “Поставщики”), ПКО (явно назначенное в ПКС) упорно не срабатывало, пока явно не прописал в ПКС код: Значение = Источник.Объект;

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

    Был очень удивлен этим, однако задача успешно решена.

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

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

      • Владимир Выдрыч

        Здравствуйте, значение было получено 100%, проверял отладочной печатью Сообщить(Источник.Объект) и Сообщить(ТипЗнч(Источник.Объект)), в результате получал наименование поставщика и его тип, однако по этому значению ПКО не подцеплялось, хотя оно было указано явно.

        Строка кода: Значение=Источник.Объект; решило проблему.

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

          Значение должно быть получено в переменную Значение. Она, видимо, оставалась пустой. Отладочная печать должна быть следующей: Сообщить(Строка(Значение));

          • Владимир Выдрыч

            В соседнем ПКС все сработало без присвоения переменной “Значение” явным образом. Вот что странно.

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

              Значит, там успешно происходило стандартное получение значения

  47. k1te

    Здравствуйте!
    Конвертация данных, редакция 2.1 (2.1.8.1)
    отладчики обработки выгрузки по прежнему не работают.
    Причина опять же в наименовании флага, только текст процедуры “ВыполнитьЗагрузкуНаСервере” отличается, а именно там нет сохранения флага режима отладки, как показано в видео для 2.1.6.4.
    Но заставить работать все же можно изменив процедуру “ФлагРежимОтладкиПриИзменении”:

    &НаКлиенте
    Процедура ФлагРежимОтладкиПриИзменении(Элемент)

    // Если Объект.ФлагРежимОтладки Тогда //-
    Если Объект.ФлагРежимОтладкиОбработчиков Тогда //+

    Объект.ИспользоватьТранзакции = Ложь;

    КонецЕсли;

    ОбработатьДоступностьЭлементовУправленияТранзакциями();

    КонецПроцедуры

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

      Здравствуйте!
      Спасибо за информацию!

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

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

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

      Здравствуйте!
      Может быть, ПКО, указанное в ПКС не выполняется, потому что ПКС без источника и параметр Значение остается пустым. Если причина не в этом, прикрепите правила в zip или rar архиве к комментарию, я посмотрю

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