1
0
mirror of https://github.com/netology-code/1c-homeworks.git synced 2024-11-24 08:02:20 +02:00
1c-homeworks/homework-5-8.md
2020-06-24 01:37:57 +08:00

4.8 KiB

Задание к занятию "Текстовые документы"

Задача 1 Создать команду печати прайс-листа в справочнике Номенклатура

Описание задачи

Сформируем прайс лист

Выведем актуальную цену номенклатуры

Создадим общий макет Прайс лист

Добавим возможность вывода на печать в Номенклатуре прайс-листа

Требования к результату

Текстовый документ содержит информацию о прайс листе на текущую дату - цену и номенклатуру

Есть возможность вывести на печать

Процесс выполнения

Добавим общий макет "МакетПрайсЛист" с типом Текстовый документ

Пример текста

#Область ШапкаПрайса
#Поле ТекущаяДата
	[	Дата]
#КонецОбласти

#Область ТабличнаяЧастьЗаголовок
---------------------------------
Товар		|	Цена, рублей
#КонецОбласти

#Область ТабличнаяЧастьСтрока
#Поле Номенклатура
	#Формат "ЧЦ=12; ЧДЦ=2;ЧРД=."
	#Забивать Истина
#Поле Цена
#Выравнивание Центр
---------------------------------
[Номенклатура	]|[Цена	]

В форму списка номенклатуры добавим команду "Прайс лист"

Для печати добавим на клиенте

&НаКлиенте
Процедура КомандаПрайсЛист(Команда)
	
	//выделим несколько строк
	ВыделенныеСтроки = Элементы.СписокРасширенныйПоискНоменклатура.ВыделенныеСтроки;
	МассивСтрок = Новый Массив();
	Для каждого НомерСтроки Из ВыделенныеСтроки Цикл
		МассивСтрок.Добавить(Элементы.СписокРасширенныйПоискНоменклатура.ДанныеСтроки(НомерСтроки));
	КонецЦикла;
	//отправим выделенные строки номенклатуры на печать
	ПечатнаяФорма = СформироватьПечатнуюФормуПрайсЛист(МассивСтрок);
	
	ПечатнаяФорма.Показать("Прайс-лист");
	
КонецПроцедуры

Формируем печатную форму на сервере и возращаем на клиент для печати

&НаСервере
Функция СформироватьПечатнуюФормуПрайсЛист(МассивСтрок)
	
	ПечатнаяФорма = Новый ТекстовыйДокумент;
	
	Макет = ПолучитьОбщийМакет("МакетПрайсЛист");
	
	// Получаем область шапки и макета по имени
	Шапка = Макет.ПолучитьОбласть("ШапкаПрайса");
	// Заполняем параметр Дата
	Шапка.Параметры.Дата = ТекущаяДата();
	// Выводим область в документ
	ПечатнаяФорма.Вывести(Шапка);
	
	// Получаем область заголовка
	ТабличнаяЧастьЗаголовок = Макет.ПолучитьОбласть("ТабличнаяЧастьПрайсаЗаголовок");
	ПечатнаяФорма.Вывести(ТабличнаяЧастьЗаголовок);
	
	// Получаем область строк для формирования табличной части в цикле
	ТабличнаяЧастьСтрока = Макет.ПолучитьОбласть("ТабличнаяЧастьПрайсаСтрока");
	
	Для каждого СтрокаСписка из МассивСтрок Цикл
		ТабличнаяЧастьСтрока.Параметры.Номенклатура = СтрокаСписка.Наименование; 
		ТабличнаяЧастьСтрока.Параметры.Цена = 100;   
		ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока);
	КонецЦикла;
	
	// Возвращаем печатную форму обратно на клиент
	Возврат ПечатнаяФорма;
	
КонецФункции

Получим срез последних по регистру сведений Цены номенклатуры для заполнения цены и вставим в соответствующий параметр