Мы уже очень много посмотрели из периодического, но так и не знаем как получить значение на конкретную дату. Нам это нужно, так как мы выбираем в обработке именно дату.
ЗначениеНаДату
Получить актуальное значение на заданную дату.
Синтаксис:
ЗначениеНаДату(<Дата>)
Англоязычный синоним:
ValueOnDate
Параметры:
<Дата> Выражение, задающее значение даты, на которую требуется получить периодический реквизит справочника или периодическую константу.
Возвращаемое значение:
Полученное актуальное значение на заданную дату.
Описание:
С помощью метода ЗначениеНаДату можно получить значение, актуальное на заданную дату. Причем текущая позиция выборки (см. ВыбратьЗначение) не сдвигается и не сбрасывается.
Я написал функцию, которая получает значение периодического:
Процедура ПолучениеЗначенияПереодического(ИмяРеквизита) ПереодическийЭлемент=СоздатьОбъект("Периодический"); ПереодическийЭлемент.ИспользоватьОбъект(ИмяРеквизита, Спр.ТекущийЭлемент()); ЗначениеРеквизита=ПереодическийЭлемент.ЗначениеНаДату(ДатаПолучения); КонецПроцедуры
Эта функция заполняет переменные модуля.
Перем ПереодическийЭлемент; Перем Спр; Перем ЗначениеРеквизита;
Дальше я перебираю элементы справочника, потом периодические реквизиты в справочнике и удаляю ошибку перенося реквизит на нужную дату.
Процедура Выполнить() Перем Т; Т = СоздатьОбъект("Таблица"); Т.ИсходнаяТаблица("Таблица"); Спр =СоздатьОбъект("Справочник.ОсновныеСредства"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент()>0 Цикл ПолучениеЗначенияПереодического("МОЛ"); МолТек=ЗначениеРеквизита; ЛиквидацияОшибкиПереодического(МолТек); ПолучениеЗначенияПереодического("Подразделение"); ПодразделениеТек= ЗначениеРеквизита; ЛиквидацияОшибкиПереодического(ПодразделениеТек); ПолучениеЗначенияПереодического("Состояние"); СостояниеТек= ЗначениеРеквизита; ЛиквидацияОшибкиПереодического( СостояниеТек); ПолучениеЗначенияПереодического("СчетЗатрат"); СчетЗатратТек= ЗначениеРеквизита; ЛиквидацияОшибкиПереодического(СчетЗатратТек); ПолучениеЗначенияПереодического("СрокПолезногоИспользования"); СрокПолезногоИспользованияТек= ЗначениеРеквизита; ЛиквидацияОшибкиПереодического( СрокПолезногоИспользованияТек); Т.ВывестиСекцию("Секция_1"); КонецЦикла; Т.ТолькоПросмотр(1); Т.Показать() КонецПроцедуры