13481

Программирование форм

Лабораторная работа

Информатика, кибернетика и программирование

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

Русский

2013-05-11

235 KB

1 чел.

Программирование форм

Лабораторная работа

Постановка задачи

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

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

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

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

Представим все в табличной форме:

Номер месяца

Год

Вид тарифа

Стоимость

9

2008

Основной

2000

10

2008

Основной

2020

9

2008

Сокращенная форма

2100

10

2008

Сокращенная форма

2150

Вид тарифа определяет различные формы обучения. Каждому учащемуся в зависимости от выбранной формы обучения устанавливается определенный вид тарифа.

Номер договора

ФИО студента

ФИО плательщика

Число оплачиваемых месяцев

Вид тарифа

100/234

Петров Петр Петрович

Петров Иван Иванович

36

Основной

101/234

Иванов Иван Иванович

Иванов Петр Иванович

36

Основной

102/234

Сидорова Ольга Николаевна

Сидорова Ольга Николаевна

32

Сокращенная форма

103/234

Сидоров Олег Петрович

Сидоров Олег Петрович

32

Сокращенная форма

Задача 1. Создание вспомогательного справочника ВидТарифа.

1. Создайте базу МояБаза3 и откройте в режиме конфигуратора.

2. Создайте справочник ВидТарифа без дополнительных реквизитов.

3. Перейдите в режим 1С:Предприятие и заполните созданный справочник. Затем вернитесь в окно конфигуратора.

Задача 2. Создание регистра сведений Тарифы.

1. Создайте непериодический регистр сведений Тарифы:

2. Перейдите на закладку Данные и укажите измерения: НомерМесяца (тип данных – число) и Год (тип данных – число). В окне свойств данных реквизитов установите опцию Индексировать. Затем укажите измерение ВидТарифа (тип данных – СправочникСсылка.ВидТарифа). В окне свойств данного реквизита укажите, что данное измерение ведущее. Ресурс регистра – Стоимость (тип данных -Число).

3. Перейдите в режим 1С:Предприятие и заполните созданный регистр. Затем вернитесь в окно конфигуратора.

4. В окне редактирования объекта конфигурации Тарифы перейдите на закладку Формы и щелкните по кнопке напротив поля Списка в группе Основные формы.

5. В появившемся окне укажите форма списка и щелкните по кнопке Готово.

6. Выполните двойной щелчок по полю ввода номера месяца. В появившемся окне свойств установите МинимальноеЗначение – 1 и МаксимальноеЗначение – 12.

7. Аналогичную процедуру выполните для поля Год.

Задача 3. Создание справочника Договоры.

1. Создайте справочник Договоры. Кроме обязательных реквизитов добавьте: ФИОучащегося (тип данных – строка не более 100 символов); ФИОплательщика (тип данных – строка не более 100 символов), ДатаДоговора (тип данных – дата); ВидТарифа (тип данных – СправочникСсылка.ВидТарифа); КоличествоОплачиваемыхМесяцев (тип данных - число).

2. Перейдите в режим 1С:Предприятие и заполните созданный справочник. Затем вернитесь в окно конфигуратора.

Задача 4. Создание регистра сведений Квитанции.

1. Создайте периодический регистр сведений Квитанции:

2. Перейдите на закладку Данные и укажите измерения: Договор (тип данных – СправочникСсылка.Договоры, в окне свойств данного реквизита укажите, что данное измерение ведущее) и Период (добавляется автоматически). Ресурс регистра – СуммаПоКвитанции (тип данных – Число). Реквизиты регистра – Оплачено (тип данных – булево); МесяцНачала, ГодНачала, МесяцОкончания, ГодОкончания (тип данных – число).

3. Создайте обработку УчетКвитанций. В окне редактирования объекта конфигурации перейдите на закладку Формы и щелкните по кнопке в разделе Основная форма обработки. Выберите тип формы – Произвольная форма и щелкните но кнопке Готово.

4. На полученной форме разместите элемент Рамка группы. В качестве подписи группы укажите – Информация о договоре.

5. В созданной рамке расположите поле ввода с именем Договор. Тип данных – СправочникСсылка.Договоры.

6. Затем расположите Надписи: четыре – поясняющие и три заполняются автоматически  при выборе договора (в окне свойств не заполняйте свойство Заголовок).

7. Заполните следующую часть формы: Создайте рамку Информация о тарифе. В ней расположите два поля ввода – для указания месяца и года, надписи НазваниеТарифа и ТарифЗаМесяц заполняются автоматически, затем создайте кнопку РасчетТарифа.

8. Разместите информацию в рамках Информация о последней оплате и Расчет следующей оплаты.

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

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

ЭлементыФормы.МесяцПроизведенияОплаты.Значение = Месяц(ТекущаяДата());

ЭлементыФормы.ГодПроизведенияОплаты.Значение = Год(ТекущаяДата());

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

9. Сделайте так, чтобы при выборе номера договора автоматически заполнялись поля МесяцДоговора, ГодДоговора, НазваниеТарифа и Учащийся исходя из информации о договоре. Для этого выполните двойной щелчок в области элемента Договор и в окне свойств щелкните по кнопке в разделе События напротив пункта ПриИзменении. Напишите фрагмент кода:

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

Договор = ЭлементыФормы.Договор.Значение;

ЭлементыФормы.Учащийся.Значение = Договор.ФИОучащегося;

ЭлементыФормы.МесяцДоговора.Значение = Месяц(Договор.ДатаДоговора);

ЭлементыФормы.ГодДоговора.Значение = Год(Договор.ДатаДоговора);

ЭлементыФормы.НазваниеТарифа.Значение = Договор.ВидТарифа;

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

10. Перейдите в режим 1С:Предприятие и проверьте работу процедур. Затем вернитесь в окно конфигуратора.

11. Модифицируйте процедуру, чтобы автоматически заполнялся ТарифЗаМесяц:

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

Договор = ЭлементыФормы.Договор.Значение;

ЭлементыФормы.Учащийся.Значение = Договор.ФИОучащегося;

ЭлементыФормы.МесяцДоговора.Значение = Месяц(Договор.ДатаДоговора);

ЭлементыФормы.ГодДоговора.Значение = Год(Договор.ДатаДоговора);

ЭлементыФормы.НазваниеТарифа.Значение = Договор.ВидТарифа;

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ *

|ИЗ РегистрСведений.Тарифы

|ГДЕ ВидТарифа.Наименование=&НазваниеТарифа И

|НомерМесяца=&Месяц И

|Год=&Год";

Запрос.УстановитьПараметр("НазваниеТарифа",ЭлементыФормы.НазваниеТарифа.Значение);

Запрос.УстановитьПараметр("Месяц",ЭлементыФормы.МесяцПроизведенияОплаты.Значение);

Запрос.УстановитьПараметр("Год",ЭлементыФормы.ГодПроизведенияОплаты.Значение);

Результат = Запрос.Выполнить().Выбрать();

Если Результат.Следующий()>0 Тогда

 ЭлементыФормы.ТарифЗаМесяц.Значение = Результат.Стоимость;

Иначе

 ЭлементыФормы.ТарифЗаМесяц.Значение = 0;

 Сообщить("По указанным данным информации о тарифе нет");

КонецЕсли;

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

12. Модифицируйте процедуру, чтобы внутри рамки ИнформацияОПослледнейОплаченнойКвитанции, автоматически заполнялась информация о самой свежей квитанции, по которой учащийся внес оплату:

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

Договор = ЭлементыФормы.Договор.Значение;

ЭлементыФормы.Учащийся.Значение = Договор.ФИОучащегося;

ЭлементыФормы.МесяцДоговора.Значение = Месяц(Договор.ДатаДоговора);

ЭлементыФормы.ГодДоговора.Значение = Год(Договор.ДатаДоговора);

ЭлементыФормы.НазваниеТарифа.Значение = Договор.ВидТарифа;

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ *

|ИЗ РегистрСведений.Тарифы

|ГДЕ ВидТарифа.Наименование=&НазваниеТарифа И

|НомерМесяца=&Месяц И

|Год=&Год";

Запрос.УстановитьПараметр("НазваниеТарифа",ЭлементыФормы.НазваниеТарифа.Значение);

Запрос.УстановитьПараметр("Месяц",ЭлементыФормы.МесяцПроизведенияОплаты.Значение);

Запрос.УстановитьПараметр("Год",ЭлементыФормы.ГодПроизведенияОплаты.Значение);

Результат = Запрос.Выполнить().Выбрать();

Если Результат.Следующий()>0 Тогда

 ЭлементыФормы.ТарифЗаМесяц.Значение = Результат.Стоимость;

Иначе

 ЭлементыФормы.ТарифЗаМесяц.Значение = 0;

 Сообщить("По указанным данным информации о тарифе нет");

КонецЕсли;

ЭлементыФормы.МесяцНачалаИнтервала.Значение = "";

ЭлементыФормы.ГодНачалаИнтервала.Значение = "";

ЭлементыФормы.МесяцОкончанияИнтервала.Значение = "";

ЭлементыФормы.ГодОкончанияИнтервала.Значение = "";

Запрос2 = Новый Запрос;

Запрос2.Текст = "ВЫБРАТЬ *

|ИЗ РегистрСведений.Квитанции

|ГДЕ Договор=&Договор И

|Оплачено=&Индикатор";

Запрос2.УстановитьПараметр("Договор",ЭлементыФормы.Договор.Значение);

Запрос2.УстановитьПараметр("Индикатор",Ложь);

Результат = Запрос2.Выполнить().Выбрать();

Если Результат.Следующий()>0 Тогда

 Сообщить("По данному договору есть неоплаченная квитанция");

 Возврат;

КонецЕсли;

   СтруктураОтбора = Новый Структура;

СтруктураОтбора.Вставить("Договор",Договор);

ВыборкаЗаписей = РегистрыСведений.Квитанции.Выбрать(,,СтруктураОтбора);

Пока ВыборкаЗаписей.Следующий() Цикл

 Если ЭлементыФормы.МесяцНачалаИнтервала.Значение="" Тогда

  ЭлементыФормы.МесяцНачалаИнтервала.Значение=ВыборкаЗаписей.МесяцНачала;

  ЭлементыФормы.ГодНачалаИнтервала.Значение=ВыборкаЗаписей.ГодНачала;

  ЭлементыФормы.МесяцОкончанияИнтервала.Значение=ВыборкаЗаписей.МесяцОкончания;

  ЭлементыФормы.ГодОкончанияИнтервала.Значение=ВыборкаЗаписей.ГодОкончания;

 Иначе

  Дата1 = Число(ЭлементыФормы.МесяцОкончанияИнтервала.Значение)+12*Число(ЭлементыФормы.ГодОкончанияИнтервала.Значение);

  Дата2 = ВыборкаЗаписей.МесяцОкончания+12*ВыборкаЗаписей.ГодОкончания;

  Если Дата2 > Дата1 Тогда

  ЭлементыФормы.МесяцНачалаИнтервала.Значение=ВыборкаЗаписей.МесяцНачала;

  ЭлементыФормы.ГодНачалаИнтервала.Значение=ВыборкаЗаписей.ГодНачала;

  ЭлементыФормы.МесяцОкончанияИнтервала.Значение=ВыборкаЗаписей.МесяцОкончания;

  ЭлементыФормы.ГодОкончанияИнтервала.Значение=ВыборкаЗаписей.ГодОкончания;

 КонецЕсли;

КонецЕсли;

КонецЦикла;

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

13. Модифицируйте процедуру, чтобы внутри рамки ИнформацияОПослледнейОплаченнойКвитанции, автоматически заполнялась информация о месяце и годе, с которого учащийся должен внести оплату:

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

Договор = ЭлементыФормы.Договор.Значение;

ЭлементыФормы.Учащийся.Значение = Договор.ФИОучащегося;

ЭлементыФормы.МесяцДоговора.Значение = Месяц(Договор.ДатаДоговора);

ЭлементыФормы.ГодДоговора.Значение = Год(Договор.ДатаДоговора);

ЭлементыФормы.НазваниеТарифа.Значение = Договор.ВидТарифа;

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ *

|ИЗ РегистрСведений.Тарифы

|ГДЕ ВидТарифа.Наименование=&НазваниеТарифа И

|НомерМесяца=&Месяц И

|Год=&Год";

Запрос.УстановитьПараметр("НазваниеТарифа",ЭлементыФормы.НазваниеТарифа.Значение);

Запрос.УстановитьПараметр("Месяц",ЭлементыФормы.МесяцПроизведенияОплаты.Значение);

Запрос.УстановитьПараметр("Год",ЭлементыФормы.ГодПроизведенияОплаты.Значение);

Результат = Запрос.Выполнить().Выбрать();

Если Результат.Следующий()>0 Тогда

 ЭлементыФормы.ТарифЗаМесяц.Значение = Результат.Стоимость;

Иначе

 ЭлементыФормы.ТарифЗаМесяц.Значение = 0;

 Сообщить("По указанным данным информации о тарифе нет");

КонецЕсли;

ЭлементыФормы.МесяцНачалаИнтервала.Значение = "";

ЭлементыФормы.ГодНачалаИнтервала.Значение = "";

ЭлементыФормы.МесяцОкончанияИнтервала.Значение = "";

ЭлементыФормы.ГодОкончанияИнтервала.Значение = "";

Запрос2 = Новый Запрос;

Запрос2.Текст = "ВЫБРАТЬ *

|ИЗ РегистрСведений.Квитанции

|ГДЕ Договор=&Договор И

|Оплачено=&Индикатор";

Запрос2.УстановитьПараметр("Договор",ЭлементыФормы.Договор.Значение);

Запрос2.УстановитьПараметр("Индикатор",Ложь);

Результат = Запрос2.Выполнить().Выбрать();

Если Результат.Следующий()>0 Тогда

 Сообщить("По данному договору есть неоплаченная квитанция");

 Возврат;

КонецЕсли;

   СтруктураОтбора = Новый Структура;

СтруктураОтбора.Вставить("Договор",Договор);

ВыборкаЗаписей = РегистрыСведений.Квитанции.Выбрать(,,СтруктураОтбора);

Пока ВыборкаЗаписей.Следующий() Цикл

 Если ЭлементыФормы.МесяцНачалаИнтервала.Значение="" Тогда

  ЭлементыФормы.МесяцНачалаИнтервала.Значение=ВыборкаЗаписей.МесяцНачала;

  ЭлементыФормы.ГодНачалаИнтервала.Значение=ВыборкаЗаписей.ГодНачала;

  ЭлементыФормы.МесяцОкончанияИнтервала.Значение=ВыборкаЗаписей.МесяцОкончания;

  ЭлементыФормы.ГодОкончанияИнтервала.Значение=ВыборкаЗаписей.ГодОкончания;

 Иначе

  Дата1 = Число(ЭлементыФормы.МесяцОкончанияИнтервала.Значение)+12*Число(ЭлементыФормы.ГодОкончанияИнтервала.Значение);

  Дата2 = ВыборкаЗаписей.МесяцОкончания+12*ВыборкаЗаписей.ГодОкончания;

  Если Дата2 > Дата1 Тогда

  ЭлементыФормы.МесяцНачалаИнтервала.Значение=ВыборкаЗаписей.МесяцНачала;

  ЭлементыФормы.ГодНачалаИнтервала.Значение=ВыборкаЗаписей.ГодНачала;

  ЭлементыФормы.МесяцОкончанияИнтервала.Значение=ВыборкаЗаписей.МесяцОкончания;

  ЭлементыФормы.ГодОкончанияИнтервала.Значение=ВыборкаЗаписей.ГодОкончания;

 КонецЕсли;

КонецЕсли;

КонецЦикла;

Если ЭлементыФормы.МесяцОкончанияИнтервала.Значение <>"" Тогда

 ЭлементыФормы.МесяцНачалаОплаты.Значение = Число(ЭлементыФормы.МесяцОкончанияИнтервала.Значение)+1;

 Если Число(ЭлементыФормы.МесяцНачалаОплаты.Значение)>12 Тогда

  ЭлементыФормы.МесяцНачалаОплаты.Значение = Число(ЭлементыФормы.МесяцНачалаОплаты.Значение)-12;

  ЭлементыФормы.ГодНачалаОплаты.Значение = Число(ЭлементыФормы.ГодОкончанияИнтервала.Значение)+1;

 Иначе

  ЭлементыФормы.ГодНачалаОплаты.Значение = ЭлементыФормы.ГодОкончанияИнтервала.Значение;

 КонецЕсли;

 КонецЕсли;

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

14. Перейдите в режим 1С:Предприятие и заполните созданный справочник. Затем вернитесь в окно конфигуратора.

15. При нажатии на кнопку Расчет тарифа должен заново производиться расчет тарифа:

Процедура РасчетТарифаНажатие(Элемент)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ *

|ИЗ РегистрСведений.Тарифы

|ГДЕ ВидТарифа.Наименование=&НазваниеТарифа И

|НомерМесяца=&Месяц И

|Год=&Год";

Запрос.УстановитьПараметр("НазваниеТарифа",ЭлементыФормы.НазваниеТарифа.Значение);

Запрос.УстановитьПараметр("Месяц",ЭлементыФормы.МесяцПроизведенияОплаты.Значение);

Запрос.УстановитьПараметр("Год",ЭлементыФормы.ГодПроизведенияОплаты.Значение);

Результат = Запрос.Выполнить().Выбрать();

Если Результат.Следующий()>0 Тогда

 ЭлементыФормы.ТарифЗаМесяц.Значение = Результат.Стоимость;

Иначе

 ЭлементыФормы.ТарифЗаМесяц.Значение = 0;

 Сообщить("По указанным данным информации о тарифе нет");

КонецЕсли;

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

16. При нажатии на кнопку Расчет суммы должен заново производиться расчет стоимости:

Процедура РасчетСуммыНажатие(Элемент)

Количество = Число(ЭлементыФормы.КоличествоОплачиваемыхМесяцев.Значение);

ЦенаМесяц = Число(ЭлементыФормы.ТарифЗаМесяц.Значение);

Сумма = Количество*ЦенаМесяц;

ЭлементыФормы.СуммаОплаты.Значение = Сумма;

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

17. При нажатии на кнопку Записать квитанцию должна производиться запись квитанции в регистр Квитанции:

Процедура ЗаписатьКвитанциюНажатие(Элемент)

КоличествоМесяцев = Число(ЭлементыФормы.КоличествоОплачиваемыхМесяцев.Значение);

ВариантМесяца = КоличествоМесяцев + Число(ЭлементыФормы.МесяцНачалаОплаты.Значение)-1;

ВариантГода = Число(ЭлементыФормы.ГодНачалаОплаты.Значение);

Если ВариантМесяца > 12 Тогда

  ВариантМесяца = ВариантМесяца -12;

  ВариантГода = Число(ЭлементыФормы.ГодНачалаОплаты.Значение)+1;

КонецЕсли;

НаборЗаписей = РегистрыСведений.Квитанции.СоздатьНаборЗаписей();

НаборЗаписей.Отбор.Период.Установить(ТекущаяДата());

НоваяЗапись = НаборЗаписей.Добавить();

НоваяЗапись.Договор = Договор;

НоваяЗапись.Период = ТекущаяДата();

НоваяЗапись.МесяцНачала = ЭлементыФормы.МесяцНачалаОплаты.Значение;

НоваяЗапись.ГодНачала = ЭлементыФормы.ГодНачалаОплаты.Значение;

НоваяЗапись.МесяцОкончания = ВариантМесяца;

НоваяЗапись.ГодОкончания = ВариантГода;

НоваяЗапись.СуммаПоКвитанции = ЭлементыФормы.СуммаОплаты.Значение;

НоваяЗапись.Оплачено = Ложь;

НаборЗаписей.Записать(Истина);

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

18. Запустите приложение Word и откройте документ blank.doc. Выполните коменду Вид|Панели инструментов|Элементы управления. Выберите тип элемента управления – поле и разместите поля в документе по образцу:

Вызовите окно свойств каждого поля и в разделе Name укажите имена: Pole_1, Pole_2, Pole_3, Pole_4, Pole_5, Pole_6, Pole_7, Pole_8, Pole_1_2, Pole_2_2, Pole_3_2, Pole_4_2, Pole_5_2, Pole_6_2, Pole_7_2, Pole_8_2,

19. При нажатии на кнопку Передача Word должен заново производиться расчет тарифа:

Процедура ПередачаWORDНажатие(Элемент)

МассивМесяцев = Новый Массив;

МассивМесяцев.Вставить(1,"янв.");

МассивМесяцев.Вставить(2,"февр.");

МассивМесяцев.Вставить(3,"март");

МассивМесяцев.Вставить(4,"апр.");

МассивМесяцев.Вставить(5,"май");

МассивМесяцев.Вставить(6,"июнь");

МассивМесяцев.Вставить(7,"июль");

МассивМесяцев.Вставить(8,"авг.");

МассивМесяцев.Вставить(9,"сент.");

МассивМесяцев.Вставить(10,"окт.");

МассивМесяцев.Вставить(11,"ноябр.");

МассивМесяцев.Вставить(12,"дек.");

МесяцНачала = ЭлементыФормы.МесяцНачалаОплаты.Значение;

ГодНачала = ЭлементыФормы.ГодНачалаОплаты.Значение;

Колич = ЭлементыФормы.КоличествоОплачиваемыхМесяцев.Значение;

appWD = Новый COMОбъект "Word.Application";

appWD.Visible = Истина;

appWD.Documents.Open("C:\blank.doc");

appWD.ActiveDocument.Pole_1.Text = Строка(ЭлементыФормы.Договор.Значение);

appWD.ActiveDocument.Pole_1_2.Text = Строка(ЭлементыФормы.Договор.Значение);

appWD.ActiveDocument.Pole_2.Text = "С "+"МассивМесяцев[МесяцНачала]"+" "+Строка(ГодНачала)+"-"+Строка(Колич)+"мес.";

appWD.ActiveDocument.Pole_2_2.Text = "С "+"МассивМесяцев[МесяцНачала]"+" "+Строка(ГодНачала)+"-"+Строка(Колич)+"мес.";

appWD.ActiveDocument.Pole_3.Text = ЭлементыФормы.Учащийся.Значение;

appWD.ActiveDocument.Pole_3_2.Text = ЭлементыФормы.Учащийся.Значение;

appWD.ActiveDocument.Pole_4 = "Оплата за обучение";

appWD.ActiveDocument.Pole_4_2 = "Оплата за обучение";

appWD.ActiveDocument.Pole_5 = Строка(ЭлементыФормы.СуммаОплаты.Значение);

appWD.ActiveDocument.Pole_5_2 = Строка(ЭлементыФормы.СуммаОплаты.Значение);

ПараметрыПредметаИсчисления = "рубль,рубля,рублей";

ФорматнаяСтрока = "Л=ru_RU";

ВыводимоеЧисло = ЭлементыФормы.СуммаОплаты.Значение;

appWD.ActiveDocument.Pole_6 = ЧислоПрописью(ВыводимоеЧисло,ФорматнаяСтрока,ПараметрыПредметаИсчисления);

appWD.ActiveDocument.Pole_7 = МассивМесяцев[ЭлементыФормы.МесяцПроизведенияОплаты.Значение];

appWD.ActiveDocument.Pole_8 = Строка(ЭлементыФормы.ГодПроизведенияОплаты.Значение);

appWD.ActiveDocument.Pole_6_2 = ЧислоПрописью(ВыводимоеЧисло,ФорматнаяСтрока,ПараметрыПредметаИсчисления);

appWD.ActiveDocument.Pole_7_2 = МассивМесяцев[ЭлементыФормы.МесяцПроизведенияОплаты.Значение];

appWD.ActiveDocument.Pole_8_2 = Строка(ЭлементыФормы.ГодПроизведенияОплаты.Значение);

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

20. Перейдите в режим 1С:Предприятие и проверьте работу. Затем вернитесь в окно конфигуратора.

Задача 5. Создание формы регистрации квитанций.

1. Создайте обработку РегистрацияОплаты.

2. Перейдите на закладку Формы и создайте форму. В верхней части расположим поле ввода Договор (тип данных – СправочникСсылка.Договоры). Затем разместим восемь элементов типа надпись и кнопку:

3. Напишите процедуру, осуществляющую поиск неоплаченной квитанции и отображение ее параметров:

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

ЭлементыФормы.Клиент.Значение = Договор.ФИОучащегося;

ЭлементыФормы.МесяцНачалаОплаты.Значение = "";

ЭлементыФормы.ГодНачалаОплаты.Значение = "";

ЭлементыФормы.МесяцОкончанияОплаты.Значение = "";

ЭлементыФормы.ГодОкончанияОплаты.Значение = "";

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ *

|ИЗ РегистрСведений.Квитанции

|ГДЕ Договор=&Договор И

|Оплачено=&Индикатор";

Запрос.УстановитьПараметр("Договор",ЭлементыФормы.Договор.Значение);

Запрос.УстановитьПараметр("Индикатор",Ложь);

Результат = Запрос.Выполнить().Выбрать();

Если Результат.Следующий()>0 Тогда

ЭлементыФормы.МесяцНачалаОплаты.Значение = Результат.МесяцНачала;

ЭлементыФормы.ГодНачалаОплаты.Значение = Результат.ГодНачала;

ЭлементыФормы.МесяцОкончанияОплаты.Значение = Результат.МесяцОкончания;

ЭлементыФормы.ГодОкончанияОплаты.Значение = Результат.ГодОкончания;

КонецЕсли;

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

4. Запись информации об оплаченной квитанции:

Процедура УстановитьОплатуНажатие(Элемент)

Запись = РегистрыСведений.Квитанции.СоздатьМенеджерЗаписи();

Договор = ЭлементыФормы.Договор.Значение;

ВыборкаЗаписей=РегистрыСведений.Квитанции.Выбрать();

Пока ВыборкаЗаписей.Следующий()>0 Цикл

Если (ВыборкаЗаписей.Договор = Договор) И (ВыборкаЗаписей.Оплачено=Ложь) Тогда

 Запись.Период = ВыборкаЗаписей.Период;

 Запись.Договор = ВыборкаЗаписей.Договор;

 Запись.Прочитать();

 Если Запись.Выбран() Тогда

  Запись.Оплачено = Истина;

  Запись.Записать();

  Закрыть();

 КонецЕсли;

 Прервать;

КонецЕсли;

КонецЦикла;

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


 

А также другие работы, которые могут Вас заинтересовать

58549. Повторення усного віднімання двоцифрових чисел без переходу через десяток. Закріплення письмового додавання і віднімання 62 KB
  Мотивація навчальної діяльності Була у діда внучка дуже велика чомучка. Куди лізе комашка А як росте ромашка Куди заходить сонце Хто заглянув у віконце І ось одного разу коли Чомучка дуже надокучила діду своїми запитаннями він не витримав...
58550. Випадки додавання і віднімання, пов’язані з нумерацією чисел. Кути многокутника. Творча робота над задачею 35 KB
  Мета: Пригадати з учнями з прийомами додавання і віднімання, пов’язаними зі знанням нумерації чисел в межах 100; поглибити знання про многокутники; формування уміння творчо працювати над задачею; розвивати кмітливість.
58551. Умножение и деления на 2 36.5 KB
  Задачи: Закрепление действия умножения и деления на 2. Выбирать действие умножения для решения задач. Развивать навыки устного счёта, умение рассуждать, познавательный интерес. Воспитывать умение сотрудничать, работая в паре с соседом.
58552. Урок математики і вимоги до нього 92 KB
  Підготовка вчителя до уроку вибір методів засобів і форм організації діяльності учнів. Особливості уроку математики в початковій школі Основною формою організації навчальної роботи з математики як і з інших предметів є урок. Особливості уроку математики обумовлені перш за все особливостями самого навчального предмета.
58554. Время. Единицы времени 61 KB
  Цели урока: Создать условия для формирования понятий: Время Единицы времени. Способствовать развитию навыков перевода из одних единиц времени в другие. Какие знаете вы Нет времени.
58555. Веселый урок математики 49.5 KB
  Ведущий: Ребята Сегодня у нас урок занимательной математики. Ведущий: Первого греческого ученого который начал рассуждать о математике звали Фалес. Ведущий: Ребята давайте поиграем в занимательную игру. Ведущий: №1.
58556. Способ сложения столбиком 47 KB
  Кто не сделал ни одной ошибки поставьте на полях Для чего мы выполняли эту работу Что общего в тематике этих задач Как мы должны относиться к животным Кому хочется больше узнать о животных Можно взять вот такие книги в библиотеке или почитать в читальном зале...