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

  Опросы
  Статьи

Электронный документооборот  

5 способов повысить безопасность электронной подписи

Область применения технологий электронной подписи с каждым годом расширяется. Все больше задач

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

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

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

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

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

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

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

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

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

1001 и 1 книга  
19.03.2018г.
Просмотров: 9886
Комментарии: 0
Потоковая обработка данных

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

19.03.2018г.
Просмотров: 8100
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

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

19.03.2018г.
Просмотров: 8199
Комментарии: 0
Конкурентное программирование на SCALA

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

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

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

12.03.2018г.
Просмотров: 5872
Комментарии: 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-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru