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 Цикл

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

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

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

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

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

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

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

  Закрыть();

 КонецЕсли;

 Прервать;

КонецЕсли;

КонецЦикла;

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


 

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

46567. Теоретические основы композиции и тематическое рисование на уроках изобразительного искусства 20.37 KB
  Теоретические основы композиции и тематическое рисование на уроках изобразительного искусства. Обучение теоретическим основам композиции подразумевает знакомство с законами композиции средствами: ритм динамич. Формы композиции: 1. Признаки композиции.
46568. Острый мастит. Классификация. Клиника, диагностика, дифференциальная диагностика. Лечение. Показания к операции 20.39 KB
  Эхинококковые кисты печени растут очень медленно хотя иногда достигают огромных размеров и содержат 10 л и более жидкости. Чаще они бывают одиночными и локализуются в правой доле печени по встречаются и множественные кисты. Состояние больных обычно не нарушается; II стадия наблюдаются различные симптомы связанные с увеличением размеров растущей кисты оказывающей давление па окружающие органы. У ряда больных прощупывается опухолевидное образование в верхней половине живота или увеличение печени; III стадия возникают симптомы...
46569. Формирование гражданского общества в России 20.46 KB
  Зачатки гражданского общества в России начали складываться во второй половине ХIХ столетия в результате реформ Александра II отмена крепостного права реформа местного самоуправления судебная административная и другие реформы. Все это ускорило необходимые процессы модернизации русского общества. С развитием буржуазных отношений формируются крупные промышленные предприятия банки и другие субъекты капиталистических отношений что создало экономическую основу гражданского общества.
46570. Термінологічні словники як основне джерело фахової інформації 20.5 KB
  Термінологічні словники як основне джерело фахової інформації. Особливу категорію складають термінологічні словники це словники які включають терміни що стосуються окремої галузі знань або навіть певної теми та їх пояснення Словник термінів теорії груп.
46571. Особенности проблемного обучения изобразительному искусству 20.55 KB
  Особенности проблемного обучения изобразительному искусству. План: понятие ПО Проблемная ситуация и пробл вопрос проблемные задачи по изо структура проблемного урока классификация метолов обучениявывод 1Проблемное обучение это тип развивающего обучения в котором сочетается систематическая самостоятельная поисковая деятельность учащихся с усвоением ими готовых выводов науки. 3 учебнопознавательные задачи приемытехники изображ предмета 4 Структура процесса проблемного обучения представляет собой систему связанных между собой и...
46572. Метод дисконтирования при оценке недвижимости 20.6 KB
  Метод дисконтированных денежных потоков наиболее универсальный метод позволяющий определить настоящую стоимость будущих денежных потоков. Метод ДДП позволяет оценить стоимость недвижимости на основе текущей стоимости дохода состоящего из прогнозируемых денежных потоков и остаточной стоимости. Расчет стоимости объекта недвижимости методом ДДП осуществляется в следующей последовательности: 1.
46573. Роль ХХ столетия в мировой истории 20.67 KB
  Не случайно в большинстве экономически развитых стран у власти чередуются представители либеральных и умеренно-социалистических группировок. Однако подобное обстоятельство не устранило саму конкурентную борьбу лишь изменило ее формы. И хотя экономическое положение США в мировом сообществе уже не так прочно как преждетем не менее очевидно что правящая элита США будет прилагать все усилия для сохранения исключительного положения своей страны. Впрочем мировое развитие идет в направлении возрастания политического веса малых стран в мировой...
46575. Особенности и правовая охрана интеллектуальной собственности 20.7 KB
  Под объектом интеллектуальной собственности следует понимать конкретную разработку произведение представленную на материальном носителе. Объекты интеллектуальной собственности: Литературные художественные и научные произведения; Исполнительская деятельность артистов звукозаписи радио и телевизионные передачи; Изобретения во всех областях человеческой деятельности; Научные открытия; Промышленные образцы; Товарные знаки знаки обслуживания фирменные наименовании и коммерческие обозначения; Авторское право Авторское право...