Кнопка
Компания
34,61
рейтинг
3 июня 2014 в 12:47

Разное → Как приготовить сотни баз 1С и не сойти с ума

Кнопка — не самая обычная бухгалтерская компания, но бухгалтерию мы ведём в 1С, как и большинство отечественных коллег. На текущий момент у нас на сервере проживают сотни баз, поэтому нам пришлось научиться быстро и качественно всё это богатство администрировать. Если вы — бухгалтерская компания, хостер с сервисом 1С, или у вас просто откуда-то взялась куча 1Сок, вы знаете, как это трудно. Мы любим приносить пользу, поэтому поделимся опытом, практическими советами и инсайтами, которые успели нас посетить за бессчётное количество ночей, праздничных и выходных дней, проведенных за обновлением и актуализацией всего нашего хозяйства.



Мы не продаём 1С, а потому рассказ будет без купюр, цензуры, а главное — без маркетингового булшита. Бонустреком, по ходу поста можно найти несколько полезных скриптов и советов для тех у кого действительно много баз 1С.

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

Невероятный путь от облачной 1С до собственного кластера серверов


В начале нашего пути мы пользовались облачным 1С-Фрешем: этот сервис в меру удобен, насколько может быть удобно использовать настольное приложение через браузер. Однако, довольно быстро мы накопили полсотни баз и администрировать их через веб стало невыносимо — веб-интерфейс начал тормозить, плюс появилась необходимость программно интегрировать 1С с нашими внутренними инструментами, чего Фреш категорически не умеет. Пришлось мигрировать, выгружая все данные из облака. Благо сделать это было нетрудно («Выгрузить данные в локальную версию» → «Загрузить данные из сервиса»).

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

Особые неудобства доставляла невозможность запуска.exe-файлов без предварительного согласования (добавления хэш-сумм в разрешающие политики домена), а нам, напомню, была необходима интеграция. Также были проблемы с тем, что, по непонятным причинам, СХД провайдера неправильно синхронизировало ноды на блочном уровне. Так мы потеряли несколько важных баз, которые пришлось долго и мучительно восстанавливать. С системами хранения часто всё непросто и нечестно.

Хозяйке на заметку: тестируйте хранилище. Если вы хостер, то уделите этому больше внимания. Если вы пользуетесь сторонним хостингом — обязательно проверяйте хранилище и диски. Это детские грабли, наступать на которые ещё больнее, чем на взрослые :)

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

Хозяйке на заметку: при лицензировании большого количества баз вас могут ждать сюрпризы — активация каждой базы для каждого пользователя через программный ключ может стать вашей основной работой на ближайшие недели. Этого недостатка лишён кряк аппаратный ключ, но его нельзя просто так взять и начать использовать в VPS.

Не будем забывать, что даже самый лучший VPS (выбранный с использованием вот этого клёвого сервиса) не сравнится с тёплым и ламповым собственным сервером. Мы решили мигрировать в третий раз.

Однажды вечером наш VPS не запустился. Был самый пик отчётности — последние её часы, и сервер находился в дауне неоправданно долго. При этом через панель управления мы сделать ничего не могли — сервер находился в стадии запуска, а техподдержка просто разводила руками. Как оказалось, на хосте с нашей виртуалкой закончилась оперативная память, и на запуск её просто не хватало.

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

На что хотелось бы обратить внимание тех, кто такой путь проходит или планирует проходить:
  • думайте о лицензиях;
  • если вам нужна интеграция — используйте выделенный сервер или VPS;
  • позаботьтесь о хранилище или тщательно тестируйте его у вашего провайдера;
  • резервные копии — это правда важно;
  • сразу откажитесь от веб-доступа, если нагрузка будет серьёзной и важна стабильность.

Как упростить жизнь, если вы вынуждены работать с кучей баз


Создание базы со ссылкой на неё в профиле текущего пользователя
Мы разворачиваем все наши базы из заранее подготовленного шаблона (с загруженными обработками, справочниками, настроенной подпиской ИТС и резервным копированием).

Для файлового варианта:
CHCP 1251
"%ProgramFiles(x86)%\1cv8\<версия>\bin\1cv8.exe" createinfobase File="X:\Base\habrahabr" /AddInList "ХабраХабр ООО" /UseTemplate "X:\tmplts\ЧёрнаяБухгалтерия.cf"

Для SQL варианта:
CHCP 1251
"%ProgramFiles(x86)%\1cv8\<версия>\bin\1cv8.exe" createinfobase Srvr="habr" Ref="HabraBD" SQLSrvr="habr" SQLDB="HabraBD" SQLUID="sa" SQLPwd="123" /AddInList "ХабраХабр ООО" /UseTemplate "X:\tmplts\ЧёрнаяБухгалтерия.cf"

Как создать или удалить пользователя сразу в сотне баз?
Управление пользователями всегда было больным местом 1С. В ранних редакциях для этого требовалось получить монопольный доступ к файлам базы, позднее добавили возможность добавления на лету, но только через конфигуратор, сейчас (в последних редакциях бухгалтерии или торговли) пользователя можно создать прямо из основного режима работы, через инструменты администрирования. Но сделать это руками в случае с сотнями баз уже нереально, поэтому мы научились добавлять пользователей программно. На помощь приходит COM. Мы устанавливаем внешнее соединение V8.COMConnector и передаем в базы всю необходимую информацию. Добавляем пользователей с правами доступа, заполняем справочники или создаём документы. Посмотреть как.

Как подключить пользователю сразу сотню баз?
Для добавления сразу всех нужных баз в список пользователя мы используем v8i файлы-списки общих баз, размещённые на файловой шаре. Ссылки на эти файлы добавляются в профиле пользователя (например, через GPO или в профиль по-умолчанию) в файл %AppData%\1C\1CEStart\1CEStart.cfg:
CommonInfoBases=X:\Base\List\Base_a1.v8i
CommonInfoBases=X:\Base\List\Base_a2.v8i
CommonInfoBases=X:\Base\List\Base_a3.v8i

Либо из самой 1С (уже под пользователем) добавляем список общих информационных баз:



Внутри файлы v8i выглядят так:
[ХабраХабр ООО]
Connect=File="X:\Base\Accounting\habrahabr";
ID=
OrderInList=6062080
Folder=/
OrderInTree=6422528
External=1
App=Auto
WA=1
Version=8.3

Создать их можно прямо из окна выбора базы («Сохранить ссылку в файл») или же взять в профиле пользователя-создателя базы — %AppData%\1 °C\1CEStart\ibases.v8i. Ссылка может быть на базу работающую в любом режиме (файловый, серверный, веб). Рекомендуем хранить в одном файле не более ста баз, иначе файл может попросту загрузиться не до конца :)

Как обновить сразу сотню баз?
Обновление баз лучше производить на отдельном сервере (а еще лучше сразу на двух :) — это и быстрее, да и управлять процессом проще. Мы используем типовые конфигурации (без снятия с поддержки), обновляемые через ИТС. В первом квартале этого года для «Бухгалтерии 3.0» вышло более 10 обновлений, накатить их даже на десяток баз вручную — та ещё веселуха. Потому мы разработали некоторую стратегию.

Прохладная история: в первый отчетный период 2014 наши любимые гос органы и 1С внезапно лишили нас сна, выпустив в период с марта по апрель более 10 апдейтов только для конфигурации Бухгалтерия 3.0! Конечно, мы не стали обновлять всё подряд, но даже 3–4 обновления для сотен баз за столь короткий срок — хорошая проверка на прочность.
Читатель может задаться вопросом, откуда столько хлопот? Ответ прост: изменения в законодательстве и при этом в самый последний момент. Например: с начала 2014 года не было утверждённых форм ФСС и ПФР. В одном из первой 10-ки обновлений их добавили, но только для сдачи в бумажном виде, а в электроном — нет. И так происходит постоянно.

Блокировка
Через интерфейс:



Или через создание файлика в каталоге базы 1Cv8.cdn вот с таким содержимым:
{1,20140514173100,00010101000000,"База временно не доступна! Крепитесь =) 

Для администратора:
Для того чтобы разрешить работу пользователей, воспользуйтесь консолью кластера серверов или запустите "1С:Предприятие" с параметрами:
ENTERPRISE /F""X:\Base\habrahabr"" /CРазрешитьРаботуПользователей /UC<код разрешения>","",""}

Обновление
Для файлового варианта:
CHCP 1251
SET cfu_file="X:\tmplts\1C\Accounting\3.0.32.7\1cv8.cfu"
SET base_dir="X:\update\habrahabr"
"%ProgramFiles(x86)%\1cv8\<версия>\bin\1cv8s.exe" CONFIG /F %base_dir% /N"Администратор" /P"123" /UpdateCfg %cfu_file% /UpdateDBCfg /Out update.log

Для SQL варианта:
CHCP 1251
SET cfu_file="X:\tmplts\1C\Accounting\3.0.32.7\1cv8.cfu"
"%ProgramFiles(x86)%\1cv8\<версия>\bin\1cv8s.exe" CONFIG  /S"habr\HabraBD" /N"Администратор" /P"123" /UpdateCfg %cfu_file% /UpdateDBCfg /Out update.log

Как правильно делать резервное копирование баз?
Если вы используете SQL, следующий абзац можно безжалостно скипнуть — он актуален только для файлового режима.

В нашей практике мы не раз встречали базу в неконсистентном состоянии. Более того, в файловом варианте, не существует специальных инструментов, чтобы сообщить базе о начале копирования, нет возможности заблокировать работу с ней, если она идёт прямо сейчас. Мы справлялись с этим так: в полночь сервер RDP переходил в режим запрета новых подключений, через пару часов всех пользователей мягко выгонял скрипт. Затем срабатывало регламентное обновление и резервное копирование.

Выгрузка в dt
Для файлового варианта:
CHCP 1251
"%ProgramFiles(x86)%\1cv8\<версия>\bin\1cv8s.exe" CONFIG /F "X:\Base\habrahabr" /N"Администратор" /P"123" /DumpIB "X:\Backup\DT\habrahabr.dt"

Для SQL варианта:
CHCP 1251
"%ProgramFiles(x86)%\1cv8\<версия>\bin\1cv8s.exe" CONFIG /S"habr\HabraBD" /N"Администратор" /P"123" /DumpIB "X:\Backup\DT\habrahabr.dt"

Все выше сказанное справедливо для 1С Предприятие, платформа 8.3; Бухгалтерия 3.0; Зарплата и Управление Персоналом 2.5.

В следующий раз мы расскажем о работе в режиме разделения данных для нескольких сотен фирм на одну базу. Будем рады услышать вопросы, замечания и предложения. А всем тем кто столкнулся с подобными задачами — хочется пожелать терпения, упорства и веры в победу.
Автор: @ArtyV
Кнопка
рейтинг 34,61
Компания прекратила активность на сайте

Комментарии (15)

  • +1
    Хм.После обновления конфигурации, при первом запуске 1С выдает предупреждение с радиобаттонами, мол я получил эту версию легально, и дальше запускаются всякие-разные обработки для конвертации справочников. Так что пользователям в любом случае приходится выполнять эти действия?
    • +1
      Мы нажимаем эти радиобаттоны autoit скриптом, но он «грязноват», потому решили его не публиковать. В следующей части уделим этому абзац внимания.
  • 0
    Вы по-прежнему работает с клиентами только из Москвы?
    • 0
      Да, и в ближайших планах нет расширения в другие регионы.
      • 0
        У вас же там вакансии для Екб опубликованы вроде
        • +1
          Потому что мы сами в Екатеринбурге находимся
          • 0
            А что с вашим банком происходит? lifenews.ru/news/134536
            • 0
              Ничего не происходит (кроме заказных коментариев к той новости =), просто правоохранительные органы решили проверить документы по операциям одного из клиентов.
        • 0
          Да, обслуживающие команды, разработка и все остальные сидят в Екатеринбурге. В москве у нас только фронт-офис.
  • 0
    Про работу разделения нескольких фирм в одной базе более интересно, ИМХО. Я сталкивался со стандартной настройкой разделения, при которой в Бюджетной бухгалтерии не формировалась, а падала с ошибкой Главная книга из-за большого количества таблиц в запросе. Помогло только исправление 1С-кода.

    А автоматизация через ключи запуска достаточно очевидна, но только несколько вопрос — всё это вы во что обернули? Сделали интерфейс управления базами, на основе 1С? Как управляете различными серверными платформами 1С?

    Почему вы используете для конфигурации клиентской машины файловую шару? Возможно проще создать специальную конфигурацию, к которой подключаться для авто-настройки?

    • 0
      Про разделение данных обязательно напишем когда сами будем уверены в результате. В нашем случае всё сильно осложняется тем, что обязательна нужна выгрузка чистой бахгалтерии в dt, который нужно передать клиенту в случае прощания, а так же нужна синхронизация каждой организации в бухгалтерии с разными базами зарплаты (и в автоматическом режиме). В общем, как прокопаем и по-наступаем на грабли — напишем пост.

      Сервреная платформа у нас одна, пока нет необходимости поднимать несколько серверных ферм. Управляем ей в перемешку кучей скриптов, обработками (похожими на ту, что в посте) и ещё используем конфигурацию «Автоматизированная проверка конфигураций» (для ревизий версий и тыды). Какого-то фреймворка нет.

      Я не уверен, что правильно понимаю о чём речь в вопросе, но постараюсь ответить.
      Если речь про рабочее место бухгалтера, то это ферма из нескольких 2X \ RDP серверов, окружение хранится в перемещаемом профиле. Настраивается при подключении.
      Если речь идёт про обновление конфигурации 1С и о причинах, почему они лежат на файловой шаре, то отчасти это связано с тем, что иногда бывают ситуации когда нужно держать разные базы с разными текущими версиями (из-за: особенностей учёта; перехода от версии к версии; так прислал клиент; есть обмен с определённой версией торговли и нельзя так просто взять и обновить версию).

      Ещё стоит отметить, что в посте скриптовая часть сильно упрощенна, нежели то «мясо», что в действительности используется, чтобы нанести больше непоправимой пользы и увеличить полезность поста, сделав его более универсальным.
  • 0
    Вы всё ещё бэкапите файловые базы через выгрузку в dt? Северный зверёк придёт и к Вам!
    Есть мнение, что файловые базы более лучше бэкапить копированием/архивированием 1cv8.1cd. Ибо не единичны случаи, когда получающийся dt оказывается неработоспособен
    • 0
      У нас правда куча раз было так, что скопированный файл был не работоспособен, потому когда мы работали в файловом режиме мы делали и выгрузку и снепшоты =)

      В серверном варианте все иначе.
    • +1
      Лучше всего задать вопрос так: вы всё ещё используете файловые базы?
      • 0
        Нет, уже нет.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разное