Создаем периодические реквизиты или привет из 1С 7.7
Разработка - Механизмы платформы 1С
Механизм периодических сведений не включен в БСП, но тем не менее используется в большинстве типовых решений 1С, прежде всего в ЗУП, и реже - в остальных (УТ, КА и т.д.). Он может быть полезен при добавлении своих "периодических" реквизитов в конфигурацию. В его состав входит всего четыре модуля:
- РедактированиеПериодическихСведений
- РедактированиеПериодическихСведенийВызовСервера
- РедактированиеПериодическихСведенийКлиент
- РедактированиеПериодическихСведенийКлиентСервер
На небольшом примере покажем, как добавить "периодический" реквизит в типовую конфигурацию. Предположим, мы ведем учет автомобилей в справочнике "Автомобили" и у этого справочника есть реквизит "Пробег", в котором фиксируется история пробега.
Начнем с регистра. Регистр будет иметь наименование ПробегАвтомобилей (оно произвольное). У регистра одно измерение Автомобиль с типом СправочникСсылка.Автомобили, ведущее. И ресурс Пробег, тип - числовой. Естественно, регистр периодический.

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

Код несложный, оставлю только несколько пояснений:
- ПриСозданииНаСервере, заполняем набор записей из переданных в форму при создании параметров, там уже будет отбор по владельцу, т.е. будут сведения о пробеге только целевого автомобиля.
- НаборЗаписейПриНачалеРедактирования, заполняем владельца записи набора регистра, т.е. автомобиль, заполняем период по-умолчанию.
- НаборЗаписейПередОкончаниемРедактирования, предупреждаем пользователя, если он некорректно заполнил новую запись.
- НаборЗаписейПриОкончанииРедактирования, упорядочеваем записи по дате при окончании редактирования.
- КомандаОК, вызываем типовое оповещение о закрытии.
К слову сказать, форма совершенно шаблонная и, например, в ЗУП-е таких, почти одинаковых форм, 30 (тридцать). Т.е. если в других ЯП используется наследование, у нас используется копи-паст.
Перейдем к адаптации справочника-владельца "периодического" реквизита. Форме элемента справочника Автомобили добавляем пять реквизитов:
- ПробегАвтомобилей с типом РегистрСведенийМенеджерЗаписи.ПробегАвтомобилей
- ПробегАвтомобилейНаборЗаписей с типом РегистрСведенийНаборЗаписей.ПробегАвтомобилей
- ПробегАвтомобилейНаборЗаписейПрочитан с типом булево
- ПробегАвтомобилейНоваяЗапись с типом булево
- ПробегАвтомобилейПрежняя с типом Произвольный
Обратите внимание, все добавленные реквизиты имеют префикс ПробегАвтомобилей, он должен совпадать с наименованием регистра сведений, в котором хранится история "периодического" реквизита.
Больше всего здесь нас интересует реквизит ПробегАвтомобилей, именно он несет в себе полезную нагрузку. Выводим реквизит ПробегАвтомобилей.Пробег на форму, остальные реквизиты - служебные, они используются в работе механизма и на форме не отображаются.
Небольшие пояснения:
- ПриСозданииНаСервере, читаем историю реквизита из регистра
- ОбработкаОповещения, обновляем реквизит на форме
- ПередЗаписьюНаСервере, записываем данные в регистр
- ПробегИстория, открытие формы истории реквизита
В результате, получаем долгожданный "периодический" реквизит:

По задумке разработчиков, в 8-й версии в форме элемента всегда редактируется последняя запись. В 7-й версии при редактировании значения периодического реквизита, новое значение добавлялось в историю автоматически с текущей датой. Чтобы воспроизвести такое поведение, можно поступить примерно так:
Т.е., если значение поменялось, добавляем новую запись с текущей датой и выставляем признак новой записи в истину.
Спасибо, что дочитали до конца, если вы работали в семерке, уверен, на вашем лице улыбка.
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.