Практическая работа №7. Создание документов. 
";


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Практическая работа №7. Создание документов.



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

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

Рисунок 7.1.

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

Реквизиты шапки

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

Рисунок 7.2.

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

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

· Длина номера – максимальное количество символов, которое может занимать номер документа.

· Контроль уникальности – этот флаг включает автоматический контроль системой номера документа. В случае нарушения правил нумерации системой будет выдано соответствующее предупреждение.

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

· Периодичность – обычно нумерация документов идет не сквозная, а в пределах какого-то временного интервала, чаще всего года. Для реализации этого в системе предусмотрен соответствующий механизм. Предусмотрены следующие варианты периодичности номеров:

- непериодический;

- в пределах года;

- в пределах квартала;

- в пределах месяца;

- в пределах дня.

Для документа Рас ходДенег изменим длину номера на 6 знаков и периодичность на значение В пределах года.

Согласно поставленной задачи, необходимо вести учет взаиморасчетов с контрагентами в разрезе договоров. Помимо этого, документ РасходДенег должен позволить нам выплатить деньги не только поставщикам, но и сотрудникам. Для реализации этого требования необходимо создать новые реквизиты документа РасходДенег. Нам потребуется создать три реквизита:

- Контрагент,

- Договор,

- Сумма.

 

Рис. 7.3.

На закладке Данные, точно так же, как это делалось и для справочника, добавляем новые реквизиты. Зададим Имя реквизита, его тип и, в случае необходимости, дополнительные настройки типа, например длину строки или точность числа. Поскольку в системе уже хранится информация о контрагентах и договорах, то и тип реквизитов Контрагент и Договор необходимо указать СправочникСсылка.Контрагенты и СправочникСсылка.Договоры соответственно. Для реквизита Сумма потребуется не только указать тип Число, но и точность 2, чтобы можно было корректно заносить суммы поступивших денег. Кроме того, чтобы иметь возможность выплатить денежные средства не только контрагентам, но и сотрудникам, можно для реквизита Контрагент указать составной тип данных СправочникСсылка.Контрагенты и СправочникСсылка.Сотрудники (Рис 7.3).

Формы документа

Точно так же, как и при работе со справочником, пользователь работает не напрямую с объектом «Документ", а посредством экранной формы. Соответственно, при работе с одним документом используется Форма документа (Рис. 7.4), а для работы с несколькими документами данного вида используется Форма списка (Рис. 7.5).

 

Рисунок 7.4.

 

Рисунок 7.5.

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

 

Рисунок 7.6.

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

Рисунок 7.7.

Широкие возможности по настройке списка предоставлены пользователю непосредственно в режиме «1С:Предприятие». Для этой цели в форме списка документа необходимо нажать кнопку Все действия и в открывшемся меню выбрать пункт Настройка списка. После этого, последовательно заполняя настройки по закладкам (Рис. 7.8 – Рис. 7.14) пользователь может добиться того, чтобы список отображалась наиболее удобным для него способом (Рис. 7.15).

Рисунок 7.8

Рисунок 7.9.

 

Рисунок 7.10.

 

Рисунок 7.11.

 

Рисунок 7.12.

 

Рисунок 7.13

 

Рисунок 7.14.

 

Рисунок 7.15.

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

Самостоятельно

Создайте документ Поступление денежных средств (Рис. 7.16)

 

Рис. 7.16

Обратите внимание, что пользователь имеет возможность (в определенных пределах) изменить внешний вид формы самостоятельно (Рис. 7.17 и Рис. 7.18). Для этого необходимо выбрать пункт меню Изменить форму из выпадающего списка, сформированного при нажатии на кнопку «Еще».

Рисунок 7.17

Рисунок 7.18

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

 

Рисунок 7.19

Естественно, что иногда пользователь может сделать некорректные настройки и испортить форму. В таком случае форма может быть легко возвращена к виду, заданному в конфигураторе. Для этого по кнопке «Еще» необходимо выбрать пункт меню «Установить стандартные настройки» (Рис.7.20)

 

Рисунок 7.20

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

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

 

Рисунок 7.21.

Чтобы реквизиты исчезали, когда меняется способ оплаты, задействуем обработчик события ПриИзменении для способа оплаты (Рис. 7.22)

 

Рисунок 7.22

Кроме того, необходимо использовать обработчик события ПриОткрытии для всей формы (Рис.7.23)

 

Рисунок 7.23

Текст процедур обработчиков событий в модуле формы документа ПриходДенег (данный программный код может быть оптимизирован, что будет гораздо менее удобно для восприятия, поэтому рассмотрим упрощенный вариант):

&НаКлиенте

Процедура СпособОплатыПриИзменении(Элемент)

Элементы.Группа1.Видимость= НоваяВидимость (Объект.СпособОплаты);

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

 

&НаСервере

Функция НоваяВидимость (Способ)

Если Способ = Перечисления.СпособыОплаты.Безналичные Тогда

Воз=Истина;

Иначе

Воз=Ложь;

 

КонецЕсли;

Возврат Воз;

КонецФункции

 

&НаКлиенте

Процедура ПриОткрытии(Отказ)

Элементы.Группа1.Видимость=НоваяВидимость(Объект.СпособОплаты);

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

В результате для пользователя в режиме «1С:Предприятие» внешний вид формы будет изменяться динамически, в зависимости от действий пользователя (Рис.7.24).

 

Рисунок 7.24.

Реквизиты табличной части

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

В нашем случае для документа ПриходнаяНакладная необходимо создать табличную часть Товары с реквизитами Товар, Количество, Цена и Сумма с типами значений СправочникСсылка.Номенклатура, Число с точностью 3 и Число с точностью 2 соответственно. Создание табличной части документа также идентично созданию табличной части справочника. На закладке Данные в соответствующем окне с помощью контекстного меню создается табличная часть, а потом и ее реквизиты (Рис. 7.25).

 

Рисунок 7.25

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

 

Рисунок 7.26

Для расчета суммы необходимо задействовать обработчики событий При изменении для количества и цены (Рис. 7.26). Хотя результат этих обработчиков должен быть одинаков, для удобства приведено два разных способа написания этого действия.

&НаКлиенте

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

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

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

 

&НаКлиенте

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

СтрокаРасчета = Элементы.Товары.ТекущиеДанные;

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

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

 

Рисунок 7.27.

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

 

Рисунок 7.28.

 

Рисунок 7.29.

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

 

Рисунок 7.30.

В результате пользователь получит следующую форму (Рис. 7.31) для работы с документом приходная накладная.

 

Рисунок 7.31

Самостоятельно

Создайте документ Расходная накладная (Рис. 7.31 - Рис. 7.34)

Рисунок 7.32.

Рисунок 7.33

Рисунок 7.34.

 

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

Рисунок 7.35.

Так же улучшим работу пользователя с сотрудником. Сделаем так, что доступными к выбору станут только не уволенные сотрудники. Нам потребуется создать новую форму выбора в справочнике «Сотрудники», причем форма должна быть неосновной, т.е. будет использовано только для нашей расходной накладной (Рис. 7.36)

Рисунок 7.36.

Рисунок 7.38

В этой форме мы данные будем отображать без учета иерархии (Рис. 7.38)

Рисунок 7.39.

Теперь укажем, что в расходной накладной выбор сотрудника будет происходить именно посредством новой формы (Рис. 7.39) и добавим отбор только работающих сотрудников (Рис. 7.40).

Рисунок 7.40.

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

Естественно, необходимо произвести расчет суммы НДС, согласно указанной ставки. Поскольку ставка НДС это ссылка на элемент справочника, то операция умножения над ней не выполнится. Чтобы получить для каждой ставки НДС число для вычисления суммы НДС, в справочник СтавкиНДС добавим новый реквизит Ставка (Рис. 7.41).

Рисунок 7.41.

Кроме того, чтобы в форме списка пользователь мог видеть общую сумму документа, необходимо рассчитать реквизит СуммаДокумента, для чего воспользуемся обработчиком события ПередЗаписью. Это событие будем обрабатывать не для формы, а для самого объекта, поэтому текст процедуры обработчика события будет находиться в модуле документа.

 

&НаКлиенте

Процедура ТоварыСуммаНДСПриИзменении(Элемент)

СтрокаРасчета = Элементы.Товары.ТекущиеДанные;

СтрокаРасчета.Всего = СтрокаРасчета.Сумма+ СтрокаРасчета.СуммаНДС;

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

 

&НаКлиенте

Процедура ТоварыСтавкаНДСПриИзменении(Элемент)

СтрокаРасчета = Элементы.Товары.ТекущиеДанные;

СтавкаЧисло = ПолучитьСтавку(СтрокаРасчета.СтавкаНДС);

СтрокаРасчета.СуммаНДС = СтрокаРасчета.Сумма * СтавкаЧисло;

ТоварыСуммаНДСПриИзменении(Элемент);

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

 

&НаСервереБезКонтекста

Функция ПолучитьСтавку(СтавкаНДС)

Возврат СтавкаНДС.Ставка / 100;

КонецФункции

 

&НаКлиенте

Процедура ТоварыСуммаПриИзменении(Элемент)

ТоварыСтавкаНДСПриИзменении(Элемент);

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

 

&НаКлиенте

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

СтрокаРасчета = Элементы.Товары.ТекущиеДанные;

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

ТоварыСуммаПриИзменении(Элемент);

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

 

&НаКлиенте

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

ТоварыЦенаПриИзменении(Элемент);

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

 

&НаКлиенте

Процедура ТоварыНоменклатураПриИзменении(Элемент)

СтрокаРасчета = Элементы.Товары.ТекущиеДанные;

СтрокаРасчета.СтавкаНДС =

ПолучитьСтавкуТовара(СтрокаРасчета.Номенклатура);

ТоварыСтавкаНДСПриИзменении(Элемент);

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

 

&НаСервереБезКонтекста

Функция ПолучитьСтавкуТовара(Товар)

Возврат Товар.ОсновнаяСтавкаНДС;

КонецФункции

 

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

СуммаДокумента = Товары.Итог("Всего")+Услуги.Итог("Всего");

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



Поделиться:


Последнее изменение этой страницы: 2021-03-09; просмотров: 1300; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.19.211.134 (0.003 с.)