Где в 1с упп администрирование
В данной статье познакомимся с сервером администрирования кластера серверов 1С:Предприятия, а конкретно с утилитами rac.exe и ras.exe, а также программой deployka, с помощью которых становится возможным администрирование кластера серверов 1С:Предприятие из командной строки.
По традиции, всем кому лень читать, предлагаю посмотреть вебинар на указанную тему:
Ну а остальным добро пожаловать под кат:
0. Оглавление
1. Общие сведения
Управлять кластером серверов 1С:Предприятие версии 8.3 возможно как с помощью консоли администрирования серверов 1С, так и из командной строки. Для этих целей служит Сервер администрирования кластера серверов, который состоит из двух утилит: непосредственно самого сервера — программы ras.exe и утилиты командной строки rac.exe, которая обращаясь к запущенному прежде серверу ras позволяет выполнять различные операции с кластером серверов 1С:Предприятия.
Подробно про данный механизм можно прочитать в поставляемой вместе с платформой книге «Руководство администратора. Клиент-серверный вариант» (или, соответственно, на сайте ИТС).
А общая схема работы данной связки выглядит следующим образом:
Сервер администрирования должен быть той же версии, что и версия кластера серверов 1С:Предприятия, причем одновременно к одному кластеру серверов могут быть подключены несколько серверов администрирования, но конкретный сервер администрирования может взаимодействовать только с одним агентом сервера.
И сервер администрирования и утилита командной строки могут работать в любой поддерживаемой платформой 1С:Предприятия ОС. Но в данной статье мы ограничимся только ОС семейства Windows.
2. Установка компонент сервера администрирования
И сам сервер и утилита администрирования входят в состав компонент сервера 1С:Предприятия. Соответственно, на компьютере с запущенной службой агента сервера 1С:Предприятия они уже должны быть установлены по умолчанию.
Чтобы убедиться в этом, достаточно перейти в каталог с файлами сервера 1С:Предприятия и найти в нем соответствующие утилиты (для удобства файлы можно сгруппировать по типу).
Подробно про установку сервера 1С:Предприятия я писал здесь.
Для установки сервера администрирования на компьютере, где ранее не был установлен сервер 1С:Предприятия, необходимо запустить дистрибутив установки сервера 1С и в составе компонент выбрать пункт «Сервер 1С:Предприятия 8».
Причем, при выбранной данной компоненте на следующем шаге мастер установки предложит установить сервер 1С:Предприятия как службу Windows. От этого пункта конечно же следует отказаться сняв соответствующий флаг.
После установки необходимо убедиться в наличии всех необходимых компонент описанным выше способом.
3. Запуск сервера администрирования
Для получения подробной информации по утилите ras.exe можно вызвать справку выполнив команду
Из справки видно, что сервер администрирования может работать как в режиме приложения, так и как служба Windows (параметр service). Также мы можем задать сетевой порт, на котором будет работать сервер администрирования (параметр port, по умолчанию используется порт 1545), а для режима администрирования кластера используется режим claster. Вызвать справку к данному режиму можно командой:
После чего увидим, что у данного режима в качестве аргумента указывается адрес агента кластера серверов 1С:Предприятия. По умолчанию это localhost:1540.
Таким образом, если сервер администрирования запускается на той же машине, где запущен и агент сервера 1С:Предприятия, достаточно выполнить команду
Ну а если необходимо подключиться к агенту сервера, запущенном, например, на компьютере с сетевым именем Server1C, причем агент работает на нестандартном порту 2540, то команда будет следующей:
4. Запуск сервера администрирования в качестве службы Windows
Конечно же, чтобы не запускать сервер администрирования каждый раз руками, удобно запустить его единожды в качестве службы Windows. Но, к сожалению, разработчики платформы не реализовали возможность автоматической регистрации соответствующей службы в системе, как, например, это сделано для агента сервера 1С. Для добавления службы предлагается воспользоваться системной утилитой sc. Давайте рассмотрим этот процесс чуть более детально.
Для начала, я рекомендую для создаваемой службы создать отдельного пользователя Windows. Подробно как это сделать я описывал здесь.
Пусть это будет локальный пользователь с именем USR1CV8_RAS и паролем Pass123
Далее, необходимо создать и выполнить bat-файл, который будет регистрировать соответствующую службу. Содержания файла следующее:
В файле указываем:
- Имя пользователя и пароль из под которого будет запускаться служба — переменные SrvUserNameи SrvUserPwd
- Адрес и порт агента сервера, который мы собираемся администрировать — переменные AgentNameи CtrlPort
- А также имя службы и сетевой порт на котором будет работать сервер администрирования — переменные RASPortи SrvcName. Имеет смысл менять эти параметры только если вы хотите запустить параллельно несколько серверов администрирования, например для обслуживания разных серверов 1С.
В качестве единственного параметра bat-файла выступает текущая версия платформы 1С:Предприятия. Таким образом, для создания службы запускаем командную строку с правами администратора и запускаем созданный ранее файл register-ras.bat, не забыв указать нужную версию платформы.
Проверяем, что в системе появилась служба с указанным именем. И сразу запускаем ее, выбрав соответствующий пункт в контекстном меню.
На этом установка сервера администрирования в качестве службы завершена.
5. Администрирование кластера серверов с помощью утилиты rac.exe
Итак, сервер администрирования мы установили. Взаимодействием с сервером осуществляется с помощью специальной консольной утилиты rac.exe. Выполним команду
чтобы получить справку данной программы.
Как видно из справки, утилита имеет один общий аргумент, задающий адрес сервера администрирования (по умолчанию localhost:1545) и множество режимов работы: для администрирования агента кластера серверов, самого кластера, менеджера кластера, рабочих процессов и т. д. Справку по каждому режиму можно вызвать соответствующей командой.
Описывать все режимы работы, очевидно, нет никакого смысла. Приведу лишь несколько примеров работы.
Получение списка информации о кластерах:
Получение списка информационных баз на заданном кластере серверов:
Получение списка соединений с указанной информационной базой:
Утилита администрирования позволяет выполнить весь объем работ, необходимый для администрирования кластера серверов, за исключением аутентификация ОС для администраторов кластера серверов, рабочего сервера и информационной базы.
6. Программные обертки для работы с сервером администрирования
Главное, мы имеем возможность выполнять различные инструкции на кластере серверов 1С из командной строки. А это значит, что можно добавлять необходимые функции по взаимодействию с кластером серверов 1С:Предприятия в различные программы, обработки или же скрипты.
Например, среди прочего, работать с сервером администрирования может написанная на языке OneScript программа deployka.
О скиптовом движке OneScript я уже рассказывал здесь.
О программе deployka можно подробнее узнать здесь.
Ну а максимально полный обзор всех имеющихся библиотек и приложений написанных на OneScript приведен в этой замечательной статье.
7. Установка и работа с программой deployka
Алгоритм установки OneScript и deployka довольно подробно разобран в статьях по ссылкам, указанным в предыдущем пункте. Ну а если коротко, он состоит из следующих действий:
1. Скачиваем дистрибутив OneScript с официального сайта.
2. Устанавливаем, следуя инструкциям мастера.
3. Перелогиниваемся в системе, чтобы применились новые переменные среды.
4. Запускаем командную строку с правами администратора, проверяем, что предыдущие пункты выполнены корректно командной
5. Устанавливаем программу deployka с помощью пакетного менеджера opm, выполнив команду
6. Проверяем, что все работает, вызвав справку «деплойки» командой
7. Вот в общем то и все. Все режимы работы программы видны на экране. Далее читаем справку на сайте или в консоли, вызывав подсказку для каждого режима соответствующей командой:
Вот так, например, можно завершить все сеансы в указанной информационной базе с последующей установкой блокировки начала сеансов.
8. Теперь можно использовать «деплойку» в своих скриптах. Например скрипт обновления информационной базы из хранилища, с отключением пользователей и обновлением базы данных может выглядеть так:
Если пользователю не хватает прав на объект, то на практике в 90 % случаев, недостающую роль можно найти через типовой регистр сведений Права ролей. Также с помощью дополнительного отчета или небольшого расширения можно ускорить описанный процесс.
Роли — это общие объекты конфигурации , предназначенные для реализации ограничения прав доступа в прикладных решениях. В процессе ведения списка пользователей прикладного решения каждому пользователю ставится в соответствие список ролей, которыми определяется, какие действия, над какими объектами метаданных может выполнять пользователь.
Общая схема системы прав доступа подразумевает:
- Создание ролей для доступа к объектам отдельно для чтения и для записи.
- Объединение ролей в профили (в том числе поставляемые).
- Назначение профилей группам доступа с ограничением доступа по видам доступа.
- Добавление в группы доступа пользователей и групп пользователей.
Такой механизм обладает гибкостью и универсальностью. Это позволяет его достаточно широко применять. Однако непосредственное использование этого механизма громоздко и трудоемко.
Во время работы пользователя в базе 1С при попытке выполнить действие (на которое у него нет разрешения) система выдаст окно предупреждения, примерно такого вида:
Если открыть журнал регистрации по пользователю, то можно увидеть объект и недостающее право в событии «Доступ. Отказ в доступе». Например, отсутствие права на чтение константы, как на рисунке ниже:
Задача администратора базы данных или сотрудника технической поддержки в том, чтобы добавить пользователю недостающее право, а для этого требуется найти Роль, которую следует назначить пользователю.
В большинстве случаев (но не во всех) для этого достаточно выполнить следующие шаги:
Перейти в меню - Все функции - Регистры сведений - Права ролей (или перейти по навигационной ссылке e1cib/list/РегистрСведений.ПраваРолей)
Примечание: Пункт Все функции, можно включить так: Переходим в меню - Настройки - Параметры - Отображать команду "Все функции"
Регистр типовой, наполнен объектами метаданных и ролями, которые дают на них права.
Выполняем поиск по интересующему нас объекту (документу, отчету, регистру, обработке и т.п.).
Получаем список задействованных ролей (как на рисунке выше с документом Авансовый отчет):
- Добавление изменение авансовых отчетов (роль)
- Чтение авансовых отчетов (роль)
Открываем справочник Профилей, это можно сделать так:
- Переходим в меню - Все функции - Справочники - Профили групп доступа
- Раздел - НСИ и администрирование - Настройки пользователей и прав - Профили групп доступа
- Или перейти по навигационной ссылке e1cib/list/Справочник.ПрофилиГруппДоступа
Чтобы определить подходящие профили, добавляем отбор на форму списка
Ещё - Настроить список - Закладка Отбор - Добавляем отбор по полю табличной части Ссылка.Роли.Роль
После этого можно удобно вычислить нужные профили, например, с ролью Чтение авансовых отчетов.
Примечание: Предварительно установите в списке Ещё - Режим просмотра - Список (чтобы убрать группы)
Если нужных профилей не оказалось, то создайте новый профиль или измените существующий.
Примечание: В предопределенные профили базы добавлять роли нельзя, а для того чтобы добавить роль в предопределенный профиль, сделайте свой, скопировав, предопределенный профиль и уже туда добавляйте роль.
Определив нужный профиль доступа, вам необходимо в связанную с ним группу доступа, добавить пользователя.
Группы доступа видны по ссылке в форме Профиля
Если нужной группы доступа нет, то создаем ее.
Открыв связанную с профилем группу доступа, добавляем в неё пользователя
На этапе настройки прав доступа в базах и изменениях должностных обязанностей пользователей мне приходилось многократно проходить эту цепочку шагов.
Сам процесс можно ускорить соединив все шаги: 1,2,3 - в одном отчете или расширении.
Использу я рисунок выше "Общая схема системы прав доступа" можно соединить данные регистра Права ролей с профилями и группами доступа, сразу получив нужную картинку для анализа прав.
Схема запроса для системы компоновки примерно такая:
Таблицу РегистрСведений.ПраваРолей (Отбор: Объект метаданных) связываем по Роли с таблицей Справочник. ПрофилиГруппДоступа.Роли связываем по реквизиту с таблицей Справочник. ГруппыДоступа.Профиль.
Сам отчет строим на системе компоновки данных, чтобы его оформление и структуру менять по своему усмотрению.
Вообще можно настраивать как угодно отчет.
Также можно сформировать, например Матрицу Пользователей (кто в какой группе доступа). Перейти в Настройки, где поставить в строках Пользователей, в колонка Профили, в ресурсах Чтение
Открываем 1С:Предприятие - Разделы - НСИ и администрирование - Печатные формы, отчеты и обработки - Дополнительные отчеты и обработки - Добавляем отчет (или перейти по навигационной ссылке e1cib/list/Справочник.ДополнительныеОтчетыИОбработки)
- Отчет тот же самый добавляем в расширение.
- Интересным моментом оказалось как динамически вызвать отчет в большинстве форм объектов, максимально просто.
Я выбрал следующий способ:
Почти в каждом модуле формы есть событие ПриСозданииНаСервере(. ), в нем вызывается общее событие СобытияФорм.ПриСозданииНаСервере(. )
а далее в нем событие переопределяемого модуля
именно это событие МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере() я перетащил в расширение с ключом выполнения "&После"
чтобы вызвать отчет в процедуре динамически вывожу снизу на форму объекта элемент формы ДекорацияФормы, в который с помощью ФорматированнойСтроки(. ) передаю навигационную ссылку на команду открытия отчета из расширения.
Далее в самой команде отчета с помощью метода АктивноеОкно() определяю форму объекта, из которой произошел запуск и формирую отчет с нужным параметром
Получилось следующее (на примере элемента справочника "Ресурсные спецификации"):
- Гиперссылка "Права на объект" появляется в формах
- По ее нажатию вызывается отчет "Права на объект" с указанием объекта в заголовке и отбором по типу метаданных
В отчете видно в колонках какие роли дают какие права, и в строках у кого уже есть такие права и в какую группу можно включить пользователя.
1) Переходим в меню - Настройки - Параметры - Отображать команду "Все функции"
2) Переходим в меню - Все функции - Стандартные - Управление расширениями конфигурации - Добавляем расширение
- будет работать 1С:Комплексная автоматизация, 1С: Управление торговлей и др, т.к. регистр сведений Права ролей есть почти в каждом прикладном решении.
Обработка выгрузки и загрузки данных через XML между идентичными конфигурациями с возможностью установки произвольных отборов на выгружаемые объекты.
Подключаемый отчет на системе компоновки данных по типам объектов 1С показывает: 1) Совокупности таблиц SQL для хранения объекта 1С и их предназначение; 2) Число объектов данного типа; 3) Размеры хранения данных и индексов в MB (мегабайтах); 4) Сравнение данных двух баз
Предназначается для запуска сеанса другого пользователя из своего сеанса 1С (если пароль вам неизвестен).
Если пользователю не хватает прав на объект, то на практике в 90 % случаев, недостающую роль можно найти через типовой регистр сведений Права ролей. Также с помощью дополнительного отчета или небольшого расширения можно ускорить описанный процесс.
Онлайн диаграмма доступных лицензий 1С и показателей ресурсов сервера 1С в различных измерениях и отборах.
Обработка ищет все объекты базы, в которых одновременно присутствуют перечисленные элементы. Построена на базе типовой обработки Все функции - Стандартные - Поиск ссылок на объект, но позволяет накладывать отбор не по одному объекту, а по нескольким, что позволяет настраивать поиск по комбинациям условий
Часто не хватает визуализации хронологии документов в структуре подчиненности и кнопок проведения. Это расширение конфигурации, с функционалом структуры подчиненности документов, отображающее хронологическую последовательность документов во времени и дающее доступ к проведению, отмене проведения, пометке на удаление документов непосредственно в форме подчиненности.
Обработка для массовой проверки доработок конфигурации: Открытие форм, Печать, Формирование отчетов, Проведение документов, Запись справочников, ПВХ, ПВР. Выдает список обнаруженных ошибок. Рекомендуется применять для тестирования обновленной конфигурации, перед установкой пользователям. В коде используются универсальные методы поэтому подходит для большинства конфигураций, построенных на базе библиотеки стандартных подсистем.
Групповая обработка ссылок вида Объект не найден (502:37855254002e11eb11e73b8f36150d9e) заполняется максимально просто копированием и вставкой из буфера: 1) Выделяет уникальные идентификаторы (далее УИ); 2) Ищет ссылки на объекты базы по УИ; 3) Создаёт пустые объекты с указанным УИ; 4) Регистрирует найденные ссылки для обмена данными. Работает на любых продуктах 8.3
Обработка на управляемых формах для работы с календарями google, событиями календарей и контактами.
Обработка проверяет наличие и решает проблему с ошибкой развернутого сальдо в Оборотно-сальдовой ведомости (регистр бухгалтерии Хозрасчетный) из-за ошибки Универсального редактора реквизитов или кода программиста, устанавливающего пустые ссылки в значениях Валюты, Подразделения, Направления деятельности не равными NULL. И пересчёт итогов тут точно не поможет.
Выполнил 3 разных теста для проверки серверного оборудования (тест 1С, тесты gilev) на возможное число 1С онлайн-пользователей одновременно работающих на нем и интерпретировал результаты тестов через легких, средних и тяжелых пользователей с помощью таблицы с профилями реальных пользователей.
Перед началом проекта требуется определить параметры серверного и клиентского оборудования, необходимые для работы внедряемой программы 1С:Предприятие, и учесть будущую нагрузку, которая ляжет на систему в реальной рабочей обстановке. Мощность оборудования должна быть достаточной для нормальной работы пользователей. Но как подобрать сервер простым способом?
На время сеанса отключаем контроль остатков и проверку документов в ERP, КА, УТ типовыми средствами и простым расширением.
Часто при моделировании примеров бизнес-процессов, на запуске в эксплуатацию или закрытии требуется несколько раз прогнать ситуацию с разными настройками, а для этого изменить, удалить ранее введенную цепочку документов. Дается все это с трудом. Ты уверен, что не навредишь своими действиями системе, но документы цепляют друг друга и ругаются контролями остатков, не разрешая тебе менять их в произвольном порядке.
Есть несколько удобных опций для облегчения внесения изменений.
Для уведомления пользователей программных продуктов 1С о разных событиях, в них включена подсистема «Новостной центр». Это довольно удобная штука, т.к. новостные ленты сообщают о выходе обновлений, о новостях и событиях в сфере учёта. Но можно увеличить пользу от новостной подсистемы используя её локально в рамках 1С базы. Например, внутренняя служба техподдержки или внедряющая компания может через новостную ленту оповещать пользователей информационной базы об изменениях в программе, совещаниях, проведении тестирований, заполнения нужных документов или сдача отчетов к определенной дате и т.п.
Пример технического задания для практического понимания основных разделов.
Кратко описаны основополагающие моменты при старте групповой разработки конфигурации несколькими программистами. Полезно для проектной документации как требование к разработчикам или сопровождающей компании
Ссылка на компетенции по 1С:ERP - команда со знаниями, умениями и успешными проектами.
Версии:
- Дополнительный отчет "Права на объект" (версия 25.01.2022): - Обновления по отчету прав, изменилась структура метаданных
- Расширение "Права на объект" (версия 25.01.2022) - Обновления по отчету прав, изменилась структура метаданных
Настройки пользователей в УПП
Конфигурация "Управление производственным предприятием" релиз 1.3 включает в себя механизм настроек пользователей, с помощью которого можно устанавливать параметры автозаполнения форм, настройки в документа по умолчанию и много другое.
Сегодня в статье рассмотрим работы с настройками пользователей в режиме 1С:Предприятие, а также его реализацию в конфигураторе.
Режим 1С:Предприятие
Откроем окно настрое пользователя (не важно какого). Увидим примерно следующее:
Продемонстрируем влияние настроек на работу пользователя. Изменим настройку "Запретить открытие нескольких сеансов" в значение ИСТИНА. Затем, не закрывая текущий сеанс, попытаемся войти в программу под той же учетной записью. Система нам выдаст предупреждение и не закроет сеанс:
Если мы вернем настройку в прежнее состояние, то запуск нескольких сеансов станет возможным.
Как Вы могли заметить, список доступным настроек пользователей достаточно обширный. Подробнее о назначении каждой из них Вы можете прочитать во встроеной справке конфигурации "Управление производственным предприятием", за исключением тех случаев, когда настройки были добавлены пользователями/администратором и не являются предопределенными.
Режим конфигуратора
Механизм настроек пользователей имеет достаточно простую реализацию. Используются всего два объекта в дереве конфигурации:
- План видов характеристик "НастройкиПользователей".
- Регистр сведений "НастройкиПользователей".
План видов характеристик определяет тип значения характеристики, сохраняемой в регистре сведений "НастройкиПользователей". Вот список некоторых доступных типов значений, установленный в типовой конфигурации:
Для элемента "Запретить открытие нескольких сеансов" плана видов характеристик "Настройки пользователей" установлен тип "Булево". При запуске программы производится проверка включения этой опции. Если значение для настройки по текущему пользователю установлено в ИСТИНА, тогда выполняется проверка наличия запущенных сеаносв этим пользователем.
Вот часть кода проверки из модуля обычного приложения события "ПриНачалеРаботыСистемы":
Самый интересный момент - это процедура "ПолучитьЗначениеПоУмолчанию". Первым параметром в нее передается текущий пользователь (ссылка на элемент справочника "Пользователи"), вторым - имя элемента плана видов характеристик "Настройки пользователей", для которого нужно получить значение. Вот так выглядит код обработчика этой функции:
Здесь, если получаем настройку для текущего пользователя, то ее значение пытаемся получить из кэша. В остальных случаях непосредственно из регистра сведений "НастройкиПользователей".
Таким же образом выполняется обработка настроек пользователей в других процедурах и функциях конфигурации. Получаем значение настройки и выполняем действия в зависимости от условий.
1С7.7 настраивается довольно просто, это могут сделать и сами пользователи. После установки производится обслуживание и сопровождение 1С 7.7
Права доступа в УПП. Общая информация о подсистеме администрирования пользователей
а также внутреннее устройство механизмов прав доступа в конфигураторе.
Вот список статей по правам доступа в УПП:
1. Права доступа в УПП. Роли
2. Права доступа в УПП. Профили
3. Права доступа в УПП. Дополнительные права
4. Права доступа в УПП. Добавление права на ТОЛЬКО ПРОСМОТР информации в информационной базе
5. Права доступа в УПП. RLS. Общие сведения и настройка
6. Права доступа в УПП. RLS. Общая схема реализации
7. Права доступа в УПП. RLS. Шаблон ограничений доступа по организациям
8. Права доступа в УПП. RLS. Настройка доступа к справочнику "Контрагенты"
9. Настройки пользователей в УПП
В последней статье был рассмотрен фунционал настроек пользователей и его устройство в конфигурации, поскольку он входит в единый интерфейс "Администрирование пользователей".
Далее в статье подведем небольшой итог по перечисленному материалу, сформируем общую картину для функционала по администрированию пользователей.
Интерфейс
Среди многочисленных интерфейсов пользователей в УПП 1.3 мы можем выбрать "Администрирование пользователей":
Используя этот интерфейс мы можем в полной мере воспользоваться функционалом настройки прав доступа УПП. Выбирая нужный элемент главного меню, мы можем настраивать список пользователей информационной базы, группы пользователей. В подменю "Полномочия" можно перейти к настройки профилей доступа и дополнительных прав.
Подменю "Доступ на вровне записей" открывает доступ к общим опциям RLS, а также более детальной настройки прав в зависимости от объектов и групп объектов.
Теперь рассмотрим общую схему взаимодействия объектов конфигурации, используемых при работе с интерфейсом "Администрирование пользователей".
Объекты
В статье " Права доступа в УПП. RLS. Общая схема реализации" была представлена схема для объектов, используемых для ограничений доступа на уровне записей в УПП. Сегодня приведем подобную схему, но уже для всего функционала, используемого в интерфейса "Администрирование пользователей".
Ссылка для просмотра схемы в формате PDF
Ссылка для скачивания схемы в формате PDF
с доп. функционалом Mindjet Mind Manager (для просмотра нужно установить программу на компьютер)
Некоторые детали пришлось опустить, иначе схема бы превратилась в рекламный щит =) Но общая логика в схеме сохранена.
Отчет
Для того, чтобы ориентироваться в настройках прав доступа, администратору предлагается использовать отчет "Отчет по системе прав" из подменю "Отчеты".
Отчет имеет несколько вариантов, по названиям которых можно понять их назначение:
Так, например, с помощью варианта "Настройка прав доступа" можно получить информацию о текущей конфигурации ограничений на уровне записей для используемых объектов доступа (организаций, контрагентов и так далее). Варианты "Настройка дополнительных прав" используется для получения текущих настроек дополнительных прав доступа по пользователям.
Все функциональные возможности УПП, описанные выше, а также в предыдущих статьях, позволяют настраивать доступа к данным в информационной базе достаточно гибко.
Конфигурация 1с.
Доступ к реквизитам справочника в 1с7.7 для каждого пользователя
ВПФ Расходная накладная УТ 11
В этой статье выражено личное мнение автора, его видение мира, его путь, и это все не претендует на абсолютную верность и объективность. Автор не несет никакой ответственности за последствия использования данной информации, он только надеется что эта информация поможет сделать кому-то жизнь проще.
Предисловие
Сначала я просто хотел написать небольшую статью о том, как мы разносили базы по службам, но в ходе углубления в этот процесс мы добавляли всякие разные штуки (мониторинг служб, потом мониторинг пользователей внутри 1С, потом прикрутили заббикс, и, наконец, пришли к CI/CD на базе 1С). В итоге я понимаю что пихать это в одну статью будет слишком — решил разделить на несколько. Ну а название навеяно циклом статей "сети для самых маленьких", которые принесли мне много приятных минут и к которым я отсылаю всех, кто "хочет изучить сети". Итак, мы приступаем!
Когда ты признаешь проблему, значит ты на половину уже вылечился (с) один знакомый психиатр
В этой статье я хочу поделиться своим опытом администрирования большого числа 1С в корпоративном секторе. Базы все разные, есть разработка, есть тестовые, все как у всех. Но их просто достаточно много. И все было хорошо, но в определенный момент проводить какие-то админские работы стало крайне тяжело и рискованно.
Какие у нас были сложности:
- Подвисшая база тянула за собой перезапуск службы, а значит страдали невинные (пользователи других баз)
- Было тяжело понять кто сегодня "герой дня" — какая база заняла все ресурсы
- Обновление релизов — обновление одной тянуло за собой автоматическое обновление всех баз на этой службе
- Ручное подключение баз пользователям, ручное изменение в случае переездов
- Мониторинг
И только сейчас я понимаю что это была только вершина айсберга.
Акт первый, действие нулевое
Небольшое отвлечение на основные постулаты, осознание которых далось большой кровью и болью.
- Старые версии 1С (до 8.3.11+) имеют просадку по производительности при работе в виртуализированной среде. (Источник — Гилев и собственные тесты)
- Кластер есть, но с ним все крайне не просто. Возможно его доработают потом, но пока он в основном для галочки. (источник — собственный опыт)
- При выборе процессора смотрите только на частоту. Процессор в 6 ядер по 3,4Ггц порвет в куски процессор на 20 ядер по 2Ггц. Проблема в том, что 1С вообще ничего не знает про параллельные вычисления. По сути это работает так — у нас есть определенное число воркеров для каждой службы, их раскидывают по процессорам, и если в каком то воркере пользователь запустил какой-то тяжелый отчет то в системе будет загружено только одно ядро процессора. Именно то, на котором работает воркер с запущенным заданием… Для БД ситуация кстати ровно обратная. (источник — Гилев, собственный опыт, опыт коллег)
- Не используйте логи в "новом" формате (запись в SQLLite) — вы очень быстро столкнетесь с тем, что производительность этого решения еще хуже чем файлового варианта. (Источник — собственный опыт, опыт коллег).
По подсказкам из комментариев есть вариант вынести логи на отдельный инстанс.
В 8.3.12 обещали логи в нормальный скуль. - 1С оооочень не любит IPv6. На всех серверах с 1С лучше сразу понижать приоритет IPv6 до минимума. (Источник — Гилев, собственный опыт)
- Используйте для виртуальных серверов виртуальные сетевые карточки E1000. С остальными проблема по производительности (Источник — Гилев, но на собственном опыте не подтвердилось, хотя особо и не тестили)
- Обслуживание баз дает хороший прирост производительности, особенно периодический пересчет итогов, а так же обслуживание индексов SQL (Источник — собственный опыт, Гилев)
- Поиск причин падения 1С сродни поеданию неочищенного кактуса. Выяснить что-то толком можно только через боль, унижения и страдания. (Источник — собственный опыт)
- Нет ни одного официального образа ни под один гипервизор. Про докер я вообще молчу. (Источник — сайт 1С)
- Программная лицензия для сервера привязывается к — сюрприз, сюрприз — серийному номеру процессора (и еще огромному количеству параметров сервера). В эпоху повсеместной виртуализации ход потрясающий. Поясняю — активировали сервер, переехали на другую ноду, перезагрузили машину — 1С не запуститься. Расчехляйте новый активационный код. (Источник — собственный опыт, болтливая техническая поддержка 1С =))
- 1С — это учетная система, а не отчетная. Хотите много нормальных жирных отчетов и быстро — выводите это за рамки 1С. (Источник — собственный опыт)
- У 1С есть два неоспоримых достоинства, за счет которых она будет процветать еще долго:
- стоимость самого продукта/разработчиков
- скорость разработки
и к сожалению для российского бизнеса они являются первоочередными. А зачастую и единственными, на что вообще смотрят. (Источник — печальная реальность)
- Никогда не используйте файловую шару как место под хранилище конфигураций 1С. Только службу. Иначе маты со стороны разработки о упавшем черт знает когда хранилище станут вашим неизменным спутником по жизни. (Источник — собственный опыт, опыт коллег)
Акт первый, действие первое
Первая короткая сценка из корпоративной жизни
На сцене — Админ (А), программист 1С (П1С) и представитель бизнеса (ПБ)
ПБ — У нас медленно работает программа!
А — у меня в системе все хорошо!
П1С — я все написал правильно, у меня на компьютере все работает быстро!
ПБ (робко и растерянно) — но она же долго…
А и П1С хором — у нас все хорошо, проблема на вашей стороне!
Проблемы всегда случаются не вовремя (с) (5-летний философ)
И вот в одно прекрасное солнечное утро (на самом деле это была глубокая зимняя ночь) мы поняли что завтра надо запустить новую базу. Завтра наступал тот прекрасный день, который уже много раз описывался тысячами авторов и имя ему — легион! Тьфу, простите, занесло. Имя этому дню был дедлайн. Час ночи, завтра на 200 компах должна запуститься новая база." Да не проблема, у нас же все компы в домене! Сейчас быстренько сделаем логин-скрипт и дело в шляпе!" подумаете вы. И будуте правы — так же подумали и мы. И сделали. Только, как обычно это бывает, погорели на мелочи — я в логон-скрипте я прописал %filename%.bat а коллега выложил %filename%.cmd.
Ну и понятное дело с утра хелпдеск побежал делать все руками, а мне было очень стыдно за такой тупой фейл. Извинялся перед парнями тортиком.
Но мысль автоматизации этого процесса у меня в голове засела очень крепко и стал даже вырисовываться план внедрения.
В итоге мы пришли к следующей идеологии:
- Все раздается через AD — создаются группы вида 1cbases-%версия платформы%-%имя базы% и туда силами хелпдеста добавляются пользователи, которым нужна база.
- одна группа — одна база
- 1cbases — это префикс по которому удобно искать группы
- версия платформы 81, 82 и 83 (релиз не принципиален)
- название базы соответствует имени файла с настройками
Как мы это делали:
- Через групповые политики добавляется новое задание в планировщик (задача планировщика прописать пользователю путь к файлу подключения базы):
- запускать от имени пользователя
- событие — разблокировка компьютера
- действие — запуск нашего скрипта
- Создаем нужные группы в АД и заполняем их пользователями
- Создаем нужные файлы для запуска самих 1С. Тут остановлюсь чуть поподробнее. Изначально мы долго мучили интернет своими запросами и нашли полное описание структуры файлов *.v8i. Но потом нашелся способ проще и гениальнее.
- запускаем 1С
- настраиваем подключение к базе
- проверяем что все работает
- кликаем правой клавишей по названию базы и выбираем пункт — "Сохранить ссылку в файл"
- Добавление баз теперь не было морокой — просто делали группу, добавляли файл с настройками — дальше все происходило автоматом
- Могли спокойно переносить базы куда угодно, просто меняя конфигурацию в файле с настройками подключения к базе (как показала практика — очень удобно)
- Сберегли обувь хелпдеску
Акт первый, действие второе
Вторая короткая сценка из корпоративной жизни
И с этой стороны ни чуть не лучше… (с) печальный ослик Иа-Иа в свой собственный день рождения
Вот представьте себе — сидите вы в удобном кресле, в одной руке чашка вкусного чая, в другой пышущая жаром и свежестью булочка из кулинарии ближайшего магазина, за окном приятно пахнет весной… И это, конечно же, самое подходящие время для звонка с проблемой! Коллега — Байконур, у нас %@па!
Я — я так понимаю что стадию Хьюстона с проблемами мы уже успешно пролетели?
Коллега — да. База %имя базы% подвисла, вообще не отвечает, ТОПы уже рвут и мечут. 3 раза мне уже звонили. Надо перезагружать службу.
Я — так там же еще пачка баз на этой службе.
Коллега — да, поэтому вторая половина ТОПов тоже рвет и мечет что их отключат.В итоге конечно все согласовали, перезапустили, но осадочек остался.
- В продуктовой среде мы должны следовать правилу — одна база — одна служба с разнесением по портам
- Запускаться службы должны исключительно из-под доменных учеток. Одна служба — одна учетка. Это удобно для раздачи прав на шары, доступ в скуль и прочее. Так же, если у вас внедрена RBAC то вы можете очень оперативно посмотреть куда имеет доступ конкретный экземпляр 1С
- Логи нужно вынести на отдельный диск и включить на эти папки сжатие (при разбитии по дням это очень сильно экономит место и ускоряет (незначительно) поиск по логам)
- Каждой службе выдается alias в DNS для того, чтобы отвязать разработку от ip и/или dns сервера (в этом случае разработка вообще не волнуется на предмет того, где фактически находится сервер — физика, виртуальная машина в приватном облаке или вообще в публичном облаке)
- На каждую службу мы выделяем 500 портов для пользовательских соединений (наше внутреннее решение)
Как мы это делали (для нового сервера. для уже существующего часть шагов не актуальны):
- Создаются учетки под каждую службу
- На машине, где они будут работать им выдаются права на "запуск как службе"
- Ставиться MS офис, обязательно с активацией по MAK-ключу
- Ставится sqlncli — утилита из набора MS SQL Native Client. На данный момент выше 2012 не появлялось
- Создается папка C:\Windows\SysWOW64\config\systemprofile\Desktop — в противном случае есть проблемы с выгрузками в Word/Excel
- Для Windows 2016 и 1С 8.1 нужно скопировать старую версию dll (В папке C:\Program Files\Common Files\System\Ole DB надо заменить два файла sqloledb.dll и sqloledb.rll взятых со старых серверов)
- Ставятся дополнительное ODBC драйверы, если нужно подключатся к MySQL/PostgreSQL
Настройка папки для службы и логов:
- Создается папка на отдельном диске называется в формате 1CServer%basename% (в стандартном случае это делает сама служба, ибо у нее есть в настройках запуска путь к логам)
- Если внутрь каталога только что созданной службы переносятся данные из другого каталога (другой службы, другого сервера), то необходимо заменить владельцев (иначе служба не получит к ним доступа) с заменой владельца подконтейнеров
- Владельцем папки делается учетная запись службы
- Для того, чтобы в службах не было кроказябр
- в cmd ввести команду chcp 1251
- файл надо сохранить в ANSI кодировке
- Обязательно надо проверить на отсутствие дублирующих ключей в строке запуска — служба с ними не стартует.
- Для того, чтобы удалить службу, можно воспользоваться командой — sc delete «Имя заданное в переменной name»
- Добавить порты используемые 1С в разрешения в firewall
- Нужен всего один физический ключ на сервер — все службы будут активироваться им
После проведения всех мероприятий в итоге мы пришли к:
- Базы можно спокойно перезагружать, не трогая другие базы
- Всегда можно найти "героя" — базу, которая съедает все ресурсы
- Любые работы с базой касаются только одной конкретной базы
В следующих статьях я планирую рассказать (если эта статья народу зайдет):
Читайте также: