Як приготувати сотні баз 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.
 
Наступного разу ми розповімо про роботу в режимі розділення даних для декількох сотень фірм на одну базу. Будемо раді почути запитання, зауваження та пропозиції. А всім тим хто зіткнувся з подібними завданнями — хочеться побажати терпіння, завзятості і віри в перемогу.
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.