Работа с хранилищем данных 1с 8. Хранилище конфигурации: создание и использование. Стандартные хранилища настроек

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

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

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

Стандартные хранилища настроек

Итак, по умолчанию, в конфигурации имеются следующие хранилища настроек:

  • ХранилищеВариантовОтчетов — для доступа к настройкам вариантов отчетов.
  • ХранилищеПользовательскихНастроекОтчетов — для доступа к пользовательским настройкам отчетов.
  • ХранилищеНастроекДанныхФорм — для доступа к пользовательским настройкам данных форм.
  • ХранилищеОбщихНастроек — для доступа к общим настройкам.
  • ХранилищеСистемныхНастроек — для доступа к системным настройкам.
  • ХранилищеПользовательскихНастроекДинамическихСписков — для доступа к пользовательским настройкам динамических списков.

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

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

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

Запись и получение настройки:

ХранилищеОбщихНастроек.Сохранить(НазваниеОбъекта, НазваниеНастройки, ЗначениеНастройки, ОписаниеНастройки, ИмяПользователя); ЗначениеНастройки = ХранилищеОбщихНастроек.Загрузить(НазваниеОбъекта, НазваниеНастройки, ОписаниеНастройки, ИмяПользователя);

Удаление лишней/ненужной настройки:

ХранилищеОбщихНастроек.Удалить(НазваниеОбъекта, НазваниеНастройки, ИмяПользователя);

Получение списка настроек:

СписокЗначенийНастроек = ХранилищеОбщихНастроек.ПолучитьСписок(ИмяОбъекта, ИмяПользователя);

Параметры «НазваниеОбъекта», «НазваниеНастройки» и «ИмяПользователя» должны строковой тип.

В базе данных, все настройки хранятся в отдельно таблице.

Хранилища настроек создаваемые программистом

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

  • необходимо перемещение настроек между базами данных;
  • необходим ссылочный контроль при хранении настроек;
  • требуется особая структура настроек 1С.

Хранилища настроек добавляют в соответствующем разделе конфигурации.

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

В остальном же, принципы работы с созданным хранилищем практически не отличается от работы со стандартными хранилищами настроек.

Доступ к созданному хранилищу можно получить таким образом:

ХранилищаНастроек.НазваниеХранилища.Загрузить();

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

Управляемые формы имеют два свойства:

  • Автоматическое сохранение данных — если выбрано значение «Использовать», то данные будут сохраняться автоматически в стандартное хранилище настроек данных форм;
  • Сохранение данных в настройках — если выбрано значение «Использовать список», то в окне реквизитов формы появится столбец «Сохранение», с помощью которого можно указать какие реквизиты формы должны сохраняться, а также появиться возможность выбрать хранилище настроек для этих данных.

На этом все, надеюсь данная статья Вам помогла.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Tcp://192.168.0.10/accounting

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Хранилище конфигурации в 1С 8.2 и 8.3 — это инструмент для групповой разработки решения, встроенный в платформу 1С: Предприятие 8. Хранилище позволяет вести многопользовательскую разработку решений неограниченным количеством пользователей. С его помощью можно увидеть полную историю разработки конфигурации и каждый шаг разработчиков в подробностях.

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

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

Так же в этой БД хранится информации о том, кем захвачен тот и или иной объект. Захват объекта — это метка, устанавливаемая разработчиком. Установленный захват позволяет избежать коллизий при групповой разработке. Пока объект захвачен, никто не может его редактировать.

Захватить можно как объект целиком (рекурсивно), так и отдельно объект или формы.

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

Как создать хранилище 1С

Создать хранилище достаточно просто, для этого необходимо выбрать в меню «Конфигурация — Хранилище конфигурации» пункт «Создать хранилище». В появившемся меню достаточно указать путь к будущему расположению хранилища и логин/пароль пользователя-администратора:

При создании сделайте обязательно резервную учетную запись с административными правами — очень часто это выручает.

Как подключиться к хранилищу 1С

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

Получите 267 видеоуроков по 1С бесплатно:

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

Администрирование хранилища конфигурации 1С

Для администрирования хранилища 1С необходимо выбрать в меню конфигурации следующий пункт — «Конфигурация — Хранилище конфигурации — Администрирование»:

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

Как просмотреть историю хранилища 1С

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

В истории хранилища 1С можно увидеть, когда, кем и что было изменено.

Разработка с хранилищем 1С 8.3

Работу с хранилищем условно можно разделить на основные действия:

  • конфигурации из хранилища конфигурации 1С;
  • обновить статусы хранилища 1С;
  • захват в хранилище;
  • помещение в хранилище.

Остановимся подробнее на каждом действии:

Обновить статусы хранилища 1С

Производит получение последних статусов объектов (захвачен или нет).

Вызывается: «Конфигурация — Хранилище конфигурации — Обновить статусы».

Обновление конфигурации из хранилища конфигурации 1С

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

Вызывается: «Конфигурация — Хранилище конфигурации — Обновить конфигурацию из хранилища».

Захват в хранилище конфигурации 1С

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

Произвести захват можно, вызвав правой кнопкой контекстное меню у объекта метаданных:

В открывшемся окне можно установить некоторые настройки:

  • Выполнять рекурсивно — позволяет захватить все подчиненные объекты — формы и т.д.
  • Разрешать получать захваченные — позволяет получать другим пользователям промежуточные версии объекта

Помещение в хранилище 1С

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

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

  • Выполнять рекурсивно — позволяет поместить все подчиненные объекты — формы и т.д.
  • Оставить захваченными — позволяет поместить «промежуточную» версию объекта, оставив при этом захват пользователем

Как добавить новый объект в хранилище 1С