1с подключение к хранилищу. Работа с хранилищем конфигурации удаленно

Нояб 08, 2017 32638

Может возникнуть ситуация, когда 1С 8.3 не запускается и появляется ошибка - «Неверный формат хранилища данных» с указанием пути к файлу file c users config runtimecachestorage. Но, не стоит паниковать, ошибка неверного формата данных хранилища не такая редкая как может показаться на первый взгляд. Поэтому в данной статье давайте узнаем как исправить ошибку в 1С 8.3.

Причины появление ошибки "Неверный формат хранилища данных" в 1С 8.3

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

Что такое кэш 1С 8.3?

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

Как очистить 1С 8.3?

Файлы кэша хранятся в папке AppData, в профиле пользователя, под которым запускается программа 1С 8.3. Проще всего её открыть через команду Пуск \ Выполнить \ %userprofile%\AppData

Здесь нам нужно удалить все содержимое следующих папок:

AppData\Local\1C\

AppData\Roaming\1C\1cv8\

AppData\Roaming\1C\1cv82\

После выполнения операций удаления вновь запускам программу 1С Предприятие 8.3 и радуемся жизни.

Очистка кэша 1С может помочь при появлении различных проблем с запуском 1С Предприятия 8.3, даже когда при запуске, она сразу закрывается. Так что, очистка кэша может еще ни раз пригодиться на практике.

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

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

Для решения этой задачи нам понадобиться:

1. хороший интернет на всех компьютерах, где идет разработка
2. компьютер, который виден из вне по белому IP

Как правило компьютер с белым IP – сервер в офисе. Начинать разворачивание хранилища конфигурации надо с его настройки. Первым делом поставим на него платформу 1С. При установке нужно указать наличие компоненты Сервер хранилища конфигурации. Обратите внимание на релиз платформы, дело в том, что при данной методике работы нужна одинаковая версия платформы, на всех компьютерах. И в вашем офисе, и дома, и у заказчика.

После установки, сам сервер хранилища в службах не появиться. Его надо зарегистрировать. Файл службы называется crserver.exe и лежит в каталоге bin .


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

Теперь регистрируем службу сервера хранилищ. Для этого жмем «пуск», «выполнить», набираем «cmd», жмем Enter и в командной строке пишем:
"C:\Program Files (x86)\1cv8\8.3.4.408\bin\crserver.exe" -instsrvc -d "C:\Обмен\Хранилища"

Если никаких сообщений об ошибке не вылезло, то в списке служб должна появится наша. В этом надо убедиться визуально.

Тут надо убедиться, что служба запущена и что у неё стоит автозапуск. Поскольку при регистрации мы не указали пользователя, то запускается она под системной учетной записью. Это удобно, но возможно не безопасно, при необходимости исправьте это в свойствах службы.
Теперь нам надо создать хранилище. Эта процедура долгая, поэтому рекомендую делать это в локальной сети, где находится наш сервер. Создаем, его как обычно, только в строке с путём указываем не сетевую папку, а путь в следующем формате:
tcp://Server1C/ХранилищеПроекта1\

Где Server1C – имя компьютера в локальной сети. Можно указать IP адрес этого компьютера. ХранилищеПроекта1 – имя каталога для нового хранилища. После создания на сервере хранилище будет лежать в папке C:\Обмен\Хранилища\ХранилищеПроекта1 .

Хоть мы и используем сервер хранилищ, но по своей сути это та же файловая база формата 1CD и к ней можно подключиться старым способом, указав в строке подключения сетевой каталог:
\\Server1C\Обмен\Хранилища\ХранилищеПроекта1

Тут есть несколько нюансов:
1. При работе по tcp с файлом базы работает процесс запущенный относительно файла локально, что обеспечивает некую надежность. Ранее я писал, что даже из-за использования wi-fi база хранилища может посыпаться, печальный опыт был. В этом случае система становится более устойчива к сбоям в сети.
2. При работе по tcp нужны одинаковые версии релизов платформы у всех участников, при файловом общении – нет.
3. Общая папка – папка с полным доступом для всех участников. Люди запросто могут случайно (а может и не случайно) накидать туда мусора, стереть пару «не нужных» файлов, в общем нагадить.

Исходя из этих нюансов, возможно есть смысл даже внутри локальной сети в некоторых случаях разворачивать сервер хранилища.
Теперь о доступе из вне. Сервер хранилищ работает на порту 1542. Если внешний белый IP адрес указывает непосредственно на Ваш сервер, то нужно позаботиться об открытии этого порта. Если внешний IP указывает на роутер, то надо настроить проброску. В моем случае была проброска, сисадмин выдели свободный порт для этого. У меня строка подключения выглядела так:
tcp://36.21.65.20:1501/ХранилищеПроекта1\

Комфорт работы с таким хранилищем полностью зависит от скорости интернета, поэтому всякие там usb модемы в модульных помещениях (почти всех торговых центрах) – плохая практика. Если в модеме нет стабильного 3G и он постоянно переходит на GPRS, то я бы даже не стал пытаться.

Еще, на последок, расскажу об обновлении платформы. Т.к. свежая 1С 8.3 сейчас выходит часто, то это актуально. Переустанавливать платформу надо везде сразу, это и так ясно. При переустановке на сервере служба автоматом не обновиться. Если делать все по правильному, т.е. зарегистрировать приложение crserver.exe из папки bin со свежим релизом платформы, то т.к. называется служба так же, то старая служба пометится на удаление, потребуется перезагрузка сервера. Можно поступить проще. Заходим в службы, останавливаем сервер хранилищ. Смотрим в свойствах строку запуска и копируем её в буфер обмена. Лезем в редактор реестра (regedit ) и ищем в реестре эту строку. Правим в ней номер релиза (он присутсвует в имени папки). Запускаем службу обратно. Все. Если Вы накосячили, то служба у Вас не запуститься. После запуска зайдите в свойства службы и визуально убедитесь, что она стартанула из папки с новым релизом.

На сегодня все, спасибо за внимание

В данной статье описывается, как установать службу сервера хранилища конфигураций 1С:Предприятия.

Цитата из RTFM

В целом, если надо просто установить службу и, чтобы всё взяло и начало работать, достаточно просто почитать addoc (см ниже).

Для установки сервиса достаточно запустить crserver.exe с параметром -instsrvc и параметрами же указать, где что лежит и так делее. Все тривиально и в мануале описано достаточно подробно.

Для запуска сервера хранилища конфигурации используются следующие ключи командной строки: для операционной системы Windows: crserver.exe -instsrvc -usr <пользователь> -pwd <пароль> -port <порт> -d<каталог> | -rmsrvc | -start | -stop | -srvc -instsrvc - регистрация сервера как сервиса (имя сервиса – 1C:Enterprise 8.1 Configuration Repository Server) -usr - имя пользователя, от имени которого будет зарегистрирован сервис. Этот пользователь должен обладать правом Вход в систему как сервис. Кроме этого он должен обладать правами на чтение бинарного каталога файлов 1С:Предприятия (по умолчанию C:\Program Files\1cv81\bin) и полными правами на корневой каталог хранилища конфигурации (%APPDATA%\1C\1Cv81\ по умолчанию или тот каталог, который указан в параметре -d) -pwd - пароль пользователя, от имени которого будет зарегистрирован сервис -port - рабочий порт сервера хранилища. По умолчанию используется порт 1542 -d - корневой каталог для хранилищ конфигурации. По умолчанию используется каталог %APPDATA%\1C\1Cv81\ -start - запуск сервиса 1C:Enterprise 8.1 Configuration Repository Server -stop - остановка сервиса 1C:Enterprise 8.1 Configuration Repository Server -rmsrvc - удаление регистрации сервера как сервиса -srvc - режим работы сервера в качестве сервиса. Добавляется автоматически в параметры зарегистрированного сервиса. В командной строке запуска не используется.

Как установить два сервера на одной машине

Заморочки начинаются, когда надо установить больше одной службы сервера хранилища. Например - для разных версий платформы или для организации на одном сервере хранилищ для не связанных команд разработчиков. Возможных причин на самом деле море. Суть заморочек в том, что crserver.exe может установаить одну и только дону службу - у него нет параметра командной строки, влияющего на имя службы.

Для управления службами в Windows, начиная с NT4, существует замечательная консольная утилта SC.EXE . По ссылке можно найти исчерпывающий мануал по командам. Единственное, что стоит к этому мануалу добавить – имя параметра включает символ «=» и между этим символом и значением параметра ОБЯЗАТЕЛЬНО должен быть пробел, иначе sc.exe вместо полезной работы просто покажет кратенький мануал к самому себе. Это отмечено в мануале, но в самом конце, а до конца обычно дочитывают самые стойкие и уже от отчаяния, когда 100500-й раз не получилось то, что в мануале описано буква-в-букву.

Итак, предположим, нам нужно развернуть две службы сервера. Для этого нам нужно определиться со следующими параметрами:

    Имена служб - строки, которые отображаются в колонке «Имя» в диспетчере служб. Помимо отображения по имени производятся все манипуляции со службой через sc.exe по этому рекомендуется с имененм не мудрить и придумывать его максимально кратким и емким безо всяких спецсимволов

    В каких каталогах будут хранить свои данные службы. Теоретически можно каталог не указывать и тогда обе службы будут «раздавать» один и тот же каталог и к каждому хранилищу можно будет обратиться из обеих служб одновременно.

    На каких портах будут ожидать соединения обе службы. Службе сервера хранилища нужен один основной порт и диапазон из 31-го порта для работы. По умолчанию эти значения равны 1542 и 1560:1591. У разных экземпляров службы эти значения обязательно должны быть разные иначе работать будет только один экзепляр - тот, который успел запуститься раньше и открыть сокет на основаном порту.

Для примера предположим, что:

    имена наших двух служб - 1ccrrep-release и 1ccrrep-trunk

    каталоги (соответственно) - C:\1crepository\release и C:\1crepository\trunk

    и порт+диапазон для каждой службы - 1642+1660:1691 и 1742+1760:1791

Командная строка для создания каждой из этих служб будет выглядеть вот так:

C:\>sc create "1CCRREP-RELEASE" binPath= "C:\Progra~2\1cv82\8.2.16.368\bin\crserver.exe" -srvc -port 1642 -range 1660:1691 -d C:\1crepository\release" start= auto displayname= "Сервер хранилища 1С (release)" C:\>sc create "1CCRREP-TRUNK" binPath= "C:\Progra~2\1cv82\8.2.16.368\bin\crserver.exe" -srvc -port 1742 -range 1760:1791 -d C:\1crepository\trunk" start= auto displayname= "Сервер хранилища 1С (trunk)"

cmd.exe, естественно, следует запускать от имени администратора и данные команды предполагают развертывание сервера хранилища 8.2.16.368. Progra~2 - это «Programm files (x86)».

Также следует отметить, что если используется IIS, то обращение к серверам хранилищ нужно реализовать через отдельные веб-приложения, причем у них должны быть указаны разные пулы приложений (например, DefaulAppPool и DefaulAppPool2). Если этого не сделать, то одновременно будет работать только один сервер хранилищ (к которому было первое обращение), а второй будет выдавать ошибку.

Что дает и чего не дает сервер хранилища 1С

Для того, чтобы внести чуть больше полноты в картину данной статьи, следует перечислить весь страх и ненависть все положительные и отрицательные стороны использования серверного хранилища.

Плюсы серверного хранилища

Порядок следования пунктов соответствует порядку, в котором они пришли в голову автору данной статьи, значимость плюсов каждый читатель определит для себя сам:

    Изоляция данных от интерфейса. Разработчики «видят» только службу – ни с файлом хранилища, ни с его каталогом, они не могут сделать ни чего, кроме того, что им положено в соответствии с правами в хранилище. В файловой версии хранилища права на шару одни, а на хранилище другие: например, у пользователя, который просто есть в хранилище, но даже захватить ни чего прав не имеет, все равно должен быть полный доступ в шару, то есть он может и всякого мусора рядом с 1cd навалить, и файл повредить, и скопировать все хранилище куда угодно. Кроме того это упрощает подключение к хранилищу всякого рода удаленных разработчиков – для работы с хранилищем им достаточно открыть несколько tcp портов и можно не пускать их в свою внутреннюю сеть, а служба crserver уже не позволит им в 1cv8ddb.1CD сделать что-либо, кроме того, что можно сделать конфигуратором. Максимум - всяких левых хранлищ могут насоздавать в каталогах рядом, но это горе не большой беды, как говорится. Кроме того служба сервера гарантирует, что к хранилищу невозможно подключиться ни каким релизом платформы, отличным от релиза самой службы сервера. То есть ни кто злонамеренно или от разгильдяйства боевое хранилище случайно не сконвертирует под какой-нибудь тестовый новый релиз 8.3, 8.4 или даже 9.0 - crserver просто не пустит неправославных клиентов.

    Независимость от фактического места хранения файла 1cv8ddb.1CD - можно перемещать файл и менять внутреннюю структуру каталогов и при этом у пользователей хранилища строка подключения не изменится – знай только меняй параметр -d у службы crserver. В принципе у файлового хранилища то же самое возможно, но в случае, когда хранилищ много от разных ИС, может быть так, что и не всегда получится. Или, если у всех хранилищ изначально один каталог, то разнести по разным без изменения строки подключения в файловом варианте уже не возможно.

    Использование серверной мощи для операций с хранилищем. Все операции по чтению и записи в 1cv8ddb.1CD производятся службой crserver и процессором той машины, на которой она работает. В файловом варианте все операции делает процессор клиента.

Нюанс в 8.2

В 8.2.* crserver является однопроцессорным приложением. Отсюда вытекает ряд неприятных минусов, о которых ниже. В 8.2 минусы серверного хранилища по сравнению с файловым целиком и полностью произрастают из последнего «плюса». Служба crserver сама ни чего полезного не делает – она всего лишь ретранслятор запросов от клиентов. Именно по этому версия crserver должна в точности совпадать с версией клиента. И именно по этому можно расшарить каталог службы и обращаться к хранилищу и как к файловому, и как к серверному. Более того, можно даже развернуть две службы crserver, натравить их на один и тот же каталог и из двух параллельных служб всё – захваты, помещение, чтение и так далее – будет работать так же, как с одной службой или без служб вообще. Итак, вот они, «минусы»:

    Однопроцессорность crserver"а. Служба crserver умеет работать только с одним процессором, по этому она, конечно, будет использовать мощу сервера, но только один процессор. Если пользователей много, то она выстроит их в очередь к ресурсам одного процессора сервера вне зависимости от того, сколько еще процессоров на сервере спят.

    Немногопользовательскость или «хайлоад? не, не слышал». Не смотря на то, что само по себе хранилище – это средство командной разработки, сервер хранилища не является таким средством. Это не более, чем средство сокрытия физического местарасположения файла 1cv8ddb.1CD от пользователей. Если имеется несколько раных хранилищ и количество разработчиков больше 10, то для нормальной работы на каждое хранилище нужна отдельная своя служба crserver. Потому, что служба ограничивается вычислительными ресурсами одного процессора и еще почему-то, что забито костылями в код этой службы – практический опыт автора статьи перевода некольких хранилищ со 100+ пользователей всего и 30+ параллельных на серверный вариант показал падение производительности на тех хранилищах, которые до этого перевода ни когда не тормозили потому, что маленькие (1cv8ddb.1CD до 500МБ). Потому, что пользователи даже маленьких хранилищ выстраиваются в одну общую очередь к одному процессору в скудном количестве потоков (task manager показывает чудовищное несоответствеи количества живых коннектов к crserver.exe и количества потоков, созданных процессом – на 23 коннекта было создано 7 потоков в ходе наблюдений в боевых условиях, проведенных автором статьи)

Выводы

На пратформе 8.2 служба crserver в виду своей однопроцессорности и эдакой «немного поточности» не является средством коллективной разработки. Она является средством предоставления доступа к хранилищу по набору абстрактных tcp-портов, чтобы не давать доступа клиентам ни к ftp, ни к cifs или smb (вот тебе, удаленный Вася, 32 tcp-порта, развлекайся на все деньги). Для больших команд не имеет смысла использовать серверное хранилище ни зачем, кроме как для предоставления ограниченного доступа удаленным разработчикам. Хотя последние разведданные недвусмысленно иллюстрируют, что лучше об этом даже не думать.

Однако в 8.3 crserver внезапно стал многопроцессорным. Достоверной информацией, с которого именно релиза началось многопроцессорное счасчастье, автор статьи не располагает - поиск в changelog"ах на эту тему результатов не дал но достверно известно и подтверждено экспериментально, что уже на 8.3.4.408 crserver грузит все процессоры, какие есть в системе.

Для групповой разработки конфигурации в системе «1С:Предприятия» 8.3 используется хранилище конфигурации . Доступ разработчиков к хранилищу конфигурации может осуществляться по локальной сети (файлы базы данных располагаются на общем сетевом ресурсе), по протоколу tcp или http . Для последних двух вариантов необходима установка сервера хранилища конфигураций . Сервер хранилища конфигураций в свою очередь представляет собой сетевую службу, по умолчанию «слушающую» порт 1542 и обеспечивающую взаимодействие клиентских приложений (конфигуратора) с базой данных хранилища конфигурации. Одна служба может обслуживать несколько хранилищ конфигураций. Об установке сервера хранилища конфигураций системы «1С:Предприятия» 8.3 (справедливо и для версии 8.2 ) в ОС семейства Windows (в текущем примере — ) и пойдет речь в данной статье.

1. Настройка каталога баз данных хранилища конфигураций

Сервер хранилища конфигураций следует устанавливать на том же компьютере, где будут располагаться файлы баз данных хранилища. Поэтому прежде всего определим центральный каталог сервера, в котором будут храниться файлы всех хранилищ, которых будет обслуживать данный сервер. Пусть в рамках данной статьи это будет каталог C:\1C_BASE\repository\ . Также следует определить учетную запись Windows, из под которой будет происходить запуск соответствующей службы. Можно создать , или использовать существующую учетную запись Windows. В данном примере будем использовать локального пользователя USR1CV8 с паролем UsrPass8 . Необходимо для данного пользователя на центральный каталог сервера хранилища конфигураций.

2. Установка файлов сервера хранилища конфигураций

На момент написания статьи сервер хранилища конфигураций существовал только как 32-разрядное приложение. Поэтому для установки файлов сервера необходим 32-разрядный дистрибутив системы «1С:Предприятия» 8.3 для Windows. Запускаем файл 1CEnterprise 8.msi из дистрибутива поставки 1С. На странице выбора компонент выбираем компоненту «Сервер хранилища конфигураций 1С:Предприятия » (1C:Enterprise configuration repository server), а также запоминаем путь установки компоненты.

3. Регистрация и запуск службы сервера хранилища конфигураций

Программа установки лишь копирует файлы сервера хранилища конфигураций в указанный каталог. Регистрацию соответствующей службы необходимо произвести вручную выполнив команду вида:

Crserver.exe -instsrvc | -rmsrvc -usr <пользователь> -pwd <пароль> -start | -stop -port <порт> -d <каталог>

Параметры запуска сервера хранилища конфигураций crserver.exe сходны с :

Параметры запуска сервера хранилища конфигураций «1С:Предприятия»
Параметр Описание
-port <порт> Рабочий порт сервера хранилища. По умолчанию используется порт 1542 .
-d <каталог> Корневой каталог для хранилищ конфигурации. По умолчанию используется каталог %APPDATA%\1C\1Cv8\ .
-instsrvc Регистрация сервера хранилища как сервиса.
-rmsrvc Удаление регистрации сервера хранилища как сервиса.
-usr <имя>
-pwd <пароль>
Имя пользователя, от имени которого будет зарегистрирован сервис. Этот пользователь должен обладать правом Вход в систему как сервис (Log on as a service). Кроме этого, он должен обладать правами на чтение каталога исполняемых файлов соответствующей версии системы «1С:Предприятие» и полными правами на корневой каталог хранилища конфигурации (каталог %APPDATA%\1C\1Cv8\ или тот каталог, который указан в параметре —d ) и пароль для данного пользователя.
-start Запуск сервиса сервера хранилища.
-stop Остановка сервиса сервера хранилища.

Зарегистрируем новый сервис с помощью программы Windows PowerShell , запустить которую можно выполнив команду powershell (для этого необходимо нажать комбинацию клавиш Win + R, в появившемся окне «Выполнить » (Run) ввести имя команды в поле «Открыть » (Open) и нажать «ОК ») или кликнув по соответствующему ярлыку в панели задач.

В открывшейся консоли Windows PowerShell, для удобства ввода дальнейших команд перейдем в каталог bin каталога с установленными файлами «1С:Предприятия» выполнив команду

Cd "C:\Program Files (x86)\1cv8\8.3.5.1088\bin"

Затем, в рамках данного примера, выполним команду

.\crserver.exe -instsrvc -d C:\1C_BASE\repository -usr .\USR1CV8 -pwd UsrPass8

и запустим службу выполнив

.\crserver.exe -start

Перейдем в оснастку службы (запустить которую можно выполнив команду services.msc ) и убедимся что служба с именем 1C:Enterprise 8 Configuration Repository Server зарегистрирована и запущена.

5. Создание нового хранилища конфигурации

Как я уже говорил ранее, один сервер может обслуживать несколько хранилищ конфигурации. Файлы баз данных каждого из хранилищ должны располагаться в отдельном каталоге центрального каталога сервера хранилища конфигураций. Таким образом для создания нового хранилища, создадим в каталоге C:\1C_BASE\repository\ папку Accounting в которой будет располагаться файлы нового хранилища конфигурации.

Тогда для создания и подключения к данному хранилищу необходимо будет использовать строку tcp://WIN2012/accounting , где WIN2012 — сетевое имя компьютера, на котором установлена служба, либо строку tcp://192.168.0.10/accounting , где 192.168.0.10 , соответственно, IP-адрес данного компьютера. Подробно про создание нового хранилища можно прочитать в статье « ».

К созданному таким образом хранилищу также возможно будет подключаться и в обход сервера, например по пути C:\1C_BASE\repository\Accounting на текущем компьютере или по пути \\WIN2012\repository\Accounting если настроить общий доступ к каталогу C:\1C_BASE\repository на данном сервере.

Помогла ли Вам данная статья?

Случайные статьи

Вверх