→ 1с хранилище конфигурации как изменить захваченный объект. Работа с хранилищем конфигурации

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

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


Решение ошибки формата хранилища данных

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


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

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

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

1. Настройка каталога баз данных хранилища конфигураций

Сервер хранилища конфигураций следует устанавливать на том же компьютере, где будут располагаться файлы баз данных хранилища. Поэтому прежде всего определим центральный каталог сервера, в котором будут храниться файлы всех хранилищ, которых будет обслуживать данный сервер. Пусть в рамках данной статьи это будет каталог C:\1C_BASE\repository\ . Также следует определить учетную запись Windows, из под которой будет происходить запуск соответствующей службы. Можно создать , или использовать существующую учетную запись Windows. В данном примере будем использовать локального пользователя USR1CV8 с паролем UsrPass8 . Необходимо для данного пользователя на центральный каталог сервера хранилища конфигураций.

2. Установка файлов сервера хранилища конфигураций

На момент написания статьи сервер хранилища конфигураций существовал только как 32-разрядное приложение. Поэтому для установки файлов сервера необходим 32-разрядный дистрибутив системы «1С:Предприятия» 8.3 для Windows. Запускаем файл 1CEnterprise 8.msi из дистрибутива поставки 1С. На странице выбора компонент выбираем компоненту «Сервер хранилища конфигураций 1С:Предприятия » (1C:Enterprise configuration repository server), а также запоминаем путь установки компоненты.

3. Регистрация и запуск службы сервера хранилища конфигураций

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

Crserver.exe -instsrvc | -rmsrvc -usr <пользователь> -pwd <пароль> -start | -stop -port <порт> -d <каталог>

Параметры запуска сервера хранилища конфигураций crserver.exe сходны с :

Параметры запуска сервера хранилища конфигураций «1С:Предприятия»
Параметр Описание
-port <порт> Рабочий порт сервера хранилища. По умолчанию используется порт 1542 .
-d <каталог> Корневой каталог для хранилищ конфигурации. По умолчанию используется каталог %APPDATA%\1C\1Cv8\ .
-instsrvc Регистрация сервера хранилища как сервиса.
-rmsrvc Удаление регистрации сервера хранилища как сервиса.
-usr <имя>
-pwd <пароль>
Имя пользователя, от имени которого будет зарегистрирован сервис. Этот пользователь должен обладать правом Вход в систему как сервис (Log on as a service). Кроме этого, он должен обладать правами на чтение каталога исполняемых файлов соответствующей версии системы «1С:Предприятие» и полными правами на корневой каталог хранилища конфигурации (каталог %APPDATA%\1C\1Cv8\ или тот каталог, который указан в параметре —d ) и пароль для данного пользователя.
-start Запуск сервиса сервера хранилища.
-stop Остановка сервиса сервера хранилища.

Зарегистрируем новый сервис с помощью программы Windows PowerShell , запустить которую можно выполнив команду powershell (для этого необходимо нажать комбинацию клавиш Win + R, в появившемся окне «Выполнить » (Run) ввести имя команды в поле «Открыть » (Open) и нажать «ОК ») или кликнув по соответствующему ярлыку в панели задач.

В открывшейся консоли Windows PowerShell, для удобства ввода дальнейших команд перейдем в каталог bin каталога с установленными файлами «1С:Предприятия» выполнив команду

Cd "C:\Program Files (x86)\1cv8\8.3.5.1088\bin"

Затем, в рамках данного примера, выполним команду

.\crserver.exe -instsrvc -d C:\1C_BASE\repository -usr .\USR1CV8 -pwd UsrPass8

и запустим службу выполнив

.\crserver.exe -start

Перейдем в оснастку службы (запустить которую можно выполнив команду services.msc ) и убедимся что служба с именем 1C:Enterprise 8 Configuration Repository Server зарегистрирована и запущена.

5. Создание нового хранилища конфигурации

Как я уже говорил ранее, один сервер может обслуживать несколько хранилищ конфигурации. Файлы баз данных каждого из хранилищ должны располагаться в отдельном каталоге центрального каталога сервера хранилища конфигураций. Таким образом для создания нового хранилища, создадим в каталоге C:\1C_BASE\repository\ папку Accounting в которой будет располагаться файлы нового хранилища конфигурации.

Тогда для создания и подключения к данному хранилищу необходимо будет использовать строку tcp://WIN2012/accounting , где WIN2012 — сетевое имя компьютера, на котором установлена служба, либо строку tcp://192.168.0.10/accounting , где 192.168.0.10 , соответственно, IP-адрес данного компьютера. Подробно про создание нового хранилища можно прочитать в статье « ».

К созданному таким образом хранилищу также возможно будет подключаться и в обход сервера, например по пути C:\1C_BASE\repository\Accounting на текущем компьютере или по пути \\WIN2012\repository\Accounting если настроить общий доступ к каталогу C:\1C_BASE\repository на данном сервере.

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

Нояб 08, 2017 32638

Может возникнуть ситуация, когда 1С 8.3 не запускается и появляется ошибка - «Неверный формат хранилища данных» с указанием пути к файлу file c users config runtimecachestorage. Но, не стоит паниковать, ошибка неверного формата данных хранилища не такая редкая как может показаться на первый взгляд. Поэтому в данной статье давайте узнаем как исправить ошибку в 1С 8.3.

Причины появление ошибки "Неверный формат хранилища данных" в 1С 8.3

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

Что такое кэш 1С 8.3?

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

Как очистить 1С 8.3?

Файлы кэша хранятся в папке AppData, в профиле пользователя, под которым запускается программа 1С 8.3. Проще всего её открыть через команду Пуск \ Выполнить \ %userprofile%\AppData

Здесь нам нужно удалить все содержимое следующих папок:

AppData\Local\1C\

AppData\Roaming\1C\1cv8\

AppData\Roaming\1C\1cv82\

После выполнения операций удаления вновь запускам программу 1С Предприятие 8.3 и радуемся жизни.

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

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С-разработчики обходят стороной применения возможностей хранилища. Особенно, я не понимаю тех, кто трудится над разработкой одной конфигурации целой командой. Без хранилища конфигурации тут уже (ИМХО) совсем никак. Нет, можно конечно заниматься извращениями вроде копирования одной конфигурации всем разработчикам. Каждый начинает работать и реализовывать свою часть. По окончанию разработки, каждый из девелоперов должен синхронизировать свою конфу с той, что будет поставляться конечному клиенту.

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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


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

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


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

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

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

 

 

Это интересно: