Содержание:
1. Отображение периодической информации
2. Наборы реквизитов
3. Периодические регистры сведений 1С
4. Выводы об инструментах 1С
1. Отображение периодической информации
Приветствую, коллеги! Сегодня говорим о периодических реквизитах. Что это такое? Когда они нужны? Когда они не нужны? В чем смысл наборов периодических реквизитов? Какие еще периодические инструменты есть в 1С? Ответы на эти вопросы Вы узнаете их моей статьи.
Периодическими реквизитами называют реквизиты 1С, значения которых изменяются со временем; причем все эти измененные значения сохраняются и могут быть прочитаны в исторической перспективе.
С точки зрения пользователя «периодичность» реквизита означает возможность получить его значение на определенную дату. С точки зрения разработчика – это комплекс специализированных свойств и методов для использования в алгоритмах записи, чтения и отображения периодической информации.
Ярко выраженной «периодичностью» обладают реквизиты, в которых хранятся, например, курсы валют, цены товаров и услуг, ФИО кладовщиков или руководителей подразделений, ставки налогов и взносов и т.п.
А вот пример реквизита, который похож на периодический, но таковым не является. В рамках переговоров с покупателем вы обсуждаете цену товара. Сначала ему отправили коммерческое предложение; затем покупатель попросил скидку, показывая предложения конкурентов; потом попросил включить в цену стоимость доставки – и так несколько раундов переговоров, в которых значение цены якобы изменяется. Но на самом деле значение цены здесь одно – то, на котором остановились и включили в договор – то которое будет использоваться в бизнес-процессах в организации: расчете взаимной задолженности, определении доходности, налогообложении и т.д. Все остальные «промежуточные цены» являются лишь «пожеланиями» и в указанных бизнес-процессах использоваться не будут. Эти промежуточные цены могут фиксироваться в документах 1С 8 «Сделка» для анализа эффективности воронки продаж, но их смысловые значения не привязаны к дате – они привязаны к совокупности коммерческих условий работы на данном этапе переговоров.
2. Наборы реквизитов
Помимо периодичности отдельных реквизитов, можно говорить о периодичности их наборов. Пусть вы проектируете годовой бюджет ФОТ. В нем вы фиксируете суммы ФОТ в разрезе подразделений, должностей и даже ФИО (учитываете персональную ценность сотрудников). Бюджет утвердили; затем через месяц скорректировали – изменили суммы для утвержденных подразделений/должностей/ФИО; затем через полгода заменили одного сотрудника на другого и опять скорректировали бюджет – изменили ФИО и сумму (другая ценность сотрудника). В результате получили меняющееся во времени не одного значение реквизита, а целой совокупности связанных реквизитов. Это будет «набор периодических реквизитов» – в каждый момент времени он имеет свое смысловое значение – будет использоваться для план-фактного анализа в первом, втором квартале и так далее.
А вот пример изменяющегося набора реквизитов, который периодическим не является. Программа 1С позволяет вести версионирование объектов. Вы сохранили прайс-лист (в разрезе номенклатура/цена), а потом оказалось, что его кто-то не санкционированно изменил. Чтобы найти автора, понять содержание корректировок и откатить их назад как раз и используется механизм версионирования. Разумеется, зафиксированные корректировки имеют отметку времени; но основную смысловую нагрузку имеет сам факт корректировки, а не его расположение на временной шкале. Таким образом, версионируемые объекты (наборы реквизитов) не являются периодическими.
Подчеркнем еще раз важную особенность «периодичности» реквизитов 1С и их наборов: смысловая нагрузка их значений строго привязана к временной шкале. Именно значение на определенный момент времени используется в бизнес-процессах.
3. Периодические регистры сведений 1С
С сутью периодических реквизитов разобрались. Теперь немного об их «кухне».
Собственно, термин «периодический реквизит» появился в далекой 1С 7.7. В этой системе, чтобы реквизит стал периодическим, достаточно было «включить» свойство «Периодический» этого реквизита. После чего можно было задать и прочитать значение реквизита на определенную дату, а также просмотреть его историю в специальной форме.
В 1С версии 8 механизма «периодический реквизит» нет, его заменили «периодические регистры сведений» 1С. Возможности этих регистров шире и удобнее. Они реализуют «периодичность» как для отдельного реквизита, так и для наборов реквизитов.
4. Выводы об инструментах 1С
Итак, подытожим:
· Если в бизнес-процессах в организации смысловые значения реквизитов строго связаны с моментом времени их проведения, то мы имеем дело с «периодическими реквизитами».
· Периодическими могут быть как отдельные реквизиты, так и их связанные наборы.
· Для работы с периодическими реквизитами система 1С версии 8 использует механизмы периодических регистров сведений 1С.
· Если же значения реквизитов хоть и располагаются на временной шкале, но их смысловое значения со временем строго не связано, то это не периодические реквизиты; для работы с ними следует использовать другие (не периодические регистры сведений) инструменты 1С, такие, например, как последовательность однотипных документов, версионирование объектов.
Специалист компании «Кодерлайн»
Игорь Борисенко
Что такое реквизиты 1С?
Мы с Вами недавно обсуждали справочники 1С и документы 1С. Работа пользователя со справочниками и документами в 1С состоит из заполнения полей на форме.
Реквизиты 1С – это поля справочника и документа, которые отображаются на форме, чтобы пользователь их заполнил.
Рассмотрим подробно тему реквизитов в 1С.
Что такое Реквизиты 1С
Каждый справочник и документ 1С состоит из набора полей. Такие поля называются реквизиты 1С (для программиста 1С).
В конфигураторе, в дереве конфигурации 1С, раскройте любой справочник или документ и Вы увидите ветку Реквизиты. Это список реквизитов (полей) справочника.
Поглядите как те же реквизиты 1С выглядят на форме справочника 1С.
Каждый реквизит 1С имеет свойства, в которых указано какой вид значения хранится в реквизите (строка, число и т.п.) и как с ним будет работать пользователь.
Нажмите правой кнопкой на любой реквизит 1С и нажмите Свойства. В окне справа откроется список свойств выбранного реквизита.
Основные свойства реквизитов 1С:
- Имя – наименование реквизита 1С в языке 1С (внимание – в имени реквизитов не должно быть пробелов и знаков препинания)
- Синоним – наименование реквизита каким его увидит пользователь в режиме Предприятие
- Тип – указывает какие данные можно будет хранить в реквизите 1С, нажмите на кнопку «…», чтобы изменить тип; основные типы:
o Число — используется для цифр, а также для радиопереключателя
o Строка — может быть ограничена по длине, дело в том, что не везде возможно использование неограниченной длины
o Дата
o Булево — для того, чтобы на форме была галочка (значения Истина/Ложь или Да/Нет)
o СправочникСсылка или ДокументСсылка – выбор значения справочника или документа.Вы можете поставить галочку Составной тип данных и тогда 1С позволит Вам выбрать несколько типов данных одновременно. В этом случае пользователю будет отображаться кнопка Т, при нажатии на которых он выберет какие данные он хотел бы ввести.
- Использование –можно сделать разные реквизиты (поля) для элемента справочника и для группы справочника
- Индексировать – требуется включать для тех реквизитов, по которым будет сортировка и поиск, однако нельзя включить для всех вообще – будет работать медленно.
Стандартные реквизиты 1С
Как Вы заметили, на форме справочника есть реквизиты 1С, которые отсутствуют в списке в конфигураторе: группа, наименование, БИК.
В форме списка справочника тоже есть реквизиты 1С, которых нет в списке: пометка удаления.
Это – стандартные реквизиты 1С. Что это такое? У каждого объекта 1С есть набор реквизитов 1С по умолчанию. У справочников это, например – код и наименование. У документов это – дата и номер.
Стандартные реквизиты 1С можно посмотреть следующим образом:
- Зайдите в редактор объекта 1С (справочника или документа), нажав на него два раза мышкой
- В открывшемся редакторе выберите закладку Данные
- Здесь Вы можете настроить стандартные реквизиты Код и Наименование справочника
- Нажмите кнопку Стандартные реквизиты 1С, чтобы посмотреть полный список.
Общие реквизиты 1С
Начиная с версии 1С 8.2.14 в 1С появился новый Объект 1С – Общие реквизиты 1С. С помощью него можно добавить реквизит (поле), который будет присутствовать сразу во множестве справочников и документов.
Свойства общего реквизита 1С:
- Автоиспользование – добавляет общий реквизит 1С сразу во все справочники и документы
- Состав – позволяет добавить общий реквизит 1С только в нужные справочники и документы (автоиспользование тогда в значение Не использовать).
Как добавить реквизит 1С
Нажмем правой кнопкой на ветку Реквизиты 1С нужного справочника и выберем Добавить.
Введем нужно Имя реквизита 1С, например «АдресОфиса» и синоним «Адрес офиса». Тип оставим по умолчанию Строка, но поставим галочку Неограниченная длина.
Добавим еще один реквизит 1С точно так же, только выберем тип Булево, назовем его «РаботаетПоВыходным».
Как вывести реквизит на форму 1С (толстый клиент 1С)
Раскроем ветку Формы того же справочника. Чтобы открыть форму — выберем форму элемента и нажмем на нее два раза мышкой.
Потяните мышкой за край формы и растяните ее (необязательный пункт).
В панели конфигуратора нажмите кнопку «Размещение данных». Также можно использовать меню Форма / Размещение данных.
Вы видите – наши реквизиты на форму не выведены. Установите на них галочку. А также галочки Вставить надписи и Разместить автоматически.
Вуаля!
Как вывести реквизит на форму 1С (тонкий клиент 1С)
Раскроем ветку Формы того же справочника. Выберем форму элемента и нажмем на нее два раза мышкой.
На закладке Реквизиты раскройте строку Объект. Вы увидите список реквизитов, добавленных ранее в справочник.
Теперь просто перетяните из правого окна в левую нужный реквизит и он появится на форме.
Вуаля!
Реквизиты формы 1С
В толстом клиенте у формы есть свои собственные реквизиты. Они находятся на закладке Реквизиты.
Эти реквизиты не сохраняются в базе данных, однако их можно использовать на форме для полей, которые нужны для работы с формой.
Например, Вы добавили на форму галочку. При ее нажатии на форме что-то происходит. Значение галочки для Вас неважно (записывать его не нужно) – она используется только для переключения формы при работе с ней. В этом случае в качестве данных Вы используете не реквизит справочника, а реквизит формы.
Периодические реквизиты 1С
В 1С версии 7.7 были периодические реквизиты. Их смысл таков: значение у реквизита разное в разные даты. Например, значение на 1 сентября – одно, а на 1 октября – другое. У одного и того же реквизита.
В 1С 8 периодических реквизитов нет. Это реализуется следующим образом:
- Добавляем регистр сведений и делаете его периодическим. Период может быть – секунда, день, месяц, квартал, год.
- Добавляем измерение, у которого тип – нужный нам справочник (которому мы делаем периодический реквизит)
- Добавляем в регистр сведений нужный реквизит (или несколько). Они будут периодические.
- Теперь пользователь в форме элемента выбирает меню Перейти / ИмяСозданногоРегистра и может смотреть и изменять периодические реквизиты. Возможно вывести их на форму, но в этом случае придется дополнительно программировать.
Загрузка…
-
Использование периодических реквизитов в справочниках и периодических констант.
Периодический
реквизит, это реквизит, значение которого
задаётся на определённую дату. (Например,
курс Валют..).
Аналогично
периодическим реквизитам справочников
в системе 1с используются периодические
константы.
При
создании документа, в котором в качестве
значения будет использоваться
периодический реквизит некоторого
справочника, будет использовано значение
реквизита, установленное на соответствующую
дату.
Пример.
Справочник
Материалы. Реквизит нормативы расхода
на единицу продукции.
Дата |
12.09.11 |
31.09.11 |
Норматив |
12 |
23 |
Рис.
Пример истории значения реквизита.
В
случае, если документ Производств будет
выписываться датой до 12.09.11, например
23.08.11, то нормативы будут не определены,
в случае если дата документа будет между
12.09.11 и 31.09.11, то будет использоваться
норматив 12 грамм на единицу продукции.
В случае, если дата документа будет
31.09.11 или позже, то будет использоваться
норматив 23 грамм на единицу продукции.
При
изменении даты документа, значения,
зависящие от периодических реквизитов
справочников или периодических констант
будет изменено в соответствие с новой
датой.
Для
периодических реквизитов и констант
существует понятие «история значения».
Под историей значения подразумевается
привязка значений реквизита к датам
его изменения. Система 1с содержит
возможность изменения «истории значения»,
то есть возможность корректировки
значений за прошедшие даты и введение
новых значений в шкале времени.
-
Особенности работы в конфиграции оперативный учёт. Основные справочники и другие объекты среды выполнения.
Регистры
Регистры
оперативного учета являются внутренним
механизмом конфигурации 1С:Предприятия
и пользователь (менеджер, продавец)
непосредственно с ними не работает.
Регистры накапливают данные об остатках
и движении ресурсов. Регистры автоматически
изменяются документами при их проведении
(как это предусмотрено в конфигурации).
Данные регистров используются системой
при построении различных отчетов о
наличии и движении средств.
Регистр
представляет собой многомерную таблицу
храпения остатков и оборотов по тем или
иным ресурсам.
Точка
актуальности.
Для работы в реальном времени система
поддерживает понятие “точки актуальности
итогов” (далее — ТА).
ТА
фактически соответствует текущему
моменту времени на который рассчитаны
регистры оперативного учёта. При
проведении документов для пересчёта
остатков данные регистров используются,
поэтому ТА должна быть установлена не
позднее даты проводимого документа. В
идеальном случае подразумевается, что
ТА соответствует реальному времени
(когда проводится документ). В этом
случае текущие остатки итогов оперативного
учета соответствуют реальным остаткам
(складским запасам, состоянию взаиморасчетов
и т. д.). Это позволяет системе при
проведении документа контролировать
правильность совершения хозяйственной
операции, например, наличие товаров на
складе. При проведении документа, ТА
переставляется на проведенный документ.
Обычно ТА соответствует последнему
проведенному документу.
Для
установки ТА используется специальная
процедура (менюоперацииуправление
оперативными итогами).
Для
установки ТА можно использовать процедуру
аналогичного содержания – открытие
периода. Кроме того для восстановление
ТА можно использовать специальные
процедуры – перепроведение документов
или восстановление последовательности
документов.
Основные
, подчинённые справочники, используемые
в конфигурациях на основе «Оперативный
учёт».
Номенклатура,
используется для задания единиц движения
товаров.
В
некоторых случаях выделяется из
номенклатуры отдельный справочник
материалы.
Под материалом понимается разновидность
номенклатуры, которая не продаётся
внешним контрагентам.
Основные
реквизиты справочников.
Вид
продукции, определяет возможные операции,
которые могут быть выполнены с данной
единицей номенклатуры. Возможные
значения определяются соотвествующим
справочником «виды продукции»
Номенклатурную
единицу типа «конечная продукция»
нельзя использовать в качестве сырья
для получения других единиц.
Единицу
типа «полуфабрикат» нельзя продать.
Единица
измерения – обычно подчинён элементам
справочника номенклатура и материалы.
Используется для задания значений
реквизитов –
Базовая
единица измерения
основная
единица измерения
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Для работы с периодическими реквизитами справочников и периодическими константами в системе «1С:Предприятие» версии 7.7 используется специальный агрегатный тип данных — "
Периодический"
. Объекты данного типа предназначены для возможности записи, редактирования и удаления значений периодических реквизитов справочников и периодических констант непосредственно из программного модуля, без необходимости прибегать к интерактивным операциям.
Контекст работы с объектом
Во всех программных модулях доступ к атрибутам и вызов методов объекта "
Периодический"
может выполняться только при помощи переменной со ссылкой на объект данного типа. Сам объект создаётся при помощи функции СоздатьОбъект()
, а чтобы вызвать метод объекта, имя метода (с указанием необходимых параметров) пишется через точку после идентификатора переменной.
При создании объекта данного типа функции СоздатьОбъект()
в качестве параметра передаётся ключевое слово «Периодический» (англоязычный синоним — «Periodic»):
ВремРеквизиты = СоздатьОбъект("Периодический");
или
TempProp = CreateObject("Periodic");
Атрибуты объекта «Периодический»
Доступ к значению выбранного периодического реквизита справочника или константы предоставляет атрибут Значение
объекта "
Периодический"
. Англоязычный синоним имени атрибута — Value
.
Доступ к дате значения выбранного периодического реквизита справочника или константы предоставляет атрибут ДатаЗнач
объекта "
Периодический"
. Англоязычный синоним имени атрибута — DateVal
.
Пример использования атрибутов:
Вал = СоздатьОбъект("Справочник.Валюты"); Вал.НайтиПоКоду(1); Если Вал.Выбран() = 1 Тогда Доллар = Вал.ТекущийЭлемент(); Иначе Предупреждение("Не найдена валюта!"); Возврат; КонецЕсли; ПерВал = СоздатьОбъект("Периодический"); ПерВал.ИспользоватьОбъект("ТекущКурс", Доллар); ПерВал.ОбратныйПорядок(1); ПерВал.ВыбратьЗначения(); Пока ПерВал.ПолучитьЗначение() = 1 Цикл Курс = ПерВал.Значение; ДатаКурса = ПерВал.ДатаЗнач; КонецЦикла;
Как видно из вышеприведённого примера, методика работы с периодическими реквизитами и константами проста:
- С помощью функции
СоздатьОбъект()
создаём объект типа"
Периодический"
. - С помощью метода
ИспользоватьОбъект()
(см. описание метода ниже) связываем созданный объект"
Периодический"
с конкретным периодическим реквизитом или константой. - Используя атрибуты и методы объекта
"
Периодический"
, начинаем работать с выбранным периодическим реквизитом или константой.
Методы объекта «Периодический»
Связать созданный объект типа "
Периодический"
с конкретным реквизитом или константой позволяет метод ИспользоватьОбъект()
. Англоязычный синоним имени метода — UseObject()
.
Синтаксис метода:
ИспользоватьОбъект(<ИмяРеквизита>, <Объект>)
где
- <ИмяРеквизита> — строковое выражение, задающее название (идентификатор) периодического реквизита справочника или название (идентификатор) периодической константы, как они названы в Конфигураторе;
- <Объект> — необязательный параметр. Значение элемента справочника, для которого задаётся применение объекта
"
Периодический"
. Данный параметр требуется задавать только в случае, если <ИмяРеквизита> — периодический реквизит справочника.
Если параметр <ИмяРеквизита> не задан (пустая строка), а параметр <Объект> задаёт элемент справочника, то выборка будет осуществляться по всем периодическим реквизитам для данного элемента справочника.
Задать тип периодическому реквизиту справочника или периодической константе неопределённого типа позволяет метод НазначитьТип()
. Англоязычный синоним имени метода — SetType()
.
Синтаксис метода:
НазначитьТип(<ИмяТипа>, <Длина>, <Точность>)
где
- <ИмяТипа> — строковое выражение — название типа данных, который назначается периодическому реквизиту справочника или периодической константе неопределённого типа, например,
"Строка"
,"Число"
,"Справочник.Товары"
,"Документ.РасходнаяНакладная"
и т.п.; - <Длина> — необязательный параметр. Числовое выражение — длина поля представления данных. Имеет смысл только при задании числового или строкового типа;
- <Точность> — необязательный параметр. Числовое выражение — число знаков числа после десятичной точки. Имеет смысл только при задании числового типа.
Пример использования:
Тов = СоздатьОбъект("Справочник.Номенклатура"); Тов.НайтиПоКоду(51); Если Тов.Выбран() = 1 Тогда ВыбТМЦ = Тов.ТекущийЭлемент(); Иначе Предупреждение("Не найден товар!"); Возврат; КонецЕсли; ПерТМЦ = СоздатьОбъект("Периодический"); ПерТМЦ.ИспользоватьОбъект("ТМЦ", ВыбТМЦ); ПерТМЦ.НазначитьТип("Справочник.Товары");
Получить значение реквизита или константы, актуальное на заданную дату позволяет метод ЗначениеНаДату()
. Англоязычный синоним имени метода — ValueOnDate()
.
Синтаксис метода:
ЗначениеНаДату(<Дата>)
где <Дата> — выражение типа "
Дата"
, задающее дату, на которую необходимо получить значение реквизита или константы.
Примечание: При использовании данного метода текущая позиция выборки, ранее открытая методом ВыбратьЗначение()
, не сдвигается и не сбрасывается.
Пример использования:
К = ПерВал.ЗначениеНаДату(ДатаП);
Найти периодическое значение на заданную дату позволяет метод НайтиЗначение()
(англоязычный синоним — FindValue()
). Метод возвращает 1, если вызов закончился успешно, или 0, если нет. Режим поиска в случае, если на заданную дату не существует значения периодического реквизита, задаётся параметром <Режим>. Само же полученное при этом значение следует считывать из атрибута Значение объекта "
Периодический"
(то есть данный метод выполняет позиционирование, как и методы выборки).
Синтаксис метода:
НайтиЗначение(<Дата>, <Режим>)
где
- <Дата> — выражение, задающее значение даты, на которую требуется найти значение периодического реквизита справочника или периодической константы;
- <Режим> — числовое выражение, значение которого задаёт режим поиска, если на заданную дату не существует значения периодического реквизита. Если −1 (минус единица) — возвращается значение на предыдущую дату, если 0 — возвращается код завершения неуспешной операции, если 1 — возвращается значение на последующую дату.
Пример использования:
Если ПерВал.НайтиЗначение(ДатаП, -1 ) = 1 Тогда К = ПерВал.Значение; Иначе Предупреждение("Значение не найдено!", 3); Возврат; КонецЕсли;
Открыть выборку периодических значений за указанный период позволяет метод ВыбратьЗначения()
(англоязычный синоним — SelectItems()
). Выборка будет происходить при помощи метода ПолучитьЗначение()
среди периодических значений текущего объекта применения, заданного методом ИспользоватьОбъект()
. Возвращаемым значением метода ВыбратьЗначения()
является число: 1 — если вызов метода закончился успешно, 0 — если нет.
Синтаксис метода:
ВыбратьЗначения(<ДатаНачала>, <ДатаКонца>)
где
- <ДатаНачала> — необязательный параметр. Выражение типа
"
Дата"
, задающее дату начала периода выборки периодических значений. Если параметр не задан, то выборка начинается с самой ранней имеющейся даты; - <ДатаКонца> — необязательный параметр. Выражение типа
"
Дата"
, задающее дату конца периода выборки периодических значений. Если параметр не задан, то выборка заканчивается самой последней имеющейся датой.
Пример использования метода:
Вал = СоздатьОбъект("Справочник.Валюты"); Вал.НайтиПоКоду(1); Если Вал.Выбран() = 1 Тогда Доллар = Вал.ТекущийЭлемент(); Иначе Предупреждение("Не найдена валюта!"); Возврат; КонецЕсли; ПерВал = СоздатьОбъект("Периодический"); ПерВал.ИспользоватьОбъект("ТекущКурс", Доллар); ПерВал.ОбратныйПорядок(1); ПерВал.ВыбратьЗначения(); Пока ПерВал.ПолучитьЗначение() = 1 Цикл Курс = ПерВал.Значение; ДатаКурса = ПерВал.ДатаЗнач; КонецЦикла;
Установить порядок выборки значений, открытой методом ВыбратьЗначения()
, позволяет метод ОбратныйПорядок()
(англоязычный синоним — BackwardOrder()
), вызов которого должен происходить до вызова метода ВыбратьЗначения()
. Возвращаемым значением метода является число: 1 — если вызов метода закончился успешно, или 0 — если нет. Пример использования метода приведён выше.
Синтаксис:
ОбратныйПорядок(<Режим>)
где <Режим> — числовое выражение, результирующее значение которого задаёт режим выборки периодических значений. Если значение равно 0, устанавливается прямой порядок выборки; если значение отлично от 0 — обратный порядок выборки. Параметр является необязательным. Значение по умолчанию — 1.
Открыть выборку периодических значений, установленных указанным документом, позволяет метод ВыбратьПоДокументу()
(англоязычный синоним — SelectByDoc()
). Выборка будет происходить при помощи метода ПолучитьЗначение()
по всем справочникам и реквизитам. То есть при использовании данного метода игнорируется установка объекта применения, задаваемая методом ИспользоватьОбъект()
. Возвращаемым значением метода ВыбратьПоДокументу()
является число: 1 — если вызов метода закончился успешно, 0 — если нет.
Синтаксис метода:
ВыбратьПоДокументу(<Документ>)
где <Документ> — выражение со значением типа "
Документ"
, указывающее, по какому документу будет производиться выборка.
Пример использования метода:
Процедура ПечатьУстановокДокумента(Док) Если Док.Выбран() = 0 Тогда Возврат; КонецЕсли; Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("ПечатьИстории"); Таб.ВывестиСекцию("Отчет"); Ист = СоздатьОбъект ("Периодический"); Ист.ВыбратьПоДокументу(Док); Пока Ист.ПолучитьЗначение() = 1 Цикл Таб.ВывестиСекцию("Строка"); КонецЦикла; Таб.Опции(0, 0, 0, 0); Таб.ТолькоПросмотр(1); Таб.Показать("Отчет"); КонецПроцедуры
Выбрать очередное значение из выборки, предварительно открытой методом ВыбратьЗначения()
или ВыбратьПоДокументу()
, позволяет метод ПолучитьЗначение()
(англоязычный синоним — GetValue()
). Само полученное значение следует считывать из атрибута Значение
, а дату этого значения — из атрибута ДатаЗнач
.
У метода ПолучитьЗначение()
нет параметров, а возвращаемым значением является число: 1 — если элемент выбран успешно, 0 — если элемент не выбран (достигнут конец выборки).
Пример использования метода:
Процедура КурсыВалюты(КодВалюты) Вал = СоздатьОбъект("Справочник.Валюты"); Вал.НайтиПоКоду(КодВалюты); Если Вал.Выбран() = 1 Тогда Доллар = Вал.ТекущийЭлемент(); Иначе Предупреждение("Не найдена валюта!"); Возврат; КонецЕсли; ПерВал = СоздатьОбъект("Периодический"); ПерВал.ИспользоватьОбъект("Текущ_курс", Доллар); ПерВал.ОбратныйПорядок(1); ПерВал.ВыбратьЗначения(); Пока ПерВал.ПолучитьЗначение() = 1 Цикл Сообщить("Курс на " + Строка(ПерВал.ДатаЗнач) + " = " + ПерВал.Значение); КонецЦикла; КонецПроцедуры
Получить документ, который установил значение периодического реквизита справочника позволяет метод ТекущийДокумент()
(англоязычный синоним — CurrentDocument()
). Данный метод не имеет параметров и используется после получения очередного значения из выборки с помощью метода ПолучитьЗначение()
.
Пример использования:
Процедура ПечатьИстории(Элем) Если Элем.Выбран() = 0 Тогда Возврат; КонецЕсли; Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("ПечатьИстории"); Таб.ВывестиСекцию("Отчет"); Ист = СоздатьОбъект("Периодический"); Ист.ИспользоватьОбъект("", Элем); Ист.ВыбратьЗначения(); Пока Ист.ПолучитьЗначение() = 1 Цикл ДокИст = Ист.ТекущийДокумент(); Если ДокИст.Выбран() = 1 Тогда Таб.ВывестиСекцию("ПоДокументу"); Иначе Таб.ВывестиСекцию("Строка"); КонецЕсли; КонецЦикла; Таб.Опции(0, 0, 0, 0); Таб.ТолькоПросмотр(1); Таб.Показать("Отчет"); КонецПроцедуры
Получить значение текущего элемента справочника позволяет метод ТекущийОбъект()
(англоязычный синоним — CurrentObj()
). Данный метод не имеет параметров и используется после получения очередного значения из выборки с помощью метода ПолучитьЗначение()
. Особенно он полезен при выборке по документу (см. описание метода ВыбратьПоДокументу()
).
Пример использования метода:
Процедура ПечатьУстановокДокумента(Док) Если Док.Выбран() = 0 Тогда Возврат; КонецЕсли; Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("ПечатьИстории"); Таб.ВывестиСекцию("Отчет"); Ист = СоздатьОбъект("Периодический"); Ист.ВыбратьПоДокумекту(Док); Пока Ист.ПолучитьЗначение() = 1 Цикл ИстОбъект = Ист.ТекущийОбъект(); Если ИстОбъект.Вид() = "Товары" Тогда Таб.ВывестиСекцию("ПоТовару"); ИначеЕсли ИстОбъект.Вид() = "Клиенты" Тогда Таб.ВывестиСекцию("ПоКлиенту"); КонецЕсли; КонецЦикла; Таб.Опции(0, 0, 0, 0); Таб.ТолькоПросмотр(1); Таб.Показать("Отчет"); КонецПроцедуры
Получить наименование текущего реквизита справочника позволяет метод ТекущийРеквизит()
(англоязычный синоним — CurrentAttribute()
). Метод не имеет параметров и возвращает строковое значение — наименование текущего реквизита справочника.
Данный метод используется после получения очередного значения из выборки и особенно полезен при выборке по документу или по всем реквизитам. Если выборка производится по документу, то в возвращаемом значении сначала записано наименование справочника, а затем через точку наименования реквизита.
Пример использования метода:
Процедура ПечатьУстановокДокумента(Док) Если Док.Выбран() = 0 Тогда Возврат; КонецЕсли; Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("ПечатьИстории"); Таб.ВывестиСекцию("Отчет"); Ист = СоздатьОбъект("Периодический"); Ист.ВыбратьПоДокументу(Док); Пока Ист.ПолучитьЗначение() = 1 Цикл Если Ист.ТекущийРеквизит() = "Товары.Цена" Тогда Таб.ВывестиСекцию("ПоЦенеТовара"); ИначеЕсли Ист.ТекущийРеквизит() = "Клиенты.Статус" Тогда Таб.ВывестиСекцию("ПоСтатусуКлиента"); КонецЕсли; КонецЦикла; Таб.Опции(0, 0, 0, 0); Таб.ТолькоПросмотр(1); Таб.Показать("Отчет"); КонецПроцедуры
Получить номер строки документа, изменившей периодическое значение реквизита справочника, позволяет метод НомерСтроки()
(англоязычный синоним — LineNum()
). Он не имеет параметров и используется после получения очередного значения из выборки. Особенно полезен при выборке по документу или по всем реквизитам.
Пример использования метода:
Процедура ПечатьИстории(Элем) Если Элем.Выбран() = 0 Тогда Возврат; КонецЕсли; Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("ПечатьИстории"); Таб.ВывестиСекцию("Отчет"); Ист = СоздатьОбъект("Периодический"); Ист.ИспользоватьОбъект("", Элем); Ист.ВыбратьЗначения(); Пока Ист.ПолучитьЗначение() = 1 Цикл ДокИст = Ист.ТекущийДокумент(); Если ДокИст.Выбран() = 1 Тогда НомСтрДок = Ист.НомерСтроки(); Таб.ВывестиСекцию("ПоДокументу"); Иначе Таб.ВывестиСекцию("Строка"); КонецЕсли; КонецЦикла; Таб.Опции(0, 0, 0, 0); Таб.ТолькоПросмотр(1); Таб.Показать("Отчет"); КонецПроцедуры
Выполнить запись периодического значения на заданную дату позволяет метод Записать()
(англоязычный синоним — Write()
). Если на заданную дату уже существует запись, то она модифицируется. Возвращаемым значением метода будет число: 1 — если вызов метода закончился успешно, 0 — если нет.
До вызова данного метода следует само значение записать в атрибут Значение
, а дату этого значения записать в атрибут ДатаЗнач
.
Пример использования метода:
Процедура ЗаписьКурсаДоллара(Курс) Вал = СоздатьОбъект("Справочник.Валюты"); Вал.НайтиПоКоду(1); Если Вал.Выбран() = 1 Тогда Доллар = Вал.ТекущийЭлемент(); Иначе Предупреждение("Не найдена валюта!"); Возврат; КонецЕсли; ПерВал = СоздатьОбъект("Периодический"); ПерВал.ИспользоватьОбъект("Текущ_курс", Доллар); ПерВал.Значение = Курс; ПерВал.ДатаЗнач = РабочаяДата(); ПерВал.Записать(); КонецПроцедуры
Удалить периодическое значение на заданную дату позволяет метод Удалить()
(англоязычный синоним — Delete()
). Возвращаемым значением метода будет число: 1 — если вызов метода закончился успешно, 0 — если нет. До вызова данного метода атрибут ДатаЗнач
должен содержать дату удаляемого периодического значения.
Пример использования метода:
Процедура ЧисткаКурсов() Вал = СоздатьОбъект("Справочник.Валюты"); Вал.НайтиПоКоду(1); Если Вал.Выбран() = 1 Тогда Доллар = Вал.ТекущийЭлемент(); Иначе Предупреждение("Не найдена валюта!"); Возврат; КонецЕсли; ПерВал = СоздатьОбъект("Периодический"); ПерВал.ИспользоватьОбъект("Текущ_курс", Доллар); ПерВал.ВыбратьЗначения(); Пока ПерВал.ПолучитьЗначение() = 1 Цикл Курс = ПерВал.Значение; ДатаКурса = ПерВал.ДатаЗнач; Если Курс < 1000 Тогда ПерВал.Удалить(); КонецЕсли; КонецЦикла; КонецПроцедуры
Другие статьи по схожей тематике
- Работа с константами
- Работа с датами
- Работа с журналами документов
- Работа со справочниками в 1С
- Работа с формами
- Работы с табличными формами