- •2.4 Лабораторная работа № 4. Регистры сведений
- •2.4.1 Теоретические сведения
- •2.4.1.1 Регистр сведений «КурсыВалют»
- •2.4.1.2 Отбор в диалоге
- •2.4.1.3 Чтение значения курса валют
- •2.4.1.4 Регистр сведений «Цены поставщиков»
- •2.4.1.5 Регистр сведений «Цены номенклатуры»
- •2.4.1.6 Создание функции РозничнаяЦена()
- •2.4.1.7 Автоматическое заполнение цены документа «ОказаниеУслуги»
- •2.4.2 Задание на лабораторную работу
- •2.4.3 Контрольные вопросы
2.4.1.4 Регистр сведений «Цены поставщиков»
В предыдущем примере мы рассмотрели основы работы с регистром сведений, у которого был ручной способ записи. Теперь рассмотрим пример, когда запись ведется регистратором.
Поставим перед собой задачу создать механизм, позволяющий отслеживать приходные цены номенклатуры в разрезе поставщиков.
Создадим регистр сведений «ЦеныПоставщиков». Регистр сведений периодический (по позиции регистратора), режим записи «Подчинение регистратору».
Рис. 21 Создание регистра сведений «ЦеныПоставщиков»
У него два измерения «Поставщик» типа «СправочникСсылка.Контрагенты», «Номенклатура» типа «СправочникСсылка.Номенклатура» и один ресурс «Цена» типа «Число(15,2)».
Рис. 22 Заданий измерений и ресурсов регистра
Настройте форму списка и форму набора записей.
Так как запись ведется регистратором (по смыслу документом «ПриходнаяНакладная»), необходимо модифицировать данный документ, а именно: разрешить проведение и указать, что документ является регистратором по регистру «ЦеныПоставщиков».
Рис. 23 Задание регистраторов регистра
С помощью конструктора движений настроим порядок проведения документа. Конструктор движений документа вызывается на вкладке «Движения» того документа, который будет проводиться, для этого надо щелкнуть по кнопке «Конструктор движений». В ответ откроется диалог с данными регистра и данными документа. В этом диалоге надо указать используемую табличную часть, а затем щелкнуть по кнопке «Заполнить выражения», и одноименные поля регистра и документа заполнятся автоматически. Те поля, что не заполнились автоматически, надо заполнить вручную, затем щелкнуть по кнопке «ОК», и конструктор вставит в модуль документа текст процедуры «ОбработкаПроведения».
Рис. 24 Вызов конструктора движений
Рис. 25 Работа конструктора движений
Рис. 26 Процедура обработки проведения
Проверьте работоспособность созданного вами механизма. Для этого в пользовательском режиме перезапишите несколько документов «ПриходнаяНакладная». Движения документа (записи в регистр) можно посмотреть, воспользовавшись кнопкой командной панели «Перейти».
2.4.1.5 Регистр сведений «Цены номенклатуры»
Обратим внимание на документ «ОказаниеУслуги». Как вы помните, в этом документе мы выбираем услугу, которая оказывается, и затем указываем цену.
Очевидно, что на любом предприятии существует перечень услуг, который определяет стоимость каждой услуги. Казалось бы, что стоимость услуги является неотъемлемым свойством самой услуги и поэтому стоимость услуги следует добавить в качестве реквизита справочника «Номенклатура».
Однако стоимость услуг имеет особенность меняться со временем, и может сложиться такая ситуация, что когда нам потребуется внести изменения или уточнения в один из ранее проведенных документов «ОказаниеУслуги», мы не сможем получить правильную стоимость услуги, поскольку в реквизите справочника будет храниться последнее введенное значение.
Кроме того, не исключена ситуация, что руководство предприятия пожелает видеть, как зависит прибыль предприятия от изменения стоимости оказываемых услуг. В этом случае просто необходимо будет иметь возможность анализировать изменение стоимости услуг во времени, поэтому для хранения стоимости услуг мы используем объект - регистр сведений.
Приступим к созданию периодического регистра сведений, который будет хранить развернутые во времени розничные цены материалов и стоимости услуг, оказываемых предприятием.
Откроем конфигуратор и создадим новый объект конфигурации Регистр сведений. Назовем его «ЦеныНоменклатуры». Установим периодичность этого регистра в пределах секунды.
Рис. 27 Создание регистра сведений «ЦеныНоменклатуры»
Перейдем на закладку «Данные» и создадим измерение регистра «Номенклатура» с типом СправочникСсылка.Номенклатура. Укажем, что это измерение будет ведущим. Свойство «Ведущее» имеет смысл использовать лишь тогда, когда измерение имеет тип ссылки на объект базы данных. Установка свойства «Ведущее» будет говорить о том, что запись регистра сведений представляет интерес, только пока существует этот объект. При удалении объекта, все записи регистра сведений по этому объекту тоже будут автоматически удалены. Кроме того, в форме списка справочника появляется кнопка командной панели «Перейти», по которой возможен переход к записям регистра, отобранным по значению выбранного элемента справочника.
После этого создадим новый ресурс «Цена», тип Число, длина 15, точность 2, неотрицательное.
Рис. 28 Задание измерений и ресурсов регистра
Теперь запустим 1С:Предприятие в режиме отладки и посмотрим, как работает наш периодический регистр сведений ЦеныНоменклатуры.
После этого зададим розничные цены на материалы:
Рис. 29 Задание значений периодического регистра сведений
Зададим стоимость услуг нашего предприятия, после этого зададим отпускные цены на материалы.
Итак, мы с вами имеем очень полезную возможность в нашей программе - возможность установки цен на услуги и материалы. Поскольку цены хранятся с привязкой к дате, мы можем заранее установить новые цены и быть уверенными в том, что новые цены вступят в действие не раньше указанной для них даты.
Теперь посмотрим, как можно использовать заданные нами цены в Документе «ОказаниеУслуги».