Главная » 1С Предприятие » ПОРЯДОК ИСПОЛЬЗОВАНИЯ ОБЪЕКТА ПЕРИОДИЧЕСКИЙ

0

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

оп = СоздатьОбъект("Периодический");

После   создания  ОП  прикрепляется к  определенному  периодическому  объекту  реквизиту  справочника  или  периодической  константе. Это  действие  выполняется методом  ИспользоватьОбъект. Метод  не  применяется, если  выборка периодических объе ктов  осуществляется по документу. Далее  употребляются методы  или атрибуты ОП, п озиционирующие периодической объект и управляющие его значениями.

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

Пример  1.  Выводится список  периодических констант, содержащий  их  идентификаторы, синонимы и значения  на текущую  дату.

// Процедура вывода списка определенных в конфигурации периодических констант

процедура Выполнить()                     //              Связана с кнопкой Пуск  обработки Проба

перем  всегоКонстант, дат;                  //          Число констант в конфигурации перем идеи, син, значен, пКонст;

ОчиститьОкноСообщений();

дат = ТекущаяДата();

// Создаем ОП

пКонст  =  СоздатьОбъект("Периодический"); всегоКонстант  =  Метаданные.Константа(); для ин = 1 по всегоКонстант цикл

если Метаданные.Константа(ин).Периодический = 0 тогда

продолжить;              //        Значения  непериодических констант не выводятся конецЕсли;

син = Метаданные.Константа(ин).Синоним;

// Выводим сообщения о константах, для которых  задан синоним если ПустоеЗначение(син) = 0 тогда

идеи = Метаданные.Константа(ин). Идентификатор;

// Прикрепляем ОП к периодической константе, имеющей идентификатор иден

пКонст.ИспользоватьОбъект(иден);

// Получаем значение периодической константы на дату дат

значен = пКонст.ЗначениеНаДату(дат); Сообщить(иден + " " + син + " " + значен);

конецЕсли;

конецЦикла; // для

конецПроцедуры // Выполнить

Пример 2.  Выводится история изменения константы   МинимальнаяЗарплата.

процедура Выполнить( )                         //                Связана с кнопкой  Пуск обработки Проба перем  значен, дат, пКонст;

ОчиститьОкноСообшений();

// Создаем ОП

пКонст =  СоздатьОбъект("Периодический"); попытка

// Прикрепляем ОП к периодической константе,

// имеющей идентификатор МинимальнаяЗарплата пКонст.ИспользоватьОбъект("МинимальнаяЗарплата");

исключение

Предупреждение(ОписаниеОшибки()); возврат;

конецПопытки;

// Позиционируемся перед первой записью истории константы пКонст.ВыбратьЗначения();

Сообщить("История константы  МинимальнаяЗарплата");

// Метод  ПолучитьЗначение позиционирует ОП  на следующей записи о  константе пока  пКонст.ПолучитьЗначение() = 1 цикл

значен = пКонст.Значение;           //         Значение  и ДатаЗнач  атрибуты ОП дат = пКонст.ДатаЗнач;

Сообщить("Минимальная заработная плата  " + значен + " руб. введена с " + дат); конецЦикла // пока

конецПроцедуры // Выполнить

Результат:

История константы  МинимальнаяЗарплата.

Минимальная заработная плата 83.49 руб.  введена с 01.01.98

Минимальная  заработная плата   132 руб.  введена с  01.07.00

Минимальная  заработная плата  200  руб.  введена с 01.01.01

Минимальная заработная  плата 300 руб. введена с 01.07.01

Пример  3.  Выводится история изменений оклада  Горюновой  У.  В.  с  указанием  до кументов,  вызвавших  эти  изменения.

процедура Выполнить()                         //                 Связана с кнопкой  Пуск обработки Проба перем  сСотр_2, оп, окл, дат, док, сооб;

ОчиститьОкноСообщений();

сСотр_2  =  СоздатьОбъект("Справочник.Сотрудники_2");

// Ищем сотрудника во всем справочнике Сотрудники_2

если сСотр_2.НайтиПоНаименованию("Горюнова", 0) =  1 тогда

// Создаем ОП

оп = СоздатьОбъект("Периодический");

// Прикрепляем ОП  к периодическому  реквизиту Оклад  найденного  сотрудника оп.ИспользоватьОбъект("Оклад",   сСотр_2.ТекущийЭлемент());

// Или проще: оп.ИспользоватьОбъект("Оклад", сСотр_2);

// Позиционируемся перед первой записью истории окладов Горюновой У. В.

оп.ВыбратьЗначения();

Сообщить("История окладов  Горюновой Ульяны  Валерьевны.");

// Метод ПолучитьЗначение позиционирует ОП на следующей записи

// периодического реквизита Оклад  пока оп.ПолучитьЗначение() = 1 цикл

окл = оп.Значение;           //         Значение  и ДатаЗнач атрибуты ОП дат = оп.ДатаЗнач;

// Документ, вызвавший изменение оклада

док = оп.ТекущийДокумент();

// Текст для сообщения о документе сооб = ?(док.Выбран() = 1,

"  согласно документу " + оп.ТекущийДокумент(),

"  без оформления документа");

Сообщить("Оклад " + окл + " назначен с " + дат + сооб);  конецЦикла; // пока

иначе

Предупреждение("Найти госпожу  Горюнову У. В. не удалось.");  конецЕсли;

конецПроцедуры // Выполнить

Результат.

История окладов Горюновой  Ульяны  Валерьевны

Оклад  2500 назначен с 20.11.01  согласно документу Приказ о приеме на работу 2

Оклад  2700 назначен с 22.11.01  согласно документу ИзменениеОклада 2

Оклад  3200 назначен с 30.11.01  без оформления документа

6.2.       АТРИБУТЫ  ОБЪЕКТА ПЕРИОДИЧЕСКИЙ

Имеет  два атрибута: Значение  и ДатаЗнач, которые после  создания ОП  имеют пустые  значения  соответственно  неопределенного типа и типа Дата.  После  прикрепления к  периодическому  реквизиту или  периодической  константе  сохраняют  пустые  значения, но  атрибут Значение  приобретает  тип,  совпадающий с типом объекта, к которому ОП  прикреплен. Атрибут ДатаЗнач тип сохраняет. И  наконец, получают  значения  после  позиционирования на  записи,  отвечающей  объекту,  к  которому прикреплен ОП.  Напомним, что  данные о  константах и  периодических реквизитах справочников  хранятся  в файле  1SCONST.DBF.

Примеры  чтения значений  атрибутов  ОП  приведены в  предшествующем разделе.

Эти  же  атрибуты  совместно  с  методом   Записать  используются   и  для  изменения значений  периодических реквизитов и констант.

Пример.  Изменяется размер  минимальной  заработной платы, введеной с  01.07.01, с 300 на 350 руб.

процедура Выполнить(  )                       //              Связана с кнопкой Пуск  обработки Проба  перем значен, дат, пКонст;

ОчиститьОкноСообщений();

дат = ‘01.07.2001’;

// Создаем ОП

пКонст  =  СоздатьОбъект("Периодический"); попытка

// Прикрепляем ОП к периодической константе,

// имеющей идентификатор МинимальнаяЗарплата пКонст.ИспользоватьОбъект("МинимальнаяЗарплата");

исключение Предупреждение(ОписаниеОшибки()); возврат;

конецПопытки;

если пКонст.НайтиЗначение(дат, 0) = 1 тогда

пКонст.Значение = 350;               //         Новое значение константы на дату дат

пКонст.Записать();

Сообщить("Теперь минимальная зарплата равна " +

Константа. МинимальнаяЗарплата.Получить(дат) + " руб.");

// Восстанавливаем значение нужной  для работы  константы

пКонст.Значение = 300;              //         Новое значение константы на дату дат

пКонст.Записать(); иначе

Предупреждение("Константы МинимальнаяЗарплата на дату " + дат + " нет."); конецЕсли;

конецПроцедуры // Выполнить

Источник: Бартеньев О. В. 1С:Предприятие:  программирование для  всех.  Базовые объекты и расчеты на одной дискете. М.: Диалог-МИФИ, 2005. 464 с.

По теме:

  • Комментарии