Оглавление
Базы данных 1С8 для сетевых структур
Список точек в центральной базе
Программный запуск утилит командной строки
Нюансы ограничения доступа к программам и сайтам
Базы данных 1С8 для сетевых структур
В статье собран опыт применения распределенных баз данных в организациях, состоящих из головного офиса и множества однотипных простых подразделений (точек).
На практике рассматривались организации с 30-70 точками.
Использовалась технология УРБД, т.е. обмен происходил между базами с идентичными конфигурациями. Базы точек были периферийными, центральная база – главной.
Иногда центральная база разделяется на несколько баз – центральную базу, базу склада, базу для отчетов и т.п. Между ними тоже нужно производить обмен.
Термины
В тексте для упрощения изложения будут использоваться некоторые термины.
Продавцы — пользователи точек
Менеджеры – пользователи центральной базы.
Root – вход администратора компьютера на точке
Список точек в центральной базе
Создание новой точки
Лучше всего, если процедура создания новых точек будет автоматизирована. Т.е. в мастере вводятся параметры новой точки, после нажатия создаются все необходимые склады, магазины и т.п. Остается только выгрузить данные в новую точку.
В 1С выгрузка данных осуществляется в монопольном режиме. Выгрузка может идти долго. Существуют способы оптимизации, чтобы выгружалось меньше данных, но в любом случае основные справочники (номенклатура, контрагенты) могут выгружаться целиком, поэтому процедура вряд ли будет короче 30 минут. На практике в разных базах занимает от 30 минут до 2 часов. Поэтому лучше выгружать образ точки ночью, когда никто из пользователей не работает.
Как альтернативный вариант — можно создать точку в копии базы. Путем нехитрых манипуляций можно заставить обмениваться выгруженную из образа точку с рабочей базой.
Удаление закрытых точек
Нельзя оставлять в плане обмена узлы, соответствующие закрытым точкам. На них накапливается информация о регистрации изменений, что увеличивает объем базы, и затормаживает ее работу.
Если забыть исключить такой узел из обмена данными, то по узлу будет генерироваться очень большой файл обмена, т.к. ответа от точки приходить не будет. Генерация такого файла отнимает лишнее время.
Поэтому закрытую точку нужно исключать из обмена данными, и физически удалять из планов обмена.
Учебная база
Очень часто возникает потребность в учебной базе – как для учебных целей, так и просто для тренировки пользователей.
Самый простой вариант – скопировать базу из базы точки и, возможно, сделать некоторые настройки, чтобы она работала без торгового оборудования. Для таких настроек лучше написать скрипт, который будет делать это автоматически. Тогда можно обновлять учебную базу достаточно часто, ведь учебная база должна быть более-менее актуальной.
Вариант, когда учебная база включена в обмен данными
Надежность баз
Необходимо проверить, чтобы на базах стояли источники бесперебойного питания. Очень часто на этом экономят, в результате как минимум раз в неделю происходят сбои на той или иной базе, которые приходится лечить или проверкой базы через checkdbfl.exe или тестированием и исправлением баз, или даже восстановлением базы в запущенных случаях.
Иногда на базах происходят сбои в работе, которые никак нельзя объяснить. Вроде бы все работает, но глючит. Тестирование и исправление базы, проверка физического состояния базы – первое, что нужно сделать в базах, прежде, чем брать в руки отладчик.
Также в базах на точках нужно отключить кэширование файлов (смотрите в статье про платформу 1С).
Можно провести и другие мероприятия, способствующие физической надежности хранения данных.
Безопасность баз
Администраторы часто используют полные права, чтобы входить на точки. Но практика показывает, что продвинутые пользователи могут перехватить пароль администратора с помощью любого кейлоггера, например, Punto Switch.
Как вариант – можно использовать одноразовые пароли на вход в 1С, но так можно проверить только вход в 1С:Предприятие, а не в конфигуратор.
Поэтому имеет смысл запретить работать задним числом на точке для любых пользователей, запретить работу в конфигураторе для всех пользователей.
Если нужно что-то изменить в данных, нужно это делать в центральной базе, где перехватить пароль администратора невозможно.
Для обмена данными можно использовать пользователя Автообмен, которому разрешено все, кроме интерактивной работы и входа в конфигуратор. Интерактивная работа запрещается через подключение обработчика ожидания, который при первом срабатывании завершает работу системы.
Обмены данными
Обмен данными – надежный механизм, но его оптимизация и настройка требует точного расчета. Пока что я бы сказал, что у нас не удалось выработать идеального расписания для обмена центра с точками.
Обмен данными на точке
Основные проблемы в обменах данными на точках:
- Нужно настроить обмен по расписанию, т.к. продавцы будут забывать и лениться делать обмен.
- Нужно автоматизировать прием измененной конфигурации, т.к. продавцов сложно обучить процедуре приема измененной конфигурации.
На практике мы написали скрипт на java-script, который запускался каждые 3 минуты под root на точке. Он создавал внешнее COM-соединение с базой 1С, проверял, запущен ли уже автообмен под пользователем Автообмен. Если не запущен, то проверял, сколько времени прошло с момента последнего обмена. Если больше 15 минут, выполнял обмен данными.
Обмен по запросу
Иногда возникает необходимость внеочередного обмена с точкой. Инициатором может быть или продавец или менеджер. У них должны быть инструменты для выполнения такого обмена, причем без привлечения пользователей другой стороны. Нажал у себя кнопку – и произошел обмен.
Обмен точки с точкой
Иногда точке нужно срочно обменяться с другой точкой, например, если она передала товар другой точке. Варианты решения:
- Специальный оперативный план обмена – достаточно сложно реализовать.
- Выгрузка/загрузка конкретных документов через XML-файл – быстрое, дешевое и сердитое решение. Выгружается файл, почтой или на флешке отправляется на другую точку, там загружается.
- Обмен по запросу – если наложен обмен по запросу, то пользователь просто формирует запрос на обмен с другой точкой.
Программный запуск утилит командной строки
На точках часто возникает необходимость программно запускать служебные программы. Эти программы можно создавать при первом запуске непосредственно из 1С, но возникает резонный вопрос – в какой каталог их помещать?
Вариантов решения несколько:
- Учитывая, что обычно на точках файловые базы данных, можно помещать программы в каталог базы, для файловой базы его можно получить программным путем.
- Если база файловая или каталог базы защищен от доступа, можно использовать папку «Мои документы» — ее тоже можно получить программным путем.
Нюансы ограничения доступа к программам и сайтам
На точках часто установлены ограничения на запуск определенных программ и перехода на определенные сайты. В то же время, для некоторых задач, выполняемых на программном уровне, такие доступы требуются. Поэтому не забывайте при решении задачи требовать от администраторов открытия соответствующего доступа.
Архитектурные решения
Служебные константы
Для работы программы требуются различные служебные константы. Особенно это касается взаимодействия с веб-сервисами. Константы добавляются достаточно часто.
Добавление каждой константы выливается в целый комплекс мероприятий:
- Изменить форму констант, чтобы можно было редактировать константу.
- Настроить права доступа на константу.
- Настроить миграцию константы в точки.
Поэтому для служебных констант лучше завести справочник «Константы» и использовать его предопределенные элементы, как аналог констант. Значения константы можно хранить в поле составного типа «Значение» для простых типов и «Значение хранилище» для хранилища значения (файлов). Преимущество использования справочника – можно только один раз настроить миграцию и права доступа.
«Пока что я бы сказал, что у нас не удалось выработать идеального расписания для обмена центра с точками» — приведи свой пример расписания и в чем проблемы — детализируй грабли
«На практике мы написали скрипт на java-script, который запускался каждые 3 минуты под root на точке» — дай подсмотреть
Позновательно. Скоро видимо такое-же предстоит. Впрос по обмену «точки с точкой». Если обменялись документами ч/з xml, то при загрузке в центральную не будет конфликта? Или это речь не о том? Суть проблемы: нужно реализовать возможность чтобы одна точка могла продать товар другой точки, взяв деньги, а клиент приехав на вторую и предъявив квиток_чек мог просто забрать товар.
А как реализовать, если удаленный комп работает по unix?
(4) реализовать что?