Использование периодических реквизитов справочников
Использование периодических реквизитов существенно облегчает реализацию многих прикладных моментов конфигурации, однако, использование периодических реквизитов требует при конфигурировании особого внимания. Во-первых, не следует злоупотреблять этим свойством. Установка свойства «периодический» для каждого реквизита должна быть обоснованным и хорошо продуманным шагом, иначе это просто усложнит работу пользователей со справочниками, но не даст большого выигрыша. Во-вторых, при конфигурировании следует всегда помнить, что для использования значения периодического реквизита справочника необходимо обязательно указывать дату, на которую потребуется выбрать или
78 ___________________ 1С:Предприятие. Практика программирования на платформе V7
записать значение. Установка даты использования периодических реквизитов
задается либо методом ИспользоватьДату ( [Дата] ) , либо методами
Получить([Дату])и Установить ([Дата] , [Значение]) (через точку
после самого реквизита). Одновременно использовать оба эти способа задания
даты для одного и того же объекта типа Справочник нельзя. Если метод
ИспользоватьДату! [Дата] ) не вызывался, то к периодическому реквизиту
справочника следует обращаться с помощью методов Получить ( [Дату] ) и
Установить ( [Дата] , [Значение] ). Если метод
ИспользоватьДату ( [Дата] ) был вызван, то можно обращаться только непосредственно к значениям реквизитов.
На платформе 7.7 можно не указывать значение даты для метода Получить(), по умолчанию устанавливаются следующие значения: значение точки актуальности - если используется компонента "Оперативный учет", или Рабочая дата - если компонента "Оперативный учет"не используется.
Вызов метода ИспользоватьДату([Дата]) должен располагаться обязательно до позиционирования объекта на определенный элемент.
Примером, целесообразного использования метода ИспользоватьДату ( [Дата] ) может являться печать справочника с большим количеством периодических реквизитов. В этом случае, один раз вызвав в самом начале этот метод, Вы сможете получать значения всех реквизитов непосредственно, без вызова метода Получить ( [Дату] ).
Форма элемента справочника открывается с определенной датой. Если элемент открывается из списка справочника, то дата берется из списка. Если список в свою очередь открыт для выбора реквизита документа, то его дата будет совпадать с датой документа. Даты в формах списка и элемента справочника выводятся в заголовке окна и используются только для вывода и записи периодических реквизитов. По умолчанию это Рабочая дата, но её можно изменить из встроенного языка в модуле формы списка или элемента (группы). При записи элемента редактируемого в форме, если существуют периодические реквизиты, то выдается специальный запрос, в котором пользователь отмечает какие значения периодических реквизитов нужно установить на дату формы, вызов и вид запроса можно откорректировать методом модуля формы элемента справочника СохранениеПериодическихРеквизитов().
При интерактивном редактировании формы элемента (группы) или формы списка справочника периодические реквизиты могут записываться или не записываться на дату формы, но не могут быть записаны на другую дату.
По умолчанию изменения реквизитов выставляются на основании сравнения значений со значениями, записанными на ближайшую предыдущую дату. Данный запрос выдается только для реквизитов, непосредственно
VII. Справочники______________________________________________________________ 79
включаемых в форму. Если некоторый периодически реквизит непосредственно в форму не включен, а изменяется из встроенного языка, то он не будет выдаваться в этом запросе и сохраняться. Для того, чтобы в реквизит участвовал в запросе о записи периодических реквизитов можно вставить его в форму, установив ему признак «Сделать невидимым». Периодические реквизиты содержат значения только начиная с даты первой записи истории значений реквизита, однако и в историю реквизита можно записать «пустое значение» на какую-либо дату. Например, если самая первая запись периодического реквизита «Цена» отмечена датой '02.12.94' со значением 48.00, а мы в программном модуле запросили значение этого реквизита на '30.11.94', то система вам вернет «пустое значение», т.е. ноль; если «пустое значение» установлено на дату '04.12.94', а следующее не пустое значение на '14.12.94', то с 04 по 13.12.94 система также вернет вам «пустое значение».
Пример записи значения периодического реквизита справочника:
Словарь = СоздатьОбъект(«Справочник.Оборудование»);
Если Словарь.НайтиЭлемент(Элемент) = 1 Тогда
Периодич = СоздатьОбъект(«Периодический»);
Периодич.ИспользоватьОбъект(«Цена», Словарь.ТекущийЭлемент());
Периодич.Значение= 2 5;
Периодич.ДатаЗнач = '17.05.00';
Периодич.Записать();
КонецЕсли;
Здесь «Элемент» - переменная или реквизит объекта с типом значения Справочник. Оборудование.