Удобно использовать когда необходимо выгрузить информацию, а использование "ВыгрузкаЗагрузкаДанныхXML.epf" невозможно из-за несовпадения структур выгружаемых объектов.
Обработка не призвана заменить или конкурировать с Конвертацией, однако использование Конвертации зачастую бывает неоправданно долго.
БУДУ РАД ВЫСЛАННЫМ ОШИБКАМ И ЗАМЕЧАНИЯМ, ОСОБЕННО С ИСПРАВЛЕННЫМ /ДОРАБОТАННЫМ КОДОМ.
Версия 4.1:
- Доработана эргономика настройки синхронизируемых элементов. Табличная часть переделана на дерево значений.
Версия 4.
- Исправлены выявленные в процессе работы ошибки. Добавлено сохранение настроек в Файл.
- Выявлена платформенная 1С ошибка — COM-соединение не работает, если у вас на машине стоят две версии платформы. Почему-то не находит dll-ку.
Версия 3.
- Переписана полностью на платформу 8.2. (8.2.14.519).
- Оптимизировано быстродействие, переписано определение типов. Убрал «невостребованный» с моей точки зрения функционал. Доработана возможность подключения к файловой базе. Исправлены ошибки выявленные в версии 2.1.
- Ограничения — недотестирована выгрузка объектов (отключена выгрузка через COM):
- ПланВидовРасчета;
- ПланСчетов;
- Задачи;
- БизнесПроцесс;
- ПланОбмена;
- РегистрРасчета;
- РегистрБухгалтерии;
Версия 2.1 Проведено дополнительное тестирование. Устранены выявленные ошибки. Доработан интерфейс, внешний вид, добавлена маленькая справка. После проведенный доработок текущее описание обработки не переделывалось.
Версия 2. Скомпонована более универсально, добавлен функционал регистрации в ПланОбмена, добавлено сравнение Данных, устранены замеченные ошибки. Из-за недостатка времени доработка ведется только при крайней необходимости. Поставляется «Как Есть» — есть вероятность потери данных при перегрузке через COM. Тестировалась на 8.1.
Возможности обработки:
|
вывести на экран — будет сформирована печатная форма результатов запроса. вывести в таблицу – выводит данные в таблицу значений внизу формы.
результат в план обмена – регистрирует выбранные объекты в план обмена. Выгрузить через COM – выгружает объекты в другую базу посредством COM- соединения.
|
||||||||
Описание формы инструментария
|
|||||||||
При открытии обработки формируется дерево метаданных.
При заполненном поле «ПланОбмена», метаданные ограничиваются регистрируемыми объектами выбранного плана обмена.
Обработка отмеченных объектов возможна по отдельности или по всем: «ОбработатьСтроку» или «ОбработатьОтмеченные».
Объекты МД с настроенными отборами отмечаются в дереве значком «*».
|
|
||||||||
Кнопки панели управления позволяют:
|
|||||||||
Открывает/скрывает таблицу значений (Предварительный анализ результатов в таблице значений) |
|||||||||
Проведение тонкой настройки отборов, указание перегружаемых полей, замена элементов, синхронизация объектов |
|||||||||
Форма тонкой настройки открывается по двойному клику на строке дерева объектов. Возможны настройки:
|
|
||||||||
Настройка соответствий реквизитов с COM-объектом: Настройка требуется, если объекты в базах имеют различную структуру. Пример 1: требуется перегрузить справочник Клиенты в справочник Контрагенты. Необходимо ввести наименование справочника в Сom-базе. В дальнейшем при выгрузке объектов для реквизитов данного типа будет устанавливаться соответствующий тип автоматически. Пример2: Различаются наименования реквизитов. Пример 3: требуется перегрузить только несколько реквизитов.
|
|||||||||
Настройка замен: Настройка замен возможна для справочников. При настроенной замене будет происходить подмена элементов. Пример 1: В новой базе создан новый предопределенный элемент. |
|||||||||
Описание приемов работы с обработкой. Выгрузка данных через com-соединение. Для простой выгрузки данных через com-соединение достаточно установить режим “Выгрузить через COM”. Если настройка отборов не требуется, то дополнительных действий более не требуется. В момент подключения будут заполнены соответствия объектов и реквизитов и т.д. Соответствие реквизитов будет устанавливаться по Com-имени, если оно было заполнено в форме тонкой настройки.
В окне сообщений будет выведены сообщения об «несовпадающих» объектах.
Алгоритм выгрузки оптимизирован для больших объемов: при выгрузке, определение Com-ссылок происходит только один раз, в дальнейшем ссылка получается из таблицы соответствий.
Запись всех объектов в Com-базе происходит в режиме: ОбменДанными.Загрузка=Истина. |
|||||||||
Применение COM-технологии Ограничения на применение COM – технологии в 1С, из личного опыта (рецензии приветствуются только с примером реализации).
В SQL 2000 ограничение 25 символов срабатывает на больших объемах, на маленьких проходит без проблем и с большим количеством записей — наблюдал лично.
Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли;
|
Всеже, чем неустраивает стандартная Конвертация Данных ??
Я думаю, COM-обмен тем и интересен, что это — возможность online обмена. Многие пытаются подобраться к этой теме.
А XML-обмен, который используется в Конвертации, это все же offline.
Спасибо автору за предложенное решение.
(2) Для нормально онлайн обмена лучше использовать вебсервисы, тогда и территориально не зависимо будет, и не важно какая платформа и где территориально находится.
Вебсервисы и 1с 77 … ?
(4) 1. Данная разработка для 8
2. Вебсервисы в 7.7 тоже можно использовать, используя соответствующие ВК.
Что хотелось сделать-посмотреть насколько 1с корректно реализовала технологию прямого подключения. Как выдите на альфа версии все пока и остановилось. — 1с решила развивать XML. К сожалению получение напрямую через запрос текстового представления ссылки не было реализовано. из-за этого гемор так и остался.
Так КД давно для 8-ки прямое COM-соединение поддерживает. Плюс к примеру, интеграция с планом обмена
Добрый день, Алексей. У меня не открывается обработка.
{ВнешняяОбработка.ОбменCOM_XML(61,9)}: Процедура или функция с указанным именем не определена (ЗаполнениеСправочникаСотрудники)
Справ=<<?>>ЗаполнениеСправочникаСотрудники(ФизЛицо,Приказ);
а почему застрял в хранилище?
разве нельзя выгружать файл на диск и затем загружать в другую базу?
9 Приведи пример, буду рад внести изменения.
(10)
ок. вот пример:
Вводные: в справочнике «допВнешФайлы» есть реквизит «Данные» типа хранилищеЗначения.
Задача: Через COM-соединение перенести эти данные в другую базу.
Код:
//Этот код перенесёт данные элемента1 из одной базы в данные элемент2 другой базы.
//ВнешняяБД — ком-соединение с другой базой
ИмяВремФайла = ПолучитьИмяВременногоФайла();
ВнешняяБД.Справочники.допВнешФайлы.НайтиПоНаименованию(«элемент1»).Данные.Получить().Записать(ИмяВремФайла);
объектЭлементаСправочникаТут = Справочники.допВнешФайлы.НайтиПоНаименованию(«элемент2»).ПолучитьОбъект();
объектЭлементаСправочникаТут.Данные = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ИмяВремФайла));
объектЭлементаСправочникаТут.Записать();
УдалитьФайлы(ИмяВремФайла);//подчистим
(10)
пример 2, тут те же вводные, но база-источник и база-приемник — внешние.
Код:
//Этот код перенесёт данные элемента1 из одной базы в данные элемент2 другой базы.
//ВнешняяБД1, ВнешняяБД2 — ком-соединения с другими базами
ИмяВремФайла = ПолучитьИмяВременногоФайла();
ВнешняяБД1.Справочники.допВнешФайлы.НайтиПоНаименованию(«элемент1»).Данные.Получить().Записать(ИмяВремФайла);
объектЭлементаСправочникаТам = ВнешняяБД2.Справочники.допВнешФайлы.НайтиПоНаименованию(«элемент2»).ПолучитьОбъект();
объектЭлементаСправочникаТам.Данные = ВнешняяБД2.NewObject(«ХранилищеЗначения», ВнешняяБД2.NewObject(«ДвоичныеДанные», ИмяВремФайла));
объектЭлементаСправочникаТам.Записать();
УдалитьФайлы(ИмяВремФайла);//подчистим
вообще не понимаю упорное нежелание многих попробовать сделать хоть что то в КД
(13) Borisych, На это можно ответить: каждому — свое. И это прекрасно!
Если вы считаете, что КД для вас удобнее — я рад за вас. Только мне реально пришлось заниматься переносом данных
и мне КД не подошло. Вскоре выложу достаточно наглядный пример описанием.
Для кого-то такая разработка может служить наглядным пособием для организации com-обменов данными.
я через com тоже делал/ю переносы, после освоения КД на должном уровне в зависимости от своего субъективного мнения выбираешь свободно и обоснованно каким инструментом пользоваться
Согласен. Кесарю — кесарево
Перенос через Com данной обработкой получился спасибо автору! Все что мне было нужно перенеслось! Хорошая обрабока 🙂
(13) Borisych,
да достали уже ошибки при переносе через КД. И совсем неясно — что править, если «невозможно выгрузить. Реквизит такой-то не найден».
Что за реквизит, откуда он? базы идентичные, а вот поди ж ты.
(18) AlexO, это уходит когда приходит опыт
(19) Borisych,
да-да, расскажите мне про опыт после десятка произведенных мной переносов через КД :))))
(18) AlexO,
кстати, разобрался — косяк КД в том, что при обновлении конфигурации КД не удаляет из своего списка конфы те элементы, которые были в ранних релизах, но удалены в действующем.
Это дает великолепную картину удаленных в новом релизе объектов, но просит каждый раз проходить этапы создания правил и выгрузки :)))
для 8.1 нет версии?
Согласен, КД — отличный мощный механизм, который с лихвой покрывает огромное количество возможных вариантов. Жаль, что для освоения и легкого использования для любого случая требуется очень немалый опыт, которго иногда просто не хватает. Так что и тянущиеся еще с 7.7 обмены по ОЛЕ и появившиеся по КОМ — вполне имеют право на жизнь, а иногда и способ наиболее быстро осуществить обмен
я успешно использую
создание сом-соединения
Показать
и вызов для очистки регистра в источнике
Показать
Пора уже 8.3 Comconnector использовать:
Показать
не взлетело — видимо устарел механизм.
Очень красивое решение.
Спасибо.
Скачал.
«Плюсанул».