Опубликован: 06.12.2011 | Уровень: для всех | Доступ: платный
Лекция 9:

Оборотные регистры накопления, последовательности, нумераторы, регистры сведений

Нумераторы

Еще один полезный объект, который можно найти в ветви Документы дерева конфигурации – это нумераторы. Нумератор позволяет задавать единые правила нумерации для различных документов. Создадим новый нумератор, назовем его НумераторРасходныхДокументов, рис. 8.20.

Создание нового нумератора

Рис. 8.20. Создание нового нумератора

Редактирование свойств нумератора осуществляется в окне свойств объекта, для него не предусмотрено окна редактирования объекта.

Благодаря нумератору документы разных видов, которым он назначен (делается это на вкладке Нумерация окна настройки свойств документа), рис. 8.21. приобретают сквозную нумерацию.

Настройка использования нумератора в документе

Рис. 8.21. Настройка использования нумератора в документе

То есть, если, например, мы создали документ РеализацияМатериалов и он приобрел номер 000000001, то, если следующим документом с тем же нумератором будет документ ОтпускМатериаловМастеру, ему автоматически будет присвоен номер 000000002.

Регистры сведений

Мы хотели бы хранить и использовать в нашей конфигурации сведения о различных валютах. Решение подобной задачи автоматически заставляет нас сначала задуматься о каталоге валют в конфигурации, то есть – о соответствующем справочнике. Мы можем создать такой справочник, оснастить его реквизитами, необходимыми для хранения сведений о валютах. Предположим, мы решим хранить данные о курсе валюты так же, в справочнике. Мы можем это сделать, но такой подход будет не слишком удобным.

Главное неудобство здесь заключается в том, что, введя в карточку валюты сведения о курсе на определенную дату, мы потеряем предыдущее значение курса. Справочник не хранит историю значений реквизитов, поэтому мы вынуждены будем либо довольствоваться единственным значением курса, либо использовать для хранения курсов валют какой-то другой механизм. Такой механизм имеется в 1С:Предприятие 8 и называется он регистром сведений.

Регистры сведений бывают различных видов. В первом приближении они делятся на периодические и непериодические регистры. Непериодические регистры проще всего сравнить с некими таблицами, в которых хранятся определенные сведения, развернутые по заданным в регистре измерениям. Примерами таких регистров могут быть регистр, фиксирующий содержание драгоценных металлов в каких-либо деталях, регистр, хранящий данные адресного классификатора, регистр с информацией о том, какой день недели является рабочим, а какой – выходным, и многие другие. Даже если одним из измерений непериодического регистра сведений является дата – он не становится от этого периодическим.

В противоположность непериодическому регистру, который, в сущности, хранит одни и те же показатели, периодический регистр может хранить историю изменения этих показателей. Такие регистры могут иметь различную периодичность. Например, для регистра, призванного фиксировать курсы валют, разумно будет установить периодичность в пределах дня, так как курсы валют обычно фиксируются в пределах одного дня.

Другая классификация регистров сведений заключается в том, является ли регистр независимым или подчиненным регистратору. Независимый регистр сведений мы можем заполнять самостоятельно, вручную вводя в него данные непосредственно в таблице регистра. Когда же регистр подчинен регистратору, записи в него производятся при проведении документа-регистратора.

Рассмотрим использование периодического независимого регистра сведений на примере с курсами валют. Для начала создадим новый справочник. Назовем его Валюты, включим в подсистему БухгалтерскийУчет, других настроек для данного справочника задавать не будем. Нас вполне устроит возможность задать наименование валюты с помощью стандартного реквизита.

Создадим новый регистр сведений КурсыВалют, установим его периодичность – В пределах дня, рис. 8.22.

Создание регистра сведений

Рис. 8.22. Создание регистра сведений

На закладке Подсистемы включим регистр в подсистему БухгалтерскийУчет.

На закладке Данные ( рис. 8.23.) добавим следующее:

Измерения:

Имя: Валюта, тип СправочникСсылка.Валюты. Флаги Ведущее, Основной отбор и Запрет незаполненных значений установлены

Ресурсы

Имя: Курс, тип Число, длина 10, точность 4

Имя: Кратность, тип Число, длина 10, точность 0

Исключим регистр из состава общего реквизита Организация.

В ресурсе Курс мы будем хранить курс, который может выражаться числом с точностью до 4-х знаков после запятой. В ресурсе Кратность мы будем хранить кратность валюты по отношению к рублю. Например, для американского доллара курс может быть 34.3234, а кратность 1 – то есть, за один доллар дают 34.3234 рубля.

Настройка состава данных регистра сведений

Рис. 8.23. Настройка состава данных регистра сведений

Воспользуемся созданной группой объектов в пользовательском режиме. Здесь мы можем вручную вводить данные по валютам, рис. 8.24.

Заполнение регистра сведений в пользовательском режиме

Рис. 8.24. Заполнение регистра сведений в пользовательском режиме

Теперь в нашей конфигурации есть сведения о курсах валют.

Лариса Дятчина
Лариса Дятчина

Код 

&НаКлиенте

Процедура ОсновноеКонтактноеЛицоПриИзменении(Элемент)

Если НЕ ПроверитьЗаполнениеРеквизита() Тогда

 Сообщить("Выбранное контактное лицо, "+Объект.ОсновноеКонтактноеЛицо+",не работает у контрагента.");

КонецЕсли;

КонецПроцедуры

 

&НаСервере

Функция ПроверитьЗаполнениеРеквизита()

 Возврат (Объект.ОсновноеКонтактноеЛицо.ПредставительРаботает);  

КонецФункции

&НаСервере

Процедура УстановитьНомерПредставителя()

 

 Объект.ТелефонКонтактногоЛица=Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения;

КонецПроцедуры

При проверке выдает ошибку:

{Справочник.Контрагенты.Форма.ФормаСписка.Форма(12,11)}: Переменная не определена (Объект)
 Возврат (<<?>>Объект.ОсновноеКонтактноеЛицо.ПредставительРаботает);   (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(17,2)}: Переменная не определена (Объект)
 <<?>>Объект.ТелефонКонтактногоЛица=Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения; (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(17,32)}: Переменная не определена (Объект)
 Объект.ТелефонКонтактногоЛица=<<?>>Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения; (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(6,41)}: Переменная не определена (Объект)
 Сообщить("Выбранное контактное лицо, "+<<?>>Объект.ОсновноеКонтактноеЛицо+",не работает у контрагента."); (Проверка: Тонкий клиент)

 

работаю на версии 1С:Предприятие 8.3 (8.3.10.2650)

максим матасов
максим матасов
Леонид Альбрехт
Леонид Альбрехт
Россия, Екатеринбург, 10, 2004
Оксана Максимова
Оксана Максимова
Россия, Екатеринбург, Уральский государственный университет им. А. М. Горького, 2013