Использование ресурсов регистров сведений для хронологического хранения данных для Справочников и Планов счетов с последовательным способом их размещения

24.03.26

Разработка - Инструментарий разработчика

Механизм для хранения истории произвольных данных в 1С 8. Позволяет хранить данные для Справочников и Планов счетов через регистры сведений. Разработка позволяет организовать хранение изменяющихся данных, которые логически относятся к Справочникам или Планам счетов, но не включены в их состав как реквизиты. Это может быть актуально для таких показателей, как например Оклад, Надбавка или Должность и т.п. в таких справочниках, как Сотрудники и т.п., где важно отслеживать историю изменений. 

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Использование ресурсов регистров сведений для хронологического хранения данных для Справочников и Планов счетов с последовательным способом их размещения
.7z 825,84Kb
15 Скачать бесплатно

Общие сведения

У хранения данных в регистрах сведений с периодичностью, относящихся к элементам справочников, на мой взгляд можно заметить два основных способа их размещения: 1 — параллельное размещение данных; 2 — последовательное размещение данных. На практике в подавляющем большинстве применяется способ 1 — параллельное размещение данных. При данном способе в одной записи регистра расположены все обозначенные именами значения, относящиеся к элементу справочника, на конкретный период. Т.е. под каждое обозначенное некоторым именем значение выделяется отдельный ресурс регистра сведений.

Например, для Справочника Физические лица такими данными могут быть Оклад, Надбавка, Должность, - размещаемые не в самом Справочнике, а в регистре сведений.

 

 

При способе с последовательным размещением данных для хранения Значения используется один ресурс. Так и назовем его Значение. А для разделения данных по имени, относящихся к какому-л элементу справочника, используется Измерение регистра - Реквизит.

 

 

И таким образом, если при параллельном способе данные на конкретную дату расположены только в одной записи регистра, так сказать, одновременно и параллельно. То при последовательном способе для хранения таких же данных нужно для каждого Значения, обозначенного именем, внести отдельную запись в регистр сведений. И таким образом вместо одной записи, получается некоторая последовательность записей регистра.

Оба способа имеют право на существование, и каждый из них имеет свои достоинства и недостатки.

 

Параллельный:

достоинства:

- простая схема данных;

- быстрый способ доступа к данным;

- простой механизм обработки данных;

недостатки:

- для добавления имен требуется изменять структуру данных регистра — добавлять соотв. ресурс.

 

Последовательный:

достоинства:

- для добавления имен уже не требуется изменять структуру данных регистра;

- возможность независимой записи данных обозначенных разными именами;

недостатки:

- более сложный механизм обработки данных;

- менее быстрый способ доступа к данным;

В разработке, представленной здесь, применен последовательный способ размещения данных и представлен функционал работы с данным способом. Разработка представлена в виде тестовой демо инф.базы с тестовыми данными.

 

Особенности реализации и текущий статус

  • 1. Техническая база. Функционал реализован на встроенном языке 1С без изменения структуры метаданных самих Справочников и Планов счетов. И данные и значения, которыми оперирует представленный здесь функционал, не являются реквизитами справочников в полном смысле этого слова. Данные никак не привязаны к объектам в дереве метаданных. Фактически - это «внешние» по отношению к Справочникам и Планам счетов значения, которые являются при этом именованными данными, и которые исключительно для удобства и краткости в описании я называю периодическими реквизитами. Так же и в самой разработке имена объектов метаданных и код, относящиеся к самой разработке, содержат в своем имени фразу «ПериодическиеРеквизиты» по той же причине.

    Функционал базируется на периодических регистрах сведений. Это позволяет системе фиксировать данные в привязке к дате и времени, обеспечивая полный контроль над историей значений.

  • 2. Платформа: разработка оптимизирована для обычного приложения.

3. Текущий этап

  • 3.1 Стабильность: Решение успешно прошло проверку на небольшой демонстрационной тестовой базе. Все базовые сценарии работают корректно.

  • 3.2 Масштабируемость: На данном этапе функционал позиционируется как прототип. Работа с высоконагруженными системами (Big Data) требует дополнительных нагрузочных испытаний, которые не проводились и как поведет себя разработка при этом неизвестно. На текущий момент внедрений на реальных базах не было, поэтому поведение системы при реальных нагрузках требует дополнительного изучения.

4. Планы развития

  • Версия для управляемого приложения находится в очереди разработки. На текущем этапе разработка для управляемого приложения приостановлена из-за ряда технических сложностей (в частности, с привязкой к событию формы элемента справочника  ПриЗаписи). В обычном приложении функционал работает стабильно.

5. Область применения

Данная разработка может быть полезна при переводе самописных управленческих конфигураций с платформы 7.7 на платформу 8. Она должна помочь воссоздать привычный для пользователей «семерки» механизм периодических реквизитов, обеспечивая плавную миграцию бизнес-логики в новую среду.

6. Варианты реализации

Разработка реализована в двух вариантах: один — только с ручным изменением период.реквизитов; второй — с ручным изменением и с изменением регистратором — совместно.

 

Структура данных

 

 

1. Данные хранятся в регистрах сведений с заданной структурой измерений, ресурсов, реквизитов.

2. Для описания имен, типов значения периодических реквизитов используется ПВХ "Периодические реквизиты". Все элементы ПВХ только предопределенные. Каждый элемент ПВХ соответствует одному конкретному периодическому реквизиту. Каждая группа ПВХ соответствует одному конкретному справочнику, а элементы внутри группы - реквизитам этого справочника. Соответствие групп ПВХ и элементов ПВХ конкретным справочникам задается именем предопределенного элемента и группы ПВХ.

3. В измерение "Группа" регистров сведений заносится родитель значения в измерении "Реквизит" т.е. группа ПВХ, соответствующая определенному справочнику.

4. Каждому справочнику может быть назначен свой регистр сведений. Это решает задачу разграничения прав доступа. Таким образом права доступа на периодические реквизиты справочника, значения которых хранятся в конкретном регистре сведений, могут быть заданы такими же, как и на сам справочник. При этом один регистр сведений может быть назначен для нескольких справочников. Соответствие справочников регистрам сведений задается в функции общего модуля ПериодическиеРеквизиты ПолучитьИмяРегистраСведений();

Механизм периодических реквизитов реализован на:

- регистрах сведений с определенной заданной структурой;

- плане видов характеристик "Периодические реквизиты", в котором описаны имена и типы значений периодических реквизитов;

- общего модуля ПериодическиеРеквизиты;

- общей формы ФормаКонстант;

- процедур и функций общего модуля Вспомогательный;

- обработки ПросмотрИстории;

- обработки ВыборИзСпискаЗначений;

- обработки ШаблоныДанных;

- обработки ИзмененияПериодическихРеквизитов;

- общей картинки ИсторияЗначений;

- глобальных переменных в модуле обычного приложения

глИспользоватьДату, глПериодическиеРеквизитыПередаваемое

Пример предопределенных значений ПВХ ПериодическиеРеквизиты представлен на следующем изображении: План видов характеристик Периодические реквизиты:

 

Видно, что каждый предопределенный элемент ПВХ, соответствующий периодическому реквизиту справочника, находится в своей предопределенной группе ПВХ. Группа ПВХ в свою очередь соответствует конкретному имеющемуся в конфигурации справочнику. Соответствие группы ПВХ конкретному справочнику назначается использованием имени предопределенного по заданному правилу: Справочник_<ИмяСправочника>

Ну и элемент ПВХ для указания соответствия конкретному периодическому реквизиту должен иметь имя предопределенного по такому правилу: Справочник_<ИмяСправочника>_<ИмяПериодическогоРеквизита>

Таким образом имя периодического реквизита в т.сказать "чистом виде" можно получить убрав из имени предопределенного элемента ПВХ имя предопределенного его родителя + символ подчеркивания.:

 

Справочник_<ИмяСправочника>_<ИмяПериодическогоРеквизита>

минус

Справочник_<ИмяСправочника>_

-----------------------------------------------------------------------------------------

<ИмяПериодическогоРеквизита>

 

Синоним периодического реквизита указывается в наименовании предопределенного элемента ПВХ.

Форма элемента справочника с периодическими реквизитами имеет следующее содержимое:

 

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

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

Форма списка справочника с периодическими реквизитами имеет следующее содержимое:

 

Как и для формы элемента, для каждого периодического реквизита может присутствовать (а может и не присутствовать, если не надо) на табличном поле, связанном с Справочником-списком

колонка, имя которой идентично имени периодического реквизита.

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

Элемент структуры МассивСсылокПВХ используется в обработчике события ПриПолученииДанных для формирования запроса в периодический регистр сведений с значениями периодических реквизитов. Полученные в результате запроса значения выводятся в колонках Табличного поля Справочника-списка.

Содержимое массива МассивСсылокПВХ идентично содержимому значений структуры СтруктураСсылокПВХ.

 

Установка в конфигурацию

 

 

Для установки разработки в конфигурацию необходимо:

1. Добавить в нее объекты метаданных согласно изображению выше. Представленные на этом изображении объекты метаданных составляют собственно функционал периодических реквизитов.

2. В плане видов характеристик "Периодические реквизиты" добавить предопределенные данные, соответствующие периодическим реквизитам. Предопределенные группы соответствуют справочникам, а элементы - периодическим реквизитам, - как написано выше. Указанный для предопределенного элемента тип характеристики, является типом значения периодического реквизита. Имя предопределенной группы ПВХ, соответствующей объекту метаданных Справочнику назначается по правилу: Справочник_<ИмяСправочника>.

3. Доработать сам справочник, а точнее его формы элемента и списка, для которого необходимо добавить некоторые объекты и реквизиты для связи с функционалом периодических реквизитов.

 

Форма элемента:

На форму элемента нужно добавить реквизит формы СтруктураПериодическиеРеквизиты (тип Произвольный). В этом реквизите формы будут хранится служебные данные, необходимые для работы механизма отображения, редактирования, связи в планом видов характеристик Периодические Реквизиты и регистром сведений для хранения значений периодических реквизитов данного конкретного элемента справочника.

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

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

На панель кнопок ОсновныеДействияФормы (которая внизу с кнопками ОК, Записать, Закрыть) нужно добавить надпись НадписьИспользоватьДату и кнопку ОсновныеДействияФормыИспользоватьДату:  Можно их просто скопировать из разработки.

В модуль формы элемента нужно добавить программный код и связать его с формой: 

 

// ***********************************************************************************
// ПЕРИОДИЧЕСКИЕ РЕКВИЗИТЫ
// ***********************************************************************************
Процедура ВвестиДатуПериодическихРеквизитов(Кнопка)
	ПериодическиеРеквизиты.ВвестиДатуПериодическихРеквизитов(ЭтаФорма);
КонецПроцедуры
// ***********************************************************************************

Процедура ПриЗаписи(Отказ)
	// *******************************************************************************
	// ПЕРИОДИЧЕСКИЕ РЕКВИЗИТЫ
	// *******************************************************************************
	   СтатусВозврата = ПериодическиеРеквизиты.ЗаписьПериодическихРеквизитов(ЭтаФорма);
	   Если Не СтатусВозврата Тогда
		   Отказ = Истина;
		   Возврат;
	   КонецЕсли;		   
	// *******************************************************************************
КонецПроцедуры

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	// *******************************************************************************
	// ПЕРИОДИЧЕСКИЕ РЕКВИЗИТЫ
	// *******************************************************************************
	   ПериодическиеРеквизиты.ОбработкаОповещенияФормыЭлемента(ЭтаФорма, ИмяСобытия, Параметр);
	// *******************************************************************************
	
КонецПроцедуры

Процедура ПриПовторномОткрытии(СтандартнаяОбработка)
	ЭлементыФормы.НадписьИспользоватьДату.Заголовок = Формат(СтруктураПериодическиеРеквизиты.ИспользоватьДату,"ДЛФ=D");
	
	// *******************************************************************************
	// ПЕРИОДИЧЕСКИЕ РЕКВИЗИТЫ
	// *******************************************************************************
		ПериодическиеРеквизиты.ПриПовторномОткрытииФормыЭлемента(ЭтаФорма);
	// *******************************************************************************
	
КонецПроцедуры

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
	
	// *******************************************************************************
	// ПЕРИОДИЧЕСКИЕ РЕКВИЗИТЫ
	// *******************************************************************************
		ПериодическиеРеквизиты.ПередОткрытиемФормыЭлемента(ЭтаФорма);
	// *******************************************************************************
	
КонецПроцедуры

 

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

Процедура ВвестиДатуПериодическихРеквизитов() - обработчик нажатия добавленной кнопки ОсновныеДействияФормыИспользоватьДату.

На форму элемента нужно добавить элементы управления (поля ввода и .т.п.), связанные с реквизитами формы, которые соответствуют периодическим реквизитам.

 

Форма списка

На форму списка также нужно добавить реквизит формы СтруктураПериодическиеРеквизиты (тип Произвольный). Назначение этого реквизита аналогично как и для формы элемента.

На панель кнопок ОсновныеДействияФормы (которая внизу с кнопкой Закрыть) нужно добавить надпись НадписьИспользоватьДату и кнопку ОсновныеДействияФормыИспользоватьДату:  На панель кнопок ДействияФормы ) нужно добавить кнопку ДействиеПросмотрИстории:  

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

Для отображения периодических реквизитов на табличном поле, связанном с СправочникСписок необходимо создать колонки. Имя колонки должно совпадать с именем периодического реквизита. Также в тексте шапки для колонки нужно указать принятый синоним периодического реквизита. Больше ничего для колонки указывать не нужно. Только имя колонки, совпадающее с именем периодического реквизита и текст шапки колонки - синоним.

В модуль формы элемента нужно добавить программный код и связать его с формой: 

 

// ***********************************************************************************
// ПЕРИОДИЧЕСКИЕ РЕКВИЗИТЫ
// ***********************************************************************************
Процедура ДействияФормыДействиеПросмотрИстории(Кнопка)
	ПериодическиеРеквизиты.ПросмотрИсторииДляСправочникаСписка(ЭлементыФормы.СправочникСписок);
КонецПроцедуры
// ***********************************************************************************

// ***********************************************************************************
// ПЕРИОДИЧЕСКИЕ РЕКВИЗИТЫ
// ***********************************************************************************
Процедура ВвестиДатуПериодическихРеквизитов(Кнопка)
	ПериодическиеРеквизиты.ВвестиДатуПериодическихРеквизитов(ЭтаФорма, ЭлементыФормы.СправочникСписок);
КонецПроцедуры
// ***********************************************************************************

Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)
	
	// *******************************************************************************
	// ПЕРИОДИЧЕСКИЕ РЕКВИЗИТЫ
	// *******************************************************************************
		ПериодическиеРеквизиты.СписокПриПолученииДанных(ЭтаФорма, Элемент, ОформленияСтрок);
	// *******************************************************************************
	
КонецПроцедуры

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
	
	// *******************************************************************************
	// ПЕРИОДИЧЕСКИЕ РЕКВИЗИТЫ
	// *******************************************************************************
		ПериодическиеРеквизиты.ПередОткрытиемФормыСписка(ЭтаФорма, СправочникСписок);
	// *******************************************************************************
	
КонецПроцедуры

Процедура СправочникСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
	// *******************************************************************************
	// ПЕРИОДИЧЕСКИЕ РЕКВИЗИТЫ
	// *******************************************************************************
		глИспользоватьДату = СтруктураПериодическиеРеквизиты.ИспользоватьДату;
	// *******************************************************************************
КонецПроцедуры

Процедура СправочникСписокПередНачаломИзменения(Элемент, Отказ)
	// *******************************************************************************
	// ПЕРИОДИЧЕСКИЕ РЕКВИЗИТЫ
	// *******************************************************************************
		глИспользоватьДату = СтруктураПериодическиеРеквизиты.ИспользоватьДату;
	// *******************************************************************************
КонецПроцедуры

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	// *******************************************************************************
	// ПЕРИОДИЧЕСКИЕ РЕКВИЗИТЫ
	// *******************************************************************************
	ПериодическиеРеквизиты.ОбработкаОповещенияФормыСписка(ЭтаФорма, СправочникСписок, ИмяСобытия);
	// *******************************************************************************

КонецПроцедуры

 

Процедура ДействияФормыДействиеПросмотрИстории() - обработчик нажатия добавленной кнопки ДействиеПросмотрИстории.

Процедура ВвестиДатуПериодическихРеквизитов() - обработчик нажатия добавленной кнопки ОсновныеДействияФормыИспользоватьДату.

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

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

 

Просмотр истории

Отдельно нужно сказать про формы обработки ПросмотрИстории. Она имеет несколько форм. Для каждого регистра сведений с период.реквизитами отдельная форма. Имя формы должно назначаться по правилу: «Форма» + имя регистра сведений.

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

 

 

Ну и для периодических констант так же выделяется отдельная форма.

Для формы ФормаПериодическиеРеквизиты, которая соответствует регистру сведений ПериодическиеРеквизиты:

 

 

Для формы ФормаПериодическиеСведенияОсновныхСредств, которая соответствует регистру сведений ПериодическиеСведенияОсновныхСредств:

 

Для периодических констант используется регистр сведений ПериодическиеРеквизиты. Хотя можно для констант так же назначить отдельный регистр сведений.

 

Модуль обычного приложения

экспортные переменные глИспользоватьДату Экспорт, глПериодическиеРеквизитыПередаваемое Экспорт;

Инициальзация в модуле обычного приложения

глИспользоватьДату = РабочаяДата;

глНеПроверятьИспользованиеОтбораДокументПриЗаписиМенеджераЗаписи = ложь;

Т.е. в Модуль обычного приложения нужно добавить следующий код:

 

//******************************************************************************
// ПЕРЕМЕННЫЕ МОДУЛЯ
//******************************************************************************

// *****************************************************************************
// ПЕРИОДИЧЕСКИЕ РЕКВИЗИТЫ
// *****************************************************************************
Перем глИспользоватьДату Экспорт;
Перем глПериодическиеРеквизитыПередаваемое Экспорт;




//******************************************************************************
// ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ
//******************************************************************************


//******************************************************************************
// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ
//******************************************************************************

// *****************************************************************************
// ПЕРИОДИЧЕСКИЕ РЕКВИЗИТЫ
// *****************************************************************************
глИспользоватьДату = РабочаяДата;

 

Соответствие Регистра сведений конткретному справочнику

Соответствие Регистра сведений конткретному справочнику задается в функции общего модуля ПериодическиеРеквизиты ПолучитьИмяРегистраСведений(ПолноеИмяЗнч). Для каждой конкретной конфигурации это соответствие нужно прописывать в коде этой функции. На мой взгляд на объемные справочники нужно выделять отдельный регистр сведений. А на всякие мелкие справочники можно отвести единый регистр сведений, в котором еще также хранить данные периодических констант. Этот подход поможет и с обеспечением разграничения прав доступа на данные. Для регистра сведений отведенный, под конкретный справочник, можно (и нужно) прописать такой же набор прав как и на сам справочник.

 

// ************************************************************************************************************************
// ПолучитьИмяРегистраСведений(ПолноеИмяЗнч) Экспорт
// Параметры:	ПолноеИмяЗнч - Полное имя в метаданных, например "Справочник.ФизическиеЛица"
// Вызывается:	Для получения имени регистра сведений с значениями периодических реквизитов 
//				для указанного справочника.
// Описание:	Получает имя регистра сведений с значениями периодических реквизитов 
//				для указанного справочника.
//				
Функция ПолучитьИмяРегистраСведений(ПолноеИмяЗнч) Экспорт
	
	ИмяРегистраСведений = Неопределено;
	
	Если ПолноеИмяЗнч = "Справочник.ФизическиеЛица" Тогда
		ИмяРегистраСведений = "ПериодическиеРеквизиты";
	ИначеЕсли ПолноеИмяЗнч = "Справочник.ОсновныеСредства" Тогда
		ИмяРегистраСведений = "ПериодическиеСведенияОсновныхСредств";
	ИначеЕсли ПолноеИмяЗнч = "ПланВидовХарактеристик.ПериодическиеРеквизиты" Тогда
		ИмяРегистраСведений = "ПериодическиеРеквизиты";
	ИначеЕсли ПолноеИмяЗнч = "ПериодическиеКонстанты" Тогда
		ИмяРегистраСведений = "ПериодическиеРеквизиты";
	КонецЕсли;	
	
	Возврат ИмяРегистраСведений;
	
КонецФункции // ПолучитьИмяРегистраСведений()	

 

Работа в интерактивном режиме

При изменении пользователем значений на форме элемента, соответствующих периодическим реквизитам, например Должность, Оклад, Надбавка,

 

 

 

и при последующем нажатии на Запись или ОК выйдет диалог сохранения периодических реквизитов

 

 

При нажатии на кнопку Просмотр истории

 

 

выходит диалог просмотра и редактирования одного отдельного реквизита у указанного элемента справочника. Предварительно выходит диалог выбора самого периодического реквизита:

 

 

И затем сам диалог просмотра и редактирования:

 

 

В таблице выводятся все значения выбранного периодического реквизита с датами. Есть возможность редактировать сами значения, даты, удалять или добавлять новые значения.

Периодическте реквизиты редактируются только в форме элемента справочника. Редактирование периодических реквизитов в списке справочника не реализовано. В списке только отображение. Для подавляющего большинства случаев этого вполне достаточно.

 

Программная работа

ПериодическиеРеквизиты.Получить(Ссылка, Реквизит, Дата);

возвращает значение на указанную дату; Реквизит - имя период.реквизита (Строка);

ПериодическиеРеквизиты.Установить(Ссылка, Реквизит, Значение, Дата);

устанавливает Значение на указанную дату; Реквизит - имя период.реквизита (Строка);

ПериодическиеРеквизиты.Удалить(Ссылка, Реквизит, Дата, Документ = Неопределено);

удаляет значение на указанную дату. Реквизит - имя период.реквизита (Строка);

Возвращает Истина при успешном удалении.

ПериодическиеРеквизиты.ВыбратьЗначения(Ссылка, ДатаНачала, ДатаКонца, Реквизиты)

Реквизиты(необязательный) имена запрашиваемых период.реквизитов строкой через запятую (Строка), если не указывать то выборка будет по всем период.реквизитам; ДатаНачала, ДатаКонца начальная и конечная даты выборки;

ПериодическиеРеквизиты.СводнаяИсторияЗначений(Ссылка, ДатаНачала, ДатаКонца, Реквизиты);

Реквизиты(необязательный) имена запрашиваемых период.реквизитов строкой через запятую (Строка); ДатаНачала, ДатаКонца начальная и конечная даты сводной истории;

Формирует сводную историю и возвращает таблицу значений вида

 

 

В приведенном примере сводная история реквизитов Должность, Надбавка, Оклад по физ.лицу Иванов за период 01.08.2024-30.09.2024. Каждая строка в таблице содержит значения актуальные в периоде, указанном в соотв.ячейках колонок ДатаНачала — ДатаКонца. Функция ПериодическиеРеквизиты.СводнаяИсторияЗначений() используется в документе тестовой демо-конфигурации НачислениеЗарплаты для заполнения табл.части периодическими данными сотрудников (Справочник.ФизическиеЛица).

ПериодическиеРеквизиты.ПолучитьКонстанту(ИмяКонстанты, Дата)Возвращает значение периодической константы с указанным именем ИмяКонстанты

 

Установка значений документами

В регистрах сведений, в которых хранятся значения периодических реквизитов, есть измерение «Документ». Оно несет функцию как-бы регистратора. Штатное измерение Регистратор у регистров не используется (подчинение Регистратору отключено) т. к. данные в регистры также должны вноситься наряду Регистраторами еще и ручным изменением. С помощью измерения «Документ» реализовано возможность внесения данных в регистры сведений документами.

Для этого используется функция ПериодическиеРеквизиты.УстановитьРеквизитСправочника(Ссылка, Реквизит, Значение, Дата, СсылкаНаДокумент) в обработке проведения документа для установки значения период.реквизита справочника.

Возможность для конкретного период.реквизита установки значения с помощью документов устанавливается с помощью флажка ИзменяетсяДокументами в соотв.элементе ПВХ Периодические реквизиты в режиме Предприятие.

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

Для программной работы с использоваем документа в модуле документа в процедура ОбработкаПроведения нужно поместить процедуру ПериодическиеРеквизиты.УстановитьРеквизитСправочника(Ссылка, Реквизит, Значение, Дата, СсылкаНаДокумент)

А в процедуре ОбработкаУдаленияПроведения - ПериодическиеРеквизиты.УдалитьЗначенияДокумента(СсылкаНаДокумент, Ссылка).

 

Форма констант

 

Ну вот в общем-то и все в общих чертах. Описывать все подробности заняло бы много времени и страниц текста, поэтому на сим заканчиваю. Если есть вопросы по подробностям работы, - пишите в комментарии.

Разработка тестировалась на платформе 1С:Предприятие 8.3, учебная версия (8.3.9.2170)

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

24900 руб.

20.08.2024    62779    329    160    

297

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    249765    1384    421    

1141

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

15250 руб.

25.08.2025    46480    98    27    

110

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Библиотека стандартных подсистем Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22570 руб.

06.10.2023    36253    96    40    

114

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    24127    91    42    

101

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

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

9500 руб.

17.05.2024    50778    177    63    

208

SALE! %

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

5000 4000 руб.

25.02.2026    2110    9    1    

11
Для отправки сообщения требуется регистрация/авторизация