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

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

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

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

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

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

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

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

  Закрыть();

 КонецЕсли;

 Прервать;

КонецЕсли;

КонецЦикла;

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


 

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

75936. Левые политические силы в РФ и их эволюция 24.17 KB
  Важной особенностью формирования социально-демократического направления стало то, что начало было положено на окраинах, где социальный гнет сопровождался национальным. В конце 1890-х гг. сложилась армянская социал-демократическая партия
75937. Либеральные и правые политические партии в РФ и их эволюция 18.95 KB
  Распад КПСС и возникновение многопартийности В первой половине 1990 г. происходит углубление политического размежевания на сторонников и противников курса Горбачева внутри КПСС. Сторонники консервативной оппозиции выступали за сплочение КПСС на ленинских основах сохранение классового подхода вместо общечеловеческих ценностей уничтожение частной собственности на основе общего владения средствами производства. Одновременно в лагере либеральной оппозиции возникло демократическое движение коммунистов которое предполагало достичь обновления...
75938. Межнациональные отношения и миграционные процессы в РФ в начале ХХI века 18.75 KB
  Однако сейчас в современной России безусловно одна из самых острых проблем – межнациональные отношения. По мнению эксперта фонда Карнеги Лилии Незамовой Сегодня многонациональность России дополняется и усложняется эффектами полиэтничности иммиграцией из бывших республик Советского Союза вьетнамской китайской афганской и др. Премьерминистр Дмитрий Медведев утвердил в августе федеральную целевую программу Укрепление единства российской нации и этнокультурное развитие народов...
75939. Место и роль России в современных международных процессах: оценки и дискуссии 18.05 KB
  Геополитическое положение России уникально она находится между двумя крупнейшими центрами современной мировой экономики. Вместе с тем геополитическое положение России подразумевает высокую ответственность и требует серьезных усилий при его использовании. Тем не менее в ряде важнейших областей реальное положение России в мире...
75940. Наследие Российской империи и современная внешняя политика Российской Федерации 16.67 KB
  Postimperium как внутренний социальный и политический порядок означает что при доминировании новых начал в экономической и политической жизни России рынок большая открытость в политике предполагающей существование не зависимых от государства акторов она ограничивается институтами и традициями почерпнутыми из имперского прошлого. Зато правящие слои хотят быть глубоко интегрированными по разным линиям деловой в области престижного потребления образования в мировую капиталистическую элиту но при этом внутри России играть по...
75941. Особенности политических конфликтов в России в 1992-1993 годах 19.86 KB
  Еще одна особенность проявляется в том что все более или менее крупные конфликты в России с давних пор чрезмерно идеологизированы. Становление новой социально-экономической и общественно-политической системы России сопровождалось политическими потрясениями и кризисами. Политическая элита России раскололась на два лагеря.
75942. Особенности политических конфликтов в России. Характеристика общего кризиса власти 1992-1993 годах 22.78 KB
  Характеристика общего кризиса власти 1992-1993 гг. Содержание политических конфликтов в отдельной стране зависит от структурных и функциональных характеристик политической власти потребностей политического развития общества состояния идеологии традиций и опыта политической борьбы особенностей политической культуры. Ряд особенностей российской конфликтности тесно связан с элементами византийского влияния откуда берет свое начало российское самодержавие как устойчивая форма ярко выраженной централизованной власти. Характеристика общего...
75943. Осуществление процесса приватизации, дискуссии вокруг этого явления 22.82 KB
  Если пакет Филиппова был ориентирован на сочетание различных форм приватизации инвестиционные вклады продажа акций госпредприятий конкурсы аукционы частичный выкуп и др. в течение 56 лет то пакет Малея значительно более жестко и детерминированно отдавал приоритет коллективной форме приватизации через т. Хронология: Первый этап или доваучерный 19891990 Выкуп арендного имущества; Создание национальных холдингов и спонтанной приватизации; Официальная идеология периода перестройки предполагала постепенное длительное преобразование...
75944. Первая и вторая чеченские компании: сравнительный анализ 18.39 KB
  Чеченский вооруженный конфликт 19941996 годах военные действия между российскими федеральными войсками силами и вооруженными формированиями Чеченской Республики Ичкерии созданными в нарушение законодательства РФ. В сентябре 1999 года началась новая фаза чеченской военной кампании которая получила название контр-террористической операции на Северном Кавказе. Вооруженный конфликт в 19941996 годах первая чеченская война Чеченский вооруженный конфликт 19941996 годах военные действия между российскими федеральными войсками силами и...