Отправляет email-рассылки с помощью сервиса Sendsay

1С и электронная коммерция

  Все выпуски  

1С и электронная коммерция Регистры: как есть и как должно быть




1С и электронная коммерция    Рассылка сайта Системная интеграция + 1С и
Магазин садовой и климатической техники Экогранд
- доставка товара в любую точку России и СНГ

Пятница, 20 Марта 2009 года (1917 год – В. Ленин начал писать «Письма издалека» с призывом к переходу к новой фазе революции)

Внимание! Если хотите, чтобы мы посвятили рассылку Вам или вашему сайту, то пишите на почту: odin-s@bk.ru

Регистры: как есть и как должно быть.

В данной статье будет описана реализация объекта "Регистр" в системе 1С:Предприятие 7.7. Подробно будут рассмотрены все возможности, влияющие на структуру и производительность работы с объектом "Регистр". Будет проведен анализ текущей реализации и представлен мой взгляд на то какой она должна быть.

Итак объект "Регистр", что же он из себя представляет? Если отвлечься от физической реализации, то это таблица состоящая из полей нескольких видов:

  1. Измерения – ключевые поля. По умолчанию ключ составляется из всех полей данного типа конкатенацией их в порядке задания в конфигурации.
  2. Ресурсы – числовые поля, для каждого из которых определены несколько функций
  3. Реквизиты – аналог поля Измерения, с ограничением на функции по Ресурсам.

Однако регистр это не обычная таблица. К нему можно применить термин функциональная таблица, то есть содержимое таблицы зависит от некоторых переменных. В случае с регистром это период, то есть две переменные: начало периода, конец периода. В новой версии системы 1С 8.0 такую таблицу называют виртуальной.

В зависимости от типа регистра: остаточный или оборотный, изменяется набор функций. В первом случае это четыре функции: НачОст, Приход, Расход, КонОст, во втором: только одна – Сумма. Для остаточного регистра функции НачОст, КонОст для полей типа реквизит не определены.

Рассмотрим теперь физическую реализацию объекта "Регистр" в системе 1С:Предприятие 7.7. Описание будем проводить для 1С:Предприятие 7.7 SQL версии 18 релиз.

Остаточный регистр

Реализуется с помощью двух таблиц: RGxxx и RAxxx.

Первая таблица содержит значения функции НачОст на начало каждого периода указанного в меню системы "Операции – Управление оперативными итогами" в секции "Периодичность сохранение остатков". Значение данной функции может хранится на начало каждой пятидневки, десятидневки, на начало каждых пятнадцати дней, на начало каждого месяца. Для каждого регистра данная опция действует одинаково, таким образом нет возможности установить разную периодичность для разных регистров.

Замечу, что кроме функции НачОст можно также получить и функцию КонОст, так как остаток на начало текущего периода является остатком на конец предыдущего. Если вам нужно получить остаток на начало какого-то периода, то для поля PERIOD вы должны указать значение начала предыдущего периода (то есть НачОст(01.01.2002) ~ PERIOD = 20020112).

Таблица имеет индекс по умолчанию PERIOD + (конкатенация измерений в порядке следования их в конфигурации). Поэтому вы должны учитывать, последовательность расположения измерений. Первым должно следовать измерение, по которому наиболее часто будет задаваться условие для выборки и так далее. Кроме того имеется возможность создать дополнительные индексы для каждого измерения кроме первого (и это правильно так как индекс для первого измерения уже задан). Для этого в конфигураторе зайдите в свойства измерения на закладку "Дополнительные" и поставьте галку "Отбор итогов". Задать индекс для произвольного набора измерений невозможно.

Вторая таблица содержит все движения записанные документов в модуле проведения. В поле IDDOC содержится идентификатор документа, которому принадлежат эти движения в поле DEBKRED содержится знак движения (0 – приход, 1 – расход). Таким образом данная таблица служит для расчета функций Приход и Расход за выбранный период. Замечу, что поля типа "Реквизит" хранятся только в этой таблице, поэтому для них возможно вычисление только данных функций.

По умолчанию вычисление этих функций производится при помощи соединения с таблицей журналов документов (_1SJOURN) по идентификатору документа (при этом учитываются только проведенные документы, имеющие движения по данному регистру – эти условия указываются по полям CLOSED и RFxxx таблицы журналов). Соединение с таблицей журналов необходимо так как только там содержится дата документа, по которой можно определить входит движение в выбранный период или нет.

Согласитесь, что это не есть хорошо. При вычислении оборотов скажем за месяц необходимо просканировать ВСЕ документы в таблице журналов за месяц. Однако данный недостаток можно устранить. Для этого предназначена галка "Быстрая обработка движений" в свойствах регистра. При этом в таблице движений появляется дополнительное поле DATE_TIME_IDDOC и индекс по нему, что позволяет не обращаться к журналу документов.

Однако в 18 релизе данная возможность используется системой как-то странно: при получении остатков соединения с таблицей журналов уже нет, но для вычисления оборотов по прежнему идет соединение с таблицей журналов. Причем вычисление оборотов выполняется не просто с помощью отдельного запроса, а при помощи курсора.

По умолчанию в таблице присутствует только индекс по идентификатору документа (включающий также в себя номер строки документа и номер движения). Кроме этого можно добавить дополнительный индекс по измерению или по реквизиту. Для этого нужно в свойствах измерения или реквизита на закладке "Дополнительные" установить галку "Отбор движений". При этом создается индекс по этому реквизиту + либо идентификатор документа, либо поле DATE_TIME_IDDOC (если есть).

Вот так реализованы регистры в системе 1С. Надеюсь вы поняли как на самом деле это должно быть – в конце почти каждого абзаца были указаны недостатки.

Суммируем их в рекомендации:

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

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

Конечно, можно использовать для вычисления оборотов оборотные регистры, но зачем для этого заводить еще одну таблицу, когда можно сделать все в одной? Поэтому я считаю, что нужная еще одна рекомендация:

  1. Возможность указания (может быть даже для каждого ресурса в отдельности) хранить итоговые обороты.

Павел Шемякин


«Новости, новинки и обзоры серверной, климатической, садовой и техники для дома. Скидки и подарки»:

  • «Новые серверы в семействе Flagman TX214»
    Двухпроцессорный сервер 1U Rackmount Flagman TX214 получил три модификации: Flagman TX214L - экономичный двухпроцессорный сервер в корпусе 1U Rackmount с поддежкой 4-х жестких дисков HotSwap SAS/SATA и фиксированным блоком питания на базе чипсета Intel 5100 Flagman TX214H - высокопроизводительный двухпроцессорный сервер в корпусе 1U Rackmount с поддежкой 4-х жестких дисков HotSwap SAS/SATA и фиксированным блоком питания на базе чипсета Intel 5400. Поддерживаются процессоры Intel Xeon серии 5400 с частотой системной шины (FSB) 1600МГц Flagman TX214R - производительный двухпроцессорный сервер в корпусе 1U Rackmount с поддежкой 4-х жестких дисков HotSwap SAS/SATA и отказоустойчивым блоком питания на базе чипсета Intel 5000P. Поддерживаются до 12 модулей памяти (48/96Гб)...
  • «Теплый пол Thermo»
    Теплый пол Thermo (Термо) - продукт высочайшего класса, разработанный и произведенный в Швеции на уникальном оборудовании с применением высоких технологий и учитывающий самые современные европейские требования к качеству и безопасности. Теплый пол Thermo на протяжении многих лет производится специально для Скандинавии и oтлично зарекомендовал себя в условиях сурового климата. Теплый пол Thermo (Термо) - это кабельная система обогрева на основе нагревательного кабеля. Полы с подогревом могут служить как для поддержания комфортной температуры пола, так и для полного отопления помещения...

Новые темы форума для обсуждения

Серверы
  Форум Темы Ответы Обновления
Серверы и серверное оборудование
Создание самой удобной конфигурации. Любой желающий может помочь тому, кто еще только начинает работать с серверами
1 0 Среда, 23.01.2008, 15:33
Тема: Помощь владельцам выделенных...
Автор: stss

О компьютерах и серверах
  Форум Темы Ответы Обновления
WINDOWS 98, 2000, ХP, 2003, Vista и даже 95....
Винда, от 9x до 2003 и XP, Vista... Администрирование, программирование и т.п.
7 49 Понедельник, 14.07.2008, 15:39
Тема: Подключение сети предприятия...
Автор: AlVist

1C
  Форум Темы Ответы Обновления
1C и электронная коммерция 0 0 Нет сообщений


Вопросы обо всем
  Форум Темы Ответы Обновления
Околокомпьютерный флейм
Общение о компьютерах, серверах, других железках, если вдруг не нашли ответов и просто о компьютерах в нашей жизни. Можете рекламировать свои творения тут, в других разделах реклама будет удаляться...
1 0 Пятница, 11.07.2008, 01:03
Тема: Помогите Мне!!!!
Автор: Петруха
Анекдоты
Анекдоты и веселые истории на компьютерную и другие тематики
1 54 Четверг, 10.04.2008, 13:55
Тема: Анекдоты
Автор: stss

Продолжение можно прочитать тут >>>


Вы можете добавить свою новость или статью по адресу (необходимо зарегистрироваться): www.anobis.ru
По вопросам размещения Ваших статей и информации в наших рассылках - пишите нам: odin-s@bk.ru
Давайте поможем строящемуся Храму - приюту для детей! Информация здесь >>>

Подпишитесь на другие наши рассылки

Рассылки Subscribe.Ru
Секреты рекламы и создания интернет-магазинов
Скидки, подарки, призы...
1С и электронная коммерция
Серверы, сетевое оборудование, тесты, характеристики, советы
Рукопашный бой для девушек – выживание, психология, самозащита!
Милосердие. Чем ты можешь помочь ближнему.
Православные знакомства.
Здоровый образ жизни.

В избранное