"Немногие думают
чаще, чем два или три раза в год. Я добился
мировой
|
Как я и обещал, сегодня мы рассмотрим работу с объектом, который имеет самое непосредственное отношение к периодическим реквизитам. Я думаю, что Вы уже твердо усвоили, что для работы с периодическими реквизитами всегда используется дата: вы всегда указываете дату на которую хотите получить значение и всегда указываете дату с которой хотите изменить значение периодического реквизита справочника или константы. Но попробуйте решить следующую простую задачу: необходимо определить когда менялось значение реквизита и какие значения принимались. Используя материалы предыдущих выпусков, легко получается следующая процедура: Процедура Сформировать() Прим.: я надеюсь, что
цикл по датам не вызывает у Вас затруднений? Знакомьтесь! Объект "Периодический". Он решит Ваши проблемы. Этот объект не имеет визуального представления. Доступ к его атрибутам и методам осуществляется после создания объекта с помощью метода "СоздатьОбъект". Основное назначение объекта - доступ к значениям периодических реквизитов. Атрибуты объекта "Периодический": Значение - доступ к
значению периодического реквизита или
периодической константы. Методы, применяемые к объект, достаточно просты и понятны, но особого внимания заслуживает метод ИспользоватьОбъект. ИспользоватьОбъект(имяРеквизита,
Объект) - метод назначает объекту
Периодический - реквизит объекта для работы. Что
это означает? Есть объект - элемент справочника
сотрудники - "Петров". У этого Петрова - куча
периодических реквизитов, но нас интересует
только один - "Оклад". Вот этот метод и
ждет от нас, что мы ему скажем
ИспользоватьОбъект("Оклад",
спр.ТекущийЭлемент()) , где спр.ТекущийЭлемент() -
тот элемент на котором мы стоим (не важно как мы
его получили, возможно,
спр.НайтиПоНаименованию("Петров")).
Предостерегаем от ошибок:
ИспользоватьОбъект("Оклад",
"Справочник.Сотрудники");
ИспользоватьОбъект("Оклад",
"Справочник.Сотрудники.Петров"); Рассмотрим примеры, отражающий основные методики работы с объектом. Задача 1. Перебрать все значения курса доллара за заданный период. Процедура Перебор() Помните таблицу в выпуске №23, где слева были даты, а справа значения на дату. Фактически эта процедура бежит по таблице. В общем все достаточно просто. В выборке можно использовать метод "ОбратныйПорядок" и "ВыбратьПоДокументу". Задача 2. Удалить все значения курса доллара, которые меньше 30 рублей. В предыдущее решение требуется добавить несколько строк ........................................... Задача 3. Очистить всю историю в справочнике "Валюты" до 2001 года. Самостоятельно. Задача 4. Написать обработку, позволяющую переносить с помощью текстового файла значение курса выбранной валюты за любой период. Самостоятельно. Ошибка, которая присутствует в 1С (а может и не ошибка, но я нигде не читал про такое). Как известно, на каждую дату может быть задано одно значение. Но можно добиться и 2 значения. Когда возникает 2 значения: если вы изменяете периодические реквизит документом (в модуле проведения) и с помощью объекта периодический. Попробуйте это проделать для одной и той же даты! Система не ругнется и молча создаст 2 строки в истории реквизита. Как это использовать технологически не знаю, но точно знаю, что можно наступить на это и искать ошибку долго. |