Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Меркулова_Пособие_РазработкаУправляемыхПриложен...doc
Скачиваний:
15
Добавлен:
01.07.2025
Размер:
18 Мб
Скачать
☆

6.3. Варианты заданий

Разработать отчет с нестандартной расшифровкой вывода списка элементов основного справочника (см. варианты заданий в главе 4). Для этого необходимо:

  • Создать новую подсистему «Лабораторная работа 3». Все новые объекты данного задания поместить в данную подсистему.

  • Создать в конфигурации новый объект-отчет.

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

  • Внести корректировку в результаты работы конструктора, обеспечивающие вывод отчета и его нестандартную расшифровку по правилам главы 5.

Глава 7. Документы

7.1. Структура документов. Свойства документов

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

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

Имя: Контрагент, Тип: СправочникСсылка.Контрагенты

Имя: ОтветственныйСотрудник: Тип: СправочникСсылка.Сотрудники

Добавим в состав табличных частей нашего документа новую табличную часть с именем Материалы и следующими реквизитами:

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

Имя: Цена, Тип: Число, длина 10, точность 2

Имя: Количество, Тип: Число, длина 10, точность 3

Имя: Сумма, Тип: Число, длина 10, точность 2

Рис. 7.1.  Настройка состава реквизитов документа

На закладке Нумерация, рис. 7.2., можно задать параметры нумерации документов.

Рис. 7.2.  Настройка параметров нумерации документа

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

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

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

Закладка Движения, рис. 7.3, позволяет управлять проведением документа.

Рис. 7.3.  Настройка параметров проведения документа

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

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

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

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

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

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

Рис. 7.4.  Настройка параметров ввода на основании

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

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

Создадим форму документа, рис. 7.2.

Разделим в форме документа расположение реквизитов на 2 страницы: 1 страница (закладка) - реквизиты шапки; 2 страница – реквизиты табличной части.

Рис. 7.5. Форма документа

Сформируем группу «Группа1», в свойствах зададим вид "Страницы" и две подчиненные группы «Шапка» и «ТЧ» вида «Страница». Перенесем элементы формы в подчинение нужным группам. Получим форму с двумя закладками.

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

Таблица 7.1.

Таблица 7.1. Данные справочника Номенклатура

Наименование

Единица измерения

Услуга

Группа

Парикмахерские услуги

Да

Да

Завивка

Час

Да

Стрижка

Час

Да

Парфюмерия

Нет

Да

Духи

Штука

Нет

Одеколон

Штука

Нет

Прочие материалы

Нет

Да

УФ-гель

Упаковка

Нет

Спецодежда

Нет

Да

Одежда для парикмахера

Штука

Нет

Уход за волосами

Нет

Да

Бальзам для волос

Штука

Нет

Лак для волос

Упаковка

Нет

На рис. 7.6. вы можете видеть форму документа после ввода в нее некоторых данных.

Рис. 7.6.  Заполнение шапки и табличной части документа «ПоступлениеМатериалов»

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

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

В нашем случае это должны быть события, генерируемые при изменении полей Цена или Количество при вводе данных в определенной строке. Для того, чтобы назначить обработчики подобных событий для определенных элементов табличной части, можно поступить так же, как мы поступали, назначая обработчики событий для любых других элементов формы (рис. 7.7). Для начала, конечно же, нам нужно будет создать собственную форму документа, делается это на закладке Формы окна редактирования объекта. С параметрами, предложенными конструктором форм по умолчанию, можно согласиться.

Рис. 7.7.  Назначение обработчика полю табличной части

Назначим обработчики событий ПриИзменении для полей МатериалыЦена и МатериалыКоличество.

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

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

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

Рис. 7.8.  Просмотр свойства ТекущиеДанные в окне Выражение при отладке кода

Итак, наша задача может быть решена следующим образом:

&НаКлиенте

Процедура МатериалыЦенаПриИзменении(Элемент)

РассчитатьСумму();

КонецПроцедуры

&НаКлиенте

Процедура МатериалыКоличествоПриИзменении(Элемент)

РассчитатьСумму();

КонецПроцедуры

&НаКлиенте

Процедура РассчитатьСумму()

ТекущаяСтрока=Элементы.Материалы.ТекущиеДанные;

ТекущаяСтрока.Сумма=ТекущаяСтрока.Количество*ТекущаяСтрока.Цена;

КонецПроцедуры

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

Рис. 7.9.  Вывод итогового показателя для поля Сумма на форму

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

Рис. 7.10.  Форма после модификации

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

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

Рис. 7.11.  Создание документа ОтпускМатериаловМастеру

Включим данный документ в состав подсистемы Документы. Вместо реквизита Контрагент у него будет реквизит ПолучательМатериалов с типом СправочникСсылка.Сотрудники.

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

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

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

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

Рис. 7.12.  Документ ОтпускМатериаловМастеру. Форма документа