Книга знаний

1С:Предприятие / Приемы программирования / Обмен данными, УРБД

FAQ по Менеджеру обмена данными (МОД)

Ответы на частые вопросы с форума forum.mista.ruАвтор статьи: ПиБи | Редакторы:
Последняя редакция №9 от 24.10.06 | История
URL: http://kb.mista.ru/article.php?id=393

Ключевые слова: МОД, Менеджер обмена данными, обмен, УРБД, конвертация, репликация, синхронизация,XML


Сложен ли МОД в использовании?


"Менеджер обмена данными" не сложный, а гибкий инструмент. Если использовать "Менеджер обмена данными" в режиме а-ля УРБД (одинаковые базы данных, обмен по топологии звезда, настройка выгрузки только для видов объектов, нельзя фильтровать объекты), то установка и настройка занимает 10-20 минут (включая прочтение раздела документации в 10 страниц, посвященному такому обмену). Настройка правил в рамках "а-ля УРБД" осуществляется быстрее, т.к. присутствуют механизмы для групповой настройки правил миграции для однотипных объектов и для одного объекта со всеми базами, с которыми мы обмениваемся.

Для сложных обменов, когда требуется фильтрация, преобразование, синхронизация по ключевым полям, произвольная топология, настройка приоритетности МОД редоставляет различные средства настройки (от "только мышка" до кодирования).

По каким критериям МОД сравнивать с другими решениями для обмена?























КритерийМОД
ЦенаЛицензируется на каждую БД участвующую в обмене, цена от 600 до 1350 рублей за базу
Установка (для обмена между 2мя базами)5 мин

Топология обмена

Произвольная ("звезда","кольцо","дерево" и т.д. и т.п.)

Транспорт

Любой (встроенный обмен через FTP и e-mail (собственный почтовый клиент))

Автообмен

Средствами 1С или внешнего шедулера

Обмен в немонопольном режиме

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

Приоритетность баз

Настраивается в каждой паре баз (источник и приемник)

Настройка миграции

Вплоть до реквизита объекта метаданных (тип, вид, реквизит). Инструмент для групповых операций с настройкой

Передача изменений конфигурации

Разрешение/запрет. Изменения конфигурации отслеживаются, передаются, но автоматически не загружаются. Существуют нештатные разработки, которые автоматизируют загрузку конфигурации

Перенос правил миграции при установке нового релиза конфигурации

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

Варианты обмена

Изменения, выборочно, за период,списком

Просмотр файла пакета

Штатный механизм

Размер пакет

В пакете информация занимает меньше места, чем в БД (dbf, SQL). Уменьшение размера за счет отключения выгрузки ненужных реквизитов. Уменьшение размера при выгрузке шапки реквизитов отдельным файлом. Архивация arj, rar.

Скорость выгрузки/загрузки (примерно, зависит от конфигурации компьютера,объема и состава данных)

210'000 объектов/час    / 40'000  объектов/час

Фильтрация данных

Гибкая

Преобразование данных

Гибкое

Обмен между разными конфигурациями

Да. Структуры конфигураций сопоставляются с помощью гибких механизмов правил обмена

Коллизии номеров

Присваивается новый номер

Движения документов

Переносятся вместе с документом или документ проводится на месте

Поле синхронизации

ID объекта (по терминологии МОД - IDD) + опционально по любому реквизиту с признаком "Сортировка" или "Отбор"

Как работает связка МОД+УРБД?

Два продукта можно использовать вместе, но надо иметь в виду следующие нюансы:

1) Нельзя обмениваться  между двумя базами одновременно обоими продуктами
2) Если в базу, из которой идет выгрузка через МОД, данные загружаются с помощью УРБД, то МОД "не видит" в режиме обмена изменениями результаты этой загрузки. Для решения задачи можно воспользоваться внешними разработками, которые на основании данных из пакета УРБД делают записи в журнал регистрации изменений МОДа (например, http://1c.proclub.ru...).
3) В УРБД надо отключить миграцию констант МОДа (IDD, УникальныйIDD, ПарольМОД и т.д.)
4) Для баз УРБД, которые не принимают участие в обмене через МОД, надо отключить вызов процедур инициализации МОДа в глобальном модуле

Как настроить автообмен через МОД?


1) Для вызова обмена в заданное время нужно настроить с помощью «Назначенных заданий» («Shedule Task»)  Windows вызов нужной базы 1С:Предприятия с пользователем «Автообмен» (пример «С:\program files\1cv7\BIN\1cv7.exe» enterprise /DC:\Base\office /NАвтообмен /PПароль ) .

В Глобальный модуль в предопределенную процедуру
ПриНачалеРаботыСистемы
вставить следующий код:


Если ПользовательСистемы()= «Автообмен» Тогда
     База=СоздатьОбъект(«Справочник.ПериферийныеБазы»);
     База.ВыбратьЭлементы();
     Пока База.ПолучитьЭлемент()>0 Цикл
          ОткрытьФорму("Обработка.ОбменДанными#", База.ТекущийЭлемент());

     КонецПроцедуры;
     СтатусВозврата(0);
     Возврат;
КонецЕсли;


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

2) Для вызова обмена через заданные промежутки времени надо в глобальный модуль в предопределенную процедуру
ПриНачалеРаботыСистемы
вставить следующий код:

Если ПользовательСистемы ()= «Администратор» Тогда // здесь проверяется имя пользователя, у которого есть права на обмен. Обмен должен запускаться только у одного пользователя 


     ОбработкаОжидания(«Автообмен», 60); // вызов с заданной частотой. В данном случае каждые 60 секунд
КонецЕсли;
 

И добавить процедуру

Процедура Автообмен()


            База=СоздатьОбъект(«Справочник.ПериферийныеБазы»);
            База.ВыбратьЭлементы();
            Пока База.ПолучитьЭлемент()>0 Цикл
               ОткрытьФорму("Обработка.ОбменДанными#", База.ТекущийЭлемент());

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


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

Как лицензируется МОД?



МОД лицензируется на каждую базу участвующую в обмене вне зависимости от физического расположения баз и направлений обмена. Под базой подразумевается физическая база 1С:Предприятия.


Примеры:

1) У Вас есть центральный офис, в котором стоит 1 база 1С, которая обменивается с такими же базами в 4 филиалах. Вам надо приобрести 5 лицензий.
2) У Вас есть центральный офис, в котором стоят 2 базы (например, Бухгалтерия и Торговля) и в филиалах тоже стоит по 2 базы. Вам надо приобрести 10 лицензий.
3) В Вашем офисе в пределах локальной сети или на одном компьютере находятся 3 базы Бухгалтерии, между которыми надо настроить обмен. Вам нужно приобрести 3 лицензии.

Что входит в комплект поставки?


1) Пластиковая регистрационная карточка с уникальным идентификатором и паролем. Эти данные требуются при установки МОДа и для его работоспособности.
2) Печатное руководство пользователя (включает Руководство 0 (для быстрой установки и использования МОД в простых обменах) и Руководство)
3) CD-диск (дистрибутив, Руководство администратора (для сложных обменов), шаблоны правил обмена между типовыми конфигурациями)
4) Коробка

Как посмотреть?


Демо-ролик для пользователей -  www.pb.ru/manager/MOD.exe
Демо-ролик для администраторов - www.pb.ru/manager/MOD_admin.exe
Тест-драйв (работа с демо-базой через Интернет в терминальном режиме) - www.pb.ru/manager/testonline.shtml
1С:Франчайзи могут бесплатно получить коробку с NFR-версией - www.pb.ru/manager/nfr.shtml

Где используется?


За 7 лет было продано около 20000 лицензий "Менеджера обмена данными". По оценкам компании "ПиБи" он используется более чем в 5000 предприятиях. Компания "ПиБи" регулярно проводит акции по сбору информации о внедренных решениях. Часть этой информации можно посмотреть на www.pb.ru/manager/solutions.shtml или заказать бесплатный печатный сборник внедренных решений ( www.pb.ru/manager/solutions_order.shtml ).

По какой причине «задваиваются» объекты (справочники, документы)?


МОД для однозначной идентификации объекта использует свой внутренний идентификатор (дополнительный реквизит IDD добавляемый к справочникам и к общим реквизитам документов). Данный идентификатор заполняется автоматически у существующих объектов в момент установки МОДа или при записи нового объекта. Идентификатор однозначно характеризует объект и не меняется при распространении и редактировании объекта в других базах. Таким образом для правильной работы МОДа в разных базах у одного и того же объекта должен быть один и тот же идентификатор.

Главной причиной возникновения задваивания является неправильная установка МОДа на существующие базы:
1) Если у Вас существовала одна база и Вы хотите сделать ее полные или неполные копии и настроить обмен, то последовательность установки МОДа такая:

- устанавливаете МОД в соответствии с инструкцией
- инициализируете МОД
- только после этого делать копии этой базы встроенной процедурой отпочкования или файловым копированием с заменой идентификаторов баз и паролей

Не правильно:
- делать копии базы до установки МОД и отдельно устанавливать МОД на кажду копию
- делать принудительную установку новых идентификаторов объектов в скопированных базах

2) Если у Вас уже существовали базы, в которых информация вводилась независимо, но часть данных пересекается, то Вы должны установить МОД на каждую базу и воспользоваться возможностью МОДа по синхронизации объектов по дополнительным полям. Например, в двух базах существует контрагент "Иванов". В одной базе ему присвоился идентификатор 10000010001234567, в другой - 10000020007654321. Для МОДа - это два разных объекта. Для того чтобы "объяснить" МОДу, что это один и тот же объект, надо в правилах загрузки указать, что для данного вида справочника объекты надо синхронизировать по реквизиту "Наименование".

Как настроить передачу через МОД измененной конфигурации?


МОД может отслеживать изменения файла конфигурации, отправлять и принимать его, но не может автоматически загрузить обновление. Обновление надо загружать вручную или воспользоваться сторонними разработками, которые автоматически загружают конфигурацию.

Почему документы загружаются с признаком проведения, но движения пустые?


МОД может обрабатывать перенос движений документов двумя способами (за это отвечает галочка в колонке "Движения"):


1) передавать движения в базу-приемник один в один, как в базе-источнике. За содержание передаваемых движений отвечают настройки правил по Регистрам, Операциям и Журналам расчетов
2) не передавать движения, а при загрузке проводить документ по алгоритмам базы-приемника

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

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

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

Пример выгрузки объектов списком значений


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

Пример.

//создаем список объектов для выгрузки       
Список=СоздатьОбъект("СписокЗначений");
Список.ДобавитьЗначение(Док.ТекущийДокумент());
…
//создаем список параметров выполнения обмена
Параметры=СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение("Список выгрузки","Команда");
Параметры.ДобавитьЗначение(Список,"Список"); // передаем список объектов для выгрузки
Параметры.ДобавитьЗначение(ВыбрБаза,"База");
ОткрытьФорму("Обработка.ОбменДанными#", Параметры);
 

Сильно ли МОД правит конфигурацию?


Да.

МОД автоматически добавляет: несколько констант, справочников, обработок, дополнительный реквизит IDD в каждом справочнике и общих реквизитах документов, дополнительный интерфейс.

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

Как обновить типовую конфигурацию с установленным МОДом?


1) Установить обновление из дистрибутива
2) Проинсталлировать на обновление «Менеджер обмена данными
3) Обновление с МОДом установить на рабочую базу данных

Как можно деинсталлировать (удалить из конфигурации) МОД?


Для деинсталляции «Менеджера обмена данными» надо в инсталляторе нажать кнопку «Удалить». Получившийся файл 1cv7new.md загрузить в конфигурацию.

1С с МОДом "вываливается" под SQL


Из-за ошибки движка 1С для SQL-баз надо, чтобы все общие реквизиты документов типа строка  неограниченной длины находились в конце списка. При установке МОД добавляет дополнительный общий реквизит IDD в список. Перенесите необходимые реквизиты (в типовых конфигурациях – это «Комментарий») ниже реквизита IDD.

Синхронизация данных по ключевым полям


Базовым полем синхронизации объектов в базах является IDD, который однозначно идентифицирует объект вне зависимости от того, в какой базе находится объект, и от содержания объекта. У одного и того же объекта в разных базах должен быть одинаковый IDD.

Для первоначальной синхронизации баз, данные в которых заводились до установки МОДа, и для задач синхронизации одновременно введенных пользователями одинаковых данных в разных базах, «Менеджер обмена данными» позволяет использовать дополнительное поле синхронизации. Дополнительным полем синхронизации может быть любой реквизит, у которого включено свойство «Сортировка». По выбранному полю синхронизация проходит только после неудачной попытки синхронизировать  по IDD.

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

Пример

1) В трех базах одновременно ввели нового контрагента «Иванов И.И.»

В первой базе ему присвоился IDD 10000010000000123.
Во второй – 10000020000000345.
В третьей – 10000030000000789.

2) Из третьей базы во вторую загрузили этого контрагента и он синхронизировался по полю «Наименование».

После этого обмена содержание IDD стало таким:

В первой – 10000010000000123.
Во второй – 10000030000000789.
В третьей – 10000030000000789.

3) Из первой базы во вторую загрузили этого контрагента и он синхронизировался по полю «Наименование».

После этого обмена содержание IDD стало таким:

В первой – 10000010000000123.
Во второй – 10000010000000123.
В третьей – 10000030000000789.

4) Из третьей базы выгрузили Расходную накладную этого контрагента (ссылка на IDD 10000030000000789). Во второй базе в этот момент уже не было объекта с такой ссылкой и поле Контрагент в Расходной накладной оказалось пустым.

Для избегания такой ситуации надо было в шаге 3) обеспечить выгрузку из второй в первую базу. В этом случае содержание IDD стало бы таким:

В первой – 10000030000000789.
Во второй – 10000030000000789.
В третьей – 10000030000000789.

В МОДе нельзя производить синхронизацию объектов одновременно по нескольким реквизитам, например, наименование и артикул. Но это и не нужно, потому что решить эту проблему можно так: в конфигурации загружаемой базы завести реквизит ПолноеНаименование с признаком сортировка. Создать обработку для первичного заполнения этого реквизита в базе приемнике. В правилах загрузки поставить по нему синхронизацию объекта, а в выгружаемой базе в правилах выгрузки добавить реквизит с таким же названием и формулой @Спр.Наименование+« »+Спр.Артикул.

Простые фильтры


С помощью правил выгрузки-загрузки МОД позволяет настраивать фильтры (условия обмена) для любых объектов  по одному или нескольким его реквизитам (например, фильтр по фирме в документе). Для каждого реквизита можно устанавливать в качестве условия только одно значение. Объект будет выгружен, только если выполняются условия для всех заданных реквизитов.

Сложные фильтры


Для задания более сложных условий обмена можно использовать возможности МОДа по выполнению конструкций встроенного языка 1С для вычисления значений выгружаемых реквизитов.

Пример.
@?( (Строка(Док.Фирма)= «Промснаб ЗАО») или  (Строка(Док.Фирма)= «ООО Холдинг ПромСнаб»),1,0)

Если фирма равна одной из двух заданных, то возвращается значение 1, при котором разрешена выгрузка.

Интерфейсы для пользовательского кода


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




Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика