Версия для печати   
 
 
Дополнение к документации  
 
Модуль обмена.


     Введение
     Настройки модуля обмена
          Схема передачи данных
          Настройка промежуточных каталогов INBOX и OUTBOX

          Настройка фильтров

          Настройка подстановок
     Обмен данными
     Работа в автоматическом режиме
     Возникающие проблемы и их решения
 
 Введение
 

     Модуль обмена данными предназначен для передачи информации между двумя базами данных программы Trade Assistant.

     Обмен данными может служить для следующих целей:
          - полная синхронизация баз данных через необходимые промежутки времени
                    - обмен данными между офисом и удаленным складом;
                    - одновременная работа на компьютерах, не связанных в сеть
          - выборочная пересылка данных
                    - обмен данными между офисом и филиалами
                    - обмен между двумя партнерами
          - объединение нескольких баз данных в одну
                    - построение консолидированных отчетов по различным филиалам
                    - другие применения…

     Частота обмена данными сильно зависит от специфики деятельности той или иной компании. В одних случаях - достаточно проводить обмен 1-2 раза в неделю; в других же случаях требуется обмен с частотой 5-10 минут. Модуль обмена позволяет реализовать работу в обоих этих случаях. Обмен можно проводить как в ручном, так и в автоматическом режимах. Если в случае редкого обмена можно проводить передачу в ручном режиме, то при необходимости частого обновления информации запускать обмен вручную становится, мягко говоря, утомительно. В этом случае модуль можно запускать в автоматическом.

 
Настройки модуля обмена
 
Схема передачи данных

 

     Участвующие в процессе обмена данными станции можно разделить на две функционально разные группы. Станции первой группы имеют возможность работы с локальными промежуточными базами данных (с приходящей и уходящей инфомацией). Такие станции будем называть СЕРВЕРами. Вторая группа станций может также получать информацию с удаленных компьютеров и передавать информацию на удаленные компьютеры. Эти станции будем называть КЛИЕНТами.

     Промежуточную базу данных с пришедшей информацией будем называть INBOX, а с уходящей информацией - OUTBOX.

     Станция СЕРВЕР импортирует новые данные из INBOX и экспортирует данные в OUTBOX.

 
Схема 1 обмена между СЕРВЕРом К КЛИЕНТом.
 

     Работа станции КЛИЕНТ заключается в импорте информации из OUTBOX станции СЕРВЕР и экспорте новых данных в INBOX станции СЕРВЕР.

     Алгоритм работы модуля обмена требует также наличия двух промежуточных баз данных, локальных с точки зрения станции КЛИЕНТ: неимпортированная информация хранится в INBOX станции КЛИЕНТ, а экспортированная, но еще не переданная на станцию СЕРВЕР - в OUTBOX станции КЛИЕНТ.

 
Схема 2 обмена между СЕРВЕРом и КЛИЕНТом.
 

     В зависимости от способа переноса информации между станциями модуля обмена необходимо использовать разные настройки для станции КЛИЕНТ.

     Если Вы хотите использовать модем (Или выделенный канал) для организации связи между двумя компьютерами, то в качестве путей к промежуточным каталогам INBOX и OUTBOX станции СЕРВЕР указываются пути на удаленный компьютер, а в качестве путей к соответствующим каталогам станции КЛИЕНТ - пути к каталогам на локальном диске.

     Если же перенос данных осуществляется на каком-либо внешнем носителе (или пересылке по электронной почте, например), то либо при настройке станции КЛИЕНТ в качестве путей к станции СЕРВЕР указываются произвольные пути и отключается опция "Использовать удаленные каталоги INBOX, OUTBOX при обмене", либо станция КЛИЕНТ вообще отсутствует и обе станции являются станциями типа СЕРВЕР.

 
 
Настройка промежуточных каталогов INBOX и OUTBOX

 

      Внешний вид основного диалога модуля обмена:

Основное окно модуля обмена
 
     Для подготовки модуля обмена к работе необходимо выполнить следующие действия:
1. Выберите компанию и установите требуемый тип станции, определяемый способом переноса данных и ролью данной станции в процессе работы c базой данных.
 
2. Установите пути* к промежуточным каталогам INBOX и OUTBOX станции СЕРВЕР. Установить путь можно нажав на кнопку Кнопочка обзор справа от соответствующей строки ввода, либо набрав путь вручную.
 
3. Установите пути к промежуточным каталогам INBOX, OUTBOX станции КЛИЕНТ (если конечно Вы настраиваете станцию КЛИЕНТ, так как в случае настройки станции СЕРВЕР в настройке путей к станции КЛИЕНТ нет необходимости).
 
* - Не используйте русскоязычных символов при указании путей к каталогам INBOX и OUTBOX.
 
 
4. Установите дату последнего обмена на завтрашнее число (кнопка Кнопочка обзор , расположенная справа от строки ввода с датой последнего обмена вызовет календарик).
 
5. Запустите модуль обмена, нажатием на кнопку Кнопочка обмен. В процессе проведения первой сесии обмена, модуль достроит промежуточные каталоги до необходимой структуры. Поскольку Вы установили дату последнего обмена на завтрашнее число, данные выгружены не будут.
 

     При отсутствии каких-либо проблем при импорте данные из INBOX переносятся прямо в базу данных. Если же возникает какая-либо внештатная ситуация (ошибка или конфликт), то информация переносится из INBOX в каталоги с ошибочными или пропущенными записями.

     Из каталога с ошибочными записями информация извлекается при нажатии на кнопку Кнопочка Ошибка или при установленной опции "Автоматически импортировать ошибочные записи" (в старых версиях модуля обмена). В последнем случае импорт данных будет состоять из двух частей: 1) импорт из INBOX; 2) импорт из FAILED (каталога с ошибочными записями).

     Другим классом внештатных ситуаций являются конфликты при импорте. Конфликт возникает тогда, когда некая запись в базе данных (документ, карточка справочника товаров и т.д.) была изменена с момента последнего обмена данными и на сервере и на клиенте. В случае возникновения такой ситуации модуль обмена предложит Вам выбрать, какая из двух записей (либо некая комбинация изменений) имеет право на существование. Если же в данный момент невозможно определить, какую из записей брать, то можно отложить обработку конфликта. Для этого необходимо нажать кнопку в диалоге обработки конфликта. Запись будет переписана в каталог пропущенных записей (<INBOX>\CONFLICT) и в дальнейшем может быть импортирована оттуда нажатием на кнопку Кнопка Конфликты.

     Схема перемещения данных при импорте показана на рисунке.

 
Общая схема обмена
 
Настройка фильтров

 

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

     Диалог настройки фильтров вызывается нажатием на кнопки Иконка импорта и Иконка экспорта, входящих в группу "ФИЛЬТРЫ".

 
 

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

 

     Фильтры на экспорт и импорт данных устанавливаются по каждому из файлов независимо. Таким образом, если Вы установите фильтры в справочнике валют (валюта="РУБ"), то изменения в справочнике валют будут передаваться только для валюты "РУБ", а документы будут передаваться как рублевые, так и выписанные в какой-либо другой валюте.

     Фильтры можно разделить на две группы: фильтры по какому-либо конкретному полю и дополнительные фильтры. К первой группе относятся фильтры по артикулу (в справочнике товаров, в справочнике содержимого складов), фильтры по типу документа и т.п. Фильтров второго типа по одному в каждом файле. Необходимо отметить, что фильтры со значением какого-либо поля обрабатываются значительно быстрее, чем фильтры-выражения.

     Установка фильтра по какому-либо значению производится либо нажатием на кнопку обзор справа от соответствующего поля ввода (в этом случае будет загружен список значений из соответствующего справочника), либо прямым набором необходимого значения; затем надо отметить соответствующее поле.

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

     Для примера рассмотрим настройку фильтра на экспорт в журнале документов.

 
Установка фильтров (экспорт)
 

     Фильтры по дате документа, сроку до, типу документу, складу, расчетному счету и валюте относятся к фильтрам по конкретному полю. Последний фильтр - дополнительный. В рассматриваемом случае включены фильтры по дате документа, типу, складу и расчетному счету. Будут экспортироваться приходные ордера, накладные, переводы со склада на склад, поправки и возвраты, выписанные со склада "Склад 1" на расчетный счет "Касса", дата которых больше 1 июля 1998 г.

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

 
Настройка подстановок

 

     Если модуль обмена используется для передачи данных между разными по содержанию базами данных, то Вам могут потребоваться подстановки ключевых полей. Примером необходимости подстановки служит ситуация, когда один и тот же товар (склад, контрагент, расчетный счет, валюта) имеют разные значения ключевых полей. Например, на станции "КЛИЕНТ" артикул товара - "Апельсин", а на станции "СЕРВЕР" - "апельсин". С точки зрения Trade Assistant эти артикулы различны и попытка импортировать документ (например накладную), в котором упомянут данный товар, вызовет сообщение об ошибке: поле артикул содержит неверное значение… . В такой ситуации единственным возможным выходом является подстановка значения "апельсин" вместо значения "Апельсин" при обмене. Устанавливается подстановка одновременно для импорта и для экспорта.

     Также можно настраивать подстановки не напрямую (ЗНАЧЕНИЕ1 <—> ЗНАЧЕНИЕ2), а через промежуточное значение (ЗНАЧЕНИЕ1<—> ПРОМ.ЗНАЧЕНИЕ <—> ЗНАЧЕНИЕ2). Настройка подстановок таким способом позволяет Вам неограниченно менять значение ключевого поля какого-либо файла на одной станции и быть уверенным, что с точки зрения другой станции речь идет об одной и той же записи.

     Часто возникает необходимость преобразования типа документа на этапе передачи. Примером такой ситуации может служить обмен данными между офисом и удаленным складом, когда в офисе товар резервируется, документ передается на склад и там товар отгружается. Можно установить подстановку типа документа SP—>SI при экспорте (либо импорте) и товар будет сразу же списан со склада, что исключает возможность его продажи другому покупателю.

     Для вызова диалогов подстановок служат кнопки Иконка справочников и Иконка документов из группы "НАСТРОЙКА ПОДСТАНОВОК".

     В диалоге подстановок в справочниках Вы увидите список установленных в данное время подстановок, причем списки подстановок сгруппированы по файлам. В верхней части диалога расположены кнопки для создания новой подстановки, редактирования старой и удаления подстановки. Значения в файле подстановок "привязаны" к конкретной компании и находятся в файле substits.trd.

     Диалог редактирования подстановок в справочниках показан на рисунке:

 
Редактирование подстановок
 

     Кнопка Иконка ввода новой записи служит для создания новой подстановки, кнопка Иконка редактирования записи - для редактирования старой, а кнопка Иконка удаление записи для удаления ранее созданной подстановки.

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

     При вызове диалога настройки подстановок для документов Вы увидите список подстановок для каждого из передаваемых типов документов, для которых подстановку сделать вообще возможно. Подстановки сгруппированы по типам документов: товарным и денежным. Значения подстановок "привязаны" к конкретному компьютеру и хранятся в файле настройки Trade Assistant trade34.ini. Подстановки настраиваются независимо для импорта и для экспорта.

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

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

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

 
Обмен данными

 

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

     Как уже упоминалось выше, конфликт возникает тогда, когда одна и та же запись была изменена на обеих станциях с момента последнего обмена. При возникновении конфликта на экране появляется диалог обработки конфликта (см. рисунок). В левую колонку выводятся названия полей, во вторую и четвертую - значения полей соответствующих записей. Третья колонка отведена для вывода пометок, показывающих наличие различия между значениями полей во второй и четвертой колонках. При обработке конфликта задачей пользователя является выбор записи для импорта, либо некой комбинации измененных полей. Значения во второй колонке доступны для редактирования. Для переноса значения из правой колонки значений в левую необходимо нажать левую кнопку мыши над знаком неравенства. При этом вместо неравенства появится кнопка, при нажатии на которую произойдет требуемый перенос значения. После переноса знак неравенства изменит цвет - станет темно-красным. Это означает, что изначально значения отличались, но затем нажимали на кнопку переноса. Если по каким-либо причинам полученная комбинация значений Вас не устраивает, то Вы можете вернуть исходное состояние диалога, нажав на кнопку Иконка отката. Если Вы нажмете кнопку Иконка “Взять нашу!”, то программа оставит в базе данных имеющуюся запись, отправив ее также на другую станцию (для поддержки синхронности), а нажатие на кнопку Иконка “Взять чужую!” приведет к тому, что запись в базе данных импортирующей станции будет заменена на пришедшую. Наконец, нажатие на кнопку Иконка “Пропустить”приведет к откладыванию обработки конфликта и переносу записи в каталог пропущенных записей (<INBOX>\CONFLICT).

Конфликт при импорте
 

     По окончании процесса обмена на экран выдается сообщение об итогах процесса обмена данными - информация о том, сколько записей в каждом из файлов было экспортировано и импортировано. Данная информация также доступна при нажатии на кнопку Результат обмена в нижней части диалога модуля обмена. Диалоговое окно с отчетом о проведенном обмене показано на рисунке. В ряде случаев возникает следующая ситуация, требующая пояснений. Вы видите в INBOX'е довольно большой файл, а после импорта обнаруживаете, что импортировано 0 записей. Причина возникновения ситуации следующая. При обработке документа изменяется не только файлы с документами, но и файлы контрагентов (изменяется баланс), расчетных счетов (сумма денег на счете), состояние склада и проч. Изменения в этом случае касаются только вычисляемых полей и могут быть восстановлены на основе документа. Поэтому записи в справочниках не импортируются, а изменяются при импорте документов.

 
Результат обмена данными
 

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

 
Состояние промежуточных каталогов
 

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

 

Работа в автоматическом режиме.

 

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

           trdexcha.exe -auto

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

     Частота запуска модуля обмена - временной интервал, через который цикл обмена данными будет активизироваться автоматически. Не рекомендуется устанавливать значение этого параметра менее 5 минут.

     Определение, какие данные выгружать, происходит следующим образом. Все базы данных имеют поле "Дата последнего изменения". Модуль обмена считает подлежащими экспорту те записи справочников и документы, которые имеют дату последнего изменения большую или равную дате последнего обмена. Внутренние часы каждого отдельного компьютера в общем случае идут с разной скоростью и разница в текущем времени на компьютере, на котором работает модуль обмена, и на других компьютерах, работающих с Trade Assistant, может достигать значительных величин. Указанная разница может порождать "пробелы" в передаваемой информации. Для уменьшения этого эффекта и предназначен сдвиг времени последнего обмена назад. Например, если время последнего обмена установлено на 12:35:00, а временной сдвиг -2 мин, то при обмене будут экспортированы данные, время даты последнего изменения которых больше или равна 12:33:00.

     При работе в автоматическом режиме модуль обмена не показывает ход процесса; из всех кнопок диалога доступна только кнопка Иконка “Выход”, прекращающая процесс обмена. Информация о результатах каждой конкретной сессии обмена (в т.ч. возникающие ошибки и конфликты) записываются в файл exchange.log, расположенный там же, где и компания, осуществляющая обмен. Конфликтые записи попадают в каталог с пропущенными записями.

 

Возникающие проблемы и их решение

 

     Одна из самых неприятных проблем, возникающих в ходе обмена данными - это создание в разных базах документов того же типа с одинаковыми номерами. Этой ситуации рекомендуется избегать директивно, установив, например, в разных офисах разные шаблоны нумерации документов. Если же такой документ всё же создан, при импорте возникнет ошибка:

 
Невозможно импортировать документ. Документ уже есть в базе данных.
 

     Единственным выходом из ситуации с документом, уже имеющимся в базе данных таков: необходимо перенумеровать документ в базе данных, затем импортировать пришедшую информацию, разобраться, какой документ все-таки нужен в базе данных и уничтожить ненужный на обеих станциях. Оставшийся документ попадет на удаленную станцию при следующей сессии обмена. При проведении импорта данных модуль обмена проверяет получаемые данные на предмет их целостности. Попытка добавить информацию, нарушающую целостность базы данных, приведет к ошибке:

 
Ошибка при импорте. Неизвестный склад.
 

     Причин возникновения такой ошибки может быть несколько. Одна причина - неправильная настройка фильтров - запретили передачу справочника товаров, но разрешили передачу документов. Следовательно, информация о новом товаре передана не будет, но могут быть переданы документы по этому товару. Другой причиной может быть неправильная настройка подстановок. Сообщение об ошибке, показанное на рисунке получено при преобразовании "Склад 1"' "Склад000" при экспорте и запрете на передачу справочника "Склады".

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

     Для обеспечения конфиденциальности данные при передаче зашифровываются с использованием пароля, задаваемого пользователем **. Однако использование пароля приводит к следующему неудобству: пароли должны быть одинаковы на станции-источнике данных и на станции-приемнике данных. Если же пароли отличаются, то при попытке импортировать пришедшие данные Вы получите сообщение об ошибке:

 
Ошибка при импорте. Пароль неверен.
 
     Узнать, при помощи какого пароля были зашифрованы данные практически невозможно, поэтому при возникновении такой ошибки (и неизвестном пароле) рекомендуется уничтожить информацию в соответствующем каталоге INBOX и повторить экспорт на станции-источнике данных, сдвинув назад дату последнего обмена.
 
          ** - Для Trade Asisstant 3.5 и 4.0 версий до 637.
 
© ООО "ПК-СОФТ" 2004