Создание регистра накопления «ОстаткиМатериалов»

Лабораторная работа №2

Итак, мы с вами подошли к одному из главных моментов разработки любой конфигурации – созданию механизма учета накопления данных.

Казалось бы, все необходимое мы с вами уже создали: у нас есть что расходовать и приходовать (справочники), и у нас есть чем расходовать и приходовать (документы). Осталось только построить несколько отчетов, и автоматизация ООО «На все руки мастер» будет закончена.

Однако это не так.

Во-первых, путем анализа документов можно, конечно, получить требуемые нам выходные данные. Но представьте, что завтра ООО «На все руки мастер» решит немного изменить свои бизнес- процессы, и нам потребуется ввести в конфигурацию еще один документ (или несколько документов).

Например, сейчас мы полагаем, что товары поступают в ООО «На все руки мастер» и затем расходуются. Руководство захотело усилить материальный контроль и решило приходовать товары на основной склад организации и затем выдавать их матери- ально ответственным лицам. В этом случае нам придется добавить в конфигурацию еще один документ, который будет фиксировать перемещение материалов между основным складом и материально ответственными лицами. И очевидно, нам придется переработать все отчеты, которые были нами созданы к этому моменту, с тем, чтобы они учитывали изменения, вносимые новым документом. А пред- ставьте, если в нашей конфигурации не два, а двадцать документов?!

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

Поэтому в системе «1С:Предприятие» есть несколько объектов конфигурации, которые позволяют создавать в базе данных структуры, пред- назначенные для накопления информации в удобном для последующего анализа виде. Использование таких хранилищ данных позволяет нам, с одной стороны, накапливать в них данные, поставляемые различ- ными документами (или другими объектами базы данных), а с другой стороны, легко создавать нужные нам отчеты или использовать эти данные в алгоритмах работы конфигурации (рис. 6.1).

В конфигурации существует несколько объектов, называемых регистрами, для описания подобных хранилищ.

Объект конфигурации Регистр накопления предназначен для описания структуры накопления данных. На основе объекта конфигурации Регистр накопления платформа создает в базе данных таблицы, в которых будут накапливаться данные, поставляемые различными объектами базы данных.

Эти данные будут храниться в таблицах в виде отдельных записей, каждая из которых имеет одинаковую заданную в конфигураторе структуру (рис. 6.2).

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

Отличительной особенностью регистра накопления является то, что он не предназначен для интерактивного редактирования пользователем.

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

Основным назначением регистра накопления является накопление числовой информации в разрезе нескольких измерений, которые описываются разработчиком в соответствующем объекте конфи- гурации Регистр накопления и являются подчиненными объектами конфигурации.

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

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

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

значения измерений, значения приращений ресурсов, ссылку на документ, который вызвал эти изменения (регистратор), и «направ- ление» приращения (приход или расход). Такой набор записей называется

движениями регистра накопления. Каждому движению регистра накопления всегда должен соответствовать регистратор – объект информационной базы (как правило, документ), который произвел эти движения.

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

Объект конфигурации Отчет

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

Создание отчета «Материалы»

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

Создадим новый объект конфигурации Отчет и назовем его Материалы. Откроем окно редактирования объекта конфигурации Отчет Материалы и создадим схему компоновки данных. Для этого нажмем кнопку Открыть схему компоновки данных (рис. 5.1).

Рис. 6. Окно редактирования объекта конфигурации Отчет

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

Рис. 7. Конструктор макета

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

Конструктор обладает большим количеством возможностей для визуального проектирования отчетов, но мы сейчас воспользуемся только самыми простыми его возможностями и определим те данные, которые хотим видеть в результате работы нашего отчета. Добавим новый набор данных - запрос (рис. 8):

Рис 8. Добавление набора данных в конструкторе схемы компоновки

Для того чтобы создать текст запроса, запустим конструктор запроса – кнопка Конструктор запроса (рис. 9).

В списке База данных представлены таблицы запросов. На основе их данных мы имеем возможность построить отчет. Если раскрыть ветку РегистрыНакопления, то мы увидим, что кроме таблицы регистра ОстаткиМатериалов в этой ветке присутствуют еще несколько виртуальных таблиц, которые формирует система (рис. 10).

Рис. 9. Вызов конструктора запроса из конструктора схемы компоновки данных

Рис. 10. Кроме таблицы регистра «ОстаткиМатериалов» присутствуют еще несколько виртуальных таблиц…

Поскольку мы хотим видеть как остатки материалов, так и информацию об их поступлении и расходовании, нас будет интересовать виртуальная таблица ОстаткиМатериалов.ОстаткиИОбороты. Раскроем ее (рис. 11).

Рис. 11. Таблица «ОстаткиМатериалов.ОстаткиИОбороты»

Как вы видите, эта таблица содержит материал, склад и кроме этого начальные и конечные остатки, а также значения прихода, расхода и оборотов для всех ресурсов регистра ОстаткиМатериалов.

Начнем выбирать поля таблицы в нужном нам порядке двойным щелчком мыши. Сначала выберем Склад и Материал. Затем выберем КоличествоНачальныйОстаток, КоличествоПриход, КоличествоРасход и в заключение КоличествоКонечныйОстаток.

В результате окно Поля должно быть заполнено следующим образом (рис. 12):

Рис. 12. Выбранные поля

После этого на закладке Группировка укажем групповое поле Склад:

Рис. 13. Групповое поле «Склад»

Нажмем OK и вернемся в конструктор схемы компоновки данных (рис 14).

Рис. 14. Конструктор схемы компоновки данных

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

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

Перейдем на закладку Настройки и добавим группировку (контекстное меню – Новая группировка). При этом не станем указывать поле группировки, а просто нажмем OK. В отчет будут выводиться детальные записи из информационной базы – записи, получаемые в результате выполнения запроса без итогов (рис. 15).

Рис. 15. Добавим новую группировку

Теперь настроим поля, которые будут выводиться в результат отчета.

Для этого перейдем на закладку Выбранные поля и перенесем мышью из списка доступных полей :

§ Склад;

§ Материал;

§ КоличествоНачальныйОстаток;

§ КоличествоПриход;

§ КоличествоРасход;

§ КоличествоКонечныйОстаток.

Рис. 16. Настройки отчета

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

Сначала укажем, что оба эти параметра будут использоваться в отчете – установим флажки в первой колонке.

Затем выделим каждый из параметров, нажмем кнопку Свойства элемента пользовательских настроек и установим флажок Включать в пользовательские настройки (рис.).

Таким образом, перед формированием отчета пользователь сможет задать отчетный период. Более подробно о параметрах и пользовательских настройках отчета будет рассказано позже.

В заключение определим, в каких подсистемах будет отображаться наш отчет.

Закроем конструктор схемы компоновки данных и в окне редактирования объекта конфигурации Отчет Материалы перейдем на закладку Подсистемы.

Отметим в списке подсистем конфигурации ветви Учет материалов, Оказание услуг и Бухгалтерия.

Таким образом, ссылка на наш отчет автоматически попадет в панель команд этих разделов, в подменю Отчеты (рис. .

В открывшемся окне «1С:Предприятия» мы видим, что в разделах Бухгалтерия, Оказание услуг и Учет материалов появилось новое подменю Отчеты, содержащее команды для выполнения отчетов, и в нем команда для формирования отчета Материалы (рис. 7.15).

Запустим 1С:Предприятие в режиме отладки и посмотрим, как работает отчет.

Как видите, наш отчет вполне презентабелен и полностью отражает движение материалов, произошедшее в нашей организации (рис. 17):

Рис. 17. Отчет «Материалы»

Объект конфигурации Макет

Объект конфигурации Макет предназначен для хранения различных форм представления данных, которые могут потребоваться каким-либо объектам конфигурации или всему прикладному решению в целом. Макет может содержать табличный или текстовый документ, двоичные данные, HTML-документ или Active Document, графическую или географическую схему, схему компоновки данных или макет оформления схемы компоновки данных. Макеты могут существовать как сами по себе (общие макеты), так и быть подчинены какому-либо объекту конфигурации.

Одно из предназначений макета, подчиненного объекту конфигурации и содержащего табличный документ, – создание печатной формы этого объекта.

Создание печатной формы заключается в конструировании ее составных частей – именованных областей, из которых затем «собирается» готовая печатная форма. Порядок заполнения областей данными и порядок вывода их в итоговую форму описывается при помощи встроенного языка.

Печатная форма может включать в себя различные графические объекты: картинки, OLE-объекты, диаграммы и т. д.

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

Создание макета документа «Оказание услуги»

Откроем в конфигураторе окно редактирования объекта конфигурации Документ ОказаниеУслуги. Перейдем на закладку Макеты и запустим конструктор печати (рис. 18):

Рис. 18. Запустим конструктор печати…

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

На втором шаге нажатием двойной стрелки определим, что все реквизиты нашего документа будут отображены в шапке печатной формы.

На третьем шаге точно так же определим, что все реквизиты табличной части документа будут отображены в печатной форме.

На четвертом шаге конструктор предложит сформировать нам подвал (нижнюю часть) печатной формы. Мы не станем ничего указывать (подвал в данном случае использовать не будем) и перейдем к пятому шагу.

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

Нажмем OK.

В конфигураторе откроется форма документа и его макет (рис. 19):

Рис. 19 Макет документа ОказаниеУслуги

Заметим, что разработчик может создать макет печатной формы с нуля и для ее вывода создать соответствующую команду и кнопку в форме документа, но в данном случае всю работу сделал за нас конструктор печати:

· Создан макет печатной формы документа ОказаниеУслуги с именем Печать (см. рис. 8.6).

· Создана команда документа ОказаниеУслуги с именем Печать.

· В модуль этой команды помещен обработчик, вызывающий процедуру печати документа, выполняющуюся на сервере. Сама процедура печати помещена в модуль менеджера документа ОказаниеУслуги (рис. 8.7).

· В командную панель формы документа ОказаниеУслуги помещена команда Печать для формирования печатной формы документа (рис. 8.8).

Причем поскольку команда Печать принадлежит документу ОказаниеУслуги в целом, а не конкретной его форме, эту команду можно будет помещать в любую форму, созданную для документа.

В будущем мы будем самостоятельно создавать процедуры обра- ботчиков команд и размещать соответствующие им кнопки в форме, но пока воспользуемся результатами работы конструктора печати и проверим макет в работе.

Проверим макет в работе. Запустим 1С:Предприятие в режиме отладки и откроем документ Оказание услуги №1. Обратите внимание, что в правом нижнем углу документа появилась новая кнопка Печать (рис. 20).

Рис. 20. Появилась новая кнопка Печать

Кнопка Печать добавилась также и в командную панель формы списка документов Оказание услуги. Поэтому распечатать документ можно, не открывая его, а просто выделив в списке и нажав кнопку Печать.

Нажмем эту кнопку (в форме списка или в форме документа) и увидим печатную форму нашего документа (рис. 8.10).

Эту кнопку добавил конструктор. Нажмем на нее и увидим печатную форму нашего документа (рис. 6.4).

Рис. 21. Печатная форма документа

Как видите, конструктор сформировал вполне подходящую печатную форму для нашего документа. Единственное, чего не хватает в данной форме, – это итоговой суммы документа.

Далее мы познакомимся с тем, как можно редактировать макеты и формы объектов конфигурации, и добавим итоговую сумму к форме и макету документа ОказаниеУслуги.

Лабораторная работа №2

Итак, мы с вами подошли к одному из главных моментов разработки любой конфигурации – созданию механизма учета накопления данных.

Казалось бы, все необходимое мы с вами уже создали: у нас есть что расходовать и приходовать (справочники), и у нас есть чем расходовать и приходовать (документы). Осталось только построить несколько отчетов, и автоматизация ООО «На все руки мастер» будет закончена.

Однако это не так.

Во-первых, путем анализа документов можно, конечно, получить требуемые нам выходные данные. Но представьте, что завтра ООО «На все руки мастер» решит немного изменить свои бизнес- процессы, и нам потребуется ввести в конфигурацию еще один документ (или несколько документов).

Например, сейчас мы полагаем, что товары поступают в ООО «На все руки мастер» и затем расходуются. Руководство захотело усилить материальный контроль и решило приходовать товары на основной склад организации и затем выдавать их матери- ально ответственным лицам. В этом случае нам придется добавить в конфигурацию еще один документ, который будет фиксировать перемещение материалов между основным складом и материально ответственными лицами. И очевидно, нам придется переработать все отчеты, которые были нами созданы к этому моменту, с тем, чтобы они учитывали изменения, вносимые новым документом. А пред- ставьте, если в нашей конфигурации не два, а двадцать документов?!

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

Поэтому в системе «1С:Предприятие» есть несколько объектов конфигурации, которые позволяют создавать в базе данных структуры, пред- назначенные для накопления информации в удобном для последующего анализа виде. Использование таких хранилищ данных позволяет нам, с одной стороны, накапливать в них данные, поставляемые различ- ными документами (или другими объектами базы данных), а с другой стороны, легко создавать нужные нам отчеты или использовать эти данные в алгоритмах работы конфигурации (рис. 6.1).

В конфигурации существует несколько объектов, называемых регистрами, для описания подобных хранилищ.

Объект конфигурации Регистр накопления предназначен для описания структуры накопления данных. На основе объекта конфигурации Регистр накопления платформа создает в базе данных таблицы, в которых будут накапливаться данные, поставляемые различными объектами базы данных.

Эти данные будут храниться в таблицах в виде отдельных записей, каждая из которых имеет одинаковую заданную в конфигураторе структуру (рис. 6.2).

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

Отличительной особенностью регистра накопления является то, что он не предназначен для интерактивного редактирования пользователем.

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

Основным назначением регистра накопления является накопление числовой информации в разрезе нескольких измерений, которые описываются разработчиком в соответствующем объекте конфи- гурации Регистр накопления и являются подчиненными объектами конфигурации.

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

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

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

значения измерений, значения приращений ресурсов, ссылку на документ, который вызвал эти изменения (регистратор), и «направ- ление» приращения (приход или расход). Такой набор записей называется

движениями регистра накопления. Каждому движению регистра накопления всегда должен соответствовать регистратор – объект информационной базы (как правило, документ), который произвел эти движения.

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

Создание регистра накопления «ОстаткиМатериалов»

Теперь, когда мы знаем, для чего предназначены регистры накопления, посмотрим, как можно их использовать в нашем примере.

Прежде всего, нас интересует информация о том, сколько и каких материалов есть у нас на складах. Для накопления такой информации мы создадим регистр ОстаткиМатериалов.

Откроем в конфигураторе нашу учебную конфигурацию и создадим новый объект конфигурации Регистр накопления. Зададим имя регистра – ОстаткиМатериалов.

Также зададим и Расширенное представление списка как Движения по регистру Остатки материалов. Этот заголовок будет отображаться в окне списка записей регистра.

Нажмем Далее и перейдем на закладку Подсистемы.

По логике нашей конфигурации данный регистр должен быть доступен в разделах Учет материалов, Оказание услуг и Бухгалтерия. Поэтому отметим в списке подсистем эти подсистемы (рис. 6.3).

Нажмем Далее и перейдем к созданию структуры регистра.

Создадим измерения регистра:

§ Материал, с типом СправочникСсылка.Номенклатура,

§ Склад, с типом СправочникСсылка.Склады.

Затем создадим ресурс Количество с длиной 15 и точностью 3.

В результате этих действий регистр ОстаткиМатериалов должен иметь следующий вид (рис. 4.2):

Рис. 1. Регистр «ОстаткиМатериалов»

Если вы сейчас попытаетесь запустить 1С:Предприятие в режиме отладки, то система выдаст сообщение об ошибке: РегистрНакопления.ОстаткиМатериалов: Ни один из документов не является регистратором для регистра. Это сообщение еще раз подтверждает тот факт, что назначение регистра накопления в том, чтобы аккумулировать данные, поставляемые различными документами.

Поэтому мы сформируем движения регистра накопления ОстаткиМа- териалов в процессе проведения двух созданных нами документов ПриходнаяНакладная и ОказаниеУслуг.

Наши рекомендации