1С v7.7: FAQ по распределенными базами данных программы 1С: Предприятие 7.7

Cоздан 19 ноября 2002 года, последние корректировки внесены 30 июля 2007 года

!!! В данное время разработка данного FAQ еще не завершена !!!



  • Далее по тексту слово "программа" - обычно означает "программа 1С: Предприятие 7.7".



  • Сокращение "БД" означает "база данных".



  • Сокращение "ИБ" означает "информационная база".



  • Под "УРИБ" обычно подразумевается технология или компонента реализующая эту технологию
    компонента "Управление распределенными информационными базами", разработанная
    фирмой 1С для программы 1C: Предприятие 7.7



  • МОД - это "Менеджер обмена данными", разработанный фирмой ПиБи.


Адрес оригинала FAQ'а: http://faq1c.gorbunov.ru.




  1. Что такое распределенная база данных?



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



    Термин "распределенная база данных" применяется:

    1. К самой базе данных, работа с которой организована описанным выше образом.
    2. К программным механизмам, которые обеспечивают поддержу работы с такой базой данных.



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



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




  2. В чем принципиальное отличие работы с распределенной базой данных программы 1С: Предприятие
    от работы с ней при помощи модема и терминального сервера или WEB-компоненты?





    1. Распределенная база данных использует каналы связи только на небольшое время
      при проведении синхронизации (обмена данными),
      более того, можно производить обмен данными посредством дискет, компакт-дисков и т.п.,
      то есть вовсе без какой-либо компьютерной сети (без локальной сети, без Internet'а или т.п.).
      Большую часть времени работа ведется без использования канала связи.
      Для обеспечения такой работы в каждом из нескольких офисов (торговых точках и т.п)
      фирмы находится необходимая данному подразделению часть базы данных
      (или полностью вся база данных фирмы).


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





  3. Что такое терминальный сервер? И зачем он используется для работы с программой 1С: Предприятие?



    Что такое терминальный сервер и как его использовать с программой 1С: Предприятие описано в другом FAQ'е




  4. При помощи чего можно организовать работу с распределенной базой данных?


    1. При помощи компоненты "Управление распределенными информационными базами" (УРИБ) от фирмы 1С.
    2. Можно также воспользоваться разработками других фирм, например, разработкой фирмы
      ПиБи.
    3. Можно создать собственный механизм, реализующий работу распределенной базы данных.




  5. Что за компонента такая "УРИБ"?



    УРИБ - "управление распределенными информационными базами" - это разработанный фирмой 1С
    и интегрированный в ядро платформы 1С: Предприятие 7.7 механизм, предназначенный
    для программной поддержки работы с несколькими изолированными базами данных как
    с единым целым (как с единой распределенной базой данных).



    В общем схема работы механизма 1С: УРИБ такова:



    • УРИБ отслеживает изменения, производимые в базе данных.


    • Формирует файлы выгрузки, содержащие только измененные данные.
      Эти файлы должны быть переданы в другие части распределенной базы данных
      (по электронной почте или на дискете и т.п.).


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




    Продается компонента УРИБ, обычно, как отдельный продукт и,
    обычно, требует отдельного ключа Hasp.
    Физически компонента представляет собой один-единственный файл - distrDB.dll - наличие которого требуется
    только в центральной части распределенной базы данных.




  6. Что такое "Менеджер обмена данными" фирмы ПиБи?



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




  7. Чем отличается "Менеджер обмена данными" фирмы ПиБи от 1С: УРИБ?

    "Менеджер обмена данными" фирмы ПиБи УРИБ фирмы 1С
    МОД
    являет собой код, встраиваемый (полуавтоматически) дополнительно в конфигурацию
    и ряд внешних утилит.
    УРИБ работает на уровне ядра платформы 1С
    Проводит обмен между различными конфигурациями Конфигурация всех ИБ, участвующих в обмене данными - одна и та же
    "Менеджер обмена данными" являет собой именно то, как он назван -
    т.е. обеспечивает произвольный обмен произвольными данными
    УРИБ ограничена в настройках.
    Например, часто требуемая задача: отправить часть
    документов одного вида в одну БД, а другую часть документов этого
    же вида - в другую БД. Например, документы вида "Накладная перемещения",
    касающиеся определенных складов, должны попасть в периферийную базу данных,
    физически расположенную именно на этих складах
    и более ни на каких других.
    Этого настроить не удастся - УРИБ допускает отправку всех документов
    этого вида, или ни одного документа этого вида.
    МОД гибок в настройке УРИБ проста в настройке
    МОД ограничена в возможностях, ибо не встроена в ядро 1С:
    Предприятие - например, испытывает некоторые затруднения при
    определении, а не был ли изменен данный объект с момента
    последнего обмена данными и, следовательно, не пора ли ему
    отправиться в другую БД повторно. Именно это, прежде всего,
    требует встаивания дополнительного программного кода в конфигурацию
    УРИБ безпроблемно и совершенно автоматически ослеживает изменения
    объектов (документов, сравочников, констант и пр.)
    С помощью МОД можно организовать самые причудливые схемы обмена данными В УРИБ реализована схема обмена данными - "звезда", т.е. одна БД в центре
    и множество периферийных БД
    Конфигурации в разных БД могут изменяться независимо При обмене данными осуществляется обновление конфигурации,
    если она была изменена с момента последнего обмена данными.
    Конфигурация может быть исправлено только на центральной БД.
  8. Можно ли организовать распределенную БД, используя возможности репликаций, имеющиеся в сервере MS-SQL

    Нет. Пользуйтесь механизмами создания распределенных БД, созданным специально для программы 1C: Предприятие 7.7 фирмой 1С
    или другими фирмами.

    Это связано с нетривиальностью хранимых в БД данных программы 1С: Предприятие и с тем, что она (программа 1С: Предприятие)
    контролирует целостность структуры создаваемых ею таблиц, а при установлении Merge-репликации SQL-сервера в таблицы,
    хранящие данные программы 1С: Предприятие, добавляется дополнительное поле - внутренний идентификатор реплицированной
    строки. После опубликования таблицы на репликацию программа 1С: Предприятие будет считать что база данных разрушена и
    откажется работать. Но именно Merge-репликации пригодна для организации распределенных баз данных. Репликация в режиме
    SnapShot не нарушает работу программы 1С: Предприятие с опубликованной базой данных, но это однонаправленная, а не
    двусторонняя репликация, поэтому она не может быть использована для организации распределенной базы данных. Хотя,
    репликация в режиме SnapShot может быть пригодна для создания автоматически обновляемых копий базы данных для анализа
    данных (чтобы такой анализ можно было проводить в другом офисе или дому у владельца предприятия или в основном офисе просто
    для того, чтобы не перенапрягать основную рабочую систему сложными отчетами).

  9. Будет ли работать компонента "Управление распределенными информационными базами" (УРИБ) от фирмы 1С, если в центральном
    офисе 1С: Предприятие работает с использованием SQL-сервера, а в филиалах - с использованием DBF-файлов?

    Да, будет работать. Файлы, с помощью которых осуществляется обмен данным в УРИБ не зависят от вида БД 1C: Предприятие 7.7 - DBF она или SQL.



  10. Для обмена данными с использованием УРИБ требуется запускать 1С: Предприятие монопольно?



    Нет. В центральной БД монопольного режима обычно не требуется.
    Можешь обмениваться данными сколь угодно часто -
    работа остальных пользователей с базой данных
    будет притормаживаться во время обмена, не более.



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



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




  11. При обмене данными с помощью УРИБ пишет предупреждение о
    недоступности каких-то режимов, но загрузку и выгрузку все равно
    производит.


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


    1. Обмену данными могут помешать блокировки на используемых пользователями объектах,
      если эти объекты будут загружены при обмене
    2. Для периферийной (не для центральной) БД невозможно обновить конфигурацию. Однако если
      конфигурация не была изменена со времени предыдущего обмена данными, то это неважно
    3. Обмен данными будет прерван из-за слишком большой нагрузки на БД. Но его можно будет
      повторить спустя несколько минут



  12. Если файл МД был изменен на центральной базе, то как сделать так чтобы
    переферийная это поняла? Распаковать пришедший МД и заменить новый на старый?
    Если он сильно изменен? Только МД нужно поменять или что ещё?



    Штатный (нормальный) режим работы:




    1. Конфигурация (MD-файл) настраивается только в центральной базе.
    2. Как только конфигурация изменена, она автоматически едет во все
      периферийные базы
    3. Т.е. zip-файл, который создается при обмене данными, будет
      содержать, как обычно, сами данные, уезжающие на периферию
      и, дополнительно, MD-файл. Это делает сама 1С. Ничего вручную
      дополнительно делать не надо.
    4. Этот zip-файл, как обычно, загружается в периферийную базу. Если
      попытаться загрузить его не в монопольном режиме, то 1С сруганется
      при загрузке, и загрузку следует повторить (уже в монопольном
      режиме).
    5. Строго говоря, в монопольный режим "1С: Конфигуратор" входит не
      при своем запуске, как это делает "1С: Предприятие", а именно при
      обмене данными.
    6. Если MD-файл не добрался до периферии, то получить оттуда данные
      после изменения конфигурации в центральной базе - не удастся.
    7. Центральная база будет при каждом обмене данными внутри zip-файла
      посылать измененный MD-файл, до тех пор, пока он не попадет в
      периферийную базу. Точнее, до тех пор, пока периферийная база не
      пришлет подтверждение, что MD-файл накатан.




  13. Hикак не могy заставить pаботать 1С: Предприятие. Hе yстановлена, говоpит, компонента УРИБ.



    В центральной БД для всех клиентов должна быть доступна
    компонента УРИБ (доступна - значит должен быть в наличие
    в каталоге, где лежит exe-файл 1С, файл distrDB.DLL
    и специальный Hasp к нему или Sable).




  14. В УРБД пpи пpопуске хотя-бы одного пакета обновления базы дальше не обновляются?



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




  15. Как сделать распределенную базу нераспределенной?
    В частности это бывает нужно для отцепления периферийной базы от центральной.



    Для Базы данных в формате DBF достаточно удалить из каталога базы данных следующие файлы:



    1SDBSET.DBF, 1SDBSET.CDX, 1SDWNLDS.DBF, 1SDWNLDS.CDX, 1SUPDTS.DBF, 1SUPDTS.CDX, 1SSYSTEM.DBF (не обязательно).



    После чего желательно войти в Конфигуратор и сделать полный контроль. И это все.



    При желании, можно восстановить обратно - достаточно эти файлы восстановить.



    Для базы данных в формате SQL - аналогично,
    только удалять нужно таблицы из SQL-базы: _1SDBSET, _1SDWNLDS, _1SUPDTS, _1SSYSTEM (не обязательно).




  16. Купили компоненту, но потеряли дистрибутив. Где скачать компоненту "Управление распределенными базами данных" (УРИБ)


    Забавное свойство дистрибутива 1С V77. Если накатать дистрибутив поверх уже установленной 1С V77, то он восстанавливает все файлы, даже пустые.



    Таким образом, чтобы любую компоненту установить достаточно создать пустой файл в каталоге, куда установлена 1С V77 и заново установить 1С из дистрибутива методом обновления.



    В частности для компоненты УРИБ нужно создать файл DistrDB.dll.



    Имейте ввиду, что для нее нужен отдельный специальный ключик Hasp.



>> Это если ты компоненту УРИБ распихал по всем периферийным БД,
>> то - ключ нужен.
>> Только нафиг она (файл distrDB.DLL) нужна тебе на периферийных БД.

AZ> А как тогда отслеживать изменения в периферийных базах?
AZ> Оно без этого дела imho не работает..
AZ> Или я, возможно, не прав?

Hе прав. Не нужна.


А есть ли FAQ по УРИБ?
Интересует, насколько надежно проводить обмен по модему - не будет ли глюков
при обрыве связи? И еще такое соображение - у меня база перевалила за 2Гига,
а к концу следующего года ожидается как минимум 4, не будет ли УРБД
тормозить больше, чем терминалка? Кроме того, "спереть" такую базу по модему
весьма затруднительно, из офиса тоже, а если ставить ее на склад -
начальство боится за сохранность коммерческой тайны :))


Почему иногда на периферийных базах (при работе с УРБД) возникает "Ошибка
извлечения файла из сообщения" ?
Почтовый клиент - Outlook Express.
Как с этим бороться ?







 ЦБ. Переодически при загрузке в ЦБ возникает сообщение о нарушении
уникальных номеров документов, хотя у документов есть префикс и базы и
юрлица. Реально после загрузки дублирования номеров нет, этот документ 

 
можно
 
Если ругется, то скорее всего дубли есть реально. Попробуй поискать получше.
 
>  перепровести и никакого сообщения о нарушении уникальности не будет 




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

Компьютерные вопросы: 
2002-2012 ©