Conf cfg в 1с параметры
Формат конфигурационного файла программы запуска Файл расположен в каталоге %APPDATA%\1C\1CEStart
В конфигурационном файле содержится следующая информация:
- Версия платформы, которую нужно использовать по умолчанию;
- Расположение списков общих баз;
- Список каталогов с установленными версиями;
- Список каталогов с дистрибутивами;
- Расположение общего конфигурационного файла.
Файл представляет собой текстовый документ в кодировке UTF-16LE и содержит строки формата Параметр=Значение
Описание параметров DefaultVersion - определяет версию, используемую по умолчанию. Допускается наличие нескольких строк с таким параметром.
Пример 1: DefaultVersion=8.2-8.2.9.150
Данная строка означает, что при попытке запуска информационной базы с указанием версии 8.2 будет использоваться версия 8.2.9.150.
Пример 2: DefaultVersion=8.2.9-8.2.9.100
Данная строка означает, что при попытке запуска информационной базы с версией 8.2.9 будет использоваться версия 8.2.9.100.
CommonInfoBases - указывает путь и имя файла со списком общих информационных баз.
InstalledLocation - содержит указание на каталог, в который выполнена установка 1С:Предприятие. По умолчанию это значение C:\Program Files\1Cv82.
DistributiveLocation - содержит указание на каталог, в котором будет производится поиск новой версии для автоматической установки.
CommonCfgLocation - указывает путь и имя общего конфигурационного файла. Допускается наличие нескольких строк с таким параметром.
InstallComponents - В локальном конфигурационном файле (1CEStart.cfg) содержит перечень установленных компонент. Общий файл для всех пользователей компьютера находится в каталоге \Documents and Settings\All Users\Application Data\1C\1CEStart.
В общем конфигурационном файле (1CESCmn.cfg) содержит перечень компонент, которые необходимо установить (формируется администратором системы).
Содержит строку компонентов с признаком необходимости установки, разделенных пробелом:- 0 — не устанавливать,
- 1 — устанавливать.
Возможны следующие компоненты:
- DESIGNERALLCLIENTS — все клиенты и конфигуратор.
- THINCLIENT — тонкий клиент для клиент-серверного варианта работы.
- THINCLIENTFILE — тонкий клиент с возможностью работы с файловыми информационными базами.
- SERVER — сервер 1С:Предприятия. Если программа установки запускается из программы запуска, то сервер будет установлен как приложение.
- WEBSERVEREXT — компоненты расширения для веб-сервера.
- CONFREPOSSERVER — сервер хранилища конфигураций 1С:Предприятия.
- SERVERCLIENT — компоненты для администрирования кластера серверов 1С:Предприятия.
- CONVERTER77 — конвертер информационных баз из версии 1С:Предприятия 7.7.
- LANGUAGES — список языков интерфейса для установки. Если указано несколько языков, они перечисляются через ",". Перечень кодов языков локализации см. здесь.
Пример: LANGUAGES=RU,UK,BG
Пример параметра: InstallComponents=THICKCLIENT=0 THINCLIENT=1 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=1 LANGUAGES=RU,EN
В файле для всех пользователей 1CEStart.cfg могут быть указаны все настройки, аналогичного файлам пользователей, но интерактивные режимы редактирования настроек изменяют настройки в файле пользователя.
Инсталлятор записывает в All Users\Application Data\1C\1CEStart\1CEStart.cfg ключи InstalledLocation и InstallComponents.
При использовании настроек из общего конфигурационного файла и файла текущего пользователя, если ключ присутствует в обоих файлах:
Более высокий приоритет общего файла настроек для ключей: InstallComponents
Более высокий приоритет файла настроек текущего пользователя для ключей: DefaultVersion
UseHWLicenses
Остальные ключи, объединяются.
ConfigurationTemplatesLocation - указывает путь к каталогу шаблонов конфигураций. Может быть более одной записи.
Если параметр присутствует и в локальном и общем конфигурационном файле, то параметры анализируются в следующем порядке:- параметры DefaultVersion, InstallComponents в порядке описания в локальном файле, затем в порядке описания в общем файле;
- параметры InstalledLocation, DistributiveLocation, CommonInfoBases в порядке описания в общем файле, затем в порядке описания в локальном файле;
- параметры CommonCfgLocation только в локальном файле;
- параметр InstallComponents используется из общего файла (если указано) и замещает значение в локальном файле, если не указано — используется значение из локального файла.
UseHwLicenses - указывает необходимость поиска локального ключа защиты.
Пример параметра: UseHWLicenses=0 - поиск аппаратного ключа не выполняется
Пример конфигурационного файла:
Код
The 1cestart.cfg file contains settings that launchers use (1cestart and 1cv8s), client applications (1cv8 and 1cv8c), and external connections.
- On Windows OS:
- Установка «для компьютера»:
- %APPDATA%\1C\1CEStart ‑ for a specific user. The file changes when configuring the startup window (see article 5.7. Startup window settings).
- %ALLUSERSPROFILE%\Application Data\1C\1CEStart (%ALLUSERSPROFILE%\1C\1CEStart for Windows Vista and later) ‑ for all users of the computer. The file changes only during the installation of the 1C:Enterprise application.
- %APPDATA%\1C\1CEStart ‑ for a specific user. The file changes when configuring the startup window (see article 5.7. Startup window settings).
The file is a text document encoded in UTF-16LE and contains the strings of format. The descriptions of the parameters that can be contained in this file are described below.
ConfigurationTemplatesLocation=C:\Documents and Settings\User\Application Data\1C\1cv8\tmplts
InstallComponents=DESIGNERALLCLIENTS=1 THINCLIENT=1 WEBSERVEREXT=1 SERVER=1 CONFREPOSSERVER=0 CONVERTER77=1 SERVERCLIENT=1 LANGUAGES=RU
This parameter specifies the default version. Multiple lines with this parameter are allowed.
The bitness of the client application to be started can specified in this parameter. The ";" character is used to separate the version and the bitness of the client application. The bitness value is the same as the /AppArch command parameters of the client application starting command-line string.
Values from all configuration files are used.
This line means that the 8.3.3.100 version will be used when attempting to start the infobase with the version 8.3.
This line means that the 8.2.15.315 version will be used when attempting to start the infobase with the version 8.2.15.
This line means that if you try to start any infobase, you will use the client application version 8.3 with a priority of 64-bit version. For a detailed description how to choose bitness of the launched client application, see article 4.3.5. Determining application bitness.
The parameter specifies the path and name of the file with the shared infobases list.
Values from all configuration files are used.
Description of the file format with the shared infobases list, see article 3.3. *.v8i.
The parameter contains a reference to the directory, in which the installation of 1C:Enterprise was performed.
The values from all configuration files are used in the following order:
- From the common configuration file
- From the local configuration file for all users
- From the local configuration file
NOTE. It is not recommended to use this parameter in a common configuration file ( 1cescmn.cfg).
The parameter contains a reference to the directory, in which a new version will be searched for auto-installing.
Values from all configuration files are used.
The directory with distribution packages of new versions will also be searched in the directory where the common configuration file (1cescmn.cfg) is located.
The parameter specifies the path and name of the common configuration file. Multiple lines with this parameter are allowed.
Values from all configuration files are used.
NOTE. It is not recommended to use this parameter in a common configuration file (1cescmn.cfg).
The local configuration file and the local configuration file for all users (1cestart.cfg) contains a list of installed components.
The common configuration file (1cescmn.cfg) contains a list of components to be installed (generated by the system administrator).
The parameter value from one configuration file is used according to the following priority:
- Local configuration file for all users
- Local configuration file
- Common configuration file
The parameter contains a string of components to be installed, separated by a space:
The following components are available:
- ‑ all clients and Designer.
- ‑ thin client for client/server mode operation.
- ‑ thin client with the ability to operate with file infobases.
- ‑ 1C:Enterprise server If Setup starts from a launcher, the server will be installed as an application.
- ‑ extension components for web server.
- ‑ 1C:Enterprise configuration repository server.
- ‑ components for administrating 1C:Enterprise servers cluster.
- ‑ converter of infobases from 1C:Enterprise version 7.7.
- ‑ list of installation interface languages. If multiple languages are specified, they are listed separated by “,”. For a list of localization language codes, see article 2.3.2.4. Selecting default interface language.
NOTE. The language with the code will be installed even if it is not specified in the parameter or the parameter is not specified.
InstallComponents=DESIGNERALLCLIENTS=0 THINCLIENT=1 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=1 LANGUAGES=RU,EN
This parameter specifies the path to the configuration templates directory. It may contain more than one record.
Values from all configuration files are used.
Параметр управляет поиском ключа защиты (как локального, так и доступного по сети) при запуске «1С:Предприятия»:
- ‑ the protection key is being searched (the default value);
- ‑ the protection key is not being searched.
The parameter value from one configuration file is used according to the following priority:
- Local configuration file
- Local configuration file for all users
- Common configuration file
This parameter allows to disable the search for a security key when obtaining client licenses is implemented using the Web server extension, the 1C:Enterprise server, or in the case of the base version.
The value of the parameter can be changed by the application in the following cases:
- If the search for the security key is enabled, the client application starts analyzing the security key search time. If the security key was not found, the start was successful and the search time exceeded 3 seconds, the user is prompted to disable the search for the security key to speed up subsequent starts. If the user agrees, the parameter is written to the 1cestart.cfg file of that user.
- If the search for the security key is disabled and at startup it is detected that the license is not obtained from the 1C:Enterprise server or from the Web server extension, the user is prompted to enable the search for the security key. If the user agrees, the parameter is written to the 1cestart.cfg file of that user, and the client application restarts.
If an external connection is started, an attempt is made to parse the parameter from the 1cestart.cfg file located in the user profile, on behalf of which the external connection is started. If the user does not have a profile (for example, a LocalSystem user in Windows), the search for the key is always performed.
URL of the Internet service, which provides a list of shared infobases and distribution package of the client application.
Для запроса с помощью Web-сервиса адрес описания (в формате WSDL) формируется следующим образом: параметра InternetService>//?wsdl.
URL of the Internet service, which provides a shared infobases list.
Для запроса с помощью Web-сервиса адрес описания (в формате WSDL) формируется следующим образом: параметра WebCommonInfoBases>//?wsdl.
If both the parameter and the parameter are specified, the address specified in the parameter is used first, and in case of failure ‑ the address specified in the parameter.
The URL of the Internet service that provides the distribution package of the client application.
Для запроса с помощью Web-сервиса адрес описания (в формате WSDL) формируется следующим образом: параметра WebDistributiveLocation>//?wsdl.
If both the parameter and the parameter are specified, the address specified in the parameter is used first, and in case of failure ‑ the address specified in the parameter.
Specifies the need to automatically install the new version of 1C:Enterprise:
- ‑ disable the automatic installation of the new version;
- ‑ enable the automatic installation of the new version (default value).
The parameter value from one configuration file is used according to the following priority:
- Local configuration file
- Local configuration file for all users
- Common configuration file
If no version is installed on the local computer that is required by the server in the client/server mode or is explicitly specified for the infobase, the value of the parameter (from the configuration files or command line) is ignored and an attempt is made to install the new version.
1CESCmn.cfg - используется обычно при административной установке 1С с общих ресурсов (задает параметры баз и где брать дистрибутив), и не рекомендован для использования как поднастройка пользовательского списка (хотя ниже приведен пример, как можно для пользовательской поднастройки использовать и его).
Для "локальной" настройки списка используется 1CEStart.cfg , который помещается в "%Users%\пользователь1С\AppData\Roaming\1C\1CEStart\".
Чтобы система автоматически "видела" эти конфигурационные файлы, важно не только название файла - но и его размещение.
В данных файлах можно задать различные настройки, но остановимся только на самых необходимых, и вкратце опишу различные варианты взаимодействия и результаты того или иного способа задания списка баз вплоть до мельчайших нюансов, появляющихся при различных вариантах настройки.
Также в конце приведены примеры задач и варианты настроек, с указанием файлов (какие и куда), параметров в конфигурационных файлах и их значений.Варианты с работой 1CEStart.cfg:
- если файлов 1CEStart.cfg и ibases.v8i нет - новый 1CEStart.cfg не создается, а ibases.v8i - будет создан после запуска 1C "Открыть список баз".
- если нет ibases.v8i, а 1CEStart.cfg (с прописанным местоположением дополнительного списка баз) есть - создается пустой
ibases.v8i, а содержимое 1CEStart.cfg приводится к исходному состоянию (без каких-либо ссылок на дополнительные списки баз).
- если есть пустой ibases.v8i, есть 1CEStart.cfg (со списком баз) - список по ссылке из 1CEStart.cfg добавится в ibases.v8i, и там будет сохранен.
Hюанс 1: если одна и та же база присутствует как в списке ibases.v8i, так и в списке, указанном в файле 1CEStart.cfg (или в
списке файла 1CESCmn.cfg), то даже если они различаются настройками - изменения настроек в ibases.v8i для этой базы не
будет; будет добавляться только совершенно новая база. В дальнейшем приоритет настроек будет за списком баз, указанном в
файле 1CEStart.cfg, и настройки одной и той же базы, указанной в разных списках, будут браться из списка 1CEStart.cfg.
Нюанс 2: при варианте, когда добавляемая база есть как в списке файла 1CEStart.cfg, так и в списке файла 1CESCmn.cfg, то
приоритет настроек опять же за списком 1CEStart.cfg - т.о., он первичен по отношению к остальным.
Если же файл 1CEStart.cfg (а параметр "CommonInfoBases=" с непосредственным указанием на другой список "*.v8i" в этом файле, например, будет отсутствовать) указывает на конфигурационный файл 1CESCmn.cfg, а тот, уже в свою очередь, указывает на список добавляемых баз, то приоритет (между умолчательным ibases.v8i и списком по 1CESCmn.cfg) будет за списком баз из файла 1CESCmn.cfg.
Примечание: базы сравниваются между собой по ID.
- если есть ibases.v8i (с каким-либо списком), есть 1CEStart.cfg (с другим списком баз), то список из 1CEStart.cfg также добавится к списку ibases.v8i (аналогично и с такими же нюансами, как и в предыдущем случае).
Нюанс: однако настройки конфигурационных файлов запуска версии платформы (version=) игнорируются, если запускать
непосредственно файл *.v8i с ярлыка:
- если в списке будет одна база - то будет попытка её запуска на платформе с максимальным релизом;
- если несколько баз - будет предоставлен выбор баз, однако запуск будет все так же на платформе с максимальным релизом.Параметр 1CEStart.cfg указания местоположения файла конфигурации 1CESCmn.cfg (запрещен для выставления в самом
1CESCmn.cfg):
CommonCfgLocation=\\1Cshara\1CESCmn.cfg
Примечание: можно указывать вообще любой файл - с любым именем и расширением, главное - чтобы он был текстовый и в
кодировке UTF-8. Исключение - если нужна загрузка файла конфигурации, то в "%Users%\пользователь1С\AppData\Roaming\1C\1CEStart" должен быть "1CEStart.cfg".
Параметр указания списка загружаемых баз с настройками загрузки (одинаков для 1CEStart.cfg и 1CESCmn.cfg):
CommonInfoBases=\\1Cshara\ibcommon.v8i
Пример: "CommonInfoBases=ibcommon.v8i" - файл списка баз указан без пути, должен быть непосредственно в самой папке конфигурационного файла.
Примечание: аналогично именам конфигурационных файлов, можно указывать вообще любой файл - с любым именем и расширением, главное - чтобы он был текстовый и в кодировке UTF-8.
Исключение - опять же, если нужна только пользовательская загрузка списка баз по умолчанию, то в "%Users%\пользователь1С\AppData\Roaming\1C\1CEStart" должен быть "ibases.v8i".
Для простоты приняты такие названия:
1CEStart.cfg - конфигурационный файл на локальной машине в папке пользователя "%Users%\пользователь1С\AppData\Roaming\1C\1CEStart\", может содержать местоположение 1CESCmn.cfg и/или местоположение дополнительного списка с настройками баз ibases.v8i;
ibases.v8i - список баз и настроек к ним на локальной машине (если расположен в "%Users%\пользователь1С\AppData\Roaming\1C\1CEStart" - то при отсутствии здесь же файла "1CEStart.cfg" данный список берется по умолчанию);
1CESCmn.cfg - конфигурационный файл со ссылкой на общий список баз, может лежать в любом доступном для всех месте сети;
ibcommon.v8i - дополнительный/общий список баз и настроек к ним.Вариант 2. В "%Users%\пользователь1С\AppData\Roaming\1C\1CEStart\" помещаем 1CEStart.cfg, в нем сразу даем указание на сетевой список баз и настроек к ним (ibcommon.v8i).
В этом же каталоге должен быть обязательно хотя бы пустой "ibases.v8" (куда потом будет скопирован список из
"ibcommon.v8i"), иначе параметры в 1CEStart.cfg обнулятся.Параметр в 1CEStart.cfg:
CommonInfoBases=\\SERVER\1Cshara\ibcommon.v8i
В "ibcommon.v8i" в параметре "version %ProgramFilesDir%\1cv82\common\1cestart.exe").Файлы конфигурации можно распространять по компьютерам различными способами:
- вручную
- через домен
- через SMS-сервер
- скриптом VBS, WHS и т.д.Самый наглядный - ручной способ (может быть использован также и в задаче 2):
Каждому пользователю в "%Users%\пользователь1С\AppData\Roaming\1C\1CEStart\" раскопировать заранее сформированный список баз с настройками "ibases.v8".Вариант 4. Можно сформировать общий файл со списком и настройками ibcommon.v8i, положить его в сетевой доступ, и дать всем
пользователям ярлык и права на его запуск.
Поместить ярлык в "%Users%\ AllUser\"Задача 2:
Нужно дать одним пользователям - один список, другим - другой список баз.
Решение:
Вариант 1. Когда списки дополняют друг друга (один, более полный, включает в себя менее полный).
Для пользователей, у которых список баз урезан - только урезанный список "ibases.v8" в "%Users%\\AppData\Roaming\1C\1CEStart\".
Для пользователей, у который более полный список - в "%Users%\пользователь1С\AppData\Roaming\1C\1CEStart\" помещаем
урезанный список "ibases.v8" и файл "1CEStart.cfg", в файле конфигурации даем указание на список дополнительных баз
"ibases(доп).v8i". В результате получим расширенный список баз.Параметр в 1CEStart.cfg:
CommonInfoBases=%Users%\пользователь1С\AppData\Roaming\Roaming\1C\ibases(доп).v8i
В "*.v8i" в параметре "version %ProgramFilesDir%\1cv82\common\1cestart.exe").То же самое по сети:
Для пользователей, у которых список баз урезан - в "%Users%\пользователь1С\AppData\Roaming\1C\1CEStart\" только урезанный
список "ibases.v8".
Для пользователей, у который более полный список - в "%Users%\user\AppData\Roaming\1C\1CEStart\" помещаем урезанный список "ibases.v8" и файл "1CEStart.cfg", в файле конфигурации даем указание на список дополнительных баз "ibcommon(доп).v8i". В результате получим расширенный список баз:
"CommonInfoBases=\\SERVER\1Cshara\ibcommon(доп).v8i"
Аналогично - у разных пользователей сразу указать через "1CEStart.cfg" каждому свой сетевой список баз (одним - "\\SERVER
\1Cshara\ibcommon.v8i", другим - "\\SERVER\1Cshara\ibcommon(доп).v8i".Вариант 2. Когда списки разные (один не включает полностью другой).
Каждому пользователю - свой список баз "ibases.v8" в "%Users%\пользователь1С\AppData\Roaming\1C\1CEStart\", либо - если по
сети, то указание в файле конфигурации "1CEStart.cfg" ("%Users%\пользователь1С\AppData\Roaming\1C\1CEStart\") своего
расшаренного списка баз: у одних параметр будет "CommonInfoBases=\\SERVER\1Cshara\ibcommon.v8i", у других -
"CommonInfoBases=\\SERVER\1Cshara\ibcommon(доп).v8i".Update:
Если создание конфигурационного файла в формате UTF-8 вызывает сложности, то вот простейший рецепт:
заходите в: "%ProgramFilesDir%\1cv82\conf\"), и копируете оттуда файл conf.cfg (только не удалите его случайно :), хотя настроек там по умолчанию и минимум), после того, как скопировали - удалите в копии ключи исходного файла (например, параметр "SystemLanguage=RU"), переименуйте как вам нужно (или дайте имя согласно стандарту 1С), и все, Ваш новый конфигурационный файл к использованию готов!Произвольная таблица (регистр, документ, справочник) в произвольной базе данных 1С, 100 млн строк, 60 Гб места на жестких дисках.
Требуется:
1. Добавить 1 произвольный реквизит (измерение).
2. Добавить индекс по уже существующему реквизиту (измерению).
3. Удалить 1 или несколько существующих реквизитов (измерений).
В режиме обычного обновления платформа по каждому из этих пунктов будет действовать следующим образом:
- создание копии исходной таблицы с новой структурой колонок;
- select из старой таблицы insert в новую;
- переименование новой таблицы, truncate старой таблицы.
И все это в транзакции.
Понятно, что для таких действий со 100 млн строк потребуется безумно много времени и весьма немало места.
Наш любимый вендор 1С наконец-таки пошел навстречу крупным компаниям, использующим платформу для промышленных решений и серьезной автоматизации. Начиная с версии 8.3.11 появился новый механизм реструктуризации, более "интеллектуальный", чем описанный выше.
Как он отработает?
1. Для любой таблицы будет выполнена инструкция alter table. Выполняется мгновенно. Без копирования строк из старой таблицы в новую. Будет добавлена колонка в таблицу БД с указанным Вами типом. Если тип, к примеру, ссылочный - значение колонки во всех строках будет вида "ПустаяСсылка" (16-ричное число 0x00000000000000000000000000000000).
2. Для добавления индекса сразу будет запущена инструкция create index. Без копирования строк из старой таблицы в новую. Если индексов несколько - команды create выполняются параллельно. На таблице 100 млн строк индексы по 3 реквизитам добавились за 30 минут (реальный живой тест не на самом мощном ПК с обычным жестким диском, не SSD).
3. В случае с реквизитом будет также выполнена инструкция alter. А вот в случае с удалением измерения из регистра накопления (например) - все несколько сложнее. Платформе придется выполнить "свертку" (group by) по новому составу измерений и записать новые данные в новую таблицу. Также это вызовет и перезапись таблицы итогов.
Таким образом, за счет устранения копирования строк из старой таблицы в новую достигнут существенный прирост скорости обновления больших таблиц.
1. Таблица табличной части документа, 80 млн строк, добавлены индексы по 3-м реквизитам ТЧ. Отработало за 35 минут.
2. Таблица периодического регистра сведений (ЦеныНоменклатуры), у 3-х измерений установлено свойство "ведущее". 100 млн. строк. Индексы построились за 1 час 20 минут.
При всех операциях лог-файл "распухал" вполне прогнозируемо относительно исходного размера таблицы в мегабайтах.
Как запустить обновление в новом режиме?
2. На сервере БД 1С, для службы агента sql обязательно должны быть разрешены подключения по TCP/IP (настраивается в диспетчере конфигурации SQL). Драйвер JDBC использует подключение tcp/ip для выполнения запросов t-sql.
3.1 Пакетный запуск
Текст скрипта для PowerShell (файлы .ps1)
Start-Sleep -Seconds 3
Get-WMIObject Win32_Process|where|%Start-Sleep -Seconds 1
Start-Process -FilePath "C:\Program Files (x86)\1cv8\8.3.12.1529\bin\1cv8.exe" -ArgumentList " CONFIG /S localhost\bd_test /N UpdateRobot /P 123456 /UC 123456789 /UpdateDBCfg -Server -v2 "В БД 1С должен быть создан пользователь UpdateRobot, с одной единственной ролью, с одним единственным правом доступа "Обновление конфигурации базы данных". Все остальные права доступа (администрирование, администрирование данных) - не нужны.
В таком режиме ход обновления можно отслеживать только через консоль администрирования кластера 1С и с помощью инструментов сервера БД (MS SQL Studio).
3.2 Настройка файла conf
Смотрим, что написано в файле conf
C:\Program Files (x86)\1cv8\8.3.12.1529\bin\conf
Ка правило, путь в нем указан так: ConfLocation=C:\Program Files (x86)\1cv8\conf
Правим указанный файл так, чтобы он содержал строку: UpdateDBCfg=v2
Далее, чтобы обновиться в режиме v2:
Конфигуратор - конфигурация БД - обновить конфигурацию БД на сервере.
Тесты проводились: платформа 8.3.12.1529 (клиент-сервер, 32 бит), сервер БД MS SQL 2012.
Буквально недавно в нашей организации таким образом было успешно обновлено 14 баз данных 1С размером от 500 Гб до 1 Тб.
ВАЖНО (выдержка с ИТС):
"2-я версия механизма реструктуризации работает только для клиент-серверного варианта работы информационной базы в том случае, если в качестве СУБД используется Microsoft SQL Server или PostgreSQL. Если планируется использование 2-й версии механизма реструктуризации совместно с СУБД Microsoft SQL Server, то сервер «1С:Предприятия» для соединения с СУБД должен использовать сетевой протокол TCP/IP (в терминах СУБД). Работа 2-й версии механизма реструктуризации не поддерживается в том случае, если сервер «1С:Предприятия» подключается к СУБД Microsoft SQL Server с использованием сетевых протоколов Разделяемая память или Именованные каналы."
UPD 14.06.2019
ВАЖНО: Если обновление по v2 падает с ошибкой - одна из причин может быть в том, что в вашей БД есть индексы, отличные от стандартных платформенных (добавленные вручную) - их необходимо физически удалить (именно удалить, а не отключить) перед запуском обновления.
UPD 10.09.2019
Если обновление v2 падает с ошибкой вида:
При работе механизма реструктуризации второй версии возникла ошибка. Код возврата: 1. Операция: prepare.
одна из возможных причин может быть следующей:
- вы добавили реквизит в документ/справочник/регистр и после добавления отсортировали список реквизитов по имени/синониму;
В этом случае java падает в зацикливание. Решение: сначала просто добавить реквизит, выполнить реструктуризацию по v2, затем уже отсортировать реквизиты и выполнить обновление по v1.
UPD 13.04.2022
На свежих релизах платформы (начиная с какой версии - не подскажу, не проверял, но точно старше 8.3.12) для включения настройки обновления v2 нужно редактировать "клиентский" conf.cfg, то есть файл на ПК, где физически открыт конфигуратор.
Специальные предложения
это к последнему апдейту
ВАЖНО: Если обновление по v2 падает с ошибкой - одна из причин может быть в том, что в вашей БД есть индексы, отличные от стандартных платформенных (добавленные вручную) - их необходимо физически удалить (именно удалить, а не отключить) перед запуском обновления.
(1) Ирония в том, что в старом механизме реструктуризации указание MAXDOP=0 используется по умолчанию, она добавлена в качестве опции в запросе на создание индекса.
А вот в новом механизме, который описан в данной статье, разработчики почему-то забыли эту опцию включить в запрос и если в настройках сервера MAXDOP равен 1, то реструктуризация будет медленнее чем хотелось бы . Возможно следует в статье 4-м пунктом добавить, что включение на сервере MAXDOP=0 на время реструктуризации, дополнительно ускорит этот процесс.Двойственные чувства.
С одной стороны слава тебе Господи, наконец-то 1С сподобилась взяться за то, что куча народа ждало еще со времён 7.7. С другой стороны тут и Java, тут и Powershell… А сплясать в водолазном костюме в гамаке не надо?Somebody1; Smallrat; user790708; starik-2005; NoRazum; TeMochkiN; user774630; Glebis; Kinestetik; VitusBering; Antonov.AV; blackjack666; CodeNull; Brawler; Krio2; insurgut; manlak; memb3r; babys; sm.artem; Silenser; monkbest; Yakud3a; alest; Gang031; o.nikolaev; Ta_Da; djam_arttek; comol; Boulala; roman77; ilialin; zqzq; user747571; frkbvfnjh; LavinVladik; DrAku1a; slawanix; + 38 – Ответить
(4) аналогичные чувства. только обрадоваться хотел, но остался вопрос, почему нельзя сделать это всё прямо из платформы, по кнопке «сделать всё хорошо»?
(4) Java - это отголоски наработок по платформе 1C 8.4. Развитие этой версии идет медленно и новостей давно не слышно, но ее наработки постепенно появляются в 8.3. На Java никто писать не заставляет, а представить машину без JRE сейчас сложно. И судя по всему с Java придется дружить всё больше - EDT, сервер взаимодействия и т.д.
Powershell для примера же приведен. Там кроме команды запуска 1С с параметрами "UpdateDBCfg -Server -v2" и нет ничего, одна консольная команда. Не внешнюю же обработку для выполнения одной консольной команды писать.
представить машину с JRE при нормальном админе сейчас сложно. Я про Win конечно.
Просто Java программистов "как грязи" и 1С решили подбирать весь мусор и писать на том подо что есть программисты. На Java не пишут системное ПО нормальные люди конечно, просто C++ ника нормального попробуй найди
(21) я на java драйвера для фискальных регистраторов пишу, очень удобно, т.к. один код работает под виндой, линуксом и андроидом. Что я делаю не так? С++ я тоже умею.
(32) библиотеки работы с com/usb готовые, драйвера мои что-то типа.
@Override
public ByteBuffer getCommand() <
ByteBuffer data = ByteBuffer.allocate(12 + cashier.length() + cashierFiscalId.length());
data.order(ByteOrder.LITTLE_ENDIAN);
data.putShort((short) 2); // отчет об открытии смены
data.putShort((short) (4 + cashier.length() + 4 + cashierFiscalId.length()));
data.putShort((short) 1021);
data.putShort((short) cashier.length());
data.put(cashier.getBytes(Charset.forName("IBM866")));
data.putShort((short) 1203);
data.putShort((short) cashierFiscalId.length());
data.put(cashierFiscalId.getBytes(Charset.forName("IBM866")));setData(data);
return super.getCommand();
>(21) Ну при всей моей нелюбви к Джаве, я бы все-таки не стал называть ее мусором :) Тот же Apache Kafka на ней написан и шустр до безобразия.
(7)
Вот такое у меня сейчас. Ковыряемся. Ради спортивного интереса хочу докопаться до причин.
Да что то очень похожее.
Причем все базы кроме нужной реструктурировались новым методом нормально.
Но там было не к спеху, и я просто сделал по старинке.
Изменений очень много было, может в этом была проблема?В этой статье выражено личное мнение автора, его видение мира, его путь, и это все не претендует на абсолютную верность и объективность. Автор не несет никакой ответственности за последствия использования данной информации, он только надеется что эта информация поможет сделать кому-то жизнь проще.
Предисловие
Сначала я просто хотел написать небольшую статью о том, как мы разносили базы по службам, но в ходе углубления в этот процесс мы добавляли всякие разные штуки (мониторинг служб, потом мониторинг пользователей внутри 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
- Нужен всего один физический ключ на сервер — все службы будут активироваться им
После проведения всех мероприятий в итоге мы пришли к:
- Базы можно спокойно перезагружать, не трогая другие базы
- Всегда можно найти "героя" — базу, которая съедает все ресурсы
- Любые работы с базой касаются только одной конкретной базы
В следующих статьях я планирую рассказать (если эта статья народу зайдет):
Читайте также:
- Установка «для компьютера»: