
- •Атрибуты справочников
- •Типы данных
- •Иерархические справочники
- •Подчиненные справочники
- •Табличные части (только версия 8.0)
- •Сравнение справочников с другими объектами
- •Удаление элемента справочника
- •Перебор элементов справочника
- •Сортировка
- •Статический фильтр (только версия 7.7)
- •Форма элемента и форма группы
- •Программное создание групп
- •Транзакции
- •Программное создание группы
- •Информация о текущем элементе
- •Периодические реквизиты
- •Проведение документов
- •Цикл по реквизитам справочника
- •Создание объектов конфигурации
- •Контрольная работа
Периодические реквизиты
Включение опции «Периодический» позволяет указать для реквизита справочника хранение истории изменений его значения. Такой реквизит в системе 1С:Предприятие называется периодическим и обладает следующим свойством: в отличие от «обычных» (не периодических) реквизитов, система 1С:Предприятие хранит значения такого реквизита по датам их изменения. При обращении к значению такого реквизита на некоторую дату выдается его значение на эту дату, либо, если таковое отсутствует, — на ближайшую предыдущую дату, на которую устанавливалось значение реквизита.
Подобное свойство реквизита справочника позволяет, например, легко организовать хранение истории изменения курсов в справочнике валют.
К периодическому реквизиту можно обращаться при помощи встроенного языка системы 1С:Предприятие — получать и записывать значение реквизита на указываемую дату. Однако, следует иметь в виду, что при получении значения реквизита на какую-то дату извлекается его значение на указанную или (если значение на указанную дату отсутствует) на ближайшую предыдущую дату, а запись значения периодического реквизита выполняется всегда на указанную дату.
В режиме использования конфигурации для периодического реквизита можно вызвать окно «История». Это окно представляет собой таблицу, состоящую из двух граф: дата изменения значения реквизита справочника и значение на эту дату. Окно «История» позволяет редактировать историю изменений значения реквизита напрямую: вводить новые строки, редактировать или удалять существующие.
Методы периодических реквизитов //так мы узнаем, какая была у сотрудника категория на определенную дату Катег = СпрСотр.Категория.Получить(НекаяДата);
//так мы установим сотруднику категорию на определенную дату СпрСотр.Категория.Установить(НекаяДата, НоваяКатегория);
Внимание! Эти методы можно применять, если ранее не применялся метод ИспользоватьДату
Установка даты выборки периодических реквизитов
//можно установить дату выборки периодических реквизитов для всего справочника СпрСотр.ИспользоватьДату(НекаяДата);
//тогда ниже уже нельзя использовать методы Установить и Получить //доступ к периодическим реквизитам становится такой же, как к обычным реквизитам Катег = СпрСотр.Категория; СпрСотр.Оклад = 6000;
Объект "Периодический"
Для работы с историей периодического реквизита очень удобно использовать объект "Периодический".
Пример, вывести историю карьеры сотрудника за текущий год:
ИсторияКарьеры = СоздатьОбъект("Периодический"); ИсторияКарьеры.ИспользоватьОбъект("Должность",ВыбрСотрудник); ИсторияКарьеры.ВыбратьЗначения(НачГода(РабочаяДата(),КонГода(РабочаяДата())); Пока ИсторияКарьеры.ПолучитьЗначение()=1 Цикл ....Сообщить(Строка(ИсторияКарьеры.ДатаЗнач) + " " + Строка(ИсторияКарьеры.Значение)); КонецЦикла;
С помощью объекта Периодический можно также редактировать и удалять значения. Полный список методов см. в Синтакс-помощнике.
Проведение документов
При проведении документа часто требуется установить новое значение периодического реквизита на определенную дату. Это называется движение документа. В этом случае следует применять метод УстановитьРеквизитСправочника:
Процедура ОбработкаПроведения()
УстановитьРеквизитСправочника(Сотрудник, "Должность", НоваяДолжность, ДатаПеремещения);
КонецПроцедуры
Если документ имеет табличную часть и вы хотите, чтобы движения документа были привязаны к номеру строки документа, тогда следует применять метод ПривязыватьСтроку.
Процедура ОбработкаПроведения()
ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл
ПривязыватьСтроку(НомерСтроки); УстановитьРеквизитСправочника(Сотрудник, "Должность", НоваяДолжность, ДатаПеремещения);
КонецЦикла;
КонецПроцедуры
Подбор из справочника
Функция подбора позволяет выбирать несколько значений из справочника или другого объекта, не закрывая его. Например, есть документ РасходнаяНакладная, в котором пользователь может указать несколько товаров.
Организация подбора
Синтаксик: ОткрытьПодбор(<Объект>,<ИмяФормы>,<КонтекстФормы>,<ФлагМножВыбора>,<ТекЗнач>)
ОткрытьПодбор("Справочник.Номенклатура","ФормаДляПодбора",Конт,1);
Процедура ОбработкаПодбора(Элемент,КонтФормы) ...НоваяСтрока(); ...Товар = Элемент; КонецПроцедуры
Можно воспользоваться контекстом формы и сразу перейти в нужную группу, например:
ОткрытьПодбор("Справочник.Номенклатура","ФормаДляПодбора",Конт,1); Конт.ИспользоватьРодителя(грпСпиртное);
Процедура ОбработкаПодбора(Элемент,КонтФормы) ...НоваяСтрока(); ...Товар = Элемент; КонецПроцедуры
Установка и получение значений из подбора
КонтФормыПодбора.УстановитьЗначениеВПодборе(<ИмяРеквизита>,<Значение>)
<ИмяРеквизита> - строка с именем реквизита формы подбора значения; <Значение> - значение реквизита.
КонтФормыПодбора.ПолучитьЗначениеИзПодбора(<Выражение>)
<Выражение> - строковое выражение, значение которого вычисляется в контексте формы подбора и возвращается в качестве результата.
Другие полезные методы
Метод |
Описание |
Вид() |
Установить или считать текущее название вида справочника. Возвращает текущее название вида справочника, как оно задано в Конфигураторе, например "Сотрудники". Установка вида справочника возможна для реквизитов типа "Справочник", т.е. справочник неопределенного вида. |
ПредставлениеВида() |
Получить пользовательское представление вида справочника, как он задан в конфигураторе. Возвращает строковое значение, содержащее пользовательское представление вида справочника (синоним). |
УстановитьАтрибут(ИмяРеквизита, Значение) |
Установить значение реквизита по его имени. <ИмяРеквизита> - строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе. <Значение> - выражение, содержащее устанавливаемое значение реквизита. |
ПолучитьАтрибут(ИмяРеквизита) |
Получить значение реквизита по его имени. Возвращает значение реквизита. |
Выбран() |
Возвращает 1 - если элемент справочника выбран, 0 - если не выбран. Часто применяется для проверки на ошибки, чтобы все необходимые данные были указаны. |
Выбрать(...) |
Вызов диалога для выбора элемента справочника. Возвращает: 1 - если элемент выбран; 0 - если не выбран. Выбранный элемент становится текущим. |
Чтение структуры справочников
Цикл по справочникам
КолвоСправочниковВКонфигурации = Метаданные.Справочник(); Для Ном=1 to КолвоСправочниковВКонфигурации Цикл
кфгСпр = Метаданные.Справочник(Ном); Идентификатор = кфгСпр.Идентификатор(); ПолныйИдентификатор = кфгСпр.ПолныйИдентификатор(); Синоним = кфгСпр.Синоним(); Комментарий = кфгСпр.Комментарий(); КоличествоУроней = кфгСпр.КоличествоУроней(); ПодчиненЛи = кфгСпр.Владелец().Выбран(); Владелец = кфгСпр.Владелец(); ИдентификаторВладельца = кфгСпр.Владелец().Идентификатор; .....<и так далее>
КонецЦикла;
т.е. если вызвать метод Метаданные.Справочник() без параметров, то он вернет общее количество справочников в конфигурации. Если передать ему в качестве параметра номер или название справочника, то он вернет справочник как объект конфигурации.