Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МетодичкаПрактикум

.pdf
Скачиваний:
26
Добавлен:
20.03.2015
Размер:
1.3 Mб
Скачать

На закладке Данные создадим для регистра одно измерение - Материал

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

длиной 15 и точностью 2.

После создания регистр СтоимостьМатериалов должен выглядеть в дереве конфигурации следующим образом рис.4.8.

Рис.4.8. Записи регистра «Стоимость материалов»

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

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

Все подсистемы.

Воткрывшемся окне слева в списке Подсистемы выделим подсистему

Бухгалтерия. Справа в списке Командный интерфейс в группе Панель навигации.Обычное включим видимость у команды Стоимость материалов и мышью перетащим ее в группу Панель навигации.

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

Начнем с самого простого - документа ПриходнаяНакладная.

Проведение приходной накладной по двум регистрам

Откроем в конфигураторе окно редактирования объекта конфигурации

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

Всписке регистров отметим, что документ будет создавать теперь движения и по регистру СтоимостьМатериалов

Внесем необходимые дополнения прямо в обработчик события

ОбработкаПроведения документа ПриходнаяНакладная.

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

использование конструктора приведет к тому, что имеющаяся процедура

70

PDF created with pdfFactory Pro trial version www.pdffactory.com

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

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

Перед началом цикла установим для набора записей движений по этому регистру свойство Записывать в значение Истина, чтобы платформа автоматически записала созданные нами движения после выхода из процедуры проведения документа. В результате процедура ОбработкаПроведения будет выглядеть следующим образом (листинг 4.7).

Листинг 4.7. Движения документа «ПриходнаяНакладная»

Процедура ОбработкаПроведения(Отказ, Режим) Движения.ОстаткиМатериалов.Записывать = Истина; Движения.СтоимостьМатериалов.Записывать = Истина; Для Каждого ТекСирокаМатериалы Из Материалы Цикл //регистр ОстаткиМатериалов Приход Движение = Движения.СтоимостьМатериалов.Добавит();

Движение.ВидДвижения = ВидДвиженияНакопления.Приход; ДвижениеПериод = Дата; Движение.Материал = Тек.СтрокаМатериалы.Материал;| Движение.Склад = Склад;

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

// регистр СтоимостьМатериалов Приход Движение = Движения.СтоимостьМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата;

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

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

КонецЦикла; КонецПроцедуры

Команда перехода к записям регистра

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

Для этого откроем форму документа ПриходнаяНакладная. В левом верхнем окне перейдем на закладку Командный интерфейс. В разделе Панель навигации раскроем группу Перейти и увидим команду для открытия регистра накопления Стоимость материалов, установим для нее видимость.

71

PDF created with pdfFactory Pro trial version www.pdffactory.com

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

Запустим 1С:Предприятие. Откроем список документов, выполнив команду Приходные накладные в панели навигации раздела Учет материалов.

Выделим одновременно, используя клавишу Ctrl, все приходные накладные и перепроведем их, выполнив команду Все действия ► Провести.

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

Проведение документа «Оказание услуги» по двум регистрам

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

Рис. 4.9. Записи регистров «Стоимость материалов» и «Остатки материалов».

Поскольку в документе ОказаниеУслуги у нас отражена только цена номенклатуры, нам понадобится:

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

После этого изменить процедуру проведения документа ОказаниеУслуги.

Врежиме «1С:Предприятие» перепровести документы, чтобы отработал новый, измененный нами алгоритм проведения документов Оказание

услуги.

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

72

PDF created with pdfFactory Pro trial version www.pdffactory.com

После этого откроем форму ФормаДокумента документа

ОказаниеУслуги и добавим в табличную часть ПереченьНоменклатуры поле,

отображающее новый реквизит Стоимость.

Для этого в правом верхнем окне редактора форм на закладке Реквизиты раскроем реквизит формы Объект

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

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

Изменение процедуры проведения. Теперь создадим движения документа ОказаниеУслуги таким же образом, как мы делали это для документа ПриходнаяНакладная.

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

Перейдем на закладку Прочее и откроем модуль объекта. Для этого нажмем кнопку Модуль объекта. Откроем процедуру обработчика события

ОбработкаПроведения.

Всамом конце цикла перед строкой КонецЕсли добавим строки кода, создающие движения регистра СтоимостьМатериалов, производимые документом ОказаниеУслуги.

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

Листинг 4.8. Движения документа «ОказаниеУслуги» (фрагиент с изменениями).

Процедура ОбработкаПроведения(Отказ, Режим) Движения.ОстаткиМатериалов.Записыватъ = Истина;

Движения.СтоимостьМатериалов.Записывать = Истина; …………..

Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;

// регистр СтоимостьМатериалов Расход Движение = Движения.СтоимостьМатериалов.До6авить();

Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал =

ТекСтрокаПереченьНоменклатуры.Номенклатура; Движение.Стоимость =

ТекСтрокаПереченьНоменклатуры.Количество*ТекСтрокаПереченьНо менклатуры.Стоимость;

КонецЕсли; …………………..

73

PDF created with pdfFactory Pro trial version www.pdffactory.com

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

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

Для этого откроем форму документа ОказаниеУслуги. В левом верхнем окне перейдем на закладку Командный интерфейс.

Вразделе Панель навигации раскроем группу Перейти и увидим команду для открытия регистра накопления Стоимость материалов. Установим свойство Видимость для этой команды.

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

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

Оказание услуг.

Откроем документ Оказание услуги № 3 и укажем в нем стоимость резинового шланга - 100.

Проведем документ Оказание услуги № 1 и посмотрим на движения этого документа по регистру Стоимость материалов. Для этого нажмем кнопку Провести и выполним команду перехода к регистру Стоимость материалов Создадим еще два документа Оказание услуги. Эти документы понадобятся нам в дальнейшем, поэтому будьте внимательны и обратите внимание на то, что эти документы созданы другими датами. Их состав показан

на рис.4.10.

Рис.4.10. . Документы «Оказание услуги № 4 и 5»

74

PDF created with pdfFactory Pro trial version www.pdffactory.com

Движения документов Оказание услуги № 4 и № 5 по регистру Стоимость материалов будут выглядеть соответственно следующим образом.

4.5. Лабораторная работа № 8. Создание оборотного регистра накопления

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

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

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

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

На закладке Данные создадим измерения регистра:

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

У регистра будет три ресурса:

Количество, тип Число, длина 15, точность 3; Выручка, тип Число, длина 15, точность 2; Стоимость, тип Число, длина 15, точность 2.

Отредактируем командный интерфейс, чтобы в подсистемах

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

Подсистемы выделим подсистему Бухгалтерия.

Справа в списке Командный интерфейс отразятся все команды выбранной подсистемы. В группе Панель навигации.Обычное включим видимость у команды Продажи и мышью перетащим ее в группу Панель навигации.. Аналогично для подсистем ОказаниеУслуг и УчетМатериалов.

Проведение документа «Оказание услуги» по трем регистрам

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

75

PDF created with pdfFactory Pro trial version www.pdffactory.com

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

Перейдем на закладку Прочее и откроем модуль документа. Для этого нажмем кнопку Модуль объекта.

Откроем процедуру обработчика события ОбработкаПроведения.

Перед началом цикла установим свойство Записывать набора записей движений по этому регистру в значение Истина

(Движения.Продажи.Записывать=Истина). В конце цикла после строки

КонецЕсли и перед строкой КонецЦикла добавим строки кода, создающие движения регистра Продажи, производимые документом ОказаниеУслуги (листинг 4.9).

Листинг 4.9. Движения документа «ОказаниеУслуги» (фрагмент).

//РегистрПродажи Движение = Движения.Продажи.Добавить(); Движение.Период = Дата; Движение.Номенклатура =

ТекСтрокаПереченьНоменклатуры.Номенклатура; Движение.Клиент = Клиент; Движение.Мастер = Мастер; Движение.Количество =

ТекСтрокаПереченьНоменклатуры.Количество; Движение.Выручка = ТекСтрокаПереченьНоменклатуры.Сумма;

Движение.Стоимость = ТекСтрокаПереченьНоменклатуры.Стоимость * ТекСтрокаПереченьНоменклатуры.Количество;

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

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

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

76

PDF created with pdfFactory Pro trial version www.pdffactory.com

Контрольные вопросы

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.Как добавить в форму документа новый реквизит.

77

PDF created with pdfFactory Pro trial version www.pdffactory.com

5. Отчеты

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

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

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

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

Табличный доступ к данным в 1С предприятии 8 реализован с помощью запросов к базе данных, которые составляются на языке запросов Для работы с запросами используется объект встроенного языка Запрос. Он позволяет получать информацию, хранящуюся в полях базы данных, в виде выборки, сформированной по заданным правилам. Исходную информацию запрос получает из набора таблиц. Все таблицы, которыми оперирует язык запросов, можно разделить на две большие группы: реальные таблицы и виртуальные таблицы. Посмотреть состав таблиц, доступных для запроса, и их описание можно в синтакс-помощнике в разделе Работа с запросами ► Таблицы

запросов.

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

Реальные таблицы подразделяются на объектные (ссылочные) и

необъектные (нессылочные).

В объектных (ссылочных) таблицах представлена информация ссылочных типов данных (справочники, документы, планы видов характеристик и т.д.). А в необъектных (нессылочных) - всех остальных типов данных (константы, регистры и т.д.).

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

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

78

PDF created with pdfFactory Pro trial version www.pdffactory.com

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

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

Объединение запросов определяет, как будут объединены результаты выполнения нескольких запросов.

Упорядочивание результатов определяет условия упорядочивания строк результата запроса.

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

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

Применение различных синтаксических конструкций языка запросов подробно описано во встроенной справке в режиме Конфигуратор: Справка ►

Содержание справки ► «1С:Предприятие»► Встроенный язык ► Работа с запросами, а также в документации «1С:Предприятие 8.2». Руководство разработчика.

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

5.1. Лабораторная работа №9. Выбор данных из одной таблицы. Создание отчета – РеестрДокументовОказаниеУслуги.

Этот отчет будет выводить список существующих в базе данных документов ОказаниеУслуги в порядке их дат и номеров

Добавим в конфигураторе объект конфигурации Отчет. Повторим первые шаги по созданию отчета, описанные нами в лабораторной работе № х.

Зададим имя отчета - РеестрДокументовОказаниеУслуги. Установим свойство Расширенное представление как Список оказанных услуг для представления отчета в интерфейсе программы.

Создадим схему компоновки данных для отчета. Для этого нажмем кнопку Открыть схему компоновки данных или кнопку открытия со значком лупы В открывшемся диалоговом окне конструктора макета нажмем Готово. В конструкторе схемы компоновки данных создадим Набор данных - запрос .

Нажав кнопку Конструктор запроса, запустим конструктор запроса. В качестве источника данных для запроса выберем объектную (ссылочную) таблицу документа ОказаниеУслуги. Из этой таблицы выберем поля Склад,

Мастер, Клиент, Ссылка.

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

Нажмем ОК и посмотрим, какой запрос сформировал конструктор запроса (проанализируйте листинг запроса).

79

PDF created with pdfFactory Pro trial version www.pdffactory.com