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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В восьмой версии 1с для совместной разработки используется хранилище конфигурации . Работа с хранилищем происходит следующим образом:

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

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

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

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

И создаем пользователей

  • Подключаем конфигурации разработчиков к хранилищу конфигурации


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



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

Ждём, пока произойдет сравнение конфигурации с хранилищем.

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

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

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

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

У объекта в дереве конфигурации появится пиктограмма

Если объект захвачен другим разработчиком, то объект в дереве конфигурации выглядит так

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



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

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

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

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

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

Приятной вам разработки!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

Сегодня я хотел бы поговорить о применении в процессе разработки/доработки прикладных решений хранилища конфигурации. Я не знаю почему многие 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). Этот замочек означает, что в настоящее время объект находится в хранилище конфигурации и ты не можешь вносить в него изменения. Если тебе требуется поработать с каким-либо объектом конфигурации, то сначала тебе необходимо его захватить. Как выполнить эту и многие другие операции по работе с хранилищем я расскажу в следующей заметке, которая совсем скоро появится на сайте.

В продолжение темы:
Ленточный фундамент

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

Новые статьи
/
Популярные