Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Процедура ОбработкаПроведения(Отказ, Режим)↑ ⇐ ПредыдущаяСтр 3 из 3 Содержание книги
Поиск на нашем сайте
Отказ = Ложь; Если НЕ ЗначениеЗаполнено(Склад) Тогда Отказ = Истина; Сообщить("Поле <Склад> не заполнено!"); КонецЕсли; Если НЕ ЗначениеЗаполнено(Сотрудник) Тогда Отказ = Истина; Сообщить("Поле <Сотрудник> не заполнено!"); КонецЕсли; Если НЕ ЗначениеЗаполнено(Контрагент) Тогда Отказ = Истина; Сообщить("Поле <Контрагент> не заполнено!"); КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Расходная.НомерСтроки, | ЕСТЬNULL(Расходная.Количество, 0) КАК Количество, | ЕСТЬNULL(Расходная.Цена, 0) КАК Цена, | ЕСТЬNULL(Расходная.Сумма, 0) КАК Сумма, | ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) КАК СуммаОстаток, | ЕСТЬNULL(Расходная.Номенклатура, NULL) КАК Номенклатура |ИЗ | (ВЫБРАТЬ | РасходнаяНакладнаяТовары.НомерСтроки КАК НомерСтроки, | РасходнаяНакладнаяТовары.Количество КАК Количество, | РасходнаяНакладнаяТовары.Цена КАК Цена, | РасходнаяНакладнаяТовары.Сумма КАК Сумма, | РасходнаяНакладнаяТовары.Номенклатура КАК Номенклатура | ИЗ | Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары | ГДЕ | РасходнаяНакладнаяТовары.Ссылка = &Ссылка) КАК Расходная | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки( | &Дата, | (Склад, Номенклатура) В | (ВЫБРАТЬ | РасходнаяНакладная.Склад, | РасходнаяНакладнаяТовары.Номенклатура | ИЗ | Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная КАК РасходнаяНакладная | ПО | РасходнаяНакладнаяТовары.Ссылка = РасходнаяНакладная.Ссылка | ГДЕ | РасходнаяНакладная.Ссылка = &Ссылка)) КАК ОстаткиНоменклатурыОстатки | ПО Расходная.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура | |ДЛЯ ИЗМЕНЕНИЯ"; Запрос.УстановитьПараметр("Дата",Дата); Запрос.УстановитьПараметр("Ссылка",Ссылка); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.Номенклатура.Наименование = "" Тогда Отказ = Истина; Сообщить("В строке №" + Выборка.НомерСтроки + " не заполнено поле <Номенклатура>!"); КонецЕсли; Если Выборка.Количество = 0 Тогда Отказ = Истина; Сообщить("В строке №" + Выборка.НомерСтроки + " в поле <Количество> указано нулевое значение!"); КонецЕсли; Если Выборка.Цена = 0 Тогда Отказ = Истина; Сообщить("В строке №" + Выборка.НомерСтроки + " в поле <Цена> указано нулевое значение!"); КонецЕсли; Нехватка = Выборка.Количество - Выборка.КоличествоОстаток; Если Нехватка > 0 Тогда Отказ = Истина; Сообщить("Номенклатуры <"+Выборка.Номенклатура+"> на сладе <"+Склад+"> не хватает в количестве "+Нехватка); КонецЕсли; Если НЕ Отказ Тогда Движение = Движения.Цены.Добавить(); Движение.Период = Дата; Движение.Контрагент = Контрагент; Движение.Номенклатура = Выборка.Номенклатура; Движение.ТипЦен = Перечисления.ТипыЦен.ЦенаПродажи; Движение.Цена = Выборка.Цена; Движение = Движения.ОстаткиНоменклатуры.ДобавитьРасход(); Движение.Период = Дата; Движение.Склад = Склад; Движение.Номенклатура = Выборка.Номенклатура; Движение.Количество = Выборка.Количество; Если Выборка.Количество = Выборка.КоличествоОстаток Тогда Движение.Сумма = Выборка.СуммаОстаток; Иначе Движение.Сумма = Выборка.СуммаОстаток/Выборка.КоличествоОстаток*Выборка.Количество; КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры
Обработка проведения в приходной накладной намного проще, поэтому её текст может быть некоторой базой для лучшего понимания расходной.
Процедура ОбработкаПроведения(Отказ, Режим) Отказ = Ложь; Если НЕ ЗначениеЗаполнено(Склад) Тогда Отказ = Истина; Сообщить("Поле <Склад> не заполнено!"); КонецЕсли; Если НЕ ЗначениеЗаполнено(Сотрудник) Тогда Отказ = Истина; Сообщить("Поле <Сотрудник> не заполнено!"); КонецЕсли; Если НЕ ЗначениеЗаполнено(Контрагент) Тогда Отказ = Истина; Сообщить("Поле <Контрагент> не заполнено!"); КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриходнаяНакладнаяТовары.НомерСтроки, | ПриходнаяНакладнаяТовары.Номенклатура, | ЕСТЬNULL(ПриходнаяНакладнаяТовары.Количество, 0) КАК Количество, | ЕСТЬNULL(ПриходнаяНакладнаяТовары.Цена, 0) КАК Цена, | ЕСТЬNULL(ПриходнаяНакладнаяТовары.Сумма, 0) КАК Сумма |ИЗ | Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары |ГДЕ | ПриходнаяНакладнаяТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",Ссылка); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.Номенклатура.Наименование = "" Тогда Отказ = Истина; Сообщить("В строке №" + Выборка.НомерСтроки + " не заполнено поле <Номенклатура>!"); КонецЕсли; Если Выборка.Количество = 0 Тогда Отказ = Истина; Сообщить("В строке №" + Выборка.НомерСтроки + " в поле <Количество> указано нулевое значение!"); КонецЕсли; Если Выборка.Цена = 0 Тогда Отказ = Истина; Сообщить("В строке №" + Выборка.НомерСтроки + " в поле <Цена> указано нулевое значение!"); КонецЕсли; Если НЕ Отказ Тогда Движение = Движения.Цены.Добавить(); Движение.Период = Дата; Движение.Контрагент = Контрагент; Движение.Номенклатура = Выборка.Номенклатура; Движение.ТипЦен = Перечисления.ТипыЦен.ЦенаПокупки; Движение.Цена = Выборка.Цена; Движение = Движения.ОстаткиНоменклатуры.ДобавитьПриход(); Движение.Период = Дата; Движение.Склад = Склад; Движение.Номенклатура = Выборка.Номенклатура; Движение.Количество = Выборка.Количество; Движение.Сумма = Выборка.Сумма; КонецЕсли; КонецЦикла; КонецПроцедуры Приступим к созданию отчёта. Отчёт представляет из себя объект конфигурации, призванный отражать некоторый набор данных в удобном для пользователя виде. В 3-ей лабораторной работы мы создали печатную форму документа, и при этом использовали макет и табличный документ. Создание отчёта по своей структуре не отличается от создания печатной формы. Мы создаём тот же макет, а затем выводим данные согласно макету в табличный документ. Отличие заключается в том, что и макет, и табличный документ нам помогает создать конструктор выходной формы.
Итак, создадим новый отчёт и назовём его «ОстаткиНоменклатуры». Перейдём на вкладку Макеты->Конструкторы->Конструктор выходной формы. Нам предложат создать новую выходную форму. Соглашаемся. Перед нами открывается окно, очень напоминающее конструктор запросов. Это действительно так - основная работа по созданию отчёта в конструкторе заключается в выборке данных (как мы делали в конструкторе запросов), и только потом настраивается отображение этих данных на выходной форме. Для отчёта нам понадобится таблица ОстаткиНоменклатуры.Остатки. Из неё мы возьмём 2 поля: «Номенклатура» и «КоличествоОстаток». Заметьте, что для более компактной записи во 2-ой колонке мы переименовали таблицу ОстаткиНоменклатурыОстатки в Остатки
В настройках виртуальной таблицы в поле «Период» пишем &Дата, а в поле «Условие» Номенклатура В ИЕРАРХИИ (&Номенклатура). Что мы сейчас сделали. Мы могли не писать условие и тогда отчёт формировался бы по всей существующей номенклатуре. Мы могли написать Номенклатура = &Номенклатура, и тогда отчёт формировался бы по заданной номенклатуре. Но мы поступили иначе и написали В ИЕРАРХИИ. Это означает, что мы сможем выбрать не только конкретный товар, но и его родителя, т.е. можем посмотреть остатки по конкретному телевизору или по всем телевизорам сразу. Такой подход может применяться только для иерархических справочников. При этом, если в отчёте мы не зададим номенклатуру, то он автоматически выдаст данные для всей номенклатуры. Тоже самое происходит и с датой - если она не будет заполнена, то отчёт строится на текущую дату.
Теперь предположим, что мы хотим увидеть не только остатки по каждой номенклатуре, но и остатки в пределах группы, т.е. сколько у нас всего телевизоров и т.д. Для этого перейдём на вкладку «Итоги» и настроим окно так, как показано ниже.
Сначала из левой колонки перенесём поле «Номенклатура» в верхнее правое окошко (это означает, что итоги будут подводиться по этому полю). Затем из левой колонки перенесём поле «КоличествоОстаток» в нижнее правое окошко (это означает, что в качестве итогов будут суммироваться остатки). Внимательно посмотрите на выпадающий список «тип итогов» - он определяет иерархию, с которой будут отображаться элементы. Если выставить тип итогов в «Элементы», то выходная форма будет такой же, как если бы мы вообще не использовали итоги. Это связано с тем, что мы в отчёт и так выводим поле «КоличествоОстаток» для каждого элемента, поэтому нет никакого смысла подбивать итоги для каждого элемента, если этот итог итак уже есть в выводимой таблице. Для лучшего понимания типа итогов, продемонстрируем в работе все 3 варианта.
Элементы: Только иерархия: Элементы и иерархия:
Третий вариант нам подходит больше всего, т.к. предоставляет более полные данные. В настройках итогов не забудьте поставить галочку «Общие итоги» - это позволит нам увидеть общее количестве всей номенклатуры. Эти данные мало информативны, но зато позволят нам лучше понять возможности конструктора. Перейдём на вкладку «Отчёт» и снимем галочку «Использовать построитель отчётов». Дело в том, что кроме классического конструктора, платформа 1С предоставляет ещё 2 возможности создания отчётов: с помощью построителя и компоновщика, но мы не будем ими пользоваться, т.к. объяснение их функционирования может занять несколько отдельных лабораторных работ. Осталось перейти на закладку «Выходная форма» и настроить параметры, которые будут передаваться в отчёт:
Если у вас в списке записи дублируются, т.е. 2 поля Дата и 2 поля Номенклатура, то заполните их аналогично (это не является грубой ошибкой, а скорее недоработкой учебной версии платформы). Нажмём «ОК» и увидим, что макет и выходную форму конструктор создал за нас. Отчёт готов. Осталось добавить его в нужные интерфейсы и посмотреть на результат работы в режиме «Предприятие». При желании можно проявить фантазию и оформить отчёт более красиво для наглядности:
Также не забудьте назначить права на использование этого объекта. Порядок выполнения работы
1. Изучить теоретические сведения. 2. Изучить постановку задачи, разработать структуру метаданных конфигурации. 3. Реализовать алгоритмы функционирования системы. 4. Реализовать необходимую отчетность. 5. Подготовить отчет о работе. 5. Содержание отчета 1. Цель работы. 2. Описание варианта задания (предметной области и набора ее элементов, отображаемых в БД). 3. Копии всех подготавливаемых аналитических отчетов. 4. Выводы по работе. 6. Контрольные вопросы
1. Как определить, какие именно объекты конфигурации использовать для описания предметной области? 2. Как осуществить выбор представления данных? 3. В какие элементы управления позволяет выводить отчет конструктор выходной формы? 4. Какие данные может содержать макет? 5. Для чего используется конструктор запросов. 6. Объясните разницу между видами группировок при подведении итогов. 7. Какие виды соединения таблиц вы знаете? Опишите их.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
ПРИЛОЖЕНИЕ А. Варианты заданий
В качестве варианта задания предлагается предметная область и ознакомительный перечень объектов учета. Задание предполагает творческий подход, т.е. возможно изменение и добавление различных объектов конфигурации. Требуется разработать небольшую систему учета, которая являлась бы законченным программным продуктом и содержала средства администрирования базы данных, отображения данных на экранных формах, создания и оформления аналитической отчетности. По согласованию с преподавателем возможно использование в качестве основы для выполнения текущей работы той конфигурации, которая использовалась при выполнении предыдущих лабораторных работ. Описание предметной области должно соответствовать выбранной конфигурации (см. задания к предыдущим работам). Основное внимание уделить способам построения аналитической отчетности.
|
|||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-10; просмотров: 445; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.192.242 (0.009 с.) |