1с відповідність таблиць sql і об'єктів. Структура зберігання бази даних (керовані форми). Відмінності від існуючих реалізацій
Структура в мові програмування 1С 8.3 і 8.2 - набір пар «Ключ» та «Значення». Поле «Ключ» має строковий тип, «Значення» ж може приймати будь-який тип даних. Зазвичай використовується для зберігання і передачі між процедурами набору будь-яких параметрів.
Структуру в мові програмування 1С можна створити двома способами за допомогою конструкції «Новий».
Перший спосіб:
Структура = Новий Структура;
Структура.Вставіть ( «КлючПараметра1», «Значення параметра №1»);
Структура.Вставіть ( «КлючПараметра2», «Значення параметра №2»);
Другий спосіб:
Структура = Новий Структура ( «КлючПараметра1, КлючПараметра2», «Значення параметра №1», «Значення параметра №2»);
Обидва способи створять структуру, яку видно на скріншоті з налагодження:
Отримайте 267 відеоуроків по 1С безкоштовно:
зміна
Додати або змінити структуру можна, використовуючи метод «Вставити ()».
Структура.Вставіть ( «ІмяКлюча», ЗначеніеКлюча);
Якщо потрібно змінити значення старого ключа, вписуємо його ім'я. якщо додати новий ключ, Додати унікальне ім'я щодо всіх ключів структури.
Щоб видалити елемент колекції, потрібно скористатися методом «Видалити», куди передати ім'я ключа:
Структура.Удаліть ( «ІмяКлюча»);
Можлива також очищення всіх об'єктів колекції:
Структура.Очістіть ();
обхід структури
Щоб перебрати колекцію структури, потрібно використовувати конструкцію «Для Кожного КлючІЗначеніе З Структура Цикл».
наприклад:
Для Кожного КлючІЗначеніе З Структура Цикл
...... // обробляємо, наприклад, змінюємо значення
КонецЦікла;
У кожному циклі буде видно, що нам доступні наступні поля:
Дані, які визначають логіку функціонування системи на базі 1С: Підприємства, відносяться до інформаційної бази. зберігання інформаційної базиздійснюється в базі даних з вигляді набору таблиць, для чого 1С: Підприємство 8.1 може використовувати одну з чотирьох систем управління базами даних (СКБД):
* Вбудованів 1С: Підприємство 8.1 (файловий варіант інформаційної бази). В цьому випадку всі дані інформаційної бази зберігаються в файлі з ім'ям 1Cv8.1CD. Цей файл має двійковий формат і по суті є базою даних для вбудованої в 1С: Підприємство 8.1 СУБД.
* Microsoft SQL Server
(Клієнт-серверний варіант інформаційної бази). Всі дані інформаційної бази зберігаються в базі даних Microsoft SQL Server.
* PostgreSQL(Клієнт-серверний варіант інформаційної бази). Всі дані інформаційної бази зберігаються в базі даних PostgreSQL.
* IBM DB2(Клієнт-серверний варіант інформаційної бази). Всі дані інформаційної бази зберігаються в базі даних IBM DB2.
На рівні об'єктів бази даних (таблиць, полів, індексів і т. П.) Як файловий так і клієнт-серверний варіант інформаційної бази мають подібний формат (що відрізняється несуттєвими деталями). Деяка інформація про це форматі міститься нижче.
Вся інформаційна база представляється в базі даних у вигляді набору таблиць. Серед них є кілька таблиць, які обов'язково присутні в поданні будь-якої інформаційної бази:
* Config- основна конфігурація інформаційної бази. Ця конфігурація відповідає реальній структурі даних і використовується 1С: Підприємством 8.0 в режимі Підприємства.
* ConfigSave- конфігурація, редагована Конфігуратором. Конфігурація з ConfigSave переписується в Config при виконанні "Оновлення конфігурації бази даних" в Конфігураторі, а навпаки - при виконанні в Конфігураторі операції "Конфігурація - Конфігурація бази даних - Повернутися до конфігурації БД".
* Filesмістить службову інформацію, Наприклад, про роботу зі сховищем конфігурації.
* Paramsмістить параметри інформаційної бази. Серед них:
=>
Список користувачів інформаційної бази.
=>
Національні настройки інформаційної бази.
=>
Таблиця відповідності об'єктів метаданих та об'єктів бази даних (таблиць, полів, індексів).
=>
Деяка інша інформація.
* _YearOffset- зміщення дат в базі даних. Ця таблиця створюється тільки при використанні Microsoft SQL Server.
* DBSchemaмістить інформацію про структуру бази даних 1С: Підприємства і визначає інші об'єкти бази даних, що використовуються даної інформаційною базою.
При старті 1С: Підприємство перевіряє наявність в інформаційній базі перерахованих таблиць і в разі відсутності будь-якої з них видається повідомлення "інформаційна база зруйнована". Відсутність всіх перерахованих таблиць означає, що інформаційна база порожня. В останньому випадку ці таблиці будуть створені.
Перелік і структура інших таблиць бази даних визначається конкретною конфігурацією, а саме, визначеними в ній об'єктами метаданих. Ім'я кожної таблиці складається з літерного префікса і наступного за ним номера. Префікс визначає призначення таблиці, а номер дозволяє розрізняти таблиці однакового призначення, що належать до різних об'єктів метаданих. Якщо в якості СУБД використовується IBM DB2, то описану структуру мають не імена таблиць, а їх псевдоніми.
Якщо в конфігурації визначено хоча б один план обміну з встановленим прапором "Розподілена інформаційна база", то будуть створені такі таблиці:
* _ConfigChangeRec- таблиця реєстрації змін об'єктів конфігурації.
* _ConfigChangeRec_ExtProps- таблиця імен файлів змінених зовнішніх властивостей об'єктів конфігурації.
Далі перелічені об'єкти метаданих, яким можуть відповідати ті чи інші таблиці.
* Константи
=>
_Consts містить поточні значення всіх констант, визначених у конфігурації.
=>
_ConstsChangeRec - таблиця реєстрації змін констант. Створюється, якщо хоча б одна константа бере участь хоча б в одному плані обміну.
* Плани обміну
=>
_Node
=>
_Node
* Довідники
=>
_Reference
=>
_Reference
=>
_ReferenceChangeRec
* Документи
=>
_Document
=>
_Document
=>
_DocumentChangeRec
* Послідовності документів
=>
_Sequence
=>
_SequenceBoundary
=>
_SequenceChangeRec
* Журнали документів.
=>
_DocumentJournal
* Перерахування
=>
_Enum
* Плани видів характеристик
=>
_Chrc
=>
_Chrc
=>
_ChrcChangeRec
* Плани рахунків
=>
_Acc
=>
_Acc
=>
_Acc
=>
_AccChangeRec
* Плани видів розрахунку
=>
_CalcKind
=>
_CalcKind
=>
_CalcKind
=>
_CalcKind
=>
_CalcKindDN
=>
_CalcKind
=>
_CalcKindChangeRec
* Регістри відомостей
=>
_InfoReg
=>
_InfoRegChangeRec
* Регістри накопичення
=>
_AccumReg
=>
_AccumRegTotals
=>
_AccumRegTurnovers
=>
_AccumRegChangeRec
=>
_AccumRegOptions - таблиця налаштувань зберігання підсумків регістрів накопичення одна на все регістри накопичення.
* Регістри бухгалтерії
=>
_AccntReg
=>
_AccntRegED
=>
_AccTtl0
=>
_AccTtl
=>
_AccTtlC
=>
_AccntRegChangeRec
=>
_AccntRegOptions - таблиця налаштувань зберігання підсумків одна на все регістри бухгалтерії.
* Регістри розрахунку
=>
_CalcReg
=>
_CalcRegActPer
=>
_CalcRegChangeRec
=>
_CalcRegRecalc
=>
_CalcRegRecalcChangeRec
* Бізнес процеси
=>
_BPRoutePoint
=>
_BusinessProcess
=>
_BusinessProcess
=>
_BusinessProcessChangeRec
* Завдання
=>
_Task
=>
_Task
=>
_TaskChangeRec
При використанні IBM DB2 префікси псевдонімів таблиць починаються не з символу підкреслення, а відразу з буквеної частини.
Кількість цих таблиць залежить від функціональності конфігурації і може бути досить великим. У штатному режимі 1С: Підприємство не виконує перевірку їх наявності, а також цілісності та несуперечності містяться в них даних. Тому важливо, щоб база даних, в якій розміщена інформаційна база 1С: Підприємства 8.1, була захищена від несанкціонованого доступу і її модифікація виконувалася тільки засобами 1С: Підприємства. Для перевірки необхідно використовувати функцію "Адміністрування - Тестування і виправлення", вбудовану в конфігуратор.
Важливо також, щоб резервне копіювання і відновлення бази даних, що зберігає інформаційну базу, виконувалося тільки цілком. З цією метою рекомендується використання коштів резервного копіюваннябаз даних, вбудованих в в використовувану СУБД. Резервне збереження файлового варіанту інформаційної бази може бути виконано копіюванням файлу 1Cv8.1CD.
У конфігураторі є спеціальна функція: Адміністрування - вивантажити інформаційну базу. З її допомогою можна вивантажити в вказаний файл(Файл вивантаження) всі дані, які стосуються інформаційної базі, і більше ніякі. Зворотній їй функція "Завантажити інформаційну базу" дозволяє в поточну інформаційну базу замість існуючих завантажити всі дані з файлу вивантаження. Ці функції також можна використовувати для резервного копіювання даних інформаційної бази як у файловому так і в клієнт-серверному варіанті.
Платформа 1С являє собою високорівневе засіб роботи з базами даних. У загальному випадку, розробнику не потрібно замислюватися що і як відбувається на стороні СУБД, так як платформа сама вирішує скільки їй створювати таблиць і які всередині них буду поля.
Однак у великих проектах виникає потреба роботи з даними безпосередньо, наприклад, для аналізу інформації сторонніми засобами або, як у моєму випадку, інтеграції бази даних з зовнішніми додатками. У такій ситуації необхідно мати уявлення про те, в яких полях фізичних таблиць шукати потрібну нам інформацію.
Якраз для такого випадку призначена вбудована функція ПолучітьСтруктуруХраненіяБазиДанних (), Яка повертає всі необхідні дані у вигляді таблиці значень. Причому деякі реквізити (Поля і Індекси) цієї таблиці самі являють собою таблиці значень.
З одного боку, всі дані в одній структурі мати зручно, але, з іншого, виникають додаткові труднощі з передачею цієї таблиці на клієнта (метод Завантажити (), на жаль, не завантажує вкладені таблиці). Зважаючи на це доводиться пробігати по всьому стоків таблиці в циклі, що при великих обсягах призводить до уповільнення роботи.
У зв'язку з цим найкращим варіантом буде передавати в функцію імена об'єктів метаданих, щоб зменшити обсяг повертаються даних. Однак не всі таблиці СУБД пов'язані з метаданими конфігурації, тому можливість переглянути повний списокя залишив.
функціонал обробки
При активізації елемента дерева метаданих проіхсодіт заповнення списку таблиць, полів і індексів. При подвійному натисканні на корені дерева відображаються всі таблиці, включаючи службові (не рекомендується, так як зростають обсяги даних, за якими йде пошук).
В табличних частинахпрацюють стандартні команди пошуку і виведення списку.
Відмінності від існуючих реалізацій
Існує кілька схожік публікацій, наприклад, і. Однак їх незручність полягає в відсутності дерева метаданих, що ускладнює навігацію. Шукає текст по називання таблиць і полів в базі, а не навпаки.
Найбільш близька по функціоналу до публікація автора (). На відміну від неї, дана обробкамістить найбільш повне дерево метаданих (плани обміну, константи, журнали документів та ін.). Крім тогоструктура даних представлена більш наочно: список таблиць об'єкта метаданих, список полів і список індексів виводяться в окремих табличних частинах.
UPD-2018-01-06 (v1.3).Виправлена помилка, що виникає в режимі сумісності 8.3.7 і вище (змінилася поведінка платформи).
UPD-2012-08-17 (v1.2).Зроблено патч для коректної обробки регламентних завдань, виправлений пункт відображення планів видів розрахунку, виправлено поведінку при перемиканні типу структури в корені конфігурації.
P.S. Деякі роботодавці при прийомі на роботу задають питання про кількість фізичних і віртуальних таблиць для регістрів. Непогано б знати відповіді на ці питання, тим більше, що це рівень 1С: Професіонал. Якщо ви хочете не тільки вивчити цю відповідь, але і "помацати" ці таблиці, тоді ця обробка для вас!