О чем эта статья
В статье рассмотрены механизм групповой разработки конфигурации платформы «1С:Предприятие». Изучив статью вы узнаете, каким образом несколько разработчиков могут одновременно вести разработку по изменению конфигурации. Ознакомившись с нашим материалом, вы узнаете:
- Что такое хранилище конфигурации и для чего оно нужно?
- Какие операции можно выполнять при помощи хранилища?
- Как особенности есть при работе с хранилищем?
- Из каких файлов состоит хранилище и где они находятся?
- Какие варианты подключения к хранилищу имеются и каким лучше всего воспользоваться?
- Какие изменения произошли во внутренней кухне хранилища в платформе 1С редакции 8.3?
- Как сделать бекап хранилища?
- На какие моменты стоит обратить внимание при работе с хранилищем?
- захват объекта в хранилище;
- помещение объекта в хранилище;
- получение объекта из хранилища;
- отмена захвата в хранилище.
- Административные функции (позволяет создавать, изменять и удалять пользователей хранилища, отключать пользователей, подключенных к хранилищу, и отменять захват объектов хранилища, выполненный другими пользователями);
- Изменение состава версий (позволяет выполнять откат, сокращение и объединение версий конфигураций в хранилище);
- Захват объектов (позволяет захватывать объекты в хранилище и вносить изменения в конфигурацию хранилища). Если это право не установлено, то объекты можно только просматривать.
- файл описания таблицы;
- файл записей данных, в котором находятся все записи таблицы, за исключением полей неограниченной длины;
- файл индексов (если для таблицы не определено ни одного индекса, то этот файл отсутствует);
- файл значений неограниченной длины, в котором хранятся значения неограниченной длины, содержащиеся в полях таблицы.
- модули;
- форма;
- макеты;
- картинка;
- WS-ссылка;
- Расписание;
- агрегаты регистра;
- состав плана обмена;
- стиль;
- рабочая область рабочего стола;
- карта маршрута;
- справка;
- предопределенные элементы;
- пакет XDTO;
- фрагмент командного интерфейса;
- права роли.
- повышение быстродействия хранилища (ускорено открытие конфигурации, подключенной к хранилищу; ускорено подключение к хранилищу; ускорено помещение объектов в хранилище; ускорено обновление конфигурации из хранилища, получение объектов, отмена захвата объекта в хранилище; увеличена параллельность помещения объектов в хранилище несколькими пользователями);
- при работе через сервер хранилища выполняется проверка версий платформы, которая гарантирует идентичность используемых платформ (т.е. платформой 8.2 нельзя подключиться к серверу хранилища версии 8.3.4);
- при новом способе хранения информации размер самого хранилища теперь не так критичен.
- количества неупакованных файлов больше 5000;
- количества архивов более 50.
- Механизм сравнения модулей форм был перенесен в отдельную команду, что позволило сделать данной сравнение без построения отчета по самой форме. Данное изменение повысило комфорт и общее удобство при сравнении модулей форм. (8.3.5)
- Добавлен локальный кэш данных для хранилища. Теперь используются два кэша: локальный и глобальный. Локальный кэш, естественно, располагается на локальном компьютере, подключенном к хранилищу. Он предназначен для ускорения работы. Также стало доступным возможность управлять местом размещения локального кэша, а также его максимальным размером. (8.3.5)
- Произведено очередная оптимизация при работе с хранилищем, в результате которой была повышена скорость работы с ним. Для сохранения обратной совместимости был реализован новый режим совместимости с версией 8.3.3. Ускорение работы будет наблюдаться если данный режим установлен в значение “Не использовать”. (8.3.6)
- На сервере хранилища добавлена проверка целостности данных объекта, который помещается в хранилище. Эта возможность снижает возможность помещения в хранилище некорректных данных объекта конфигурации (8.3.9)
- Добавлена возможность хранить историю хранилища большего размера (десятки тысяч версий). Если вы создаете новое хранилище, то его база данных будет сразу создаваться в формате версии 8.3.8. Если вам нужно перевести уже созданное хранилище под новый формат, следует воспользоваться утилитой cnvdbfl (8.3.10)
- Существенно ускорены операции при работе с хранилищем (8.3.10)
Применимость
Большая часть материала в статье описана для платформы «1С:Предприятие» редакций от 8.3.4.365 до 8.3.11
Наиболее важные вопросы про хранилище конфигурации
При попытке подключения к информационной базе 1С:Предприятия в режиме Конфигуратора платформа проверяет, не открыта ли текущая информационная база для конфигурирования.
Данная проверка необходима для обеспечения целостности во избежание изменения объектов конфигурации одновременно несколькими пользователями. Однако, как поступить в том случае, когда задача слишком сложна или объёмна для одного разработчика, и для обеспечения разумных сроков разработки необходимо привлечение одновременно нескольких программистов?
Конечно, можно назначить ответственного специалиста, который будет консолидировать изменения всех разработчиков в единую конфигурацию, а результирующий файл передавать заказчику.
Однако платформа 1С:Предприятие позволяет проводить параллельную разработку решения при помощи механизма групповой работы – хранилища конфигурации.
Что такое хранилище конфигурации?
С точки зрения физической структуры хранилище конфигурации представляет собой файловую информационную базу 1С:Предприятия 8 формата 1CD. Хранилище содержит только разрабатываемую конфигурацию, но не содержит пользовательских данных (элементов справочников, документов, движений по регистрам и т.п.).
Каждый программист из рабочей группы создает свою базу, подключает ее к общему хранилищу конфигурации, при этом происходит замещение конфигурации его базы конфигурацией из хранилища. Важно, что каждый разработчик может тестировать и отлаживать свои алгоритмы на собственных наборах данных, в хранилище же будет помещаться только конфигурация информационной базы.
Хранилище конфигурации не дает возможности изменить одновременно один и тот же объект двумя разработчиками. Если необходимо изменить какой-либо объект, он захватывается в хранилище, при этом другой программист не может его ни захватить в хранилище, ни отредактировать.
Далее первый разработчик изменяет захваченный объект, отлаживает алгоритмы его работы на своих тестовых примерах, а после завершения разработки помещает объект обратно в хранилище. Таким образом, в каждый момент времени с одним объектом может работать только один пользователь. Так обеспечивается целостность разрабатываемой конфигурации.
Хранилищем имеет смысл пользоваться только при коллективной разработке?
Хранилище конфигурации предназначается в первую очередь для организации групповой работы нескольких программистов над одной конфигурацией. Каждый разработчик занимается своей частью конфигурации (подсистемой, документом, рабочим местом и т.д.), редактирует свои объекты, тестирует и отлаживает их на своих данных.
Однако, кроме этого, хранилище позволяет вести версионирование изменений, происходящих в процессе работы над конфигурацией. И именно эта функция представляется очень полезной и в случае одного разработчика.
При помощи встроенных в платформу средств можно просмотреть историю версий хранилища, для каждой версии увидеть список измененных объектов, узнать, кто и когда вносил те или иные изменения.
Можно откатиться до одной из предыдущих версий конфигурации в случае обнаружения ошибки. Каждую из сохраненных версий хранилища можно сохранить в файл для дальнейшего анализа, открыть для просмотра.
Версии из хранилища можно сравнить между собой при помощи знакомого окна сравнения-объединения конфигураций.
Какие операции может выполнять пользователь с объектами в хранилище?
Существует четыре операции, которые пользователь может выполнять с объектами хранилища:
При выполнении захвата объекта из хранилища получается последняя версия объекта (в случае отличия текущей версии от последней), объект отмечается как захваченный, его редактирование недоступно другим пользователям.
После завершения редактирования объекта пользователь хочет сделать доступной другим разработчикам новую версию объекта с последними изменениями. Для этого предназначена операция помещения объекта в хранилище. Другой разработчик теперь может получить измененный объект из хранилища, т.е. загрузить новую версию объекта в свою информационную базу, подключенную к хранилищу.
Если же разработчик передумал помещать свои наработки в хранилище, хочет отменить все изменения, то для этого существует операция отмены захвата, при выполнении которой из хранилища будет получена предыдущая версия объекта, а сам объект помечается, как не захваченный, т.е. он опять становится доступен другим пользователям.
Таким образом, после подключения конфигурации к хранилищу все объекты находятся в режиме «только чтение», а для возможности редактирования необходимо выполнить операцию захвата в хранилище.
Какие объекты в хранилище можно редактировать двум разным пользователям одновременно?
Хранилище конфигурации предназначено для групповой разработки конфигурации. В процессе работы может возникнуть потребность редактирования объектов конфигурации различными пользователями.
С точки зрения хранилища конфигурации минимальной единицей, доступной для разработки, является отдельные объекты метаданных (справочник, документ и т.д.), формы и макеты. Реквизиты и табличные части объектов не являются сущностями, которые можно редактировать отдельно от самого объекта. Так, например, для добавления нового реквизита в справочник «Номенклатура» необходимо захватить в хранилище сам справочник. А каждая форма (форма элемента, форма списка или выбора) или макет справочника может редактироваться отдельно.
Таким образом, каждый объект метаданных, форма, макет в один момент времени могут редактироваться только одним пользователем.
Какие права существуют у пользователей хранилища конфигурации?
Каждому пользователю хранилища могут быть назначены следующие виды прав, определяющие разрешенные действия с хранилищем:
Следует обратить внимание, что для авторизации в хранилище конфигурации заводятся отдельные пользователи, которые никак не связаны с пользователями информационной базы.
Как захватить в хранилище сразу несколько объектов?
Это можно сделать при помощи диалога работы с хранилищем (в меню Конфигурация – Хранилище конфигурации – Хранилище). В открывшемся дереве конфигурации при помощи мыши, стрелок на клавиатуре, кнопок Shift и Ctrl выделяем несколько объектов. После этого при помощи элементов контекстного меню или кнопок командной панели выполняются операции над выбранными объектами.
Для увеличения нажмите на изображение.
Как вывести список объектов хранилища, захваченных конкретным пользователем?
Это можно сделать при помощи диалога работы с хранилищем (в меню Конфигурация – Хранилище конфигурации – Хранилище). В меню выбрать Вид – Список.
В окне установки отбора выбираем пользователя, захваченные кем объекты, мы хотим просмотреть. В списке останутся только интересующие нас записи.
Для увеличения нажмите на изображение.
Где можно увидеть, когда и кем база была отключена от хранилища?
К сожалению, в хранилище конфигурации не логируются события подключения базы к хранилищу и отключения базы от хранилища. Журнал регистрации тоже не сохраняет такую информацию. Поэтому при работе с хранилищем надо быть внимательным, т.к. возможно нечаянно отключить базу от хранилища. При открытии конфигуратора открывается окно авторизации в хранилище. При нажатии кнопки Отмена задается вопрос – следует ли отключить базу от хранилища? По ошибке можно нажать кнопку Да, в результате база будет отключена от хранилища.
Если по ошибке вы отключили базу от хранилища, сохраните текущую конфигурацию в файл, заново подключитесь к хранилищу, затем внесите все свои изменения при помощи операции сравнения-объединения с конфигурацией из сохраненного файла.
Как «хранится» хранилище конфигурации?
Хранилище конфигурации размещается в файле с именем 1Cv8ddb.1CD. Этот файл является обычной файловой базой 1С:Предприятия 8. В ней хранится информация по захваченным объектам, помещенным в хранилище версиям конфигурации, пользователям хранилища и их правам.
Планов по реализации размещения данных хранилища конфигурации в базах SQL-сервера фирма «1С» пока не озвучивала.
В каталоге с файлом 1Cv8ddb.1CD также может быть расположена папка Cache. Данная папка является служебной. В ней сохраняются файлы версий конфигурации хранилища. Файлы создаются при выполнении, например, таких операций, как сравнение с определенной версией хранилища, сохранение версии хранилища в файл и т.д.
Поскольку файл 1Cv8ddb.1CD является файловой базой, на него также распространяются ограничения на размер файла. Напомним, что файл базы данных (.1CD) внутри организован, как множество так называемых внутренних файлов. Каждой из таблиц базы данных соответствует до четырех внутренних файлов:
Размер каждого из этих внутренних файлов не может превышать 4 Гбайт. Поэтому при очередном помещении изменений в хранилище может возникнуть ошибка:
Ошибка операции с хранилищем конфигурации.
по причине:
Превышен максимально допустимый размер внутреннего файла ‘D:\…//1cv8ddb.1CD’
Попробовать решить эту проблемы можно при помощи операции сокращения хранилища. В случае возникновения ошибки с сообщением о нехватке памяти попробовать выполнять эту операцию на компьютере с большим количеством оперативной памяти, либо сокращать только на одну версию за раз.
Также следует обратить внимание, что даже после успешного сокращения размер файла хранилища может не уменьшиться. Пространство внутри файла будет отмечено как свободное, и может быть использовано в дальнейшем.
В каких таблицах информационной базы хранится информация о связи с хранилищем конфигурации?
Существует ряд таблиц, которые обязательно присутствуют в любой информационной базе «1С:Предприятия». Одной из таких таблиц является таблица Files, содержащая служебную информацию, в том числе, о работе с хранилищем конфигурации.
Фирма «1С» не сообщает подробностей о формате записей этой таблицы, отмечая, что формат файлов не предполагает чтения или модификации какими-либо средствами, кроме «1С:Предприятия».
Путем наблюдений установлено, что когда информационная база подключена к хранилищу, в таблице Files существуют две записи, у которых поле Filename имеет значения «depot.dat» и «depot.nfo».
Какие могут возникать проблемы при разработке внешнего вида форм с использованием хранилища конфигураций?
Описывался случай, когда у одного из разработчиков в настройках операционной системы стоял размер текста и других элементов Windows «Крупный» – 150%. Все формы, которые он помещал в хранилище, открывались с искаженными привязками. После отмены масштабирования в настройках проблема ушла.
Существуют рекомендации от фирмы «1С» по разработке форм. В конфигураторе при открытии формы для редактирования при обнаружении несоответствия выводится сообщение: «Разработку форм рекомендуется выполнять в разрешении 96 DPI».
Как следует поступать в случае, когда после помещения объекта в хранилище пропадают внесенные изменения?
Однозначного решения проблемы не обнаружено, однако существует набор действий, которые зачастую помогают в этом случае.
Очистить локальный кэш метаданных информационной базы на компьютере разработчика, у которого воспроизводится проблема. Локальный кэш метаданных для платформы «1С:Предприятие 8.2» расположен в
%USERPROFILE%\Local Settings\Application Data\1C\1Cv82\
(%LOCALAPPDATA%\1C\1Cv82\
Идентификатор информационной базы можно посмотреть в файле описаний зарегистрированных информационных баз, расположенном в
%APPDATA%\1C\1CEStart\ibases.v8i
В платформе «1С:Предприятие 8.3» существует файл location.cfg, расположенный в
%LOCALAPPDATA%\1C\1Cv8.
Он служит для указания каталога, который хранит файлы настроек пользователя, в том числе файлы локального кэша.
Очистить кэш версий хранилища, расположенные в подпапке Cache каталога, в котором расположено хранилище (файл 1Cv8ddb.1CD).
Возможно, потребуется отключение от хранилища и повторное подключение к нему.
Также можно попробовать перейти на использование сервера хранилища. Отмечается уменьшение частоты возникновения подобных проблем после перехода на сервер хранилища.
Как решить эту проблему?
После аварийного завершения работы конфигуратора во время захвата объектов в хранилище при последующем подключении к хранилищу появляется сообщение об ошибке «Файл не обнаружен ‘depot.dat.new’».
Для решения проблемы удалите из таблицы Files средствами SQL запись с FileName=’depot.revise’
Исправление данной ошибки должно быть доступно начиная с платформы версии 8.3.3.
Что можно предпринять в этом случае?
После обновления на версию 8.2.19.76, стала регулярно вылетать ошибка:
Неклассифицированная ошибка работы с хранилищем конфигурации.
по причине:
Ошибка выполнения запроса
Ошибка при выполнении запроса POST к ресурсу :
по причине:
server_addr=tcp://хххххх/хххххх descr=Ошибка сетевого доступа к серверу
(Windows Sockets – 10053(0x00002745). Программа на вашем хост-компьютере разорвала установленное подключение. ) line=1097 file=Src\DataExchangeTcpClientImpl.cpp
Подобная ошибка перестает проявляться после перезапуска службы сервера хранилища.
Однако в случае возникновения ошибки можно не перезапускать сервер или конфигуратор, а попробовать выполнить команды Конфигурация – Хранилище конфигурации – Закрыть хранилище/Открыть хранилище.
Как следует поступить при этом?
При получении объектов из хранилища или помещении объектов в хранилище периодически выдается ошибка:
Не удалось заблокировать таблицу ‘USERS’ (или таблицу ‘BINDINGS’)
Ошибка воспроизводилась при попытке получить изменения из хранилища (или подключить новую базу к хранилищу) в то время, пока другой пользователь производит помещение большого количества объектов в хранилище. Проблема уходит после окончания помещения объектов в хранилище.
Также такая ошибка воспроизводилась, если при открытом конфигураторе, подключенном к хранилищу, происходят неполадки сети (даже кратковременное отключение от сети с последующим подключением).
После этого при попытке захватить объект или получить его из хранилища процесс конфигуратор несколько минут не отвечает, затем выдает сообщение об ошибке. В этом случае помогал только перезапуск конфигуратора.
Как разорвать подключение к хранилищу?
Во время работы с хранилищем произошло отключение электричества. После этого разработчик не может подключиться к хранилищу, отключить его не получается (появляется сообщение об ошибке «Невозможно отключить пользователя, работающего с хранилищем»), нового пользователя тоже не добавить (появляется сообщение об ошибке «Не удалось заблокировать таблицу ‘USERS’»).
Необходимо на компьютере, на котором расположено хранилище, закрыть подвисшее соединение с файлами хранилища (самим файлом 1Cv8ddb.1CD и временными файлами, расположенными в этом каталоге).
Это можно сделать при помощи оснастки Управление компьютером (пункт Открытые файлы) или утилиты наподобие Unlocker.
Если эти способы не привели к результату, остается только перезагрузить компьютер с хранилищем, а после перезагрузки очистить оставшиеся временные файлы.
Для увеличения нажмите на изображение.
Хранилищем конфигурации можно пользоваться только в пределах локальной сети?
Не обязательно. Хранилище конфигурации поддерживает удаленный режим работы. Доступ к хранилищу конфигурации могут иметь пользователи локальной сети (по протоколу TCP) и пользователи сети Интернет (по протоколу HTTP).
Для разработчика удаленная работа с хранилищем конфигурации практически ничем не отличается от работы с хранилищем, расположенным на общем сетевом ресурсе. Удаленное хранилище позволяет группе программистов из различных регионов страны совместно работать над общей конфигурацией.
Удаленная работа с хранилищем предполагает работу с соединением с высокой пропускной способностью. Кроме этого, следует учитывать, что при использовании удаленной работы может существенно возрастать время операций, требующих обмена большим количеством информации (например, получение целиком последней версии хранилища).
Удаленную работу с хранилищем конфигурации обеспечивает специальное приложение – сервер хранилища конфигурации (crserver.exe для Windows или crserver для Linux). Возможна одновременная работа с хранилищем конфигурации как удаленно, так и как с общим файловым ресурсом.
При подключении по протоколу TCP конфигуратор разработчика подключается к серверу хранилища конфигурации, который непосредственно производит операции чтения-записи с файлом хранилища конфигурации. В случае использования протокола HTTP в эту цепочку добавляется еще одно звено, а именно веб-сервер.
Конфигуратор разработчика обращается к веб-серверу. Веб-сервер обращается к серверу хранилища, который в свою очередь взаимодействует с хранилищем конфигурации.
Какие проблемы при работе с хранилищем были решены в платформе 8.3?
При выпуске платформы «1С:Предприятие» 8.3.3 разработчики постарались решить наиболее важные проблемы, возникающие при работе с хранилищем конфигурации. В частности:
1) Проблема с превышением допустимого размера таблицы в базе данных хранилища. Данная проблема была актуальна для больших конфигураций и хранилищ с большим количеством версий. Для решения данной проблемы было реализовано специализированное файловое хранилище.
Изменен способ хранения информации в хранилище конфигурации: объекты хранилища теперь хранятся в файловой системе (в папке data, которая занимает большинство места).
Для увеличения нажмите на изображение.
Файл 1Cv8ddb.1CD в этом случае используется только как хранилище информации об измененных объектах, поэтому его размер существенно уменьшился. Новый способ хранения возможен только при отключенном режиме совместимости хранилища конфигурации.
Установленный режим совместимости можно увидеть в окне «Администрирование хранилища конфигурации».
2) Проблема с длительным сравнением объектов конфигурации. Сравнение двух версий отдельных объектов фактически не отличалось по времени от сравнения двух версий конфигурации.
Для решения данной проблемы был реализован механизм выборочного сравнения, позволяющий выполнить сравнение не только выбранных объектов, но и их отдельных свойств (например, модулей). При этом необходимая для сравнения информация извлекается из хранилища по требованию.
В настоящее время не решен вопрос со сравнением некоторых объектов метаданных и свойств (например, права ролей, формы).
При отображении истории объектов хранилища справа в таблице «Свойство» отображаются свойства, которые изменились в данной версии (из состава свойств, которые можно выборочно сравнить).
Для увеличения нажмите на изображение.
Выборочно можно сравнивать следующие свойства:
Если таблица «Свойство» не заполнена, значит у объекта изменились другие свойства.
3) Проблема с проверкой ссылочной целостности при выполнении операций с хранилищем. Особенно актуальна данная проблема была при попытке поместить или получить изменения после удаления объектов метаданных. С большой долей вероятности механизм контроля ссылочной целостности хранилища требовал отмены захвата уже отредактированных объектов или захвата и удаления ссылок из объектов, захваченных другими пользователями хранилища. В качестве решения данной проблемы постарались свести к минимуму (насколько это позволяет специфика групповой разработки) различия между механизмом контроля ссылочной целостности конфигуратора и хранилища конфигурации.
4) Проблема работы сервера хранилища. Работа сервера хранилища при выполнении некоторых операций (например, рекурсивное помещение изменений в хранилище) была неудовлетворительной, операция могла занимать значительное время. Была выполнена модернизация протокола взаимодействия конфигуратора с сервером хранилища, что позволило, с одной стороны, увеличить скорость выполнения операций с сервером, а с другой стороны – сократить объем передаваемых данных.
В платформе 8.3.4.365 реализовано хранение истории комментариев, которые вводят пользователи при помещении объектов в хранилище конфигурации. В истории хранится 20 последних комментариев. Комментарий может быть введен и сохранен в истории при захвате объекта в хранилище, а при помещении – выбран из истории.
Таким образом, новый формат хранилища 8.3 имеет следующие преимущества:
Что происходит при выполнении оптимизации хранилища на платформе 8.3?
В версии 8.3.3 для устранения проблемы с достижением предела в 4 Гб на одну таблицу в хранилище без установленного режима совместимости объекты метаданных хранятся в виде файлов на диске.
Большое количество файлов может несколько замедлять работу с хранилищем (особенно при расположении хранилища на сетевом диске).
При оптимизации хранилища из неупакованных файлов создается архив, а при наличии большого количества архивов (более 50), архивы переупаковываются в один.
При установленной опции «Предлагать оптимизацию после выполнения операций с хранилищем» в окне «Администрирование хранилища» администратору хранилища будет предлагаться провести оптимизацию при достижении:
При установленной галочке «Предлагать оптимизацию после выполнения операций с хранилищем» после помещения объектов в хранилище, отката/слияния версий хранилища разработчику будет задан вопрос:
При нажатии кнопки «Оптимизировать» в подкаталоге pack папки с данными хранилища появляются упакованные файлы.
Для увеличения нажмите на изображение.
Если режим совместимости установлен в «Не использовать», то у хранилища будет новая структура, и работать с ним сможет только платформа версии 8.3.3.
Если режим совместимости установлен в «Версия 8.3.2», то структура хранилища будет такая же, как в версии платформы 8.3.2. Работать с ним смогут платформы версии с 8.2.9 по 8.3.2 включительно.
Оптимизированные алгоритмы работы с хранилищем будут работать только в режиме совместимости «Не использовать».
Операция оптимизации возможна как с помощью диалога администрирования хранилища, так и с помощью ключа командной строки пакетного запуска конфигуратора ConfigurationRepositoryOptimizeData.
Как выполнить резервное копирование хранилища конфигурации?
Для выполнения резервного копирования хранилища конфигурации необходимо скопировать файл 1Cv8ddb.1CD. Служебный каталог Cache можно не копировать, поскольку в нем расположены файлы версий конфигурации хранилища.
Несмотря на то, что файл хранилища не блокируется для чтения платформой, для обеспечения целостности копируемых данных к хранилищу не должны быть подключены пользователи.
Если для хранилища свойство «Режим совместимости» установлено в значение «Не использовать» (а это возможно только при использовании платформы не ниже 8.3.3), то для выполнения резервного копирования хранилища следует скопировать файл 1Cv8ddb.1CD и ПОЛНОСТЬЮ папку data, расположенную в той же папке, что и файл 1Cv8ddb.1CD.
Как выполнить проверку физической целостности файла хранилища?
Поскольку файл 1Cv8ddb.1CD является файловой базой, для проверки его физической целостности можно воспользоваться утилитой chdbfl.exe из папки с установленной платформой. На практике встречались случаи, когда удавалось восстановить файл таким образом, однако фирма «1С» не рекомендует прибегать к использованию этой утилиты для тестирования хранилища конфигурации.
На что еще необходимо обратить внимание при работе с хранилищем?
1) Не оставляйте корень конфигурации захваченным в хранилище. При добавлении нового объекта нужно захватить корень, добавить новый объект (и минимально необходимое количество реквизитов, поскольку, например, нельзя будет обновить конфигурацию базы данных при наличии регистра накопления без регистраторов, при наличии регистра накопления без ресурсов), поместить корень и новый объект в хранилище. После этого новый объект можно заново захватить в хранилище, не блокируя корневой элемент, чтобы не мешать другим разработчикам. Если же поместить пустой регистр в хранилище, то другой разработчик после получения изменений из хранилища не сможет обновить конфигурацию базы данных.
2) При начале работы с хранилищем после открытия ее в конфигураторе выполняем «Обновить конфигурацию из хранилища». При этом в текущую базу загружаются наработки других программистов за предыдущий день, и у нас всегда будет актуальная версия конфигурации.
3) При добавлении новых объектов для ролей, у которых установлен флаг «Устанавливать права для новых объектов» (в типовых конфигурациях это ПолныеПрава), автоматически проставляются разрешительные права на новые объекты, даже если сама роль не захвачена в хранилище.
4) Если отладочные базы разработчиков создаются из копий рабочей базы, установите для каждой из них собственный заголовок главного окна, например, «Копия Иванов». Это позволит избежать ненужной путаницы при наличии нескольких одновременно открытых баз.
5) Каждая тестовая база разработчика подключается к хранилищу под определенным пользователем. Открыв информационную базу в конфигураторе, подключиться к хранилищу под другим пользователем не получится.
Подключать новую базу под именем пользователя, для которого уже есть подключенная конфигурация, не следует, потому что это приведет к невозможности соединения предыдущей базы с хранилищем. Такая ситуация зачастую случается при создании тестовых баз разработчиков из копии рабочей базы.
Рассмотрим в хронологическом порядке, какие еще значимые изменения произошли в механизме хранилища конфигурации:
В заключение, рекомендуем вам ознакомиться просто с сногсшибательной статьей от Евангелиста 1С, в которой рассказано как при помощи хранилищ разрабатывается флагманская конфигурация 1С:ERP.
PDF-версия статьи для участников группы ВКонтакте
Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.
Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.
Статья в PDF-формате
Вы можете скачать эту статью в формате PDF по следующей ссылке:
Ссылка доступна для зарегистрированных пользователей)
Статья супер. Подскажите, в чем может быть причина при подключении к хранилищу по http вот такой ошибки:
Ошибка XML-протокола при работе с удаленным хранилищем конфигурации.
по причине:
Ошибка разбора XML: – [51232,31]
Фатальная ошибка:
Extra content at the end of the document
Добрый день!
Проблема может быть в настройках веб-сервера, из-за которых приложение получает некорректный XML, не может его разобрать и выдает ошибку.
Попробуйте поискать в интернете по тексту ошибки. Находятся способы решения:
– Настройка Разрешены 32-разрядные приложения в IIS (в зависимости от разрядности используемой платформы)
– Настройка Фильтрация запросов в IIS
Как вариант – перейти временно на работу с хранилищем через каталог, а не TCP/HTTP. Или пересоздать хранилище, возможно в текущем хранилище появились некорректные данные. Еще можно попробовать очистить кэши (локальный кэш метаданных, кэш хранилища).
Добрый день. Отличная статья, спасибо.
Возникла проблема с хранилищем, а именно то, что разработчик не может поместить измененный объект. Выходит ошибка: возможно во время помещения объектов была произведена оптимизация хранилища… Ничего подобного не было. При этом Захват и отмена захвата работает. Попробовали захватить, поместить без изменений и всё нормально, без ошибок. Вопрос: какие сетевые права надо давать разработчикам чтобы помешать изменения в хранилище? Сейчас есть полные права к папке хранилища, но есть ограничения к доступу на сервер 1с. Надо ли давать доступ к папкам на сервере 1с, к каким-то папкам кэша или нет?
Добрый день!
По описанию ошибки предполагаю, что что-то произошло физически с самим хранилищем. Попробовать пересоздать хранилище в другом каталоге, проверить, возникают ли те же ошибки.
Еще гипотеза – проверить права доступа к сетевому каталогу, возможно, на сам каталог одни права, на какие-то из файлов внутри этого каталога другие права, из-за этого нет возможности выполнить запись.
Еще можно попробовать выполнить оптимизацию хранилища, раз про нее указывается в тексте ошибки.
Также пробовать включить ТЖ, воспроизвести ошибку, проанализировать логи ТЖ.
Для доступа к хранилищу по сети нужны права на сетевую папку, где размещено хранилище. Сервер 1С:Предприятия при этом не задействуется.
Спасибо. Дело было в групповых правах пользователей в сети.
Здравствуйте!
Существует какой-нибудь лог (не история) хранилища, в частности интересует данные об откатах к предыдущим версиям хранилища? Кто и когда сделал
Добрый день!
Нет, такой лог отсутствует.
Как вариант – использовать для этого комментарий или метку версий хранилища. Но их нужно будет заполнять вручную.
8.3.23
Появился параметр “максимальный размер” по умолчанию стоит 500Мб, а рядом кнопка очистить кэш. Что означают эти параметры?
Добрый день!
Указанные параметры относятся к механизму глобального кэша хранилища.
Глобальный кэш размещается на компьютере, где расположен каталог с самим хранилищем.
Как и всякий кэш, он предназначен для сохранения на диске некоторой информации, запрашиваемой из хранилища, чтобы при повторном запросе этой же информации не выбирать ее заново, а получать готовое значение из кэша.
В глобальный кэш помещаются результаты получения определенной версии конфигурации, сравнения объектов конфигурации и т.д.
За счет использования кэша повторное получение тех же самых данных будет быстрее, поскольку они могут быть получены из кэша. Если в кэше нужной информации не оказалось, платформа будет обращаться непосредственно к хранилищу.
Упомянутые Вами настройки задают размер кэша – сколько места под него выделено. Кнопка Очистить кэш позволяет удалить с диска закэшированные данные (для освобождения места на диске, для удаления поврежденных файлов). Следующее получение данных не сможет взять их из кэша, будет получать из самого хранилища.
Добрый день! Подскажите как удалить хранилище, если оно не используется?
Добрый день!
Отключаем все базы от хранилища. Для этого предназначен пункт меню в конфигураторе Конфигурация – Хранилище конфигурации – Отключиться от хранилища.
Теперь можно удалять папку с файлами хранилища на диске.
Добрый день! Подскажите, как удалить пользователя хранилища? Изначально как бы понятно – идем в администрирование хранилища, нажимаем удалить. Получаем выделенного серым цветом, “неактивного” пользователя. Но, он так и остается присутствовать в списке. При этом, никаких связей с базами у него нет и не было. Его как-то можно убрать из списка?
Добрый день!
Такой штатной возможности нет. При удалении пользователя хранилища он как бы помечается на удаление. Предполагаю, это сделано для того, чтобы не анализировать всю историю хранилища, проверять, были ли операции от имени удаляемого пользователя. То есть из соображений производительности. История хранилища может быть объемная, поиск ссылок на удаляемого пользователя может занять много времени. Поэтому просто выставляется “пометка удаления” для пользователя, даже если это только что созданный пользователь, который и не подключался ни разу к хранилищу.
Добрый день. Подскажите, можно ли “подлить” файлы из подкаталога pack в другое (новое) хранилище идентичной конфигурации (при использовании режима совместимости “не использовать”)?
Добрый день!
Я бы не стал так делать, потому что формат хранения закрыт, не документирован. Опасаюсь, что данные можно потерять после ручного вмешательства в набор файлов из папки.
Добрый день, Василий.
раза три прочитал, но так и не разобрался. Подскажите, пожалуйста.
в папке pack есть много пар файлов pck-ind. они возникают при нажатии кнопки “оптимизировать”, как следует из статьи. можно ли все удалить и оставить только последнюю пару? а то папка занимает 9Гб. много.
и самое главное – у нас объём файла 1cv8ddb приближается к 4Гб. не разобрался по статье – это ничего страшного или какие надо предпринять действия для того, чтобы в один момент не получить “нет места для помещения”?
Спасибо
Добрый день!
1. Не стоит вручную удалять архивы в папке pack.
Можно использовать функцию сокращения хранилища до определенной версии. Тогда предыдущие версии будут удалены, останутся только актуальные.
На партнерском форуме находил следующее пояснение:
Оставить историю изменений, но удалить данные нельзя.
Оптимизация хранилища может сократить размер архивов (pack-файлов). Но есть несколько условий:
– количество архивов должно превысить 50
– в истории хранилища не должно остаться версий объектов, которые лежат в этих архивах.
Т.е. другими словами, если при достижении количества архивов в 51, выполнить сначала операцию “Сократить до версии”, а затем выполнить оптимизацию хранилища, размер архивов должен сократиться.
Т.е. после выполнения оптимизации хранилища все архивы в папке pack – нужные.
2. Предел в 4 Гб существует не на файл целиком, а на размер любой таблицы в этом файле. Доступа к самим таблицам этого файла нет. Поэтому в общем случае трудно сказать, закончилось ли свободное место внутри файла или оно еще присутствует.
Для уменьшения занимаемого места и ускорения работы с хранилищем можно попробовать выполнить сокращение хранилища или вообще пересоздать хранилище заново.
Спасибо за моментальный и обстоятельный ответ. Всё стало ясно.
Здравствуйте. Можно ли организовать частичный доступ к объектам конфигурации? Т.е. выделить хранилище, в котором будет типовая конфигурация и небольшая часть добавленных объектов (справочники, обработки, регистры). Цель – не давать доступ ко всей конфигурации на скачивание и просмотр, но пользоваться преимуществами совместной разработки и использования версий.
Сейчас вижу только один вариант решение этой проблемы – выделить отдельную самостоятельную базу, удалить из нее все лишнее, отдать второму разработчику и вносить изменения вручную, через сравнение-объединение.
Добрый день!
Нет, при помощи хранилища обеспечивается совместный доступ к конфигурации в целом. Нельзя часть объектов включить в хранилище, а часть – не включать.
Так что вариант с отдельной базой выглядит вполне рабочим.
Спасибо за статью. Есть вопрос – надо ли расшаривать папку с хранилищем конфигурации? У второго программиста возникает ошибка при подключении: Ошибка соединения с хранилищем конфигурации по адресу:
C:\Base…
по причине:
Ошибка режима доступа к файлу базы данных ‘C:/Base…/1cv8ddb.1CD’
Добрый день!
Да, нужно. Для всех пользователей, которые будут работать с хранилищем, нужно предоставить доступ в каталог на чтение и запись.
Спасибо. Это важно!
Здравствуйте! Подскажите, а как можно удалить из хранилища то что не нужно обновлять? Один из разработчиков поместил в хранилище изменения для объекта, потом выяснилось что в рабочей базе это обновление не нужно применять. В рабочей базе данные из хранилища ещё не были получены.
Добрый день!
Конфигурацию в базе разработчика сохраняем в файл. Это будет резервная копия доработок.
Затем в базе разработчика захватываем ошибочно измененные объекты, приводим их к тому виду, как должно быть. Можно использовать сравнение-объединение с эталонным cf-файлом.
Отредактированные объекты помещаем в хранилище. Получается, что после этих действий в хранилище содержатся все нужные доработки.
1) Скажите, что происходит при выполнении команды “Объединить версии”?
а) программа только оставляет последнюю и удаляет старые, отмеченные к объединению
б) или в каких-то случаях происходит именно объединение: объектов или кода обработок?
2) что происходит при выполнении команды “Сократить до версии”?
3) Откатить до версии, надеюсь правильно понимаю, что все поздние версии удаляются и остается та, до которой откатывались?
Добрый день!
1. Обратите внимание, что пункт Объединить версии доступен только для двух (или нескольких) соседних версий. Если выделить не соседние версии (например, 10, 15 и 16), то этот пункт меню будет недоступен.
Поэтому объединения кода не произойдет, для одного и того же объекта, измененного в нескольких версиях, будет взят последний вариант.
Пример 1:
В версии 3 в конфигурацию был добавлен Справочник1.
В версии 4 был отредактирован модуль Документа2.
При объединении версий в хранилище останется только версия 4, в ней будет добавлен Справочник1, изменен модуль Документа2.
Пример 2:
В версии 3 был отредактирован модуль Документа1.
В версии 4 тоже были внесены изменения в модуль Документа1.
При объединении версий в хранилище останется только версия 4, в ней будет измененный модуль Документа1 из версии 4.
2. При выполнении команды Сократить до версии все версии с меньшими номерами будут удалены из истории хранилища (пример использования – удаляем старые, уже ненужные, неактуальные версии, чтобы уменьшить хранилище).
3. Да, при выполнении команды Откатить до версии все версии с большими номерами будут удалены из истории хранилища (пример использования – удаляем ошибочные версии, которые были помещены в хранилище).
Здравствуйте.
Подскажите, а стоит ли использовать хранилище в таком варианте:
Есть 5 баз 1С Бухгалтерия 3.0, в конфигурациях включена возможность изменения.
Но конфигурации на 99,9 % типовые.
Разработчик один.
Стоит создать хранилище и обновлять эти базы через него ?
Идея в том, чтобы упростить обновление этих баз.
Обновить одну базу, (расставить галочки, принять решения обновлять модули и т.п.),
а остальные обновить из хранилища.
Добрый день!
Если во всех пяти базах конфигурация должна быть абсолютно одинакова, содержать одинаковые доработки, то да – логично использовать хранилище конфигурации. Тогда можно будет обновить одну базу, протестировать, поместить изменения в хранилище, а во всех остальных получить изменения из хранилища, а не выполнять обновление каждой из баз.
Добрый вечер! Как выяснить, где физически расположено хранилище конфигурации, если был утерян путь? Сначала понять, на каком сервере, а далее – в поиск имя файла хранилища – 1cv8ddb.cd?
Добрый день!
Да, искать по имени файла 1Cv8ddb.1CD.
Добрый день ! А в каком-нибудь курсе у вас есть уроки про работу с хранилищем? Также интересует, есть ли где-то в курсах про механизмы отладки ?
Добрый день!
Про использование хранилища есть небольшое занятие в курсе Разработка расширений и технологии доработки конфигураций 1С без снятия с поддержки. Говорим, как лучше организовать работу с хранилищем. Также в этом курсе есть видеоуроки о совместной разработке расширений при помощи хранилища конфигурации.
И в этом же курсе есть материалы про отладку внешних печатных форм и про отладку громоздких запросов.
В курсе
Администрирование систем на 1C: развертывание, автоматизация, управление пользователями и поддержка систем на 1С:Предприятие 8 разбираем технические моменты организации удаленной работы с хранилищем по протоколу TCP в рамках локальной сети, а также по протоколу HTTP через веб-сервер при использовании Apache и IIS.
спасибо!
Пожалуйста!
Интересного обучения!
Доброго дня!
При попытке получения данных из хранилища возникает ошибка:
“Объект в хранилище конфигурации не обнаружен.”
Удалось выяснить, что ошибка возникает при получении обработки, в которую была добавлена табличная часть.
Приходилось ли сталкиваться с такой ошибкой?
Добрый день!
Сообщение “Объект в хранилище конфигурации не обнаружен” скорее всего говорит о том, что файл базы данных хранилища поврежден.
Можно попробовать протестировать файл базы данных при помощи утилиты chdbfl.exe. Не забывая при этом делать резервную копию.
Дело в том, что с описанной ошибкой столкнулся только 1 пользователь из более чем 20. Остальные продолжают работать в штатном режиме.
Причем удалось даже найти объект при получении которого возникает ошибка. И вновь все остальные пользователи не сталкиваются с проблемой.
Тогда дело может быть в кэше.
Попробовать очистить локальный кэш метаданных.
В папке с хранилищем есть подпапка Cache с кэшем версий. Возможно, какой-то из файлов кэша повредился. Попробовать очистить кэш версий хранилища.
Еще вариант – отключиться от хранилища и заново к нему же подключиться.
Переподключение помогло. Благодарю!
Пожалуйста!
Интересного обучения!
здравствуйте, подскажите, сейчас у нас действующее хранилище работает в режиме совмещения, хотим переключить на “не использовать”, но в вашей статье написано что понадобится утилита cnvdbfl, разве ее нужно применять? можно ли подробнее узнать как правильно выполнить переход хранилища на режим “не использовать” ?
Добрый день!
Существует две различные настройки – режим совместимости хранилища (им можно управлять из конфигуратора в окне администрирования хранилища) и формат хранения самого файла хранилища с расширением 1CD (это уже настройка на низком уровне – на уровне самого файла, страниц в базе данных).
Если нужно поменять только режим совместимости, то это действие выполняется из конфигуратора.
Если же нужно изменить формат файла с хранилищем, то здесь надо воспользоваться утилитой cnvdbfl. Такая конвертация на низком уровне может быть полезна для объемного хранилища, которое содержит большое количество версий (пример – доработка ERP).
В любом случае до начала операции преобразования обязательно следует сделать резервную копию каталога с хранилищем.
Работаем с хранилищем на платформе 8.3.12.1685. Работали месяца 2 нормально, потом при очередном добавлении изменений в хранилище и последующим сравнении объединении конфигурации с хранилищем выпадает в ошибку “Ошибка получения информации об устройстве отображения”. В чем может быть проблема?
Добрый день!
Не сталкивался с подобной ошибкой.
Из наиболее похожего, что удалось найти, – возможно, проблема с драйверами видеокарты:
https://its.1c.ru/db/metod8dev/content/4138/hdoc
Добрый день.
Подскажите решение такой проблемы: база 8.3 в режиме совместимости 8.2.13, один из разработчиков пишет в общем модуле код, ссылаясь на предопределенный элемент справочника, сам справочник так же редактирует (добавляет в него этот предопределенный элемент). Помещает всё в хранилище. При получении конфигурации из хранилища в рабочей базе код с ссылкой на предопределенный элемент переносится, а сам элемент нет. Приходится дополнительно получать сам справочник и тогда всё работает. Почему-то не работает рекурсивное получение для предопределенных элементов?
Добрый день!
Не сталкивался с таким поведением системы. Как вариант – попробуйте в меню Конфигурация – Хранилище – Обновить конфигурацию из хранилища. Эта команда должна все изменения забирать из хранилища.
Здравствуйте, Василий!
Подскажите, есть ли разница как получать измененные объекты из хранилища?
Я всегда использую Конфигурация – Хранилище – Обновить конфигурацию из хранилища.
Вроде бы проблем не было. Коллеги делают иначе: получают корень, включая рекурсию.
При этом слышал жалобы, что что-то не подтянулось. Не часто. Пару раз за год. Я не нашел подробных описаний от 1С в чем разница этих методов. Она есть?
Добрый день!
У меня точно такая же ситуация.
Пару раз сталкивался, что при рекурсивном получении изменений из корня что-то не приходило в мою локальную базу для разработки. С чем это связано – не выяснил. Стал использовать команду Обновить конфигурацию из хранилища. И таких проблем больше не возникало. Не знаю, связанные это вещи или совпадения, но теперь применяю команду Обновить конфигурацию из хранилища.
Тоже искал описание отличий этих приемов. Но не нашел. Логически кажется, что должно выполняться одинаково, но подтверждений или опровержений этому не нашел.
Добрый день!
Можете подсказать?
Очень медленно происходят захваты и помещения из/в хранилище по 15-20 мин.
С чем это может быть связано? В какую сторону копать?
Платформа 8.3.11.3034. Режим совместимости стоит: не использовать. Делали оптимизацию хранилища.
Добрый день!
Проверьте, где физически расположено хранилище. Возможно, это сетевая папка, медленный сетевой диск. Тогда попробуйте переместить для теста папку с хранилищем на локальный диск. Если скорость работы с хранилищем возрасла, значит, дело в меленной сети.
Мне несколько раз помогала оптимизация хранилища, становилось быстрее.
Также можно попробовать пересоздать хранилище с нуля и проверить, возрастет ли скорость.
Возможно, в хранилище расположено уже очень большое количество версий, тогда можно попробовать сократить хранилище, оставив только актуальные версии, предварительно сделать резервную копию папки с хранилищем.
В папке с хранилищем есть подпапка с кэшем версий. Возможно, какой-то из файлов кэша повредился, стал некорректным, отрицательно сказывается на скорости работы. Попробовать очистить кэш.
Добрый день.
С хранилищем работает несколько разработчиков.
Каждый из них добавил новые объекты конфигурации и поместил их в хранилище. В рабочую конфигурацию на текущий момент необходимо добавить лишь некоторые из новых объектов. Как это правильно сделать?
Добрый день!
В таком случае есть смысл не подключать рабочую базу к хранилищу для разработчиков. Разработку вести в хранилище, выгружать из него cf-файл, при помощи сравнения-объединения с cf-файлом перенести выборочно доработки в рабочую базу.
Подскажите, пожалуйста, есть ли способ обновить одно хранилище из другого?
Добрый день!
Да. Для этого из первого хранилища сохраняем конфигурацию в cf-файл.
В базе, подключенной ко второму хранилищу, выполняем сравнение-объединение с полученным cf-файлом.
Добрый день! помогите пожалуйста. Работаю с хранилищем, захватила Документ и Подсистему. Хочу добавить документ в подсистему. Но галочка не устанавливается )
Добрый день!
Не воспроизводится. Использую демо-конфигурацию “Управляемое приложение” фирмы “1С”. Создаю новое хранилище, захватываю в него подсистему Предприятие и документ Заказ. Открываю окно свойств этого документа, на закладке Подсистемы могу установить галочку напротив подсистемы Предприятие, которая захвачена в хранилище. Остальные галочки недоступны, т.к. соответствующие подсистемы не захвачены в хранилище.
Добрый день.
При выполнении операции сокращения все объекты конфигурации должны быть помещены в хранилище?
Добрый день!
Явно такого требования не встречал. Лучше всё поместить, сделать резервную копию хранилища, всем временно не работать с хранилищем.
Добрый день.
Добавила новая возможность, указать максимальный размер КЭШа. Подскажите как это влияет на работу хранилища, что будет если КЭШ превысит этот размер ?
Спасибо
Добрый день!
Кэш предназначен для ускорения работы с хранилищем. При выполнении операции с хранилищем (открытие версии конфигурации в хранилище, сравнение версий конфигурации в хранилище, выборочное сравнение объектов конфигурации в хранилище и т.д.) система сначала анализирует кэш. Если в кэше нужная версия не была найдена, выполняется получение требуемой версии непосредственно из хранилища.
Если в процессе работы размер кэша превысит установленный максимальный размер, будут автоматически удалены самые старые версии в количестве 50% от размера кэша.
Добрый день! Интересует следующий вопрос, необходимо перенести хранилище с инфраструктуры подрядчика на свои мощности, достаточно ли будет выполнить обычное копирование файлов хранилища и их дальнейшее подключение.
День добрый!
Да, этого будет достаточно. Желательно еще провести отключение пользователей от хранилища перед копированием.
Добрый день. Столкнулся с такой проблемой – при создании нового хранилища, на стадии “Формирование объектов для хранилища конфигурации” появляется ошибка:
Runtime Error
the application has requested the runtime to terminate it in an unusual way
База файловая, платформа 8.2.19.130, ОС Windows 7, свободный объем на диске C – 86 гб, RAM 12 гб.
Как можно решить подобную проблему?
Добрый день!
Возможно, база повреждена, поэтому не получается сформировать новое хранилище. Попробуйте протестировать базу из конфигуратора, воспользоваться утилитой chdbfl.exe.
Добрый день, столкнулись с проблемой. Конфигурация УПП платформа 8.3.9 Режим совместимости конфигурации 8.2.13. Хранилище из режима совместимости 8.3.2 пытаемся перевести в режим “не использовать” при этом возникает сообщение “Для установки режима совместимости хранилища версии объектов конфигурации должны соответствовать версиям объектов в хранилище”. С чем связано такое сообщение и как выйти из этой ситуации?
Добрый день!
Не сталкивался с такой ошибкой. Попробуйте перевести для начала режим совместимости в значение Версии 8.3.3 – 8.3.5, а только потом – в значение Не использовать.
Также попробуйте очистить кэши. Еще один вариант – попробуйте во всех подключенных к хранилищу базах все захваченные объекты поместить в хранилище, а затем – получить все изменения из хранилища, чтобы информация в хранилище синхронизировалась с основной конфигурацией.
Добрый день. Спасибо за статью.
Подскажите, пожалуйста, будет ли верным следующий подход:
1. Есть рабочая база А (клиент-серверный вариант)
2. Выгружаю (А) в файловую копию (Б)
3. В базе (Б) создаю хранилище (Х)
4. Создаю (В) для разработки и подключаю к Хранилищу(Х)
5. делаю необходимые доработки. В процессе регулярно обновляю хранилище и (Б).
6. по завершению всех доработок:
– (Б) отключаю от Хранилища(Х)
– (А) подключаю к Хранилищу(Х), при условии, что при доработке не выполнялось удаления элементов мет.данных.
тем самым единожды переношу доработку на боевую базу.
Далее если необходимы следующие доработки, то (Б) подключаю к Хранилищу(Х) и продолжаю по той же схеме.
Можно ли организовать работу по такой схеме ? На сколько это будет корректно или нет? С какими проблемами можно столкнуться?
Добрый день!
Да, можно организовать работу по такой схеме.
В таком случае все базы (и рабочая, и отладочные) будут подключены к одному и тому же хранилищу. Можно не отключать базу Б от хранилища. Также хранилище можно сразу создавать на основании конфигурации рабочей базы. В рабочую базу из хранилища забирать только те доработки, которые полностью завершены и протестированы, чтобы в рабочую базу не попал незаконченный нерабочий функционал.
Также важно отключить в отладочных базах регламентные задания (выгрузку на сайт, в другую базу и т.д.), чтобы из копии базы тестовые данные не ушли на рабочий сайт компании или в другую базу.
Василий, спасибо большое.
Не сразу заметила ответ, даже расстроилась подумав, что мой вопрос не прошел модерацию.
Здравствуйте, Василий! Буду очень благодарен, если поможете. При попытке обновления нетиповой базы появляется сообщение: “Невозможно обновление объектов. Выполение обновления конфигурации приведет к снятию данных с поддержки.Повторите обновление после обеспечения доступности объектов для редактирования”. Я так понимаю, данные объекты были когда-то кем-то захвачены в хранилище. Подскажите, пожалуйста, как можно решить эту проблему?
Добрый день!
При обновлении необходимо, чтобы все объекты конфигурации были захвачены в хранилище.
Все изменения из баз разработчиков предварительно должны быть помещены в хранилище (либо нужно отменить захват в хранилище этих объектов). После этого нужно захватить в хранилище рекурсивно все объекты конфигурации и выполнить обновление.
То есть нужно создать свое хранилище и в нем захватить все объекты?
Хранилище одно, оно общее для всех разработчиков. И база каждого из разработчиков подключена к общему хранилищу. Это дает возможность вести параллельную разработку. Но каждый объект в конкретный момент времени может захватить только один разработчик.
Большое спасибо!
Добрый день! Василий, если можно вопрос такой у меня.
Работа с хранилищем проходит очень медленно. Например, сохранить изменения (Ctrl+S) занимает порядка 20 сек, это при том, что разработчик постоянно (машинально) нажимает комбинацию клавиш для сохранения изменений. Захват/отпуск объектов тоже проходит долго, до 40 сек. один объект. Вариант работы серверный (на локальном ещё дольше работает). Не подскажите куда “рыть”, чтобы как-то оптимизировать работу? Может это от размера конфигурации как-то зависит? У нас УПП доработанная, достаточно сильно, много документов, отчетов и т.д., может это влияет?
Добрый день!
По описанию похоже, что здесь несколько проблем одновременно. Потому что при сохранении изменений не происходит записи в хранилище, только при помещении объекта в хранилище, получении объекта из хранилища и т.д. Поэтому я бы попробовал вести поиски в двух направлениях – локальная работа (без хранилища) и скорость работы с хранилищем. Можно тренироваться на копии базы. Отключить от хранилища, проверить, как работается по скорости одному пользователю. Возможно, ускорить операции поможет использование быстрого SSD-диска. Затем смотреть работу с хранилищем. Из копии базы сделать новое хранилище. Оно не будет включать все версии, будет относительно небольшим по размеру, поэтому на нем может ощущаться разница в скорости. Попробовать разные варианты размещения хранилища – локальный диск, сетевое расположение, работа по протоколу HTTP через веб-сервер.
Также можно посмотреть режим совместимости хранилища. В платформе 8.3 были изменения в этом направлении, работа с хранилищем ускорилась по сравнению с 8.2.
Добрый день, Василий!
Мы уже перешли на хранилище 8.3, это кстати ускорило процесс формирования снимка.
“…Потому что при сохранении изменений не происходит записи в хранилище, только при помещении объекта в хранилище, получении объекта из хранилища и т.д.” – что странно, когда мы отключаем базу от хранилища, скорость сохранения изменений становится нормальной, где-то 2-5 сек. Может всё-таки есть некий обмен с базой хранилища?
Иногда получается ускорить работу, такими действиями:
1) Накрываем базу которая подключена к хранилищу рабочей базой; 2) После этого, чистим КЭШ (КЭШ базы а не хранилища);
3) Потом подключаемся к нашему хранилищу через tcp. После этого начинает работать нормально и даже объекты захватываются/переносятся быстро. Только это не всегда помогает. Вообщем какая-то мистика.
Спасибо за Ваши комментарии.
Добрый день!
Не встречал в документации упоминания, что при сохранении в базе объекта происходит запись в хранилище. По логике все изменения должны быть только в базе для разработки. А при помещении сравнивать измененные объекты (или, например, контрольные суммы объектов), если изменения были, то помещать новую версию в хранилище.
Максим, столкнулся с подобной проблемой. Я так полагаю это платформенный косяк. В качестве временного решения можно работать с закрытым хранилищем, после захвата объектов выполнить: “Конфигурация->Хранилище конфигурации->Закрыть хранилище” То есть хранилище должно быть открыто только тогда когда совершается захват или помещение объектов
Добрый день.
Статья очень полезная.
Подскажите, если знаете, как программно узнать последнюю версию конфигурации хранилища?
Точнее, задача состоит в следующем: нужно программно периодически отслеживать, были ли коммиты, т.е поместил ли кто-нибудь в хранилище новые изменения. Как вариант решения, я думаю сравнивать текущую версию хранилища с предыдущей версией.
Но как программно узнать текущую версию хранилища?
Добрый день!
На данный момент нет программного интерфейса, который позволял бы работать таким образом с хранилищем конфигурации.
Здравствуйте, Василий!
Спасибо за статью!
Платформа 8.2. Выдается ошибка при попытке помещения объекта в хранилище конфигурации.
“по причине:
Превышен максимально допустимый размер внутреннего файла”
Сокращение версий не уменьшает размер файла. Возможно ли выполнить оптимизацию хранилища на версии платформы 8.2 ? В окне “Администрирование хранилища” нет закладки “Прочие”.
Пишу по факту: после сокращения версий размер файла не уменьшился, но изменения в хранилище поместить удалось :) Ура! :)
Еще раз спасибо за статью!
Добрый день!
Оптимизацию хранилища нельзя выполнить под платформой 8.2.
Что касается уменьшения размера файла, то скорее всего данные не удаляются физически, а просто помечаются как “свободные”, незадействованные, поэтому получается сохранить новые данные.
Подобное поведение наблюдается и у обычной файловой базы 1Cv8.1CD.
Подскажите, пожалуйста, как узнать путь к хранилищу к которой подключена конфигурация? Есть несколько хранилищ и множество баз. При попытке подключения пишет “Конфигурация связана с другим хранилищем”. Как узнать с каким?
Добрый день!
Если произведено подключение к хранилищу, то адрес текущего хранилища, к которому произошло подключение, можно узнать через меню Конфигурация – Хранилище конфигурации – Хранилище.
Дело в том, что к одному и тому же хранилищу из одной и той же базы можно подключиться по-разному: по сети, по протоколам TCP или HTTP. И путь к хранилищу в этих случаях будет различный, хотя по факту это одно и то же хранилище. Так что предполагаю, что хранится и проверяется не сам путь, а какой-то идентификатор.
Добрый день!
Такая ошибка при подключении к конфигурации (8.3.8.2137):
“База данных не открыта” (Завершить работу / Перезапустить…)
В режиме Предприятие открывается.
Куда копать?
Замечено, что неактивен пункт меню “Закрыть хранилище” и, наоборот, активен “Открыть хранилище”. “Открыть хранилище привело к этой же ошибке.
Добрый день!
Предполагаю, что возникли проблемы с файлом хранилища. По сути хранилище – это файловая база, поэтому система и пишет, что база не открыта.
Можно попробовать подключиться к этому же хранилищу с другого компьютера, из другой базы. Если по-прежнему возникает ошибка, то скорее всего хранилище нужно будет пересоздать.
День добрый, не подскажете куда смотреть при поппытке оптимизации выходит такая ошибка:
“Ошибка перемещения файлов из ‘\\IPсервера\путькпапке\data\objects’ в ‘\\IPсервера\путькпапке\rm\objects’ : Ошибка доступа к файлу
”
При этом спокойно помещает и “достает” файлы из хранилища!
Добрый день!
Подобное сообщение об ошибке встречал на партнерском форуме. Но там проблема была не с хранилищем, а с файлами кластера серверов, но с таким же сообщением. Файл был открыт другим приложением. При помощи утилиты ProcessExplorer было найдено стороннее приложение, которое “держит” файл. После этого ошибка не возникала.
У меня аналогичная ситуация возникла, когда я пытался оптимизировать хранилище в тот момент, когда другой разработчик был также подключен к хранилищу (сидел в конфигураторе базы, подключенной к хранилищу). Просто выгнал его из базы, чтобы в подключениях кроме меня никого не было, и оптимизация пошла.
Добрый день.
Подскажите, пожалуйста, при переводе хранилища в режим совместимости “Не использовать” не понадобится ли отключать режим совместимости у самой базы?
И еще может у Вас есть опыт в решении такой проблемы:
В регистре ведомостей удалилось несколько измерений и добавилось несколько ресурсов. Теперь при помещении даного регистра в хранилище система просит получения определенной роли. Но при получении этой роли система хочет получить из хранилища этот измененный регистр, он я думаю при этом перезатрется. Не захватить, не получить из хранилища эту роль без получения регистра у меня не получается. Регистр уже втянут в центральную базу и заполнен. Можно както выйти из такой ситуации без создания нового хранилища?
Добрый день!
Нет, изменять режим совместимости у самой конфигурации не нужно.
Можно сохранить конфигурацию базы для разработки, подключенной к хранилищу, в cf-файл. В этом файле будут все изменения, которые еще не помещены в хранилище. После этого отменяем захват объектов в хранилище и получаем все изменения из хранилища. После этого в нашей базе конфигурация будет полностью соответствовать актуальной версии из хранилища. При помощи сравнения-объединения переносим необходимые изменения из предварительно сохраненного cf-файла, помещаем их в хранилище.
Спасибо за ответ на первый вопрос.
По второму вопросу: У меня в регистре добалено новые поля и заполнены. После отмены захвата объектов и поледующего сравнения-объеденения с сохраненным cf-файлом данные в новых полях разве останутся?
Нет, не останется. Если есть какая-либо обработка, которая заполняет по определенной логике эти поля, то можно будет запустить ее повторно. Еще вариант решения – при помощи конвертации данных выгрузить данные этого регистра в файл, затем после обновления конфигурации загрузить данные из файла.
Добрый день!
Подскажите, пожалуйста, можно ли после оптимизации хранилища удалять файлы из подкаталога pack? Со временем этот подкаталог стал занимать очень много места и хочется его как-то уменьшить. Сокращение хранилища до определенной версии на общий занимаемый размер никак не влияет.
Добрый день!
В этих файлах находятся версии объектов и внешних свойств конфигурации, при удалении этих файлов невозможно будет получать версии конфигурации, структура хранилища будет нарушена.
Оставить историю изменений, но удалить данные нельзя. Оптимизация хранилища может сократить размер архивов (pack-файлов). Но есть несколько условий:
– количество архивов должно превысить 50;
– в истории хранилища не должно остаться версий объектов, которые лежат в этих архивах.
Т.е. если при достижении количества архивов в 51 выполнить сначала операцию “Сократить до версии”, а затем выполнить оптимизацию хранилища, размер архивов должен сократиться.
Добрый день. Не подскажете, как решить проблему с “вечно измененными объектами”? При каждом сравнении и объединении рабочей базы (не подключена к хранилищу) с cf, получаемым из тестовой базы, подключенной к хранилищу, появляются одни и те же объекты, как будто измененные – хотя их никто не трогал…
Тут
http://www.itland.ru/forum/index.php?showtopic=24536
пишут “уничтожаем хранилище, берем последнюю выгрузку рабочей базы, загружаем ее в одну из тестовых копий базы, и из этой копии создаем новое хранилище” – как-то радикально. Можно ли решить проблему проще, без пересоздания хранилища?
Добрый день!
Похоже, что получилась рассинхронизация идентификаторов объектов метаданных в основной базе и в хранилище в результате какой-то операции. Поэтому я бы пробовал такой кардинальный способ, при помощи повторного создания хранилища.
Платформа 1С 8.3.7.1917 + сервер хранилищ той же версии.
При работе с хранилищами неожиданно начали возникать проблемы. При выполнении любой операции со всеми хранилищами (захват, помещение в хранилище, просмотр версий, очистка кеша) выскакивает следующая ошибка:
Неклассифицированная ошибка работы с хранилищем конфигурации.
по причине:Ошибка установки соединения
по причине:server_addr=tcp://12.12.12.4:1642 descr=12.12.12.4:1642:10060(0x0000274C): Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.; line=1040 file=src\DataExchangeTcpClientImpl.cpp
Файлы хранилища, базы для разработки, сервер хранилища – всё физически находится на одном сервере. Перезапуск служб сервера 1С и сервра хранилищ не помогает.
Что может быть? Как решить проблему?
Добрый день!
Первым делом проверьте, что служба сервера хранилища после запуска работает, т.е. не завершается с ошибкой сразу после запуска. Также проверьте порт, на котором работает сервер хранилища. Он не должен быть занят другим приложением. Также, например, файрвол может блокировать порт.
Также была опубликована ошибка платформы 10156283 со схожим описанием:
При работе через веб-сервер сервер хранилища аварийно завершает работу и перезапускается.
Возможно, у вас проявляется подобная ошибка. Указано, что она исправлена в платформе 8.3.8.1451 (для тестирования). Попробуйте на другом релизе платформы.
Мне осталось непонятным как вписывается тестирование в общую схему: разработкой занимается разработчик на своих данных, тестированием – тестирование на своих данных. По сути тестирование должен подтвердить перенесённых изменений и только после этого их можно переносить в продуктов…
Разработчик реализовал определенные алгоритмы, отладил на своих данных, поместил в хранилище. Затем тестировщик получает изменения из хранилища, проверяет доработки на своей базе. После подтверждения корректности изменения можно переносить в рабочую базу.
Спасибо. Данная статья помогла мне спасти хранилище. При подключении конфигуратор писал “база данных не открыта” закрыть, перезапустить. Чистка кэша не помогла. Помогло переименование папки с хранилищем, после первого же удачного подключения перевел на 8.3
Пожалуйста.
Рад, что материал оказался полезным.
Подскажите, работаем с хранилищем на платформе 1с 8.2.19.130. Планируем переходить на платформу 1с 8.3. Что нужно сделать, что бы перевести хранилище с платформы 8.2 на 8.3?
Добрый день!
Сделать резервную копию хранилища конфигурации. Зайти в конфигуратор, подключенный к хранилищу, под платформой 8.3 монопольно, чтобы в хранилище не было других пользователей.
Есть ли возможность использовать хранилище конфигураций для расширений конфигураций?
Добрый день!
Возможность создания хранилища для расширений на текущий момент не предусмотрена.
Спасибо.
Как правильно подключить к хранилищу Центральный узел РИБ?
Добрый день!
Подключение центрального узла РИБ к хранилищу выполняется как и подключение обычной базы. В конфигураторе в меню выбираем Конфигурация – Хранилище конфигурации – Подключиться к хранилищу.
Очень подробная и полезная статья, спасибо! Очень помогла для понимания резервного копирования хранилища.
Большое спасибо!
Очень классная статья!
Многое знаю про хранилище, активно пользуюсь им, но узнал также и много нового. Особенно по части нововведений в версии 8.3.3
Очень хорошие и полезные статьи! Спасибо!
Статья очень помогла в долгожданном принятии решения об использовании хранилища. Спасибо, Василий, за хорошую статью!
Очень полезная и подробная статья. Спасибо!