06 Справочник Курсы и создание печатной формы без конструктора

Создадим справочник Курсы. В данном справочнике будут хранится текущие курсы.
Данный справочник будет иерархический. Для этого на закладке Иерархия включим данное свойство (рис.1).

Создадим дополнительные реквизиты (рис. 2):

  1. ДатаНачала. Т.к. это дата, то и тип будет дата. Данный реквизит сделаем обязательным. Для этого откроем свойства реквизита и найдем группу Представление и в свойстве Проверка заполнения выберем Выдавать ошибку (рис. 4).
  2. Продолжительность. Тип число и длинна 3. Данный реквизит будет содержать общее кол-во часов обучения.
  3. Стоимость. Тип число, длина 9 и точность 2. В результате максимальное число будет «999 999,99».
  4. Преподаватель. В поле тип выбираем СправочникСсылка.Преподаватели, в результате данный реквизит будет ссылаться на элемент справочника Преподаватели.
  5. Квалификация. Тип строка и длина 250.
Также создадим таблицу Предметы с одним реквизитом Предмет. Тип реквизита строка, а длина 250 (рис. 5).
Увеличим длину реквизита наименование до 150. В нем будет хранится название курса.
В предыдущих уроках мы создавали формы, из-за того что стандартные реквизиты имеют непонятное для пользователя название или они вовсе не нужны. Создавать ради этого формы было необязательно, этого можно было изменив синоним данных реквизитов или отключив их.
Изменим название, а точнее синоним у реквизита Родитель, он появился когда мы указали что справочник имеет иерархию.
Откроем список стандартные реквизиты нажав на кнопку  Стандартные реквизиты (рис. 3). Выберем нужный реквизит, в данном случаи Родитель и зайдем в его свойства. Изменим синоним на требуемый, я назвал его раздел.
В результате формы создавать не требуется.
1.
2.
3.
4.
5.

 

Создадим печатную форму.

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

Перейдем на закладку Команды и создадим новую команду (рис.6). Я назвал ее ПечатьЭлемента.

Укажем ей группу Командная панель.формы.Важное, в результате у нас будет быстрый доступ из списка и из формы элемента.

Тип параметра команды укажем текущий справочник.

Также можно выбрать отображение команды и картинку (рис.7).

Изменим процедуру.

Исходный код:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
 // Создали табличный документ
 ТабДок = Новый ТабличныйДокумент;
 // Вызываем процедуру формирования данных
 ПечатьЭлемента (ТабДок, ПараметрКоманды);
 // Настраиваем табличный документ к печати
 ТабДок.ОтображатьСетку = Ложь;
 ТабДок.Защита = Ложь;
 ТабДок.ТолькоПросмотр = Ложь;
 ТабДок.ОтображатьЗаголовки = Ложь;

 // Настроим поля у табличного документа
 ТабДок.ПолеСверху = 15;
 ТабДок.ПолеСлева = 25;
 ТабДок.ПолеСнизу = 15;
 ТабДок.ПолеСправа = 15;

 // Настроим ориентацию страницы
 ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; // книжный

 // Количество копий
 ТабДок.КоличествоЭкземпляров = 1;

 // Указываем цветной или черно белый докумет
 ТабДок.ЧерноБелаяПечать = Истина;

 ТабДок.РазмерСтраницы = "A4"; // латиница в названии

 // Выводим данный документ
 ТабДок.Показать();

 // Печатаем сразу
 ТабДок.Напечатать();
КонецПроцедуры
&НаСервере
Процедура ПечатьЭлемента(ТабДок, ПараметрКоманды)
 Справочники.Курсы.ПечатьЭлемента(ТабДок, ПараметрКоманды);
КонецПроцедуры

Думаю по комментариям в коде все станет понятно.

Теперь создадим макет. Для этого переходим на закладку Макеты и создаем новый с именем Элемент (рис.9 и 10).

 

Первое, чтобы изменить размеры столбцов для отдельной строки необходимо выделить ее и изменять ширину (рис.11). В результате система выдаст предупреждении что отключается для данной строки форматирование.

Отформатировать можно с помощью соответствующей панели инструментов (рис. 12).

Заходя в свойства ячейки можно настраивать ее, к примеру вертикальное положение (рис. 13).

Для того чтобы у нас заменялись данные можно использовать два способа заполнения  Шаблон и Параметр(рис. 13 и 16).

Шаблон — слова заключенные в «[» и «]» будут заменятся на указанные данные,  а все что вне скобок останется без изменения.

Параметр — задается только название реквизита или требуемого элемента.

Так же необходимо обозвать выводимые области, для вывода. Выдели строку, зайдем в свойства (рис. 14) и дадим ему имя.

Я использовал 4 области. Заголовок, данные, Таб, и ДанныеТаб.

 Результат можно увидеть на рисунке 17.

Так же может просмотреть видео создания макета.

 

 

Теперь создадим процедуру обработки и заполнения документа на основании макета.

Зайдем на закладку прочее и откроем модуль менеджера (рис. 18).

Создадим процедуру:

Процедура ПечатьЭлемента(ТабДок, Ссылка) Экспорт
 // Получаем макет
 Макет = Справочники.Курсы.ПолучитьМакет("Элемент");
 // Создаем новый запрос
 Запрос = Новый Запрос;
 // Выберем все из справочника Курсы где ссылка равна текущему элементу. 
 Запрос.Текст = "ВЫБРАТЬ * ИЗ
 | Справочник.Курсы КАК Курсы
 |ГДЕ
 | Курсы.Ссылка В (&Ссылка)";
 Запрос.Параметры.Вставить("Ссылка", Ссылка);
 // Выполним и выберим данные
 Выборка = Запрос.Выполнить().Выбрать();
 Пока Выборка.Следующий() Цикл
 // Получаем области макета
 ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
 ОбластьДанные = Макет.ПолучитьОбласть("Данные");
 ОбластьТаб = Макет.ПолучитьОбласть("Таб");
 ОбластьДанныеТаб = Макет.ПолучитьОбласть("ДанныеТаб");
 // Очистим табличный документ 
 ТабДок.Очистить();
 // укажим от куда брать данные и заполним ее
 ОбластьЗаголовок.Параметры.Заполнить(Выборка);
 // выведем данную облость в табл. документ
 ТабДок.Вывести(ОбластьЗаголовок);

 ОбластьДанные.Параметры.Заполнить(Выборка);
 ТабДок.Вывести(ОбластьДанные); 

 // заполняем таблицу
 ТабДок.Вывести(ОбластьТаб);
 ВыборкаНаправления = Выборка.Предметы.Выбрать();
 // цикл обхода всех элементов в таблице Предметы
 Пока ВыборкаНаправления.Следующий() Цикл
 ОбластьДанныеТаб.Параметры.Заполнить(ВыборкаНаправления);
 ТабДок.Вывести(ОбластьДанныеТаб);
 КонецЦикла;
 КонецЦикла;
КонецПроцедуры

Все проверяем работу (рис. 19), а так же на видео.

6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.

 

Скачать выгрузку данной ИБ.



comments powered by Disqus

Популярное