Периодические реквизиты справочников и констант   

   

Как известно, 1С-Предприятие хранит все периодические реквизиты в одном файле 1sConst (1sconst.dbf), в котором каждое значение занимает 75 байт. Значения периодических реквизитов могут изменяться либо вручную, либо из документа, либо обоими способами.

Режим изменения «Вручную» подразумевает, что периодический реквизит справочника (константа) может быть установлен в нужное значение из любого програмного модуля, а также вручную при редактировании истории периодического реквизита.

Режим изменения «документом» подразумевает, что периодический реквизит справочника устанавливается только из модуля обработки проведения документа методом: УстановитьРеквизитСправочника(<ЭлементСправочника>, <НазваниеРеквизита>, <Значение>, <ДатаУстановки>, <ИмяТипа>, <Длина>, <Точность>)
Параметры:
<ЭлементСправочника> - элемент справочника, в который будет запись;
<НазваниеРеквизита> - название периодического реквизита справочника;
<Значение> - новое значение периодического реквизита;
<ДатаУстановки> - дата установки нового значения периодического реквизита. Дата установки имеет смысл только для не оперативных документов.
<ИмяТипа> - необязательный параметр. Строковое выражение - название типа данных (или Вид субконто);
<Длина> - необязательный параметр. Число - длина числового или строкового значения;
<Точность> - необязательный параметр. Число знаков после десятичной точки.
Замечание:
Параметры <ИмяТипа>, <Длина> и <Точность> следует указывать при установке значения периодического реквизита справочника, имеющего неопределенный тип.

Соответственно существует и режим комбинирования обоих возможностей. Все настройки режимов осуществляются в конфигураторе для каждого реквизита.

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

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

Очевидно, что вручную избавляться от излишних значений нецелесообразно, да и практически невозможно. Остается прибегнуть к программному решению. Для работы непосредственно с периодическими реквизитами предназначен объект <Периодический>. Необходимо лишь в цикле перебирать даты и значения периодических реквизитов в разрезе реквизитов справочников и констант и удалять дублирующиеся. Следует также учесть, что значение, зафиксированное документом, удалить таким образом нельзя.

Можно воспользоваться готовой обработкой.

Эта обработка перебирает все периодические реквизиты справочников (константы перебирать нет необходимости, так как объем избыточных данных в них невелик), и при нахождении двух соседних введенных вручную одинаковых значений удаляет более позднее значение. Одинаковые значения, введенные вручную, разделяемые значением, введенным документом, данной обработкой соседними не считаются, даже если документальное значение такое же (т.к. документ, создающий эту запись может быть перепроведен и может сформировать другое значение реквизита справочника). После выполнения обработки она выдаст подробную информацию о том сколько лишних значений в каких реквизитах справочников было удалено. Если умножить это число на 75 (размер одной записи), то можно определить освобожденный объем базы.

 В новой версии обработки (1.01) по выбору пользователя используется механизм транзакций, что позволяет ускорить работу обработки на несколько порядоков (в зависимости от режима запуска - локально или по сети, монопольно или в разделенном режиме от 10 до 100 раз)

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

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

 В новой версии обработки (1.04) добавлен выбор периода. Удаление дублирующегося реквизита происходит только тогда, когда оба они (и удаляемый и предыдущий) входят в заданный период. Добавлен режим удаления пустых значений. Внимание: для числа - ноль является пустым значением.

Прочитать о том, как сделайть выгрузку данных из с помощью пакетного режима работы конфигуратора можно здесь.

 


 

Перепечатка, воспроизведение в любой форме, распространение, в том числе в переводе, любых материалов с сайта www.softpoint.ru возможны только с письменного разрешения компании "СофтПоинт". Это правило действует для всех без исключения случаев, кроме тех, когда в материале прямо указано разрешение на копирование (основание: Закон Российской Федерации "Об авторском праве и смежных правах").

 

Статья: Периодические реквизиты справочников и констант

Перейти на главную страницу компании "Софтпоинт"