Информационная база «1С:Предприятие 7.7». Взгляд изнутри::Журнал СА 7.2008
www.samag.ru
Журнал «БИТ. Бизнес&Информационные технологии»      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
1001 и 1 книга  
19.03.2018г.
Просмотров: 7240
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 7577
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4960
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3234
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 4032
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 4031
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6538
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3380
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3658
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7517
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10887
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12603
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14335
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9335
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7291
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5586
Комментарии: 4
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4809
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3640
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3336
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3564
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3230
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Информационная база «1С:Предприятие 7.7». Взгляд изнутри

Архив номеров / 2008 / Выпуск №7 (68) / Информационная база «1С:Предприятие 7.7». Взгляд изнутри

Рубрика: Базы данных /  Изучаем «1С»

Андрей Луконькин

Информационная база «1С:Предприятие 7.7».
Взгляд изнутри

Заглянув в каталог информационной базы, неподготовленный человек вряд ли увидит там что-то интересное, нужное и полезное. Скорее испугается обилия файлов и каталогов. Но обладая необходимыми знаниями, разобраться, оказывается, совсем не сложно!

Информационная база «1С:Предприятие 7.7» в файл-серверном варианте работы представляет собой набор файлов, имена большинства которых состоят из префикса и числа. В клиент-серверном варианте данные находятся на сервере SQL в виде таблиц (см. рис. 1).

Рисунок 1. Каталог информационной базы в файл-серверном варианте работы

Рисунок 1. Каталог информационной базы в файл-серверном варианте работы

Чтобы узнать, что именно хранится в конкретной таблице, достаточно открыть файл 1cv7.DD (расширение Data Dictionary – словарь данных), представляющий собой простой текстовый файл с описанием всех таблиц информационной базы и их полей (см. рис. 2). Для клиент-серверного варианта это файл 1cv7.dds, располагающийся в каталоге SQL-базы.

Рисунок 2. Фрагмент файла 1cv7.DD, описывающий таблицу констант

Рисунок 2. Фрагмент файла 1cv7.DD, описывающий таблицу констант

Все элементы этого дерева имеют сквозную нумерацию, повторяющихся кодов нет.

Полистав файл 1cv7.DD, можно выявить некоторые закономерности:

  • в таблицах, имя которых начинается на «SC», хранятся справочники;
  • «DH» – шапки документов;
  • «DT» – табличные части документов;
  • «1SJOURN» – таблица документов (общих и системных реквизитов);
  • «1SCRDOC» – таблица подчиненных документов;
  • «RG» – таблица остатков;
  • «RA» – таблица движений.

Рассмотрим теперь подробнее структуру информационной базы.

Таблица 1SCONST – константы

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

Таблица 1SCRDOC – ссылки документов

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

Таблица 1SJOURN – журналы

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

Таблица 1SDNLOCK – номера документов

Предназначена для хранения информации о зарезервированных номерах документов, т.е. тех номерах документов, которые вводятся в данный момент в систему, но еще не сохранены (не записаны в таблицу журналов 1SJOURN).

Таблица 1SSTREAM – последовательности документов

Предназначена для хранения информации о последовательностях.

Таблица 1SSYSTEM – системная таблица

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

Таблица 1SUIDCTL – уникальности

Предназначена для хранения информации о последнем ID коде документов и справочников.

Таблица 1SUSERS – соединения

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

Также в файле 1Cv7.DD можно увидеть описание и других таблиц, используемых в работе: 1SACCS (счета), 1SOPER (операции), 1SENTRY (проводки) и множество других.

Документы

В системе «1С:Предприятие 7.7» документы всегда хранятся максимум в 2 таблицах (т.е. табличная часть может быть только одна, и все данные табличной части хранятся в этой таблице). Исключение составляют общие реквизиты, которые хранятся в одной общей таблице.

DH – таблицы документов (реквизитов шапки)

Создаются при первом добавлении реквизита шапки в документ. На каждый реквизит отведено минимум одно поле таблицы (может быть и 2 в случае реквизита неопределенного типа). Также в этой таблице хранятся данные по некоторым реквизитам табличной части.

DT – таблицы документов (реквизитов табличной части)

Создаются при первом добавлении реквизита табличной части в документ. Хранятся данные реквизитов табличной части (каждый реквизит – минимум одно поле таблицы плюс системное поле LINENO – номер строки документа).

Регистры

Физически регистры остатков состоят из двух таблиц: таблица остатков RGххх и таблица движений RAххх. В таблице движений хранятся все движения документов по регистрам. Список документов, которые сделали движения по регистру, можно получить, выбрав записи из таблицы журналов _1SJOURN, с условием равенства поля RFxxx 1 (или не равно 0).

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

Для того чтобы не производить громоздких пересчетов, разработчики системы «1С» организовали регистры остатков таким образом, что они состоят из двух таблиц.

1 – RA (хранятся все движения с флагом прихода или расхода), 2 – RG для хранения промежуточных итогов (как бы заблаговременно подсчитанные итоги по таблице RA за определенный период).

Зачем нужны эти знания?

Казалось бы, система работает, и хорошо, зачем залезать глубоко? Но бывают случаи, когда разработчику приходится обращаться к структуре базы данных. Причины могут быть разнообразными – от восстановления данных до оптимизации работы системы.

Зная структуру хранения, можно получать данные напрямую из таблиц «1С», минуя программу «1С:Предприятие». Конечно, для этого нужно уметь обращаться с SQL Server Enterprise Manager и SQL Server Query Analyzer, и если владение этими инструментами для вас не проблема, то можно оперировать данными базы гораздо эффективнее, чем это происходило раньше.

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

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

Пример 1

Получение записей только не помеченных на удаление элементов справочника из таблицы SC19 (кроме периодических реквизитов).

SELECT

    *

FROM

    SC19

WHERE

    ISFOLDER = 0  AND ISMARK = 0

Здесь ISMARK – это флаг пометки элемента (или группы) на удаление, ISFOLDER – признак группы справочника.

Пример 2

Получение списка только проведенных документов. Для отбора только проведенных документов можно воспользоваться значением поля CLOSED таблицы _1SJOURN.

SELECT

    TabJ.*, Tab1.*

FROM

    DH14 As Tab1

INNER JOIN

    _1SJOURN As TabJ ON (Tab1.IDDOC = TabJ.IDDOC)

WHERE

    TabJ.CLOSED&1 = 1

Пример 3

Получение итогов на ТА или на конец периода.

Получение итогов на ТА или на конец периода.

SELECT

    TabRegOst.SP20 As Товар,

    Sum(TabRegOst.SP21) As КвоКонОст

FROM

    RG13 As TabRegOst

WHERE

    TabRegOst.PERIOD = @PERIODR

GROUP BY

    TabRegOst.SP20

ORDER BY

    TabRegOst.SP20

Здесь @PERIODR – переменная типа DateTime, условие по которой служит для получения результата запроса на тот период, который нам необходим.

Также возможно использование так называемых прямых запросов непосредственно из системы «1С:Предприятие», но уже с подключением внешних компонентов (таких как 1sqlite, 1С++, SpellSQL, Rainbow, ToySQL и других). Тогда код программы будет выглядеть примерно так:

RS = СоздатьОбъект("ODBCRecordset");

RS.УстБД1С();

ТекстЗапроса = "

|SELECT

|    Спр.Code as Код,

|    Спр.Descr as Наименование

|FROM

|    sc433 as Спр";


ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);

ТЗ.ВыбратьСтроку();

Работа с прямыми запросами позволит ускорить выполнение некоторых операций (таких как пересчет итогов, формирование объёмных отчетов) в буквальном смысле в несколько раз.

Заключение

Таким образом, ознакомление со структурой базы – это первый путь к оптимизации и увеличению производительности, что довольно актуально для баз на платформе «1С:Предприятие 7.7». Исследуйте, экспериментируйте, ведь всегда существуют пути для улучшения существующей ситуации!

  1. http://www.metaprog.co.ua/secrprog.
  2. http://www.script-coding.info/v77tables.html.
  3. http://www.gendin.ru/budni/b25.html.
  4. http://1csql.ru/materials/articles/develop.html.

Комментарии отсутствуют

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

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru