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

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

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

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

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

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

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

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

  Закрыть();

 КонецЕсли;

 Прервать;

КонецЕсли;

КонецЦикла;

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


 

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

35347. Удаленное управление ресурсами ПЭВМ через локальную сеть средствами стека протоколов TCP/IP 4.21 MB
  Техническое задание: Разработка программного обеспечения, позволяющего устанавливать соединение между двумя ПЭВМ средствами стека протоколов TCP/IP для последующего управления ресурсами одного из ПЭВМ (клавиатура, курсор мышки, дисплей).
35348. Тема: Сортування і групування даних Мета: навчитися розділяти одержані дані на групи так щоб їх легко бул 53 KB
  EMP_ID LST NM FIRST NM DDRESS CITY STTE ZIP PHONE 311549902 442346889 213764555 313782439 220984332 443679012 STEPHENS PLEW GLSS GLSS WLLCE SPURGEON TIN LIND BRNDON JCOB MRIH TIFFNY D RR 3 BOX 17 С 3301 BECON S 1710 MIN ST 3789 RIVER BLVD 7789 KEYSTONE 5 GEORGE COURT GREENWOOD INDINPOLIS WHITELND INDINPOLIS INDINPOLIS INDINPOLIS IN IN IN IN IN IN 47890 46224 47885 45734 46741 46234 3178784465 3172978990 3178984321 3175457676 3173325986 3175679007 Запишіть оператора SQL що повертає табельний номер службовця EMP_ID ім'я службовця...
35350. Организация видеосвязи. Видеоконференцсвязь 1.56 MB
  Видеоконференцсвязь применяется для личного и делового общения, проведения совещаний, конференций и других важных мероприятий, в которых важно присутствие тех субъектов общения, которые по тем или иным причинам не могут находиться в месте проведения мероприятия лично.
35351. Организация аудио связи по локальной сети между рабочими станциями в дуплексном режиме 584.5 KB
  Аудиоконференцсвязь — область информационной технологии, обеспечивающая одновременно двустороннюю передачу, обработку, преобразование и представление аудиоинформации на расстояние в режиме реального времени с помощью аппаратно-программных средств вычислительной техники.
35352. Манипуляционные роботы 778 KB
  История механики богата примерами, которые свидетельствуют о постоянном стремлении человека создать механизмы и устройства, подобные живым существам. Это стремление обусловлено многими причинами...
35353. Создание серверной и клиентской частей системы проведения аудиоконференций с возможностью работы в локальной или глобальной сети 890.5 KB
  Серверная часть должна обеспечивать эффективную работу с клиентами в условиях одновременного подключения нескольких пользователей, а так же обладать дружественным интерфейсом и отвечать следующим основным требованиям...
35354. Управління теками, файлами і ярликами 310 KB
  9 створити в теці Петренко ярлик антивірусної програми для перевірки дискети і запустити її на виконання 10 додати в меню Пуск пункт для запуску антивірусної програми; 1 перетянуть ярлык в главное меню; 2 Правой кнопкой мыши вызвать контекстное меню выбрать там закрепить в меню Пуск. Як створити теку на робочому столі Як створити теку в теці Як скопіювати зміст теки розміщеної на диску D: на робочий стіл' Як виділити групу суміжних об'єктів Як виділити групу несуміжних об'єктів Як виділити всі об'єкти...
35355. Управління папками, файлами і ярликами 109.5 KB
  Індивідуальне завдання Для того щоб освоїти прийоми роботи з теками і файлами необхідно виконати наступне: 1 відкрити вікно папки диска D: і створити в ній скажімо папку Petrenko букви латинські; открываем иконку с названием мой компьютер в окне находим иконку диска С: и отрываем ее в окне диска С: создаем новую папку даем ей имя латинскими буквами Petrenko 2 перейменувати папку Petrenko в папку Петренко букви кирилиці; Левой клавишей мыши выделяем папку под названием Petrenko и выбираем из предоставленного списка...