Обновить конфигурацию из хранилища 1с. Работа с хранилищем конфигурации. Окно хранилища конфигурации

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

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

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

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

P.S Сразу же после создания хранилища, создайте еще одного пользователя с административными правами, даже если будете работать только вы. Для чего это делается? Объясняю. Не редки случаи, когда пользователь «зависает», а так как увас есть еще один, то вы сможете зайти и снять свой же зависший сеанс. Пользователь создается в пункте Администрирование хранилища.

Подключение к хранилищу

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

P.S Все данные локальной информационной базы останутся на месте. То есть как бы происходит объединение конфигураций без затрагивания текущих данных БД.

Обновление и захват хранилища

Если вы уже произвели редактирование в локальной базе и в хотели бы перенести изменения, то вам необходимо выгрузить «конфу» в *.cf файл. После вы подключаетесь к хранилищу. Ваша конфигурация затирается. Теперь необходимо произвести захват объектов. Если вы один в базе, то произведем рекурсивный захват(захватываются все подчиненные объекты) и правой кнопкой мыши нажимаем Захват в хранилище по корневому элементу конфигурации, либо каждый объект захватываете отдельно, если вы работаете вместе. Далее переходите в пункт Сравнить хранилище с конфигурацией из файла. Вуаля - все ваши изменения теперь в хранилище.

Способ захвата можно установить в появившемся окне рис.5. Либо рекурсивно(1), либо разрешать другим получать захваченные объекты (2)

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

При этом вы также можете поместить рекурсивно объекты в хранилище и освободить их, либо оставить захваченными.

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

Создаем хранилище
Выбираем в меню "Конфигурация"->"Хранилище конфигурации"->"Создать хранилище..."

Указываем путь к каталогу хранилища. (Каталог должен быть доступен для всех разработчиков!)

После того как хранилище создано, заходим в пункт меню "Конфигурация"->"Хранилище конфигурации"->"Администрирование" для того чтобы создать пользователей для разработчиков


В открывшемся окне создаем пользователей.

Подключаем конфигурации разработчиков к хранилищу конфигурации
выбираем пункт меню "Конфигурация"->"Хранилище конфигурации"->"Подключиться к хранилищу..."

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

Ждём, пока произойдет сравнение конфигурации с хранилищем.
Если всё прошло успешно, то справа от объектов конфигурации в дереве объектов должна появиться пиктограмма замка.

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


указать настройки захвата

Выполнять рекурсивно - указывает, что помимо тех объектов, которые перечислены в списке, следует также захватить и все их подчиненные объекты, которые могут быть загружены независимо (подчиненные объекты, которые не могут быть загружены независимо от родительского объекта, всегда будут получены вместе с родительским объектом).
Например, если при захвате справочника не выполнять загрузку рекурсивно, то из подчиненных объектов будут захвачены только реквизиты и табличные части справочника.
Если же выполнить захват рекурсивно, то также будут захвачены и те объекты, подчиненные справочнику, которые могут быть захвачены отдельно от него: формы и макеты.

Флажок Разрешать получать захваченные позволяет при загрузке получить и те объекты, которые захвачены данным пользователем. Такая возможность может потребоваться, например, когда нужно вернуться к состоянию хранилища, не отменяя захват объекта, а продолжая его редактирование.

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

Если требуется отменить сделанные изменения и освободить объект от захвата, то выбираем в контекстном меню объекта пункт "Отменить захват"

Если требуется восстановить объект из хранилища , то то выбираем в контекстном меню объекта пункт "Получить из хранилища...". При этом внесенные изменения в то время, как объект был захвачен, теряются.

Так же можно просмотреть историю версий и сравнить захваченный и измененный объект с объектом в хранилище.

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

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

Основные этапы запуска удаленного хранилища конфигураций 1С 8 на сервере, на котором планируется установить сервер удаленного хранилища 1С 8 :

1. Установка 1С предприятия.
При установке платформы необходимо отметить следующие компоненты:

  • Сервер 1С:Предприятия 8.1
  • Адаптер web-сервисов 1С:Предприятия 8.1 (он понадобится для обеспечения доступа к серверу хранилища из интернета)
  • Сервер хранилища конфигурации.

1.1 Устанавливаем сервер хранилища как сервис, для этого нужно выполнить следующую команду:
"C:\Program Files\1cv81\bin\crserver.exe" -instsrvc -d "D:\WebRepo\"
- в ключе -d нужно указать путь к папке где будут храниться ваши хранилища.
2. Настройка поддержки WEB-сервисов.
В рамках данной статьи рассмотрим веб-сервер IIS 6.0(используется для Windows Server 2003).

Таблица соответствия версий IIS и ОС семейства Windows

Для настройки поддержки web-сервисов необходимо сделать следующее:

  • Необходимо зарегистрировать менеджер веб-сервисов: Start---Run "C:\Program Files\1cv81\bin\wsinst.exe" -iis.
  • В C:\Inetpub\wwwroot создаем каталог с именем appstorage1C
  • Создание прав на использование веб-сайтов. Открытие IIS / Веб-узлы / Веб-узел по умолчанию (правой кнопкой мыши) Свойства
  • Создание приложения IIS на основе виртуального каталога. Открытие IIS / Веб-узлы / Веб-узел по умолчанию / appstorage1C (правой кнопкой мыши) Свойства / Каталог / кнопка Создать
  • Проверка правильности указания пользователя для работы с IIS и флага анонимности. Открытие IIS / Веб-узлы / Веб-узел по умолчанию / appstorage1C (правой кнопкой мыши) Свойства / Безопасность каталога
  • Настройка отображения расширений.1cws и.1crs (+ .1ccr) на wsisapi.dll. Открытие IIS / Веб-узлы / Веб-узел по умолчанию / appstorage1C (правой кнопкой мыши) Свойства / Каталог / кнопка Настройка.

Обязательно указываем путь к исполняемому файлу в кавычках если имеется пробел в данном пути!!!

  • Добавление MIME типов 1C:Предприятия в настройки HTTP заголовков виртуальной директории Web-сервисов (расширения.1cws и.1crs (+ .1ccr), Mime тип text/xml). Открытие IIS / Веб-узлы / Веб-узел по умолчанию / appstorage1C (правой кнопкой мыши) Свойства / Заголовки HTTP
  • Разрешение запускать wsisapi.dll на IIS. (если не создано - в расширениях Web-сервисов IIS добавить wsisapi.dll как расширение Web-сервисов и разрешить ему запуск). Проверить имеется ли в наличии и при отсутствии создать:
  • Настройка прав пользователей на каталог исполняемого файла "C:\Program Files\1cv81\bin" 2-х учетных записей IIS

Для корректной работы нужно сделать "Port Forwarding / Port Triggering" портов 8080(+ 80) и 443 на сервер хранилища.

На данном рисунке представлены настройки роутера D-link. В данном случае 192.168.15.2 - сервер хранилища конфигурации.

3. Публикация конфигурационного файла веб-сервиса.
Нашему веб-сервису для корректной работы с сервером хранилища конфигураций необходим конфигурационный файл. Его нужно поместить в виртуальный каталог, который мы создали ранее, а выглядеть он должен вот так:

Это файл в формате XML с расширением 1ccr, с единственным узлом и атрибутом connectString - в этом атрибуте необходимо указать адрес нашего сервера хранилища конфигурации в сети. В нашем случае мы не разделяли сервер хранилища и IIS, поэтому указываем имя компьютера, на котором мы проделываем все эти действия. Назовем наш файл repository.1ccr.

4. Создание хранилища.
При запуске агента сервера хранилища конфигураций будет создан каталог"D:\WebRepo\" - это каталог хранилищ конфигураций. Если не указывать путь при регистрации сервера(как в пункте 1.1), то хранилище по умолчанию будет создано в каталоге %APPDATA%\1C\1Cv81\ maincr.
Для создания уделенного хранилища, необходимо из режима "Конфигуратор"(Конфигурация / Хранилище конфигурации / Создать хранилище...) создать новое хранилище, только указать в качестве каталога адрес нашего сервера:
<Имя виртуального каталога>/<Имя конфигурационного файла>/<имя хранилища>
Вот пример: http://78.45.99.183/appstorage1C/repository.1ccr/MyRepo. Но мы рекомендуем создавать хранилище соответствующей конфигурации непосредственно на сервере, на котором располагается сервер хранилищ конфигураций, так как это будет быстрее.

5.Подключение к хранилищу.
Подключаемся к хранилищу стандартными средствами, только в качестве каталога указываем адрес нашего сервера
http://78.45.99.183/appstorage1C/repository.1ccr/MyRepo


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

Хранилище конфигурации

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

Для осуществления групповой разработки прикладного решения на общедоступном сетевом ресурсе создается хранилище конфигурации и назначается его администратор:

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

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

Окно хранилища конфигурации

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

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

В любой момент времени можно выполнить сравнение текущей конфигурации с хранилищем или выполнить сохранение хранилища как конфигурации.

История хранилища

Конфигуратор 1С:Предприятия поддерживает ведение истории хранилища:

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

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

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

Отчет по версиям хранилища отражает состав добавленных или измененных объектов:

Отчет по объектам разработки содержит информацию об изменениях, которые были внесены в конкретные объекты прикладного решения:

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

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

Работа с хранилищем в окне конфигурации

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

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

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

Работа с хранилищем без подключения

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

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

Удаленная работа с хранилищем конфигурации

Начиная с версии 8.1.11, с хранилищем конфигурации можно работать, используя не только общий сетевой ресурс, но и соединение по локальной сети (используя протокол TCP) и интернет-соединение (используя протокол HTTP). В общем случае взаимодействие разработчиков с хранилищем конфигурации может выглядеть следующим образом:

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

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

Проверка и исправление хранилища конфигурации

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

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

В большинстве случаев 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 ) и ищем в реестре эту строку. Правим в ней номер релиза (он присутсвует в имени папки). Запускаем службу обратно. Все. Если Вы накосячили, то служба у Вас не запуститься. После запуска зайдите в свойства службы и визуально убедитесь, что она стартанула из папки с новым релизом.

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