Інтернет Windows Android

Сховище даних 1с 8.3. Робота зі сховищем конфігурації

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


Рішення помилки формату сховища даних

Щоб зустрітися з цією помилкою, зовсім не обов'язково допускати серйозні логічні похибки в коді або видаляти основний модуль. Часто після поновлення конфігурації, відкритті обробки, відключення електрики або перезавантаження комп'ютера при запуску 1С виникає цей неприємний сюрприз. Якщо перезавантаження не допомогла, не панікуйте - у поширеної помилки є прості рішення, Які можуть допомогти. Розбирати їх будемо за ступенем ускладнення:


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

Якщо ви вже запускали 1С та файли затерті, то спробуйте провести аналогічні дії на іншому комп'ютері, де запускалася обробка. Або скористайтеся утилітами для відновлення віддалених файлів на жорсткому диску.

Призначення об'єкта конфігурації «Сховище налаштувань» зрозуміло з назви - зберігати налаштування користувача. Область застосування даного об'єкта широка - в будь-який, хоч скільки-небудь серйозної конфігурації потрібно зберігати будь-які призначені для користувача настройки.

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

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

Стандартні сховища налаштувань

Отже, за замовчуванням, в конфігурації є наступні сховища налаштувань:

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

До кожного з цих сховищ можна звернутися як до властивості глобального контексту.

Стандартні сховище програміст може використовувати для своїх потреб, зберігаючи різні настройки в розрізі користувача, об'єкта і самої настройки.

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

Запис і отримання настройки:

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

Видалення зайвої / непотрібної налаштування:

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

Отримання списку налаштувань:

СпісокЗначенійНастроек \u003d ХраніліщеОбщіхНастроек.ПолучітьСпісок (ІмяОб'екта, ім'я користувача);

Параметри «НазваніеОб'екта», «НазваніеНастройкі» і «ім'я користувача» повинні строкової тип.

У базі даних, всі налаштування зберігаються в окремо таблиці.

Сховища налаштувань створювані програмістом

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

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

Сховища налаштувань додають у відповідному розділі конфігурації.

ключовою особливістю сховищ налаштувань, створених програмістом є необхідність ручного реалізації методів запису та отримання значень (Зберегти () і Завантажити ()). У цих методах програміст повинен описати збереження (в регістри відомостей, файли, довідники і тд.) І завантаження налаштувань за допомогою вбудованої мови.

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

Доступ до створеного сховища можна отримати таким чином:

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

Крім цього, створеними сховищами можна замінювати стандартні в різних об'єктах конфігурації і в самій конфігурації.

керовані форми мають дві властивості:

  • Автоматичне збереження даних - якщо вибрано значення «Використовувати», то дані будуть зберігатися автоматично в стандартне сховище налаштувань даних форм;
  • Збереження даних в налаштуваннях - якщо вибрано значення «Використовувати список», то у вікні реквізитів форми з'явиться стовпець «Збереження», за допомогою якого можна вказати які реквізити форми повинні зберігатися, а також з'явитися можливість вибрати сховище налаштувань для цих даних.

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

Nafa 647 14.01.10 02:27 Зараз в темі

Стаття корисна.
В роботі сховища дійсно дуже багато неочевидних речей, тому мої доповнення:
1. Якщо працюють кілька програмістів, то як варіант,
робочий день зазвичай починається зі следущего:
запускаємо свою базу в конфігураторі, на корені конфігурації правою кнопкою мишки - отримати з сховища, включаємо галочку "рекурсивно", тиснемо ОК. Після цього в конфігурацію отримуємо все, що напрацювали інші зі сховища. САМУ БД не оновлюється !!!
Далі бажаємо "порівняти конфігурацію з конфігурацією БД" - і бачимо список все змін зроблених іншими програмістами групи за попередній день. Якщо є питання по ізмененіям- звертаємося до того, хто їх робив.
Після того, як всі розібрали - зберігаємо в БД.
Чому не порівняти з конфігурацією сховища - по-перше щоб не показувалися ті об'єкти, над яким сам працюєш, по-друге це працює швидше.
2. В середині дня: термінові зміни (для динамічного оновлення) відправляємо в сховище відразу. Чи не термінові - після того, як змінимо все пов'язані об'єкти. (Див. Пояснення нижче)
3. В кінці дня (а якщо треба робити повне оновлення бази - то перед ним) здаємо в сховище все що можна.
Це не обов'язковий порядок, Але досить зручний.

4. Чому не поміщаємо відразу:
тому що цілісність змін контролюється 1С тільки там де є посилання. Тобто якщо наприклад ви зробили довідник "Автомобілі клієнтів" і додали посилання на нього в "видаткову накладну", то помістити "Видаткову накладну" в сховище Ви зможете тільки після (або одночасно) з довідником "Автомобілі клієнтів". Але якщо Ви наприклад використовували цей довідник в процедурі загального модулі, яка викликається при проведенні видаткової накладної, то цей загальний модуль в сховище спокійно поміститися без приміщення довідника. Якщо після цього інший програміст отримає цей модуль зі сховища, то в його базі видаткові накладні проводитися перестануть. (А якщо оновити основну базу - то і там перестануть).
І то ще хороший випадок - так як виникає просто помилка. А ось якщо Ви наприклад змінили тип реквізиту в документі з рядка на текст і в процедурі загального модуля була перевірка Якщо Реквізит \u003d "1" а стала Якщо Реквізит \u003d 1 і модуль в сховище помістили а документ - немає, то помилки не буде (привіт відсутності контролю типів), а значить у тих хто такий модуль отримає документи буде неправильно проводитися, (і добре якщо це буде не основна база). Тому зміни краще здавати в сховище "повним пакетом" (всі змінені по одній темі об'єкти), якщо щось потрібно Вам для іншої задачі - можна відразу ж захопити за новою або просто, поміщаючи в сховище, "залишити захопленим".

В цьому плані я не зовсім зрозумів:

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

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

І навіщо роботу в зовнішні файли вивантажувати теж не зрозумів.

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

5. Якщо потрібно додати новий об'єкт (документ, довідник тощо), то захопіть корінь конфігурації, додайте його, додайте мінімум реквізитів (зовсім "порожні" об'єкти не завжди зберігається), здайте корінь в сховище (цей об'єкт теж здасться при цьому) і заберіть об'єкт знову. (Щоб не тримати корінь довго захопленим - він і іншим потрібен).

6. Якщо Ви хочете виправити права доступу на об'єкт, захопили його - а права доступу як і раніше недоступні - захопіть відповідну роль.

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

8. Коли робимо "отримати все зі сховища" (п. 1) буває, що 1с видає купу повідомлень а потім пише, що "не вдалося" (список об'єктів при цьому змінюється). Значить давно не отримували зміни. Нічого страшного, тиснемо ОК за новою і так до тих пір, поки не спрацює, як треба.

9. Іноді 1С відмовляється зберігати отримані зі сховища зміни, причому повідомлення видає абсолютно невиразне. Винуватцями зазвичай є "регістри відомостей". З'ясовуємо, у якого регістра відомостей змінювалася структура, видаляємо з нього в своїй базі всі записи, після цього все оновиться як треба.

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

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

створюємо сховище
Вибираємо в меню "Конфігурація" -\u003e "Сховище конфігурації" -\u003e "Створити сховище ..."

Вказуємо шлях до каталогу сховища. (Каталог повинен бути доступний для всіх розробників!)

Після того як сховище створено, заходимо в пункт меню "Конфігурація" -\u003e "Сховище конфігурації" -\u003e "Адміністрування" для того щоб створити користувачів для розробників


У вікні створюємо користувачів.

Підключаємо конфігурації розробників до сховища конфігурації
вибираємо пункт меню "Конфігурація" -\u003e "Сховище конфігурації" -\u003e "Підключитися до сховища ..."

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

Чекаємо, поки станеться порівняння конфігурації зі сховищем.
Якщо все пройшло успішно, то праворуч від об'єктів конфігурації в дереві об'єктів повинна з'явитися піктограма замка.

Робота зі сховищем конфігурації
За замовчуванням всі об'єкти конфігурації мають піктограму "замок". Для того щоб змінити об'єкт конфігурації потрібно його захопити, тобто вибрати в контекстному меню об'єкта пункт "Захопити в сховище"


вказати настройки захоплення

виконувати рекурсивно - вказує, що крім тих об'єктів, які перераховані в списку, слід також захопити і всі їхні підлеглі об'єкти, які можуть бути завантажені незалежно (підлеглі об'єкти, які не можуть бути завантажені незалежно від батьківського об'єкта, завжди будуть отримані разом з батьківським об'єктом).
Наприклад, якщо при захопленні довідника не виконувати завантаження рекурсивно, то з підлеглих об'єктів будуть захоплені тільки реквізити і табличні частини довідника.
Якщо ж виконати захоплення рекурсивно, то також будуть захоплені і ті об'єкти, підлеглі довідником, які можуть бути захоплені окремо від нього: форми і макети.

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

Після того, як потрібні зміни внесені, слід об'єкт помістити знову в сховище зі зробленими змінами. Вибираємо в контекстному меню об'єкта конфігурації пункт "Помістити в сховище ..."

Якщо потрібно скасувати зроблені зміни і звільнити об'єкт від захоплення, то вибираємо в контекстному меню об'єкта пункт "Скасувати захоплення"

Якщо потрібно відновити об'єкт зі сховища, То то вибираємо в контекстному меню об'єкта пункт "Отримати зі сховища ...". При цьому внесені зміни в той час, як об'єкт був захоплений, губляться.

Так само можна переглянути історію версій і порівняти захоплений і змінений об'єкт з об'єктом в сховище.

Після того, як робота в копіях завершена (або завершений якийсь проміжний етап), можна оновити конфігурацію основної бази для цього потрібно вибрати пункт в меню "Конфігурація" -\u003e "Сховище конфігурації" -\u003e "Оновити конфігурацію зі сховища" або "Конфігурація "-\u003e" Сховище конфігурації "-\u003e" Порівняти / об'єднати конфігурацію зі сховищем ".

У другому випадку відбудеться більш "м'яке" оновлення конфігурації, тобто, можна буде подивитися звіт по розбіжностям об'єктів вихідної конфігурації і сховища.

При колективній розробці потрібно контроль за історією розробки, відстеження об'єктів, які доопрацьовуються в поточний момент.

Для цього і призначений сховище конфігурації.

  • якщо в конфігурації більш одного розробника
  • кілька баз, але рішення єдине і потрібно їх синхронізація
  • просто потрібно зберігати історію розробки навіть одного програміста

Значить вам треба розгортати сховище конфігурацій.

швидкий перехід

Як це робиться поетапно:

  1. Зайти в «» і створити сховище
  2. Вказати його розташування (папку на яку є права на запис)
  3. Задати ім'я Адміністратора і його пароль
  4. Далі, конфігурація підключиться до створеного сховища
  5. Наступний крок: додавання користувачів в сховище - кожна база розробки прив'язується до окремому користувачеві. Ці користувачі ніяк не пов'язані з користувачами інформаційної бази. Зайдіть в «Адміністрування сховища»
  6. Додаєте і задаєте пароль:
  7. Встановлюєте його права, досить прав на «Захоплення сховища»
  8. створюєте нову базу з копії (або використовуєте вже існуючу), зміни повинні бути збережені, оскільки при першому підключенні конфігурація синхронізується з даними сховища
  9. Вказуєте дані раніше створеного користувача
  10. Ось і все: підключення до сховищ успішно завершено

Робота зі сховищем

При кожному старті запуску конфігурації потрібно:

  • підключитися до сховища вказавши пароль, або прописати його в параметрах запуску 1с «ConfigurationRepositoryP» (Користувач: «ConfigurationRepositoryN», сховище: «ConfigurationRepositoryF»)
  • або відмовитися від підключення, але не відв'язувати сховища - в цьому випадку ви зможете правити тільки раніше «Захоплені» об'єкти, інші тільки на просомтр

Для початку роботи з об'єктом його потрібно «Захопити» об'єкт - встановити монопольний доступ на його розробку. До цього всі об'єкти доступні тільки на читання (подібно «Поставці» до зняття з підтримки).

Це можна зробити двома способами:


Після закінчення у вас два основні варіанти:

  • скасувати захоплення, при цьому у вас об'єкт відновиться їх сховища (цим скасовуються також внесені правки)
  • помістити змінений об'єкт

В іншої бази розробник на вашу сигналу може оновити конфігурацію зі сховища:


Це основні команди для роботи з сховищем.

особливості роботи

Відбір захоплених об'єктів


В цілому, сховище працює дуже стабільно:

  • проблеми виникали при мережевому зберіганні: злітало поле даних у реквізитів, швидше за все втрата даних в процесі приміщення).
  • «Сховище конфігурації пошкоджено» така помилка відбувається один раз на рік - просто створили заново (робіть додаткові копії цієї папки).

для резервного копіювання досить налаштувати збереження

1Cv8ddb.1CD і ПОВНІСТЮ папку data, розташовану в тій же папці, що і файл 1Cv8ddb.1CD

Якщо http-Сервер не відповідає або скидає з'єднання, то може виникнути помилка «некласифікованих помилка роботи зі сховищем конфігурації»:

При «Помилці мережевого доступу до сервера »спробуйте перезапустити службу сховища і виконати команду« Сховище конфігурації / Закрити сховище / Відкрити сховище ».

Якщо така помилка відбувається при повному приміщенні, спробуйте поміщати об'єкти частинами - іноді спрацьовують таймаут відповіді сервера.

Зменшилася зручність під час наступного з'єднання

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

Раніше, настройки: адреса сховища і користувач зберігалися, залишалося тільки внести пароль - це було набагато швидше.

Суб'єктивно і процес початкової синхронізації став довше - не пригадую довго висить стану «Побудова знімка версії конфігурації»

В 8.3. з'явився режим сумісності на вкладці «Інше» в адмініструванні сховища: цим можна включити новий формат зберігання.

особливості зберігання

«Сховище» до 8.3.3 це звичайна файлова база, У вигляді файлу 1Cv8ddb.1CD, в якій додатково зберігається інформація про захоплення.

Внутрішні таблиці не можуть бути більше 4 ГБ інакше може бути помилка: «Помилка операції зі сховищем конфігурації. по причині: Перевищено максимально допустимий розмір внутрішнього файлу », але таке зустрічається тільки при дуже інтенсивній роботі зі сховищем (багато версій макетів та інших ємних об'єктів).

З версії 8.3.3 з'явилася папка «data»:
Швидше за все для більш універсальної роботи з системами версионного контролю.

У разі проблем з розсинхронізація можна почистити каталог «Cache» в папці сховища.

механізм оптимізації

Знаходиться на вкладці «Інші»

Виробляється упаковка файлів метаданих в папку pack

  • Кількості упакованих файлів більше 5000.
  • Кількості архівів більше 50.