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

Т

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

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

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

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

«Материал», с

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

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

типом

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

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




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

86

87

Быстрая разработка прикладных решений

Регистр накопления

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

Создание движений документа ПриходнаяНакладная



Д

вижения документа - это записи в регистрах, которые создаются в процессе проведения документа и отражают изменения, производимые документом. Откроем окно редактирования объекта конфигурации Документ «ПриходнаяНакладная».

НЕ нашли? Не то? Что вы ищете?

Перейдем на закладку «Движения» и в списке регистров конфигурации отметим регистр накопления «ОстаткиМатериалов»:

Отметим регистр накопления и воспользуемся конструктором движений...

Обратите внимание, что сразу после отметки выбранного регистра становится доступной кнопка «Конструктор движений». Этим конструктором мы и воспользуемся.

Конструктор устроен просто. В списке «Регистры» перечислены регистры, в которых документ может создавать движения. В нашем случае там пока один регистр «ОстаткиМатериалов».

В списке «Реквизиты документа» должны находиться исходные данные для создания движений. А в таблице «Поле - Выражение»

89

Быстрая разработка прикладных решений

Регистр накопления

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

В нижнем окне сформируется соответствие полей и выражений.

 



Выберем табличную часть и нажмем «Заполнить выражения»...


Регистр, для которого

конструируем движения

(приход или расход)


Откуда берем данные


Что записываем в измерения и ресурсы регистра

Обратите внимание, что по умолчанию конструктор предлагает нам создавать движения прихода (символ «+» рядом с названием регистра) по регистру «ОстаткиМатериалов». Это нас вполне устраивает, ведь документ «ПриходнаяНакладная» и должен приходовать материалы.

В поле выбора «Табличная часть» выберем табличную часть нашего документа - «Материалы». Список реквизитов документа автоматически заполнится реквизитами нашей табличной части. Теперь нажмем «Заполнить выражения».

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

Нажмем «ОК» и посмотрим, какой текст сформировал конструктор в модуле объекта:

Процедура ОбработкаПроведения(Отказ, Режим) //{{_КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, // внесенные вручную изменения будут утеряны!!! Для Каждого ТекСтрокаМатериалы Из Материалы Цикл // регистр ОстаткиМатериалов Приход Движение = Движения. ОстаткиМатериалов. Добавить(); Движение. ВидДвижения = ВидДвиженияНакоплеиия. Приход;

90

91

Быстрая разработка прикладных решений

Регистр накопления

Движение. Период = Дата;

Движение. Материал = ТекСтрокаМатериалы. Материал;

Движение. Склад = Склад;

Движение. Количество = ТекСтрокаМатериалы. Количество; КонецЦикла;

// записываем движения регистров Движения. ОстаткиМатериалов. Записать(); //}_КОНСТРУКТОР ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры

Конструктор создал обработчик события «ОбработкаПроведения» объекта конфигурации Документ и поместил его в модуль объекта.

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

Объект встроенного языка ДокументОбъект имеет свойство «Движения». Оно возвращает коллекцию наборов записей регистров, которые принадлежат этому документу. К набору записей документа, принадлежащему конкретному регистру, можно обратиться, указав через точку имя этого регистра.

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

Затем мы присваиваем нужные значения всем полям этой записи и после перебора всех строк документа (после завершения циклов) «одним махом» записываем в регистр «ОстаткиМатериалов» весь набор записей движений документа.

Посмотрим, как это работает. Запустим 1С:Предприятие в режиме отладки и откроем одновременно два окна: список документов «ПриходнаяНакладная» и список регистра накопления «ОстаткиМатериалов».

Откроем Приходную накладную №1 и нажмем «ОК». Обратите внимание, что при проведении приходной накладной появляются соответствующие записи в регистрах накопления:

Аналогичные действия проделаем и с документом Приходная накладная №2.

92

93

Быстрая разработка прикладных решений

Регистр накопления

Создание движений документа ОказаниеУслуги

Т

еперь мы аналогичным образом создадим движения документа «ОказаниеУслуги». При использовании конструктора будем внимательны и обратим внимание на то, что документ «ОказаниеУслуги» должен расходовать материалы. Поэтому перед тем, как нажать «ОК» убедимся, что выбран правильный тип движения регистров (нам нужен «Расход»).

Запустим отладку и создадим документ оказания услуги, который будет расходовать один транзистор Philips за 3 рубля.

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

Сформированные таким образом движения этого документа будут не совсем правильны. Дело в том, что в документе «ОказаниеУслуги», в отличие от документа «ПриходнаяНакладная» могут содержаться не только расходуемые материалы, но и услуги. Поэтому в регистр «ОстаткиМатериалов» будут попадать записи и о расходуемых услугах, что не правильно.

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

Что нового мы узнали

- для чего предназначен объект конфигурации Регистр накопления

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

- как создать движения документа с помощью конструктора движений

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

94

95

Отчет

Глава 5. Отчет

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

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

О

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

96

Для тех, кто работал с версией 7.7

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

Быстрая разработка прикладных решений

Отчет

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

Т

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

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

таблицы регистра «ОстаткиМатериалов» в этой ветке присутствуют еще несколько виртуальных таблиц, которые формирует система.

Кроме таблицы регистра ОстаткиМатериалов

присутствуют еще несколько виртуальных

таблиц...

 


Воспользуемся конструктором выходной формы...


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

В списке «База данных» представлен состав объектов базы данных; на основе их данных мы имеем возможность построить отчет. Если раскрыть ветку «РегистрыНакопления» то мы увидим, что кроме

Поскольку мы хотим видеть как остатки материалов, так и
информацию об их поступлении и расходовании, нас будет
интересовать виртуальная таблица

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

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

98

Быстрая разработка прикладных решений

Отчет

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

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

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

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



Нажмем «ОК». Система автоматически сформирует формы и откроет их на экране.

Запустим 1С:Предприятие в режиме отладки и посмотрим, как работает отчет. Выполним Операции | Отчет... | Материалы и нажмем «Сформировать».

100

101

Быстрая разработка прикладных решений

Глава 6. Макет

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

102

103

Быстрая разработка прикладных решений

Макет

 



о

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

О

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

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

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

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

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

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

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

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

104

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

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

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

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

Быстрая разработка прикладных решений

Макет

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

Здесь укажем, что конструктор должен вставить новую кнопку в форму документа для вызова процедуры формирования печатной формы, и нажмем «ОК».

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

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

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

 



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




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

106

107

Редактирование макетов и форм

Глава 7. Редактирование макетов и форм

Редактирование макета документа ОказаниеУслуги

О

ткроем конфигуратор, раскроем дерево документа «ОказаниеУслуги» и дважды щелкнем на макете «Печать». Как видите, макет документа состоит из именованных областей, которые в определенном порядке выводятся на печать.

Добавим новую область для вывода итоговой суммы документа. Выделим мышью две пустые строки и выполним команду Таблица | Имена | Назначить имя...

Выделим мышью две строки и зададим имя области

Вызвав палитру свойств для последней заполненной нами ячейки, укажем, что в этой ячейке будет находиться не текст, а параметр:

Укажем, что в ячейке будет находиться не текст, а параметр...

 



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

Текст, содержащийся в ячейке, будет показан на экране.

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

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

Поэтому, указав для ячейки в качестве заполнения «Параметр», мы определили параметр области с именем «ВсегоПоДокументу», которому присвоим нужное нам значение при формировании печатной формы.

Назовем область «Всего». В созданной области, в колонке «Цена», напишем «Всего», а в колонке «Сумма» напишем «ВсегоПоДокументу».

110

111

Быстрая разработка прикладных решений

Редактирование макетов и форм

Теперь откроем модуль формы документа «ОказаниеУслуги» -«ФормаДокумента». Найдем в нем процедуру «Печать» и после цикла добавим в нее следующие строки (новые строки выделены жирным шрифтом):

Процедура Печать(Элемент)

// {{_KOHCTPyKTOP_ПЕЧАТИ_ЭЛEMEHT(печать) // Данный фрагмент построен конструктором. // При повторном использовании конструктора, //внесенные вручную изменения будут утеряны!!! ТабДок = Новый ТабличныйДокумент;

Макет = Документы. ОказаниеУслуги. ПолучитьМакет("Печать"); // Заголовок

Область = Макет. ПолучитьОбласть("Заголовок"); ТабДок. Вывести(Область); // Шапка

Область = Макет. ПолучитьОбласть("Шапка"); Область. Параметры. Номер = Номер; Область. Параметры. Дата = Дата; Область. Параметры. Клиент = Клиент; Область. Параметры. Мастер = Мастер; ТабДок. Вывести(Область); // тчНоменклатура

Область = Макет. ПолучитьОбласть("тчНоменклатураШапка"); ТабДок. Вывести(Область);

Для Каждого ТекСтрокатчНоменклатура Из тчНоменклатура Цикл Область = Макет. ПолучитьОбласть("тчНоменклатура");

Область. Параметры. УслугаМатериал = ТекСтрокатчНоменклатура. Номенклатура; Область. Параметры. Количество = ТекСтрокатчНоменклатура. Количество; Область. Параметры. Цена = ТекСтрокатчНоменклатура. Цена; Область. Параметры. Сумма = ТекСтрокатчНоменклатура. Сумма; ТабДок. Вывести(Область); КонецЦикла;

Область = Макет. ПолучитьОбласть("Всего"); Область. Параметры. ВсегоПоДокументу = ПереченьНоменклатуры

.Итог("Сумма"); ТабДок. Вывести(Область); ТабДок. ОтображатьСетку = Ложь; ТабДок. Защита = Ложь; ТабДок. ТолькоПросмотр = Ложь; ТабДок. ОтображатьЗаголовки = Ложь; ТабДок. Показать();

//} }_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ КонецПроцедуры

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

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

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

Смысл добавленного фрагмента прост: мы получаем новую область «Всего» (ту, которую мы только что добавили к макету). Затем

112

113

Быстрая разработка прикладных решений

Редактирование макетов и форм

Редактирование формы документа ОказаниеУслуги

О

ткроем в конфигураторе форму документа «ОказаниеУслуги» - «ФормаДокумента». Откроем палитру свойств для табличного поля, расположенного в форме, и установим свойство «Подвал», которое определяет наличие подвала у элемента управления табличное поле.

Добавим подвал к табличному полю...

После этого откроем свойства колонки «Сумма», установим горизонтальное положение в подвале - «Прижать вправо», установим флаг «Показывать итог в подвале» и в шрифте подвала тоже изменим начертание на «Жирный».

Запустим 1С:Предприятие в режиме отладки и посмотрим, как теперь выглядит форма документа Оказание услуги № 1:

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

Затем откроем свойства колонки «Цена» и установим текст подвала - «Всего:», горизонтальное положение в подвале - «Прижать вправо» и в шрифте подвала изменим начертание на «Жирный».

114

115

Быстрая разработка прикладных решений

Что нового мы узнали

- как изменить табличный документ

- какая разница в заполнении ячейки табличного документа

текстом, параметром и шаблоном - как с помощью встроенного языка вывести в табличный

документ новую область - как изменить внешний вид и поведение элемента

управления, расположенного в форме - как отобразить сумму по колонке табличного поля

Часть II. Использование основных объектов конфигурации

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

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

Поэтому все дальнейшее изложение, грубо говоря, будет посвящено тому, как «приблизить» эту систему учета к реальным потребностям 000 «На все руки мастер».

116

117

Периодический регистр сведений

Глава 1. Периодический регистр сведений

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

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

Зачем нужен периодический регистр сведений?

Н

ачнем мы с того, что обратим ваше внимание на документ «ОказаниеУслуги». Как вы помните, в этом документе мы выбираем услугу, которая оказывается, и затем указываем цену.

Очевидно, что в OOO «На все руки мастер» существует перечень услуг, который определяет стоимость каждой услуги. Казалось бы, что стоимость услуги является неотъемлемым свойством самой услуги и поэтому стоимость услуги следует добавить в качестве реквизита справочника «Номенклатура».

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29