Как изменить периодический реквизит справочника задним числом в 1С 7.7?

Пользователь 1C:Бухгалтерия
← На главную

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

Способ 1. Интерактивное изменение через историю реквизита (горячая клавиша F5)

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

Для изменения значения задним числом выполним следующие шаги:

  1. Откроем справочник и перейдем в форму редактирования нужного элемента (например, подразделения или организации).
  2. Активируем (нажмем мышью) курсор на поле ввода периодического реквизита, значение которого требуется изменить (например, поле «Кассир»).
  3. Нажмем на клавиатуре горячую клавишу F5 (или кнопку с изображением календаря/истории рядом с полем, если она выведена на форму).
  4. В открывшемся окне истории значений реквизита добавим новую строку, укажем нужную дату (например, из 2015 года) и выберем новое значение.
  5. Сохраним изменения по кнопке «ОК».

Способ 2. Программное изменение методом Установить()

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

Синтаксис метода:

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

Рассмотрим пример кода внешней обработки, меняющей кассира в конкретном подразделении с заданной даты:


Процедура ИзменитьКассираЗаднимЧислом()
    СпрПодр = СоздатьОбъект("Справочник.Подразделения");
    Если СпрПодр.НайтиПоКоду("00001") = 1 Тогда
        // Устанавливаем нового кассира с 01.01.2015
        СпрПодр.Кассир.Установить('01.01.2015', НовКассир);
        СпрПодр.Записать();
    КонецЕсли;
КонецПроцедуры

Способ 3. Использование специального объекта «Периодический»

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

Посмотрим на пример работы с этим объектом:


Процедура ИзменитьПериодикуЧерезОбъект()
    ОбъектПериод = СоздатьОбъект("Периодический");
    СпрПодр = СоздатьОбъект("Справочник.Подразделения");
    
    Если СпрПодр.НайтиПоКоду("00001") = 1 Тогда
        // Связываем объект с периодическим реквизитом конкретного элемента
        ОбъектПериод.ИспользоватьОбъект("Кассир", СпрПодр.ТекущийЭлемент());
        
        // Устанавливаем значение на дату
        ОбъектПериод.ДатаЗнач = '01.01.2015';
        ОбъектПериод.Значение = НовКассир;
        ОбъектПериод.Записать();
    КонецЕсли;
КонецПроцедуры

Важные технические нюансы и ограничения 1С 7.7

При изменении периодических реквизитов задним числом необходимо учитывать специфику работы платформы 1С 7.7:

  1. Признак «Изменяется документами»: Если в Конфигураторе у периодического реквизита установлен этот флаг, прямая установка значения вручную или методом Установить() будет заблокирована. Значение такого реквизита формируется исключительно документами при их проведении.
  2. Точность хранения: История периодических реквизитов в 1С 7.7 хранится с точностью до дня. Если на одну и ту же дату записать новое значение, оно перезапишет предыдущую запись за этот день.
  3. Проведение документов и расчеты: Изменение значения реквизита задним числом не вызывает автоматическое перепроведение ранее проведенных документов. Если старые документы или отчеты опирались на движения регистров, сформированные предыдущим значением, может потребоваться повторное проведение документов за соответствующий период.
  4. Хранение в БД: Все истории периодических реквизитов и констант платформы 7.7 хранятся в единой системной таблице базы данных _1SCONST.
← На главную