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

Дано: 1С Университет ПРОФ.
Задача: добавить дополнительные сведения в печатную форму приказа.
Данная инструкция любезно предоставлена коллегой из Сибирского государственного университета телекоммуникаций и информатики (СибГУТИ). Скриншоты автора.


В этой статье будет рассмотрен пример добавления в печатную форму  приказа в табличную часть дополнительных данных по студенту, а именно сведений об иностранном языке и документе об образовании.
Скриншот примера приказа с такими сведениями:



Чтобы вывести иностранный язык, номер документа, регистрационный номер необходимо:

1. Добавить свой общий модуль в конфигурацию:


2. В модуль добавить две функции:

а) ИностранныеЯзыки – берет первый язык физлица в табличной части «Иностранные языки» в справочнике «Физические лица».


Текст функции:

Функция ИностранныеЯзыки(ФизическоеЛицо) Экспорт
    РезультатФункции = Новый Структура;
    РезультатФункции.Вставить("ИностранныйЯзык", Справочники.ИностранныеЯзыки.ПустаяСсылка());
                              
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
    |   ИностранныеЯзыки.ИностранныйЯзык КАК ИностранныйЯзык
    |ИЗ
    |   Справочник.ФизическиеЛица.ИностранныеЯзыки КАК ИностранныеЯзыки 
    |ГДЕ
    |   ИностранныеЯзыки.Ссылка = &ФизическоеЛицо";
   
    Запрос.УстановитьПараметр("ФизическоеЛицо", ФизическоеЛицо);
    РезультатЗапроса = Запрос.Выполнить();
        Если Не РезультатЗапроса.Пустой() Тогда
        Выборка = РезультатЗапроса.Выбрать();
            Если Выборка.Следующий() Тогда
                СтрокаРезультатЗапроса = Выборка;
                РезультатФункции.ИностранныйЯзык = СтрокаРезультатЗапроса.ИностранныйЯзык;
            КонецЕсли;
        КонецЕсли;
    Возврат РезультатФункции;
КонецФункции

б) ДанныеДокументаОбОбразовании – берет значения полей Серия, Номер, Регистрационный номер документа об образовании, указанного в заявлении абитуриента.

Текст функции:

Функция ДанныеДокументаОбОбразовании(ФизическоеЛицо, ПриемнаяКампания, УчебныйПлан) Экспорт
    РезультатФункции = Новый Структура;
    РезультатФункции.Вставить("СерияДиплома", "");
    РезультатФункции.Вставить("НомерДиплома", "");
    РезультатФункции.Вставить("РегистрационныйНомер", "");
                                     
    Запрос = Новый Запрос;        
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
    |   ЗаявленияПоступающих.ПодтверждающийДокумент.СерияДиплома КАК СерияДиплома,
    |   ЗаявленияПоступающих.ПодтверждающийДокумент.НомерДиплома КАК НомерДиплома,
    |   ЗаявленияПоступающих.ПодтверждающийДокумент.РегистрационныйНомер КАК РегистрационныйНомер
    |ИЗ
    |   РегистрСведений.ЗаявленияПоступающих КАК ЗаявленияПоступающих
    |ГДЕ
    |   ЗаявленияПоступающих.ФизическоеЛицо = &ФизическоеЛицо
    |   И ЗаявленияПоступающих.ПриемнаяКампания = &ПриемнаяКампания
    |   И ЗаявленияПоступающих.УчебныйПлан = &УчебныйПлан
    |УПОРЯДОЧИТЬ ПО
    |   ЗаявленияПоступающих.Регистратор ВОЗР";
   
    Запрос.УстановитьПараметр("ФизическоеЛицо", ФизическоеЛицо);
    Запрос.УстановитьПараметр("ПриемнаяКампания", ПриемнаяКампания);
    Запрос.УстановитьПараметр("УчебныйПлан", УчебныйПлан);
       
    РезультатЗапроса = Запрос.Выполнить();
        Если Не РезультатЗапроса.Пустой() Тогда
        Выборка = РезультатЗапроса.Выбрать();
            Если Выборка.Следующий() Тогда
                СтрокаРезультатЗапроса = Выборка;
                РезультатФункции.СерияДиплома = СтрокаРезультатЗапроса.СерияДиплома;
                РезультатФункции.НомерДиплома = СтрокаРезультатЗапроса.НомерДиплома;
                РезультатФункции.РегистрационныйНомер = СтрокаРезультатЗапроса.РегистрационныйНомер;
            КонецЕсли;
        КонецЕсли;
    Возврат РезультатФункции;
КонецФункции

3. Осуществить настройки в виде приказа (например, в приказе "Зачисление в вуз", если нужно выводить данную информацию в этом виде приказа):


Пример текста "Шапки" приказа:

В соответствии с решением приемной комиссии зачислить в федеральное государственное бюджетное образовательное учреждение высшего образования "Сибирский государственный университет телекоммуникаций и информатики" [ФизическоеЛицо1Настраиваемый] (сумма баллов - [СуммаБалловНастраиваемый], категория приема - [КатегорияПриемаНастраиваемый]) с [ДатаНачалаНастраиваемый] на [КурсНастраиваемый] курс [ФакультетНастраиваемый] на [ФормаОбученияНастраиваемый] форму обучения[ПоИУПНастраиваемый1][СПрименениемДОТНастраиваемый] по основной профессиональной образовательной программе высшего образования - программе [ПрограммаНастраиваемый] по [ЭтоНаправлениеИлиСпециальностьНастраиваемый] [СпециальностьНастраиваемый][ЕслиСпециализация][ЕслиПрофиль][ЕслиПрофильМагистратура], [Оплата1Настраиваемый].

Пример текста "Шапки" группы приказа:

В соответствии с решением приемной комиссии зачислить с [ДатаНачалаНастраиваемый] в федеральное государственное бюджетное образовательное учреждение высшего образования "Сибирский государственный университет телекоммуникаций и информатики" на [КурсНастраиваемый] курс [ФакультетНастраиваемый] на [ФормаОбученияНастраиваемый] форму обучения[ПоИУПНастраиваемый][СПрименениемДОТНастраиваемый] по основной профессиональной образовательной программе высшего образования - программе [ПрограммаНастраиваемый] по [ЭтоНаправлениеИлиСпециальностьНастраиваемый] [СпециальностьНастраиваемый][ЕслиСпециализация][ЕслиПрофиль][ЕслиПрофильМагистратура], [ОплатаНастраиваемый], следующих абитуриентов:.

Также настаиваем параметры приказа:


Таблица параметров:

Nпп
Параметр
Описание
1
ФизическоеЛицо
Настраиваемый
ИменительныйПадеж(&ФизическоеЛицо, &ФизическоеЛицо.Пол)
2
КурсНастраиваемый
ВинительныйПадеж(&Курс.ПорядковыйНомер)
3
ФормаОбучения
Настраиваемый
ВинительныйПадеж(Нрег(&ФормаОбучения))
4
Специальность
Настраиваемый
ИменительныйПадеж(&Специальность)
5
ДатаНачала
Настраиваемый
ИменительныйПадеж(Формат(&ДатаНачала, "ДЛФ=Д"))
6
ФормаОбучения
Настраиваемый
ВинительныйПадеж(Нрег(&ФормаОбучения))
7
Специальность
Настраиваемый
ИменительныйПадеж(&Специальность)
8
Программа
Настраиваемый
?(&УчебныйПлан.УровеньПодготовки = Справочники.УровеньПодготовки.Бакалавр, "бакалавриата", ?(&УчебныйПлан.УровеньПодготовки = Справочники.УровеньПодготовки.Специалист, "специалитета", ?(&УчебныйПлан.УровеньПодготовки = Справочники.УровеньПодготовки.Магистр, "магистратуры", "")))
9
ФакультетНастраиваемый
""+Нрег(РодительныйПадеж(&Факультет)) + " (" + &Факультет.СокращенноеНаименование +")"
10
ОплатаНастраиваемый
?(&Основа = Справочники.ОснованияПоступления.ПолноеВозмещениеЗатрат, "на места с оплатой по договору об оказании платных образовательных услуг", ?(&Основа = Справочники.ОснованияПоступления.БюджетнаяОснова, "на места с обучением на бюджетной основе", ?(&Основа = Справочники.ОснованияПоступления.ЦелеваяКонтрактнаяПодготовка, "на целевое обучение на бюджетной основе", "")))
11
ЭтоНаправлениеИли
Специальность
Настраиваемый
?(&УчебныйПлан.УровеньПодготовки = Справочники.УровеньПодготовки.Специалист, "специальности", "направлению")
12
СПрименением
ДОТНастраиваемый
?(&УчебныйПлан._ИсключительноСПрименениемДОТ = Истина, " с применением дистанционных технологий", "")
13
ПоИУПНастраиваемый
?(&УчебныйПлан.ИндивидуальныйПлан = Истина, " по индивидуальным рабочим планам","" )
14
СуммаБаллов
Настраиваемый
&СуммаБаллов
15
КатегорияПриема
Настраиваемый
Нрег(&КатегорияПриема)
16
ПоИУПНастраиваемый1
?(&УчебныйПлан.ИндивидуальныйПлан = Истина, " по индивидуальному рабочему плану","" )
17
ЕслиСпециализация
?(&УчебныйПлан.УровеньПодготовки = Справочники.УровеньПодготовки.Специалист И &УчебныйПлан.Профили.Количество() <> 0, " (специализация "+"''"+ &УчебныйПлан.Профили[0].Специализация+"''"+ ")", "")
18
ЕслиПрофиль
?(&УчебныйПлан.УровеньПодготовки = Справочники.УровеньПодготовки.Бакалавр И &УчебныйПлан.Профили.Количество() <> 0, " (профиль "+"''"+ &УчебныйПлан.Профили[0].Специализация+"''"+ ")", "")
19
ЕслиПрофиль
Магистратура
?(&УчебныйПлан.УровеньПодготовки = Справочники.УровеньПодготовки.Магистр И &УчебныйПлан.Профили.Количество() <> 0, " (профиль "+"''"+ &УчебныйПлан.Профили[0].Специализация+"''"+ ")", "")
20
ФизическоеЛицо1
Настраиваемый
ВинительныйПадеж(&ФизическоеЛицо, &ФизическоеЛицо.Пол)
21
Оплата1Настраиваемый
?(&Основа = Справочники.ОснованияПоступления.ПолноеВозмещениеЗатрат, "на место с оплатой по договору об оказании платных образовательных услуг", ?(&Основа = Справочники.ОснованияПоступления.БюджетнаяОснова, "на место с обучением на бюджетной основе", ?(&Основа = Справочники.ОснованияПоступления.ЦелеваяКонтрактнаяПодготовка, "на целевое обучение на бюджетной основе", "")))
22
ИностранныйЯзык
_МойМодуль.ИностранныеЯзыки(&ФизическоеЛицо)
.
ИностранныйЯзык
23
Номер
_МойМодуль.ДанныеДокументаОбОбразовании (&ФизическоеЛицо, &ПриемнаяКампания, &УчебныйПланПриПоступлении).СерияДиплома " " +  _МойМодуль.ДанныеДокументаОбОбразовании (&ФизическоеЛицо, &ПриемнаяКампания, &УчебныйПланПриПоступлении).НомерДиплома
24
РегистранныйНомер
_МойМодуль.ДанныеДокументаОбОбразовании(&ФизическоеЛицо, &ПриемнаяКампания, &УчебныйПланПриПоступлении).РегистрационныйНомер

Примечание: Такие же настройки параметров можно задавать при настройке печатной формы договора в макете.

_МойМодуль.ДанныеДокументаОбОбразовании(&ФизическоеЛицо, &ПриемнаяКампания, &УчебныйПланПриПоступлении).СерияДиплома - так мы получаем серию документа об образовании,
_МойМодуль.ДанныеДокументаОбОбразовании(&ФизическоеЛицо, &ПриемнаяКампания, &УчебныйПланПриПоступлении).НомерДиплома  - так мы получаем номер документа об образовании,

+" "+  - так мы соединяем серию и номер документа об образовании и добавляем пробел между ними.
Если нам нужен только номер об образовании, то оставляем только  _МойМодуль.ДанныеДокументаОбОбразовании(&ФизическоеЛицо, &ПриемнаяКампания, &УчебныйПланПриПоступлении).НомерДиплома
За основу была взята функция ДанныеОбОбученииДляПриказа в общем модуле ПриказыГлобальный.

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

Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.

Комментариев нет:

Отправить комментарий