Занятие № 11. Курс «1С:Конвертация данных 2.1 – Профессиональная настройка правил обмена и типовые сценарии переноса данных»
Настройки обработок обмена
Изучите теорию модуля № 2:
- Глава 3. Настройки обслуживающих обработок
Выполните практическое задание:
Отчеты по домашним заданиям размещайте по ссылкам, указанным выше. Отчеты, опубликованные на этой странице, удаляются без предупреждения.
Ваши вопросы по материалам данного занятия задавайте в комментарии ниже.
Общие вопросы по курсу, не связанные с конкретным занятием, задавайте на странице: http://kursy-po-1c.ru/data-conv/all-hw/convdata-common-qa/
Общие вопросы по курсу, не связанные с конкретным занятием, задавайте на странице: http://kursy-po-1c.ru/data-conv/all-hw/convdata-common-qa/
К сожалению, у Вас недостаточно прав для дальнейшего просмотра.
Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.
Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.
Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.
Комментарии / обсуждение (54):
Комментарии закрыты
Хотелось бы понять разницу между обработками “Универсальный обмен данными” версии 2.1.8 и 2.1.6. Заметил, что первая в обычном приложении открывается с управляемой формой, а вторая с обычной формой. Из-за этого, например, на 2.1.8 нельзя интерактивно открыть обработку для настройки параметров.
А какие еще между ними принципиальные различия? На текущий момент какую нужно использовать для работы? Или они обе используются в разных ситуациях?
Нет, сейчас используется обработка версии 2.1.8. По сравнению с 2.1.6 в ней исправлены некоторые ошибки, она работает стабильнее. Других отличий нет между ними. Если Вам нужна обычная форма, можете просто использовать обработку V8Exchan82, а не v8Exchan83.
При попытке соединения с COM-сервером произошла следующая ошибка:
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(13773)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V82.COMConnector.1): Ошибка при выполнении операции с информационной базой
Несовместимая версия файла базы данных ‘D:\1c_base\Курсы1с\ДЗ_1_1_1\кон/1Cv8.1CD’
на компе только версия платформы 8.3.9.1818, совместимость с 8.2.16 в конфигураторе стоит,
comcntr.dll зарегистрирован, в конфигураторе подключена обработка V8Exchan82.epf,
а V8Exchan83.epf не хочет запускаться
что сделать? не было у меня такого на практике
Здравствуйте!
V83Exchan запускается, только если отключить режим совместимости с 8.2.
Ошибка “Несовместимая версия базы данных” возникает, если происходит попытка открыть базу на более старой версии платформы. Иногда участники в коде обработки вручную прописывают создание V83.COMConnector вместо V82, возможно, в Вашем случае тоже сработает
Здравствуйте, у меня вопрос по домашнему заданию.
Мне удалось соединиться с конечной ИБ и выгрузка в конечную ИБ происходит успешно.
Но почему-то не срабатывает проведение документов реализация товаров и услуг.
Возможно не отрабатывает обработчик после загрузки данных конвертации.
СписокДокументов = Параметры.СписокДок;
ПроводитьДокументы = Параметры.ПроводитьДокументы;
Если ПроводитьДокументы Тогда
Для каждого Стр из СписокДокументов Цикл
Если Стр.Проведен Тогда
Сообщить(“Проведение : ” + Стр.Документ);
Стр.Документ.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
ИначеЕсли НЕ Стр.Документ.ЭтоНовый() Тогда
Сообщить(“Отмена проведения: ” + Стр.Документ);
Стр.Документ.Записать(РежимЗаписиДокумента.ОтменаПроведения,РежимПроведенияДокумента.Неоперативный);
Иначе
Сообщить(“Документ новый”);
КонецЕсли;
КонецЦикла;
КонецЕсли;
При загрузке через обработку все работает но при обмене через com соединение нет.
Почему так происходит?
Здравствуйте!
Скорее всего, сам обработчик отрабатывает. Возможно, проблема с формированием таблицы в Параметрах. Это можно проверить: каждый документ выгружается в открытой базе и сразу передается в другую по com-соединению и там загружается. То есть, если все отрабатывает правильно, он должен быть доступен в обработчиках на стороне выгрузки через созданную обработку для загрузки в другой базе – она находится в параметре мОбработкаДляЗагрузкиДанных. Проанализируйте структуру мОбработкаДляЗагрузкиДанных.Параметры, появляются ли в ней документы. Возможно, можно каждый документ записывать в таблицу в этой структуре непосредственно при выгрузке. Но я не пробовала, задачи такой не было. Попробуйте и напишите потом, что получилось.
Метод Сообщить() для отладочной печати не поможет, конечно. Но можно настроить логирование путем записи в журнал регистрации конечной базы, или через запись в файлы
При проверке подключения выдает:
“При попытке соединения с COM-сервером произошла следующая ошибка:
{ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(13772)}:
Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Недопустимая строка с указанием класса”
В предыдущих вопросах такая ошибка описывалась, но ее решение мне не подошло.
Я использую 1С:Предприятие 8.3, учебная версия (8.3.6.2299). Windows 7 Ultimate.
Компонента comcntr.dll вообще в учебную платформу не включена. Скопировала с рабочего комп.
Пытаюсь зарегистрировать -> картинка во вложении. Хотя файл действительно лежит по указанному пути, регистрировать отказывается. Посоветуйте, плз, как решить проблему.
Здравствуйте!
Учебная платформа не поддерживает COM- соединение.
В обработке выгрузки надо для 83 переопределить параметр создания ком объекта
//ОбъектПодключения = ОбъектПодключения +”.COMConnector”;
ОбъектПодключения = “V83.COMConnector”;
Добрый день!
В видео 2.3.5 говориться про флажок “при загрузке строк обрезать пробелы справа”.
Подскажите повлияет ли это на поиск объектов в приемнике, если к примеру поиск идет только по наименованию и оно соответственно, как в примере на видео, было обрезано “Алхимов ” -> “Алхимов”
Или обрезание идет уже после загрузки объекта?
Здравствуйте!
Нет, обрезание происходит в процессе загрузки каждого свойства. То есть, если часть элементов была загружена без обрезания, а потом оно было установлено, и по этому свойству происходит поиск, то объекты могут задублироваться.
Здравствуйте!
Не могу понять по вопросам теста для самопроверки почему при ответе на вопрос Настройка «Загружать данные в режиме обмена» — это
правильный ответ не первый:
Настройка ПКО, которая позволяет записывать данный тип объектов, исключая системные проверки
а последний:
Настройка обработки Универсальный обмен данными, которая позволяет записывать данные по мере загрузки из файла обмена?
Здравствуйте!
Потому что эта настройка была создана не для того, чтобы загружались некорректные данные. Это методологически неправильно. Например, с незаполненными обязательными свойствами, или с дублирующимися кодами при включенном контроле уникальности. Задача разработчика правил следить, чтобы такие ситуации не возникали. Просто без этой настройки нельзя загрузить, например, Договор контрагента, подчиненный Контрагенту, и Контрагента, у которого этот договор указан как основной (поле обязательно к заполнению). В этом случае какой бы из этих элементов ни был первым, он не может быть записан из-за системных проверок, поэтому их и отключают.
Прокомментируйте, пожалуйста, ответ на первый вопрос из теста:
“В ПКО для справочника Контрагенты стоят флажки «Искать объект по уникальному идентификатору» и «Продолжить поиск по полям, если по идентификатору объект не найден». Флагом поиска отмечено только ПКС «ИНН». После выгрузки в файл данных было выгружено два элемента. У первого элемента Уникальный идентификатор совпадает с элементом «ИП Петров» в базе-приемнике, а значение ИНН отличается. У второго элемента Уникальный идентификатор в базе-приемнике не встречается, а значение ИНН совпадает с тем же элементом «ИП Петров» в базе-приемнике. Сколько новых элементов справочника появится в результате загрузки?”
От каких именно настроек ПКО и ПКС и почему зависит сколько будет новых элементов?
Здравствуйте!
Первый элемент будет точно сопоставлен с элементом “ИП Петров” по уникальному идентификатору. Но мы знаем, что значение ИНН у него отличается. Далее вопрос: будет ли ИНН у элемента “ИП Петров” изменен на ИНН загружаемого объекта? Если да, то второй элемент при загрузке не сопоставится с “ИП Петров”, и будет создан новый.
Изменится ли ИНН у элемента “ИП Петров”, зависит от настройки ПКО “Не замещать существующие объекты…”, а также от настройки ПКС “ИНН” “Не замещать значение свойства…”
При попытке подключиться по COM выдаёт
“При попытке соединения с COM-сервером произошла следующая ошибка:
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(13772)}: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Недопустимая строка с указанием класса”
Comctrl.dll зарегистрирована, подскажите куда копать?
База приемник в режиме совместимости “Версия 8.2.16”
Здравствуйте!
Судя по отчету, все получилось?
Да в модуле обработки обмена изменил создание COM объекта независимо от того что выбрано создаю V83ComConnector Не универсальное решение :-( но мне подходит :-)
Хорошее рабочее решение :)
Здравствуйте. Извините, если вопрос уже задавался. Насколько я понял, хотя Параметры и доступны в обработчике ПередЗагрузкойДанных конвертации, если установить там какие-то значения параметров, они будут сброшены. Можно установить параметры в следующем обработчике ПослеЗагрузкиПараметров, но в этом случае возникает проблема с отладкой загрузки (Отладка обработчика “После загрузки параметров” не поддерживается). Где бы вы рекомендовали инициализировать программно параметры на стороне загрузки?
Здравствуйте!
Структура Параметры – это глобальный параметр по всему модулю загрузки. Если определить их в событии “Перед загрузкой данных”, то они не сбросятся. Там это и нужно делать
Разработан ли какой-нибудь метод для ограничения выборок при тестировании выгрузки данных? Чтобы можно было быстро включить/отключить ограничитель количества выгружаемых объектов по всем или отдельному ПКО?
Так и чешутся руки подправить конвертацию, но может велосипед уже изобретен?
Здравствуйте!
Нет, готового такого механизма нет
Нет и никогда не будет в ПКО, возможно когда-то но в ПВД
Добрый день, после выполнения ДЗ возник вопрос, почему в лог загрузки не попадают сообщения (в данном случае о проведении документов), которые мы выводим в процессе загрузки посредством COM через сообщить? Я так понимаю, что механизма перенаправления вывода (из окна системных сообщений в файл) не существует и система просто при выгрузке посылает все свои стандартные сообщения в файл, а наши сообщить безвозвратно теряются? Т.е. нам просто если мы хотим увидеть свои сообщения лучше пользоваться какой-то системной функцией генерации сообщений, которая зашита в саму обработку. Возможно этот вопрос рассмотрен в ДЗ. Еще не видел официального решения ДЗ.
Здравствуйте!
При обмене по COM-соединению может быть выведена только информация об ошибках. Типовых способов вывода информационных сообщений в этом случае нет.
Добрый день, у меня вопрос по механизму отбора по периоду в толстом клиенте. Как я понял в том случае если установлен флаг “отбор по периоду для всех объектов” отбор происходит по принципу “И” вместе с уже наложенными условиями на каждое ПВД условиями, если флаг не установлен, то в теории по ПВД, на которые наложены условия настройки периода не применяются. Тем не менее если мы переносим документы (для регистров не проверял) и накладываем на конкретное ПВД отбор, то оба эти условия отрабатывают всегда в не зависимости от флага. Т.е. оба условия отрабатывают по принципу “И”. Такое ощущение, что флаг всегда работает. Это я что-то неправильно понял, или это какая-то ошибка особенность конвертации. Версия конвертации и обработок: 2.1.8.2.
Второй вопрос, как я понимаю если объекты выгружаются по ссылке условия как по периоду, так и по остальным отборам по конкретным ПВД не накладывается на них никак, и вообще они работают только для стандартного обхода объектов выгружаемых по ПВД. Это верно?
Здравствуйте!
1. Да, имеется в виду отбор, установленный в окне обработки для каждого ПВД. Но, действительно, этот флажок, похоже, не работает. Судя по коду, он будет всегда считаться установленным. Видимо, это уже устаревшая функция.
2. Да, все правильно
Здравствуйте, Ольга
Читаю комментарии, что-то не понял вот это:
1. Ольга Кузнецова 16.02.2014
Здравствуйте! Одновременно может быть зарегистрирована компонента только для 8.2 или 8.3, стандартных способов одновременной работы нет.
2.Можно зарегистрировать одновременно компоненты от 8.2 и 8.3, они не конфликтуют
Здравствуйте!
На самом деле, в первом случае – это моя ошибка. Видимо, не так поняла вопрос. Компоненты от двух версий 8.2 или двух версий 8.3 одновременно нельзя установить. А компоненты от 8.2 и 8.3 друг с другом не конфликтуют
Здравствуйте
Написала ответ по заданию 2.11.11
17 октября 2014.
Почему-то до сих пор не одобрен.
Здравствуйте!
Не вижу Вашего отчета. Опубликуйте еще раз, пожалуйста
Кстати, если Вы полностью работаете на 8.3, то для обмена on-line через COM достаточно в обработке Универсальный обмен данными XML для реквизита формы ВерсияПлатформыИнформационнойБазыДляПодключения в списке выбора добавить значение V83 и обмен с 8.3 будет доступен в обработке.
Здравствуйте!
Спасибо за информацию!
Здравствуйте.
Уточните, какой ответ на третий вопрос теста самопроверки, – “Настройка «Загружать данные в режиме обмена» – это?”, является правильным. Из видеоурока следует, что правильный ответ – “исключение системных проверок”. А в обзоре ответов после выполнения тестов верным помечен вариант “записывать данные по мере загрузки из файла обмена”.
Здравствуйте!
Первый ответ мог бы быть правильным, но там написано “Настройка ПКО”, а это настройка обработки. Целью этого вопроса было обратить внимание на то, что без этой настройки “Кольцевые” ссылки (когда два элемента взаимно ссылаются друг на друга, причем у них эти реквизиты обязательны для заполнения) не могут загрузиться вообще.
Добрый день, поясните пожалуйста причем здесь кольцевые ссылки для этого параметра загрузки данных, в теоретическом модуле про это не было информации, или я что-то пропустил. Кроме того правильный ответ: “Настройка обработки Универсальный обмен данными, которая позволяет записывать данные по мере загрузки из файла обмена” совсем не понятен и не очевиден, разве при загрузке без этого флага, данные загружаются не по мере загрузки из файла обмена? Точно также они и загружаются, просто может сработать какая-то проверка на нумерацию, заполненность реквизитов или код в процедурах при записи / перед записью, и загрузка остановится с ошибкой.
Здравствуйте!
Например, если загружаются Контрагенты и Договоры контрагентов. У Контрагента есть реквизит основной договор с контролем заполнения. У Договора есть владелец – Контрагент, который тоже должен быть заполнен. Что бы из них не загрузилось первое в базу, без настройки «Загружать данные в режиме обмена» элемент не может быть записан, будет выдана ошибка. А если загружаются Номенклатура и Единица, подчиненная номенклатуре, но Единица встретилась в файле первой, то она не может быть записана сразу, а только после того, как встретится ее владелец. Поэтому основная функция этой настройки – не загрузка некорректных данных, а последовательная запись зависящих друг от друга объектов
Ясно, спасибо.
Здравствуйте.
При СОМ-соединении получаю ошибку:
Произошла исключительная ситуация (V83.COMConnector.1): Несоответствие версий клиента и сервера 1С:Предприятия
Различаются версии клиента и сервера (8.3.5.1088 – 8.3.5.823), клиентское приложение. Можно ли решить эту проблему путем регистрации comcntr.dll или решается проблема только путем обновления платформы?
Здравствуйте!
Версии клиента и сервера обязательно должны совпадать. Поэтому, если на клиенте не установлена платформа требуемого релиза, необходимо ее установить, при этом COMConnector нужного релиза будет зарегистрирован автоматически. Если же платформа уже установлена, то достаточно зарегистрировать библиотеку при помощи команды:
regsvr32 < путь до модулей 1С:Предприятия правильной версии>\comcntr.dll
Здравствуйте!
Как правильно установить “comcntr.dll” для одновременной работы с 8.2 и 8.3 на одной рабочей станции. Какие особенности при установке при клиент-серверном использовании.
Здравствуйте! Одновременно может быть зарегистрирована компонента только для 8.2 или 8.3, стандартных способов одновременной работы нет. Компонента может быть установлена и на клиент, и на сервер, в зависимости от стоящих задач
Здравствуйте!
Вопрос по 2.3.2 “Возможность обмена через COM”
Правильно ли я понимаю, что задачу трансляции 8.2->8.3, кроме “понижения” Конечной ИБ до 8.2 можно решить и “Повышением” в Исходной ИБ. Для этого придется модернизировать обработку УниверсальныйОбмен, добавив “8.3” в список “Платформ”. При этом потребуется зарегистрировать “comcntr.dll” от 8.3.
Есть ли какие “подводные камни” (противопоказания) одновременного использования библиотек различных платформ? Нужно ли использовать две или библиотека от 8.3 может поддерживать и вызовы от 8.2?
Здравствуйте!
Да, можно подправить обработку так, чтобы она работала с 8.3.
Можно зарегистрировать одновременно компоненты от 8.2 и 8.3, они не конфликтуют
Библиотека от 8.3 не работает с 8.2
Здравствуйте!
При выгрузке данных через COM, можно ли выводить сообщения для пользователя в исходной ИБ?
Здравствуйте!
Можно выводить сообщения как раз только в исходной базе. Сообщения будут о выгрузке объектов, а о загрузке будут сообщения только в случае ошибки. При COM-соединении загрузка каждого объекта происходит сразу после его выгрузки.
В видео 2.3.2 говорится о том, что при обмене через COM-соединение происходит выгрузка всех объектов в промежуточный файл, а потом этот файл загружается. Вы утверждаете, что “При COM-соединении загрузка каждого объекта происходит сразу после его выгрузки.”. Так как на самом деле?
Здравствуйте!
На самом деле происходит выгрузка каждого объекта в промежуточный файл, а потом сразу происходит загрузка этого файла. Поэтому большие объемы данных через COM переносить оптимальнее
Здравствуйте! При настройке обмена через СОМ – соединение столкнулась с тем, что подключиться к Приемнику удается только тогда, когда Приемник выключен. В противном случае выдается следующее сообщение об ошибке:
При попытке соединения с COM-сервером произошла следующая ошибка:
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(13781)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V82.COMConnector.1): Существуют активные сеансы работы с данной базой, использующие версию платформы, не поддерживающую совместную работы с этой версией.
Не совпадает версия временного файла.
Что это значит, и возможно ли с этим бороться?
Здравствуйте!
На практике встречалось следующее решение проблемы «Не совпадает версия временного файла». Причиной был антивирус. На компьютере, где появлялась эта ошибка, стоял Kaspersky Endpoint Security 10. Как только Касперского удалили (отключение, настройка исключений не помогли), база стала запускаться. Коллеги также описывали похожий случай.
Вообще, ошибка характерна для платформы 8.3. Не поддерживается одновременная работа «1С:Предприятия» версии 8.3.3 (и новее) и предыдущих версий с файловой информационной базой. Совместная работа с файловой информационной базой возможна только клиентскими приложениями одной версии.
Для проверки можно оставить установленной платформу только одного релиза, все остальные удалить. Затем зарегистрировать компоненту comcntr.dll из подкаталога bin установленной платформы для работы через COM:
regsvr32 comcntr.dll (через командную строку, запущенную от Администратора)
При установке платформы любого релиза компонента comcntr.dll регистрируется от устанавливаемого релиза. Возможно, при наличии параллельно установленных платформ 8.2 и 8.3 зарегистрирована компонента от платформы 8.3, поэтому попробовать зарегистрировать, указав файл из папки с установленной 8.2. Тогда при помощи COM доступ к базе-приемнику под 8.2 должен быть получен, если база-приемник может быть открыта под этой платформой.
Для подключения к базе на платформе 8.2 следует использовать объект V82.COMConnector, а для доступа к базе на платформе 8.3 – V83.ComConnector.
В комплекте с конфигурацией «Конвертация данных» есть обработка V8Exchan83.epf, при помощи которой можно подключаться к базам как на платформе 8.3, так и 8.2.
Здравствуйте, вопрос по видео 2.3.3 “Отбор выгружаемых данных”.
Что будет, если в ПВД используется произвольный алгоритм выборки исходных данных, и при этом настроены отборы для этого ПВД на форме обработки выгрузки?
Сработают ли эти отборы после того, как отработает произвольный алгоритм выгрузки, или будут проигнорированы?
Здравствуйте!
В случае выгрузки по ПВД с произвольным алгоритмом отбор будет проигнорирован. Он действует только если указана стандартная выборка и не указан узел обмена