Файл: Лабораторная работа 1 Знакомство, создание информационной базы.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 23.11.2023
Просмотров: 645
Скачиваний: 8
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
ПриходнаяНакладная.
-
На закладке Движения: В списке регистров отметим СтоимостьМатериалов.
-
На закладке Прочее: нажмем кнопку Модуль объекта, откроем процедуру обработчика события ОбработкаПроведения. И изменим код следующим образом: (см.листинг):
Листинг 11.1
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.СтоимостьМатериалов.Записывать = Истина;
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
//регистр ОстаткиМатериалов Приход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.Склад=Склад;
Движение.Количество = ТекСтрокаМатериалы.Количество:
//регистр СтоимостьМатериалов Приход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.Стоимость=ТекСтрокаМатериалы.Сумма;
КонецЦикла;
КонецПроцедуры
Команда перехода к записям регистра
В заключение отредактируем командный интерфейс формы документа, чтобы в панели навигации формы иметь возможность переходить к списку записей регистра
СтоимостьМатериалов, связанному с документом.
-
Откроем форму документа ПриходнаяНакладная: перейдем на закладку Командный
интерфейс. В разделе Панель навигации раскроем группу Перейти и увидим команду для открытия регистра накопления Стоимость материалов. Установим свойство
Видимость для этой команды:
Рис. 11.2. Редактируем командный интерфейс формы документа
•
В режиме 1С:Предприятие
В режиме 1С:Предприятие необходимо перепровести все приходные накладные. Это необходимо для того, чтобы эти документы создали новые записи в регистрах, в соответствии с алгоритмом проведения.
Запустим 1С: Предприятие в режиме отладки. Откроем список документов, выполнив команду Приходные накладные в панели навигации раздела Учет материалов.
Выделим одновременно, используя клавишу Ctrl,все приходные накладные и перепроведем
их, выполнив команду Все действия > Провести.
Проведение документа «Оказание услуги» по двум регистрам
В заключение внесем изменения в процедуру обработки проведения документа
ОказаниеУслуги.
Это необходимо для того, чтобы на первом этапе, при списании материалов, израсходованных в процессе оказания услуги, должна быть возможность указывать различную стоимость для одного и того же материала, которая рассчитана руководством исходя из текущих конъюнктурных соображений.
Поскольку в документе ОказаниеУслуги отражена только цена номенклатуры, необходимо сделать следующее:
•
Добавить в табличную часть документа еще один реквизит, в котором будет указываться стоимость номенклатуры.
•
После этого изменить процедуру проведения документа ОказаниеУслуги.
•
В режиме 1С: Предприятие перепровести все эти документы.
•
В режиме Конфигуратор
Откроем в конфигураторе окно редактирования объекта конфигурации Документ
ОказаниеУслуги
-
На закладке Данные: создадим новый реквизит табличной части документа с именем
Стоимость, типом Число, длиной 15 и точностью 2, и отметим флажок
неотрицательное:
Рис. 11.3. Редактируем свойства Стоимость
Откроем форму ФормаДокумента документа ОказаниеУслуг и добавим табличную часть ПереченьНоменклатуры поле, отображающее новый реквизит Стоимоть:
-
На закладке Реквизиты: раскроем реквизит формы Объект.
Найдем в табличной части реквизит Стоимость и с помощью мыши перетащим его в окно элементов формы, расположенное слева в верхней части редактора форм:
Рис. 11.4. Редактируем реквизит формы Объект
Новый элемент расположим в структуре элементов формы после поля Номенклатура.
Оставим свойства элемента формы, предложенные по умолчанию.
Новый реквизит сразу же отобразится в форме документа, расположенной в левом нижнем окне редактора форм.
Изменение процедуры проведения
Создадим движения документа ОказаниеУслуги таким же образом, как мы делали это для документа Приходная Накладная.
-
На закладке Движения: в списке регистров отметим, что документ будет создавать теперь движения и по регистру СтоимостьМатериалов.
-
На закладке Прочее: нажмем кнопку Модуль объекта. Откроем процедуру обработчика события ОбработкаПроведения. Отредактируем код следующим образом:
Листинг 11.2
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.СтоимостьМатериалов.Записывать = Истина;
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
Если ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры
= Перечисления.ВидыНоменклатуры.Материал Тогда
//регистр ОстаткиМатериалов Расход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Склад=Склад;
Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;
//регистр СтоимостьМатериалов Расход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Стоимость=ТекСтрокаПереченьНоменклатуры.Количество
*ТекСтрокаПереченьНоменклатуры.Стоимость;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
В заключение отредактируем командный интерфейс формы документа, чтобы в панели навигации формы иметь возможность переходить к списку записей регистра Стоимость
Материалов, связанному с документом.
-
Откроем форму документа ОказаниеУслуги: перейдем на закладку Командный
интерфейс. В разделе Панель навигации раскроем группу Перейти и увидим команду для открытия регистра накопления Стоимость материалов. Установим свойство
Видимостьдля этой команды.
•
В режиме 1С: Предприятие
В режиме 1С:Предприятие необходимо перепровести документ оказания услуги. Это необходимо для того, чтобы этот документ создал новые записи в регистрах. Запустим 1С:
Предприятие в режиме отладки и откроем список документов, выполнив команду
Оказание услуг в панели навигации раздела Оказание услуг.
Откроем документ Оказание услуги № 1 и изменим в нем стоимость одного из материалов. Нажмем кнопку Провести и выполним команду перехода к регистру
Стоимость материалов.
Создадим и проведем еще два документа Оказание услуги.
Для этого в форме списка документов нажмем кнопку Создать. Эти документы понадобятся нам в дальнейшем.
Контрольные вопросы
•
Для чего может понадобиться проведение документа по нескольким регистрам.
•
Как создать движения документа по нескольким регистрам в обработчике
проведения документа.
•
Как создать движения документа без использования конструктора движений.
•
Как средствами встроенного языка сформировать и записать движения
документа в регистр накопления.
•
Как добавить в форму документа новый реквизит.
Лабораторная работа № 12
Оборотные регистры накопления.
Ориентировочная продолжительность занятия - 40 минут.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Что такое оборотный регистр накопления
Регистры накопления могут быть регистрами остатков и регистрами оборотов.
Существующие в нашей конфигурации регистры ОстаткиМатериалов и
СтоимостьМатериалов являются регистрами остатков.
Если вы помните, при создании отчета Материалы в конструкторе запроса мы видели, что для таких регистров система создает три виртуальные таблицы: таблица остатков, оборотов и совокупная таблица остатков и оборотов.
Оборотный регистр накапливает только обороты, остатки ему безразличны. Поэтому единственной виртуальной таблицей, которую будет создавать система для такого регистра, будет таблица оборотов. В остальном оборотный регистр ничем не отличается от регистра остатков.
Следует сказать об одной особенности конструирования регистров накопления, напрямую связанной с возможностью получения остатков. При создании оборотного регистра накопления нет особой сложности в определении того, какие именно данные должны являться измерениями регистра - мы можем назначить в качестве его измерений любые нужные нам данные.
Совсем иная ситуация в случае регистра накопления, поддерживающего накопление остатков. Для него выбор измерений должен выполняться исходя из того, что движения регистра могут быть осуществлены в две стороны: приход и расход. Таким образом, в качестве измерений нужно выбирать те данные, по которым движения точно будут осуществляться как в одну, так и в другую сторону.
Скорее всего, при поступлении материалов поставщик будет указан, а вот при расходовании материалов, с большой долей вероятности, поставщик указываться не будет. В большинстве случаев это совершенно лишняя информация.
Значит, поставщика следует добавить не как измерение, а как реквизит регистра накопления.
Если же при расходе материалов поставщик будет указываться наверняка, имеет смысл добавить поставщика в измерения регистра.
Иными словами, по каждому из измерений регистра накопления остатков ресурсы обязательно должны изменяться в обе стороны: приход и расход. Не должно существовать таких измерений, по которым осуществляется только приход или только расход.
Нарушение этого принципа построения регистров накопления будет вести к непроизводительному использованию ресурсов системы и как следствие к замедлению работы и падению производительности.
Для реквизитов же регистра этот принцип не важен. По реквизитам регистра ресурсы могут только приходоваться или только расходоваться.
ПРАКТИЧЕСКАЯ ЧАСТЬ
Добавление оборотного регистра накопления
•
В режиме Конфигуратор
Откроем конфигуратор и создадим новый объект конфигурации Регистр накопления.
-
На закладке Основные: имя - Продажи; вид регистра – Обороты; расширенное представление списка – Движения документа по регистру Продажи.
-
На закладке Подсистемы: отметим, что этот регистр будет отображаться в подсистемах
Бухгалтерия, Учет материалов и Оказание услуг.
-
На закладке Данные: создадим измерения регистра:
•
Номенклатура, тип СправочникСсылка.Номенклатура;
•
Клиент, тип СправочникСсылка.Клиенты;
•
Мастер, тип СправочникСсылка.Сотрудники.
Создадим три ресурса
•
Количество, тип Число, длина 15, точность 3;
•
Выручка, тип Число, длина 15, точность 2;
•
Стоимость, тип Число, длина 15, точность 2.
Рис. 12.1. Создание регистров
-
В дереве объектов конфигурации выделим ветвь Подсистемы, вызовем Все
подсистемы: В открывшемся окне выделим подсистему Бухгалтерия; в группе Панель
навигации.Обычное включим видимость у команды Продажи и мышью перетащим ее в группу Панель навигации.См.также.
Аналогично, выделив подсистемы ОказаниеУслуг и УчетМатериалов, в панели навигации включим видимость у команды Продажи и перенесем ее в группу См.также.
Проведение документа «Оказание услуги» по трем регистрам
Изменим процедуру проведения документа ОказаниеУслуги, а затем в режиме
1С:Предприятие перепроведем все эти документы.
•
В режиме Конфигуратор
Откроем окно редактирования объекта конфигурации Документ ОказаниеУслуги .
-
На закладке Движения: укажем, что этот документ будет создавать движения еще и по регистру Продажи.
-
На закладке Прочее: нажмем кнопку Модуль объекта, затем откроем процедуру обработчика события ОбработкаПроведения и изменим код следующим образом (см.
Листинг 12.1):
Листинг 12.1
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.СтоимостьМатериалов.Записывать = Истина;
Движения.Продажи.Записывать = Истина;
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
Если ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры =
Перечисления.ВидыНоменклатуры.Материал Тогда
//регистр ОстаткиМатериалов Расход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Склад=Склад;
Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;
//регистр СтоимостьМатериалов Расход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Стоимость=ТекСтрокаПереченьНоменклатуры.Количество
*ТекСтрокаПереченьНоменклатуры.Стоимость;
КонецЕсли;
//РегистрПродажи
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Клиент = Клиент;
Движение.Мастер – Мастер;
Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;
Движение.Выручка = ТекСтрокаПереченьНоменклатуры.Сумма;
Движение.Стоимость = ТекСтрокаПереченьНоменклатуры.Стоимость
*ТекСтрокаПереченьНоменклатуры.Количество;
КонецЦикла;
КонецПроцедуры
Отредактируем командный интерфейс формы документа, чтобы в панели навигации формы иметь возможность переходить к списку записей регистра Продажи, связанному с документом:
-
Откроем форму документа ОказаниеУслуги:перейдем на закладку Командный
интерфейс, раскроем группу Перейти и увидим команду для открытия регистра накопления Продажи. Установим свойство Видимость для этой команды.
•
В режиме 1С: Предприятие
В режиме 1С: Предприятие перепроведем все документы для этого запустим 1С:
Предприятие в режиме отладки и откроем по очереди каждый документ Оказание
услуги.
Контрольные вопросы
•
Что такое оборотный регистр накопления.
•
В чем отличие между регистром накопления остатков и оборотным регистром
накопления.
•
Как выбирать реквизиты и измерения при создании регистров накопления.
•
Как создать оборотный регистр накопления.
Лабораторная работа № 13
Отчеты. Выбор данных из одной таблицы
Ориентировочная продолжительность занятия - 45 минут.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Способы доступа к данным
Система 1С:Предприятие 8 поддерживает два способа доступа к данным, хранящимся в базе данных:
• объектный (для чтения и записи),
• табличный (для чтения).
Объектный способ доступа к данным реализован посредством использования объектов встроенного языка.
Важной особенностью объектного способа доступа к данным является то, что, обращаясь к какому-либо объекту встроенного языка, мы обращаемся к некоторой совокупности данных, находящихся в базе данных, как к единому целому.
Объектная техника обеспечивает сохранение целостности объектов, кеширование объектов, вызов соответствующих обработчиков событий и т. д.
Табличный доступ к данным в 1С: Предприятии 8 реализован с помощью запросов к базе данных, которые составляются на языке запросов.
В этой технике разработчик получает возможность оперировать отдельными полями таблиц базы данных, в которых хранятся те или иные данные.
Табличная техника предназначена для получения информации из базы данных по некоторым условиям (отбор, группировка, сортировка, объединение нескольких выборок, расчет итогов и т.д.). Табличная техника оптимизирована для обработки больших объемов информации, расположенной в базе данных, и получения данных, отвечающих заданным критериям.
ПРАКТИЧЕСКАЯ ЧАСТЬ
Выбор данных из одной таблицы
Создадим отчет Реестр документов оказание услуги, используя систему компоновки данных. Этот отчет будет выводить список существующих в базе данных документов
ОказаниеУслуги в порядке их дат и номеров.
•
В режиме Конфигуратор
Добавим в конфигураторе объект конфигурации Отчет.
На закладке Основные: имя отчета – РеестрДокументовОказаниеУслуги; расширенное представление - Список оказанных услуг для представления отчета в интерфейсе программы. Создадим схему компоновки данных для отчета, нажмем кнопку Открыть схему компоновки данных. В открывшемся диалоговом окне конструктора макета нажмем
Готово. В конструкторе схемы компоновки данных создадим Набор данных – запрос.
-
На закладке Движения: В списке регистров отметим СтоимостьМатериалов.
-
На закладке Прочее: нажмем кнопку Модуль объекта, откроем процедуру обработчика события ОбработкаПроведения. И изменим код следующим образом: (см.листинг):
Листинг 11.1
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.СтоимостьМатериалов.Записывать = Истина;
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
//регистр ОстаткиМатериалов Приход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.Склад=Склад;
Движение.Количество = ТекСтрокаМатериалы.Количество:
//регистр СтоимостьМатериалов Приход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.Стоимость=ТекСтрокаМатериалы.Сумма;
КонецЦикла;
КонецПроцедуры
Команда перехода к записям регистра
В заключение отредактируем командный интерфейс формы документа, чтобы в панели навигации формы иметь возможность переходить к списку записей регистра
СтоимостьМатериалов, связанному с документом.
-
Откроем форму документа ПриходнаяНакладная: перейдем на закладку Командный
интерфейс. В разделе Панель навигации раскроем группу Перейти и увидим команду для открытия регистра накопления Стоимость материалов. Установим свойство
Видимость для этой команды:
Рис. 11.2. Редактируем командный интерфейс формы документа
•
В режиме 1С:Предприятие
В режиме 1С:Предприятие необходимо перепровести все приходные накладные. Это необходимо для того, чтобы эти документы создали новые записи в регистрах, в соответствии с алгоритмом проведения.
Запустим 1С: Предприятие в режиме отладки. Откроем список документов, выполнив команду Приходные накладные в панели навигации раздела Учет материалов.
Выделим одновременно, используя клавишу Ctrl,все приходные накладные и перепроведем
их, выполнив команду Все действия > Провести.
Проведение документа «Оказание услуги» по двум регистрам
В заключение внесем изменения в процедуру обработки проведения документа
ОказаниеУслуги.
Это необходимо для того, чтобы на первом этапе, при списании материалов, израсходованных в процессе оказания услуги, должна быть возможность указывать различную стоимость для одного и того же материала, которая рассчитана руководством исходя из текущих конъюнктурных соображений.
Поскольку в документе ОказаниеУслуги отражена только цена номенклатуры, необходимо сделать следующее:
•
Добавить в табличную часть документа еще один реквизит, в котором будет указываться стоимость номенклатуры.
•
После этого изменить процедуру проведения документа ОказаниеУслуги.
•
В режиме 1С: Предприятие перепровести все эти документы.
•
В режиме Конфигуратор
Откроем в конфигураторе окно редактирования объекта конфигурации Документ
ОказаниеУслуги
-
На закладке Данные: создадим новый реквизит табличной части документа с именем
Стоимость, типом Число, длиной 15 и точностью 2, и отметим флажок
неотрицательное:
Рис. 11.3. Редактируем свойства Стоимость
Откроем форму ФормаДокумента документа ОказаниеУслуг и добавим табличную часть ПереченьНоменклатуры поле, отображающее новый реквизит Стоимоть:
-
На закладке Реквизиты: раскроем реквизит формы Объект.
Найдем в табличной части реквизит Стоимость и с помощью мыши перетащим его в окно элементов формы, расположенное слева в верхней части редактора форм:
Рис. 11.4. Редактируем реквизит формы Объект
Новый элемент расположим в структуре элементов формы после поля Номенклатура.
Оставим свойства элемента формы, предложенные по умолчанию.
Новый реквизит сразу же отобразится в форме документа, расположенной в левом нижнем окне редактора форм.
Изменение процедуры проведения
Создадим движения документа ОказаниеУслуги таким же образом, как мы делали это для документа Приходная Накладная.
-
На закладке Движения: в списке регистров отметим, что документ будет создавать теперь движения и по регистру СтоимостьМатериалов.
-
На закладке Прочее: нажмем кнопку Модуль объекта. Откроем процедуру обработчика события ОбработкаПроведения. Отредактируем код следующим образом:
Листинг 11.2
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.СтоимостьМатериалов.Записывать = Истина;
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
Если ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры
= Перечисления.ВидыНоменклатуры.Материал Тогда
//регистр ОстаткиМатериалов Расход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Склад=Склад;
Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;
//регистр СтоимостьМатериалов Расход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Стоимость=ТекСтрокаПереченьНоменклатуры.Количество
*ТекСтрокаПереченьНоменклатуры.Стоимость;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
В заключение отредактируем командный интерфейс формы документа, чтобы в панели навигации формы иметь возможность переходить к списку записей регистра Стоимость
Материалов, связанному с документом.
-
Откроем форму документа ОказаниеУслуги: перейдем на закладку Командный
интерфейс. В разделе Панель навигации раскроем группу Перейти и увидим команду для открытия регистра накопления Стоимость материалов. Установим свойство
Видимостьдля этой команды.
•
В режиме 1С: Предприятие
В режиме 1С:Предприятие необходимо перепровести документ оказания услуги. Это необходимо для того, чтобы этот документ создал новые записи в регистрах. Запустим 1С:
Предприятие в режиме отладки и откроем список документов, выполнив команду
Оказание услуг в панели навигации раздела Оказание услуг.
Откроем документ Оказание услуги № 1 и изменим в нем стоимость одного из материалов. Нажмем кнопку Провести и выполним команду перехода к регистру
Стоимость материалов.
Создадим и проведем еще два документа Оказание услуги.
Для этого в форме списка документов нажмем кнопку Создать. Эти документы понадобятся нам в дальнейшем.
Контрольные вопросы
•
Для чего может понадобиться проведение документа по нескольким регистрам.
•
Как создать движения документа по нескольким регистрам в обработчике
проведения документа.
•
Как создать движения документа без использования конструктора движений.
•
Как средствами встроенного языка сформировать и записать движения
документа в регистр накопления.
•
Как добавить в форму документа новый реквизит.
Лабораторная работа № 12
Оборотные регистры накопления.
Ориентировочная продолжительность занятия - 40 минут.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Что такое оборотный регистр накопления
Регистры накопления могут быть регистрами остатков и регистрами оборотов.
Существующие в нашей конфигурации регистры ОстаткиМатериалов и
СтоимостьМатериалов являются регистрами остатков.
Если вы помните, при создании отчета Материалы в конструкторе запроса мы видели, что для таких регистров система создает три виртуальные таблицы: таблица остатков, оборотов и совокупная таблица остатков и оборотов.
Оборотный регистр накапливает только обороты, остатки ему безразличны. Поэтому единственной виртуальной таблицей, которую будет создавать система для такого регистра, будет таблица оборотов. В остальном оборотный регистр ничем не отличается от регистра остатков.
Следует сказать об одной особенности конструирования регистров накопления, напрямую связанной с возможностью получения остатков. При создании оборотного регистра накопления нет особой сложности в определении того, какие именно данные должны являться измерениями регистра - мы можем назначить в качестве его измерений любые нужные нам данные.
Совсем иная ситуация в случае регистра накопления, поддерживающего накопление остатков. Для него выбор измерений должен выполняться исходя из того, что движения регистра могут быть осуществлены в две стороны: приход и расход. Таким образом, в качестве измерений нужно выбирать те данные, по которым движения точно будут осуществляться как в одну, так и в другую сторону.
Скорее всего, при поступлении материалов поставщик будет указан, а вот при расходовании материалов, с большой долей вероятности, поставщик указываться не будет. В большинстве случаев это совершенно лишняя информация.
Значит, поставщика следует добавить не как измерение, а как реквизит регистра накопления.
Если же при расходе материалов поставщик будет указываться наверняка, имеет смысл добавить поставщика в измерения регистра.
Иными словами, по каждому из измерений регистра накопления остатков ресурсы обязательно должны изменяться в обе стороны: приход и расход. Не должно существовать таких измерений, по которым осуществляется только приход или только расход.
Нарушение этого принципа построения регистров накопления будет вести к непроизводительному использованию ресурсов системы и как следствие к замедлению работы и падению производительности.
Для реквизитов же регистра этот принцип не важен. По реквизитам регистра ресурсы могут только приходоваться или только расходоваться.
ПРАКТИЧЕСКАЯ ЧАСТЬ
Добавление оборотного регистра накопления
•
В режиме Конфигуратор
Откроем конфигуратор и создадим новый объект конфигурации Регистр накопления.
-
На закладке Основные: имя - Продажи; вид регистра – Обороты; расширенное представление списка – Движения документа по регистру Продажи.
-
На закладке Подсистемы: отметим, что этот регистр будет отображаться в подсистемах
Бухгалтерия, Учет материалов и Оказание услуг.
-
На закладке Данные: создадим измерения регистра:
•
Номенклатура, тип СправочникСсылка.Номенклатура;
•
Клиент, тип СправочникСсылка.Клиенты;
•
Мастер, тип СправочникСсылка.Сотрудники.
Создадим три ресурса
•
Количество, тип Число, длина 15, точность 3;
•
Выручка, тип Число, длина 15, точность 2;
•
Стоимость, тип Число, длина 15, точность 2.
Рис. 12.1. Создание регистров
-
В дереве объектов конфигурации выделим ветвь Подсистемы, вызовем Все
подсистемы: В открывшемся окне выделим подсистему Бухгалтерия; в группе Панель
навигации.Обычное включим видимость у команды Продажи и мышью перетащим ее в группу Панель навигации.См.также.
Аналогично, выделив подсистемы ОказаниеУслуг и УчетМатериалов, в панели навигации включим видимость у команды Продажи и перенесем ее в группу См.также.
Проведение документа «Оказание услуги» по трем регистрам
Изменим процедуру проведения документа ОказаниеУслуги, а затем в режиме
1С:Предприятие перепроведем все эти документы.
•
В режиме Конфигуратор
Откроем окно редактирования объекта конфигурации Документ ОказаниеУслуги .
-
На закладке Движения: укажем, что этот документ будет создавать движения еще и по регистру Продажи.
-
На закладке Прочее: нажмем кнопку Модуль объекта, затем откроем процедуру обработчика события ОбработкаПроведения и изменим код следующим образом (см.
Листинг 12.1):
Листинг 12.1
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.СтоимостьМатериалов.Записывать = Истина;
Движения.Продажи.Записывать = Истина;
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
Если ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры =
Перечисления.ВидыНоменклатуры.Материал Тогда
//регистр ОстаткиМатериалов Расход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Склад=Склад;
Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;
//регистр СтоимостьМатериалов Расход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Стоимость=ТекСтрокаПереченьНоменклатуры.Количество
*ТекСтрокаПереченьНоменклатуры.Стоимость;
КонецЕсли;
//РегистрПродажи
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Клиент = Клиент;
Движение.Мастер – Мастер;
Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;
Движение.Выручка = ТекСтрокаПереченьНоменклатуры.Сумма;
Движение.Стоимость = ТекСтрокаПереченьНоменклатуры.Стоимость
*ТекСтрокаПереченьНоменклатуры.Количество;
КонецЦикла;
КонецПроцедуры
Отредактируем командный интерфейс формы документа, чтобы в панели навигации формы иметь возможность переходить к списку записей регистра Продажи, связанному с документом:
-
Откроем форму документа ОказаниеУслуги:перейдем на закладку Командный
интерфейс, раскроем группу Перейти и увидим команду для открытия регистра накопления Продажи. Установим свойство Видимость для этой команды.
•
В режиме 1С: Предприятие
В режиме 1С: Предприятие перепроведем все документы для этого запустим 1С:
Предприятие в режиме отладки и откроем по очереди каждый документ Оказание
услуги.
Контрольные вопросы
•
Что такое оборотный регистр накопления.
•
В чем отличие между регистром накопления остатков и оборотным регистром
накопления.
•
Как выбирать реквизиты и измерения при создании регистров накопления.
•
Как создать оборотный регистр накопления.
Лабораторная работа № 13
Отчеты. Выбор данных из одной таблицы
Ориентировочная продолжительность занятия - 45 минут.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Способы доступа к данным
Система 1С:Предприятие 8 поддерживает два способа доступа к данным, хранящимся в базе данных:
• объектный (для чтения и записи),
• табличный (для чтения).
Объектный способ доступа к данным реализован посредством использования объектов встроенного языка.
Важной особенностью объектного способа доступа к данным является то, что, обращаясь к какому-либо объекту встроенного языка, мы обращаемся к некоторой совокупности данных, находящихся в базе данных, как к единому целому.
Объектная техника обеспечивает сохранение целостности объектов, кеширование объектов, вызов соответствующих обработчиков событий и т. д.
Табличный доступ к данным в 1С: Предприятии 8 реализован с помощью запросов к базе данных, которые составляются на языке запросов.
В этой технике разработчик получает возможность оперировать отдельными полями таблиц базы данных, в которых хранятся те или иные данные.
Табличная техника предназначена для получения информации из базы данных по некоторым условиям (отбор, группировка, сортировка, объединение нескольких выборок, расчет итогов и т.д.). Табличная техника оптимизирована для обработки больших объемов информации, расположенной в базе данных, и получения данных, отвечающих заданным критериям.
ПРАКТИЧЕСКАЯ ЧАСТЬ
Выбор данных из одной таблицы
Создадим отчет Реестр документов оказание услуги, используя систему компоновки данных. Этот отчет будет выводить список существующих в базе данных документов
ОказаниеУслуги в порядке их дат и номеров.
•
В режиме Конфигуратор
Добавим в конфигураторе объект конфигурации Отчет.
На закладке Основные: имя отчета – РеестрДокументовОказаниеУслуги; расширенное представление - Список оказанных услуг для представления отчета в интерфейсе программы. Создадим схему компоновки данных для отчета, нажмем кнопку Открыть схему компоновки данных. В открывшемся диалоговом окне конструктора макета нажмем
Готово. В конструкторе схемы компоновки данных создадим Набор данных – запрос.