Главная » Помощь » Получить один объект из хранилища 1с. Работа с хранилищем конфигурации удаленно. Настройка сервера хранилища конфигураций. Метод работы с хранилищем конфигурации по tcp. Удаленная работа с хранилищем конфигурации

Получить один объект из хранилища 1с. Работа с хранилищем конфигурации удаленно. Настройка сервера хранилища конфигураций. Метод работы с хранилищем конфигурации по tcp. Удаленная работа с хранилищем конфигурации

В данной статье описывается, как установать службу сервера хранилища конфигураций 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 (8.2) — «Неверный формат хранилища данных». Дело в том, что причин может быть множество, соответственно и способов устранения.

Прежде, чем доставать ваш шаманский бубен, попробуйте воспользоваться перечисленными ниже способами исправления ошибки «Неверный формат хранилища данных» для чайников. С большой вероятностью вам поможет хотя бы один из них.

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

Исправление структуры БД

Если очистка кэша не привела к желаемому результату, тогда необходимо произвести тестирование и исправление ошибок.

Если информационная база является клиент – серверной, тогда откройте ее в режиме конфигуратора и в меню «Администрирование» выберите пункт «Тестирование и исправление…».

Для файловой базы воспользуйтесь утилитой ChDBFl.exe, которая является аналогом тестирования и исправления в конфигураторе.

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

Перезапуск сервера 1С

На клиент–серверных базах иногда встречается ошибка такого плана:

Попробуйте остановить сервер 1С:

net stop «1C:Enterprise 8 Server Agent (x64)»

Удалить все файлы с расширением *.dat из папки, на которую ссылается ошибка:

del «C:\Program Files\1cv82\srvinfo\reg_1541\snccntx\*.dat»

Запустить службу заново:

net start «1C:Enterprise 8 Server Agent (x64)»

Перенос данных

Данный способ следует использовать только в самом безвыходном положении. Он не безопасный и возможны потери данных.

Первым делом вам необходимо создать чистую базу с конфигурацией того же релиза с такой же структурой. Далее при помощи стандартной обработки «Выгрузка Загрузка данных XML» перенести все данные в пустую рабочую базу (скачать - для 8.2 или для 1С 8.3 или на ИТС).

Обязательно убедитесь в том, что структура и все реквизиты из «битой» базы есть в чистой!

Восстановление внешних обработок

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

Теперь главное «взять себя в руки» и, ни при каких обстоятельствах не запускать 1С! Если вы всё же запустили, и ниже описанный метод не сработал, то попробуйте найти пользователя, который ранее открывал вашу обработку. В таком случае восстановительные работы будут производиться в его каталоге пользователя.

Ваша обработка должна находиться во временном каталоге TMP с именем подобным маске «v8_*.tmp». При запуске платформы данные файлы удаляются. Если вы все-таки запустили 1С и файлов не обнаружили и не нашли другого пользователя, у которого может быть ваша обработка, воспользуйтесь программой восстановления удаленных файлов с жесткого диска.

Скопируйте все найденные по маске «v8_*.tmp» из папки TMP в безопасное место. Теперь можно запускать 1С. Попробуйте определить, какой файл является именно вашей обработкой по его размеру, и измените его расширение с.tmp на.epf. Если вам сложно определить, какой именно файл является вашим, то переименуйте все и поочередно запускайте их в 1С. Но чаще всего получается найти нужный файл достаточно быстро, особенно если отсортировать его по дате.

Если описанный выше способ вам не помог, то есть еще один. Для этого вы должны примерно помнить содержимое обработки (код) и иметь ее старую версию.

Ищите вашу обработку по текстам модулей. Распакуйте старую версию обработки при помощи утилиты V8Unpack.exe . Скопируйте и замените все необходимые тексты модулей и запакуйте при помощи этой утилиты обратно.

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

Для групповой разработки конфигурации в системе «1С:Предприятия» 8 используется специальный механизм — хранилище конфигурации . Хранилище конфигурации — это файловая база данных, в которую средствами конфигуратора помещается конфигурация, и которая хранит в себе информацию о редактируемых в данный момент объектах, а также историю изменения этих объектов. Доступ разработчиков к хранилищу конфигурации осуществляется либо в рамках локальной сети, либо по удаленному доступу с использованием веб-сервера. Изначально, конфигурация рассматривается как набор объектов, закрытых для изменения. Чтобы произвести изменения в объекте, его следует захватить, а одновременно объект может быть захвачен только одним пользователем. После работы с захваченными объектами, результат их модификации помещается в хранилище, после чего эти объекты становятся доступными всем участникам групповой разработки. Таким образом, осуществляется контроль доступа к одним и тем же объектам конфигурации, а также обеспечивается синхронизация работы группы разработчиков по модификации конфигурации. Ниже подробно рассмотрим процесс создания нового хранилища конфигурации в системе 1С:Предприятие 8.3 (в более старых версиях, 8.2 и 8.1 алгоритм создания хранилища аналогичен).

1. Создание нового хранилища

Для создания нового хранилища конфигурации необходимо запустить 1С:Предприятие в режиме Конфигуратор, подключившись к той информационной базе, конфигурация которой будет неким «фундаментом» — начальной конфигурацией создаваемого хранилища.

Запустив конфигуратор, выбираем в меню пункт «Конфигурация » — «Открыть конфигурацию » или же нажимаем соответствующую иконку на панели действий.

Когда конфигурация загрузится, там же в меню выбираем «Конфигурация » — «Хранилище конфигурации » — «Создать хранилище… »

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

  • Каталог на текущем компьютере, например: C:\1C_BASE\repository\Accounting
  • Сетевой ресурс, например: \\WIN2012\repository\Accounting
  • Адрес хранилища на (если он установлен), например: tcp://WIN2012/accounting

    Tcp://192.168.0.10/accounting

  • Адрес хранилища на сервере хранилищ, например: http://WIN2012R2/repository/repository.1ccr/Accounting

    Https://сайт/repository/repository.1ccr/Accounting

Указав расположение файлов создаваемого хранилища, нажимаем «Далее ».

Далее необходимо указать имя пользователя и пароль администратора хранилища. Чтобы сэкономить время, и сразу подключить данную информационную базу к хранилищу, укажем вместо этого учетные данные того пользователя, под которым будет подключена текущая база данных. А администратора хранилища создадим позднее. Введя имя пользователя и пароль, нажимаем «ОК ».

После чего начнется длительный процесс создания хранилища. Когда он завершится, мастер предложит нам подключиться к созданному хранилищу конфигурации. Нажимаем «Да ».

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

2. Добавление пользователей в хранилище

Теперь добавим нового пользователя хранилища конфигурации. Пусть это будет администратор хранилища, учетные данные которого предлагалось ввести на предыдущем шаге. Для добавления пользователя в хранилище, в конфигураторе выбираем «Конфигурация » — «Администрирование хранилища… »

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

Вводим имя и пароль пользователя и переходим на вкладку «Права », для установки полномочий создаваемого пользователя хранилища.

Здесь, мы можем установить / или снять следующие права пользователей:

  • Административные функции – пользователь имеет права создания, удаления и отключения пользователей, отмены захвата, может изменять режим совместимости хранилища и выполнять процедуру оптимизации.
  • Изменение состава версий – пользователь имеет права выполнения отката и сокращения истории версий.
  • Захват объектов – пользователям с данным правом доступны захват и внесение изменений в конфигурацию хранилища. Если право не установлено, то объекты хранилища можно только просмотреть.

Определив необходимые права пользователя, нажимаем «ОК» .

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

3. Подключение к хранилищу конфигурации

Для подключения новой информационной базы к хранилищу конфигурации, также необходимо запустить конфигуратор для данной базы данных и прежде всего открыть конфигурацию, выбрав в меню «Конфигурация » — «Открыть конфигурацию ».

Затем в этом же меню выбираем «Конфигурация » — «Хранилище конфигурации » — «Подключиться к хранилищу… »

Конфигуратор предупредит, что при подключении текущая конфигурация будет заменена конфигурацией из хранилища. Нажимаем «Да », согласившись и продолжив подключение.

После чего, вводим адрес хранилища, имя и пароль раннее созданного пользователя и нажимаем «ОК » для подключения к хранилищу конфигурации.

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

Рано или поздно каждый разработчик пытается улучшить свою жизнь. Речь идет не о материальной ее составляющей, я про упрощение работы. Чем больше практики работы над реальными проектами, тем больше осознаешь, как делать свою работу эффективней, правильней.

Сегодня я хотел бы поговорить о применении в процессе разработки/доработки прикладных решений хранилища конфигурации. Я не знаю почему многие 1С-разработчики обходят стороной применения возможностей хранилища. Особенно, я не понимаю тех, кто трудится над разработкой одной конфигурации целой командой. Без хранилища конфигурации тут уже (ИМХО) совсем никак. Нет, можно конечно заниматься извращениями вроде копирования одной конфигурации всем разработчикам. Каждый начинает работать и реализовывать свою часть. По окончанию разработки, каждый из девелоперов должен синхронизировать свою конфу с той, что будет поставляться конечному клиенту.

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

Что такое хранилище конфигурации

К счастью, до знакомства с платформой 1С:Предприятие 8 у меня был уже достаточно неплохой опыт разработки на других языках программирования (Delphi, PHP). Поэтому слова типа SVN (Централизованная система управления версиями) для меня не были диковинкой. Кто никогда не сталкивался с SVN, рекомендую почитать соответствующую статью на википедии - http://ru.wikipedia.org/wiki/Subversion . Поверьте, штука классная и она существенно упрощает процесс разработки ПО.

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

В каких случаях тебе может пригодится ХК

Перед тем как перечислить конкретные примеры я хотел бы сразу подвести небольшой итог. Конечно, больше всего ХК будет полезно во время командной разработки. Однако, ни что не мешает тебе использовать его сугубо для себя. Я разрабатываю на платформе «1С:Предприятие» почти пять лет и за эти годы мне неоднократно приходилось сталкиваться с непредвиденными ситуациями, когда применение ХК меня буквально спасало от кошмара любого разработчика - переписыванию ранее написанного кода. Теперь я стараюсь пользоваться услугами хранилища конфигурации для каждого своего проекта. Почему? А хотя бы вот:

1. История хранилища. Пожалуй, это одна из самых важных для меня функций. Во время разработки решения с использованием ХК будет автоматически происходить формирование истории изменений конфигурации. Например, за одну рабочую неделю несколько раз происходило обновление конфигурации. Все эти изменения аккуратно фиксируются, и история пополняется версиями. При желании (или возникновении безвыходной ситуации), ты всегда можешь посмотреть список версий и при необходимости откатиться назад. Например, в понедельник были внесены корректные изменения в конфигурацию, а во вторник новенький разработчик существенно напортачил и запостил свои апгрейды. Результат - конфигурация с бажным кодом.

Можно, конечно, дать юному программисту по шапке и потом пытаться восстановить ручками, а лучше нажать пару кнопок и восстановить предыдущую версию конфы или просто откатить изменения внесенные горе-девелоппером.

2. Отчетность. Ты можешь в любое время скрутить отчет и посмотреть кто и когда (а также, в какие объекты конфигурации) вносил изменения. Это может пригодиться, когда твои коллеги разводят руками и пытаются доказать: “Насяльника, это не мы! Оно само сломалось!”.

3. Удаленная разработка. ХК незаменимо если прикладное решение разрабатывают географически удаленные программисты. Думаю, это пояснять не нужно.

4. Минимизация чрезвычайных ситуаций. Я несколько раз был свидетелем (по “молодости” и сам успел попасться в эту западню), когда у разработчиков ломались винты. Само собой все последние изменения были на тех самых винтах и они безвозвратно улетали в небытие. “А как же бэкапы?” - скажешь ты. Никак! Многие девелоперы не любят этим заморачиваться. Нет, совсем не делают резервных копий только полные экстремалы, но за свою практику я встречал очень мало девелоперов, которые делают бэкапы несколько раз в день. ХК элегантно решает эту проблему. Разработчику по факту требуется нажать всего одну кнопку и все его наработки тут же будут перенесены в хранилище.

5. Разграничение доступа. Ну тут и пояснять особо не надо. ХК позволяет настроить разграничения доступа для разработчиков.

Хранилища бывают разные

Изначально ХК работало только через общий ресурс (в версии 8.. Это было не очень удобно, т.к. при желании организовать доступ к хранилищу извне (например, через Internet) возникал проблемы. Начиная с версии 8.1.11, появилась возможность развертывать сетевые хранилища. С ними можно работать как по протоколу tcp/ip, так и по http. Последний будет весьма кстати при организации доступа к хранилищу через Интернет.


Рисунок 1. Схема устройства хранилища

Пробуем развернуть ХК

Итак, предположим, что ты заинтересовался идеей использования ХК и решил попробовать его развернуть для своего проекта. Ты уже знаешь, что хранилище может работать через общий сетевой ресурс, так и по сети, используя протокол tcp/ip. В этой заметке я рассмотрю развертывание хранилища через общий ресурс, а в следующий раз мы посмотрим на сетевой вариант.

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

Создай у себя на компе общую папку (или сразу на сервере). Сделай ее общей и определи пользователей, которые будут иметь возможность с ней работать. Под пользователями я подразумеваю твоих коллег разработчиков.

Следующим шагом тебе предстоит открыть свою БД в режиме “Конфигуратор” и проследовать в меню “Конфигурация” -> “Хранилище конфигурации” -> “Создать хранилище” (см. рисунок 2).


Рисунок 2. Создание хранилища конфигурации

Сразу после нажатия кнопки “Создать хранилище” перед тобой должно появиться окно как на рисунке 3. В нем тебе требуется выбрать ранее созданную общую папку или ввести адрес удаленного хранилища. Поскольку мы договорились создать хранилище на основе общего ресурса, в этом окне будет указывать именно путь как папке.


Рисунок 3. Выбираем расположение ХК

Как укажешь папку - жми на кнопку “Далее”. Не успеешь и глазом моргнуть, как мастер создания хранилища отобразит перед тобой окно для создания административной учетной записи (рисунок 4). По умолчанию в качестве имени тебе предлагают использовать “Администратор”. Понятное дело, что тебе ничего не мешает его изменить. В общем вводи желаемые значения и кликай “Ок”.


Рисунок 4. Создание учетной записи администратора

Тут твоя 1С’ка должна на несколько секунд задуматься, а затем предложить подключиться к созданному хранилищу. Отвечай “Да”. Поздравляю, ты создал свое первое хранилище конфигурации.

Обрати внимание на окно “Конфигурация”. Начиная с самого корня (это там где написано название конфигурации) в правой части появились маленькие замочки (см. рисунок 5). Этот замочек означает, что в настоящее время объект находится в хранилище конфигурации и ты не можешь вносить в него изменения. Если тебе требуется поработать с каким-либо объектом конфигурации, то сначала тебе необходимо его захватить. Как выполнить эту и многие другие операции по работе с хранилищем я расскажу в следующей заметке, которая совсем скоро появится на сайте.

Nafa 647 14.01.10 02:27 Сейчас в теме

Статья полезная.
В работе хранилища действительно очень много неочевидных вещей, поэтому мои дополнения:
1. Если работают несколько программистов, то как вариант,
рабочий день обычно начинается со следущего:
запускаем свою базу в конфигураторе, на корне конфигурации правой кнопкой мышки - получить из хранилища, включаем галочку "рекурсивно", жмем ОК. После этого в конфигурацию получаем все, что наработали другие из хранилища. САМУ БД НЕ ОБНОВЛЯЕМ!!!
Далее желаем "сравнить конфигурацию с конфигурацией БД" - и видим список все изменений сделанных другими программистами группы за предыдущий день. Если есть вопросы по изменениям- обращаемся к тому, кто их делал.
После того, как все разобрали - сохраняем в БД.
Почему не сравнить с конфигурацией хранилища - во-первых чтобы не показывались те объекты, над которым сам работаешь, во-вторых это работает быстрее.
2. В середине дня: срочные изменения (для динамического обновления) отправляем в хранилище сразу. Не срочные - после того, как изменим все связанные объекты. (см. пояснение ниже)
3. В конце дня (а если надо делать полное обновление базы - то перед ним) сдаем в хранилище все что можно.
Это не обязательный порядок, но весьма удобный.

4. Почему не помещаем сразу:
потому что целостность изменений контролируется 1С только там где есть ссылка. То есть если например вы сделали справочник "Автомобили клиентов" и добавили ссылку на него в "расходную накладную", то поместить "Расходную накладную" в хранилище Вы сможете только после (или одновременно) со справочником "Автомобили клиентов". Но если Вы например использовали этот справочник в процедуре общего модуле, которая вызывается при проведении расходной накладной, то этот общий модуль в хранилище спокойно поместиться без помещения справочника. Если после этого другой программист получит этот модуль из хранилища, то в его базе расходные накладные проводиться перестанут. (А если обновить основную базу - то и там перестанут).
И то еще хороший случай - так как возникает просто ошибка. А вот если Вы например изменили тип реквизита в документе со строки на текст и в процедуре общего модуля была проверка Если Реквизит = "1" а стала Если Реквизит = 1 и модуль в хранилище поместили а документ - нет, то ошибки не будет (привет отсутствию контроля типов), а значит у тех кто такой модуль получит документы будет неправильно проводиться, (и хорошо если это будет не основная база). Поэтому изменения лучше сдавать в хранилище "полным пакетом" (все измененные по одной теме объекты), если что-то нужно Вам для другой задачи - можно сразу же захватить по новой или просто, помещая в хранилище, "оставить захваченным".

В этом плане я не совсем понял:

Если программистов много - то изменения каждого нужно отправлять в Хранилище поочереди, ПРЕДВАРИТЕЛЬНО выгрузив у всех работу во внешние файлы с конфигурацией локальной БД и (если объединение делается с разных рабочих мест), не забывая перед каждым объединением ОБНОВЛЯТЬ локальные БД из Хранилища - до последней версии, с присутствующим там изменениями ранее подключенных товарищей..

Странно, не было никаких проблем когда несколько человек сразу изменения помещали, разве что подтормаживало малость. На то захват объектов и предусмотрен, чтобы 2 человека сразу одно и то же не исправили. Причем было замечено, что: если 1 разработчик изменил документ, скажем "Авансовый отчет", а затем второй "получения" не делал, а сразу его захватывает (например, объект только что помещен в хранилище), то 1С это отследит и сама даст ему уже новую - измененную версию. (Так прикольно бывает - смотришь на документ - 5 реквизитов, захватываешь - уже 15).

И зачем работу во внешние файлы выгружать тоже не понял.

4. Создание копий базы для программистов проще делать не 1Совской загрузкой-выгрузкой (т.к. она требует монопольного режима и не шибко шустрая), а восстановлением скульного бекапа или просто копированием базе на скуле.

5. Если нужно добавить новый объект (документ, справочник и пр), то захватите корень конфигурации, добавьте его, добавьте минимум реквизитов (совсем "пустые" объекты не всегда сохраняется), сдайте корень в хранилище (этот объект тоже сдастся при этом) и заберите объект опять. (Чтобы не держать корень долго захваченным - он и другим нужен).

6. Если Вы хотите исправить права доступа на объект, захватили его - а права доступа по прежнему недоступны - захватите соответствующую роль.

7. Поскольку отладку лучше всего вести на максимально свежих данных, то рабочие базы нуждаются в обновлении. Для этого: поместите все изменения в хранилище, отключите базу от хранилища, перепишите в нее на скуле основную базу (из бекапа или просто скопируйте), подключите по-новой.

8. Когда делаем "получить все из хранилища" (п. 1) бывает, что 1с выдает кучу сообщений а потом пишет, что "не удалось" (список объектов при этом меняется). Значит давно не получали изменения. Ничего страшного, жмем ОК по новой и так до тех пор, пока не сработает, как надо.

9. Иногда 1С отказывается сохранять полученные из хранилища изменения, причем сообщение выдает абсолютно невнятное. Виновниками обычно являются "регистры сведений". Выясняем, у какого регистра сведений менялась структура, удаляем из него в своей базе все записи, после этого все обновится как надо.

10. Поскольку рабочие базы делаются из основной, то названия конфигураций совпадают и их легко перепутать и потом начинаются непонятки, когда пользователе говорит что у него в отчете 100 руб, а у Вас - 100,000 руб. Как вариант, добавляем в модуль приложения строчку, проверяющую при запуске программы что это за база и если не основная - выводящую это в заголовке программы 1С (например "РАБОЧАЯ БАЗА ПРОГРАММИСТА ИВАНОВА")

11. Когда база подключена к хранилищу, но при запуске не удалось к нему подключиться по любым причинам, то может выдаться сообщение "Не удалось подключиться, выполнить отключение от хранилища" (а у Вас есть захваченные объекты) - тут ОТВЕЧАЙТЕ "НЕТ". Но если случайно ответить "да" то - не пытайтесь подключиться по новой!!! Сначала сохраните конфигурацию в файл!!! Так как когда подключаемся к хранилищу, то вся конфигурация базы заменяется на конфигурацию хранилища. После этого загружаем изменения из сохраненного файла и работаем дальше.



Предыдущая статья: Следующая статья:

© 2015 .
О сайте | Контакты
| Карта сайта