Куперс

Бухучет и анализ

1С размеры таблиц SQL

Структура базы данных 1С описывается в конфигурации с помощью объектов метаданных 1С.

При этом реальная структура таблиц в базе данных создается и изменяется автоматически, программист 1С об этом не заботится.
Объекты метаданных 1С разделены по «видам» или «ролям». Роль объекта метаданных 1С описывает его функцию – справочник (хранение данных), документ (регистрация хозяйственных операций).

Верхний уровень в дереве конфигурации – виды объектов метаданных 1С. По нажатию правой кнопки на вид доступна команда «Добавить», которая добавляет конкретный объект метаданных 1С.

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

Вводить и просматривать пользовательские данные можно только в режиме исполнения (режим 1С:Предприятие). Просматривать и изменять свойства объекта метаданных 1С можно только в режиме конфигуратора.

Распространенные свойства объектов метаданных 1С:

  • Реквизиты и табличные части – описание полей, в которые пользователь сможет вводить даннные (и в данных полях данные будут храниться в базе данных)
  • Формы – шаблоны экранных форм, с помощью которых происходит просмотр и редактирование пользователем данных
  • Модули – программные модули на языке 1С.

В языке 1С объект метаданных 1С имеет предопределенные методы (функции). То есть мы можем сделать умозаключение, что вид объекта метаданных определяется набором классов, которые мы можем использовать в языке 1С. Объекты метаданных 1С (конфигурации, при работе с ними в языке 1С) всегда связаны с данными из базы данных.

Была такая же проблема. Но нашёл выход.

Для начала — к скаченному файлу нужно добавить расширение: .rar

Внутри архива обработка, которая уже содержит в себе файл 1CDLib.dll и он прекрасно работает с обработкой, НО! для это нужно привести свою БД к «старому формату». (Если кому интересно почитать что изменилось с переходом версии с 8.2.14 на 8.3.8, то вот ссылка https://infostart.ru/public/536343/) Так же для работы нам понадобится «Обновлятор 1С»: https://helpme1c.ru/obnovlyator-1s-gruppovoe-paketn… т.к. это один из самых простых способов перехода между версиями и экспериментов со «страницами». Последовательность действий довольно простая:

1. Создаём пустую БД. (у меня была платформа 8.3.10.2561 ). И выгружаем свою ИБД в файл dt.

2. Обновлятором по пункту 6->6.17 (на сайте инструкция устарела — там: 5->5.17) переводим пустышку на 8.2.14 и страницу 4к .

3. Загружаем в переведённую БД нашу ИБД .

4. Пользуемся TablesSizes из архива.

У меня маленькая БД, которая стала очень шустро расти и за месяц выросла на 800метров, достигнув 2.2ГБ. (Файловый вариант)

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

Кстати, Tool_1CD и ExtractObjects на ней тоже заработали.

Структура в языке программирования 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_VT — табличная часть плана обмена, создается для каждой табличной части.
* Справочники
=> _Reference — таблица справочника.
=> _Reference_VT — табличная часть справочника — для каждой табличной части.
=> _ReferenceChangeRec — таблица регистрации изменений справочника. Создается, если справочник участвует хотя бы в одном плане обмена.
* Документы
=> _Document — таблица документов для каждого объекта метаданных «документ».
=> _Document_VT — табличная часть документа — для каждой табличной части каждого документа.
=> _DocumentChangeRec — таблица регистрации изменений объекта метаданных типа «документ». Создается для каждого объекта метаданных типа «документ», если он участвует хотя бы в одном плане обмена.
* Последовательности документов
=> _Sequence — таблица регистрации документов — для каждой последовательности.
=> _SequenceBoundary — таблица границ последовательности — для каждой последовательности.
=> _SequenceChangeRec — таблица регистрации изменений последовательности. Создается для каждой последовательности, которая участвует хотя бы в одном плане обмена.
* Журналы документов.
=> _DocumentJournal — таблица журнала документов, создается для каждого журнала документов.
* Перечисления
=> _Enum — таблица перечисления — по одной для каждого перечисления.
* Планы видов характеристик
=> _Chrc — основная таблица плана видов характеристик.
=> _Chrc_VT — табличная часть плана видов характеристик — для каждой табличной части.
=> _ChrcChangeRec — таблица регистрации изменений плана видов характеристик. Создается, если план видов характеристик участвует хотя бы в одном плане обмена.
* Планы счетов
=> _Acc — основная таблица плана счетов.
=> _Acc_ExtDim — таблица видов субконто плана счетов, создается для плана счетов в том случае, если максимальное количество субконто больше нуля.
=> _Acc_VT — табличная часть плана счетов, создается для каждой табличной части плана счетов.
=> _AccChangeRec — таблица регистрации изменений плана счетов. Создается, если план счетов участвует хотя бы в одном плане обмена.
* Планы видов расчета
=> _CalcKind — основная таблица плана видов расчета.
=> _CalcKind_BaseCK — таблица базовых видов расчета, создается для плана видов расчета в случае, если его свойство «Зависимость от базы» имеет значение, отличное от «Не зависит».
=> _CalcKind_DisplacedCK — таблица вытесняемых видов расчета, создается для плана видов расчета в случае, если у него установлен флаг «Использует период действия».
=> _CalcKind_LeadingCK — таблица ведущих видов расчета — для каждого плана видов расчета.
=> _CalcKindDN — вспомогательная таблица для порядка вытеснения, создается, если у плана видов расчета установлен флаг «Использует период действия».
=> _CalcKind_VT — табличная часть плана видов расчета, создается для каждой табличной части.
=> _CalcKindChangeRec — таблица регистрации изменений плана видов расчета. Создается, если план видов расчета участвует хотя бы в одном плане обмена.
* Регистры сведений
=> _InfoReg — таблица движений регистра сведений.
=> _InfoRegChangeRec — таблица регистрации изменений регистра сведений. Создается, если регистр сведений участвует хотя бы в одном плане обмена.
* Регистры накопления
=> _AccumReg — таблица движений регистра накопления.
=> _AccumRegTotals — таблица итогов регистра накопления, если регистр поддерживает остатки.
=> _AccumRegTurnovers — таблица оборотов регистра накопления, если регистр поддерживает обороты.
=> _AccumRegChangeRec — таблица регистрации изменений регистра накопления. Создается, если регистр накопления участвует хотя бы в одном плане обмена.
=> _AccumRegOptions — таблица настроек хранения итогов регистров накопления одна на все регистры накопления.
* Регистры бухгалтерии
=> _AccntReg — таблица движений регистра бухгалтерии.
=> _AccntRegED — таблица значений субконто регистра бухгалтерии, создается в том случае, если он ссылается на план счетов, у которого максимальное количество субконто больше нуля.
=> _AccTtl0 — таблица итогов по счету.
=> _AccTtl — где i от 1 до максимального количества субконто. Таблица итогов по счету с количеством видов субконто равным i.
=> _AccTtlC — таблица итогов оборотов между счетами, только для регистра бухгалтерии поддерживающего корреспонденцию.
=> _AccntRegChangeRec — таблица регистрации изменений регистра бухгалтерии. Создается, если регистр бухгалтерии участвует хотя бы в одном плане обмена.
=> _AccntRegOptions — таблица настроек хранения итогов одна на все регистры бухгалтерии.
* Регистры расчета
=> _CalcReg — таблица движений регистра расчета.
=> _CalcRegActPer — таблица фактических периодов действия для регистра расчета, создается, если у регистра расчета установлен флаг «Период действия».
=> _CalcRegChangeRec — таблица регистрации изменений регистра расчета. Создается для каждого регистра расчета, участвующего хотя бы в одном плане обмена.
=> _CalcRegRecalc — таблица перерасчета регистра расчета, создается для каждого перерасчета.
=> _CalcRegRecalcChangeRec — таблица регистрации изменений перерасчета. Создается, если перерасчет участвует хотя бы в одном плане обмена.
* Бизнес-процессы
=> _BPRoutePoint — таблица точек маршрута бизнес-процесса для каждого бизнес-процесса.
=> _BusinessProcess — основная таблица бизнес-процесса.
=> _BusinessProcess_VT — табличная часть бизнес-процесса для каждой табличной части.
=> _BusinessProcessChangeRec — таблица регистрации изменений бизнес-процесса. Создается для каждого бизнес-процесса, участвующего хотя бы в одном плане обмена.
* Задачи
=> _Task — основная таблица задачи.
=> _Task_VT — табличная часть задачи для каждой табличной части.
=> _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С:Профессионал. Если вы хотите не только выучить этот ответ, но и «пощупать» эти таблицы, тогда эта обработка для вас!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Наверх