Как приготовить сотни баз 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.В следующий раз мы расскажем о работе в режиме разделения данных для нескольких сотен фирм на одну базу. Будем рады услышать вопросы, замечания и предложения. А всем тем кто столкнулся с подобными задачами — хочется пожелать терпения, упорства и веры в победу.