Шаг 317 - Изучаем периодический – Значение на дату

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

ЗначениеНаДату
Получить актуальное значение на заданную дату.

Синтаксис:

ЗначениеНаДату(<Дата>)

Англоязычный синоним:

ValueOnDate

Параметры:
<Дата> Выражение, задающее значение даты, на которую требуется получить периодический реквизит справочника или периодическую константу.

Возвращаемое значение:
Полученное актуальное значение на заданную дату.

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

Я написал функцию, которая получает значение периодического:

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

Эта функция заполняет переменные модуля.

Перем ПереодическийЭлемент; 
Перем Спр; 
Перем ЗначениеРеквизита;

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

Процедура Выполнить()     
	Перем Т;
	Т = СоздатьОбъект("Таблица");
	Т.ИсходнаяТаблица("Таблица");

	Спр =СоздатьОбъект("Справочник.ОсновныеСредства");
	Спр.ВыбратьЭлементы();
	Пока Спр.ПолучитьЭлемент()>0 Цикл 
		ПолучениеЗначенияПереодического("МОЛ");
		МолТек=ЗначениеРеквизита; 
		ЛиквидацияОшибкиПереодического(МолТек);

		ПолучениеЗначенияПереодического("Подразделение");
		ПодразделениеТек= ЗначениеРеквизита; 
		ЛиквидацияОшибкиПереодического(ПодразделениеТек);

		ПолучениеЗначенияПереодического("Состояние");
		СостояниеТек= ЗначениеРеквизита;
		ЛиквидацияОшибкиПереодического( СостояниеТек);

		ПолучениеЗначенияПереодического("СчетЗатрат");
		СчетЗатратТек= ЗначениеРеквизита;
		ЛиквидацияОшибкиПереодического(СчетЗатратТек);     

		ПолучениеЗначенияПереодического("СрокПолезногоИспользования");
		СрокПолезногоИспользованияТек= ЗначениеРеквизита;
		ЛиквидацияОшибкиПереодического( СрокПолезногоИспользованияТек);

		Т.ВывестиСекцию("Секция_1");
	КонецЦикла;
	Т.ТолькоПросмотр(1);
	Т.Показать()
КонецПроцедуры      

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.