# Задание к занятию "Текстовые документы" ## Задача 1 Создать команду печати прайс-листа в справочнике Номенклатура. ### Описание задачи Добавить возможность формирования прайс-листа в справочнике Номенклатура. ### Требования к результату Конфигурация из предыдущих заданий имеет возможность формировать прайс листа из формы списка номенклатуры. Прайс формируется на основе выделенных строк в форме списка Номенклатура. Цена номенклатуры определяется на текущую дату. Можно выделить одну или несколько строк для формирования печатной формы. ### Процесс выполнения 1. Добавим общий макет "МакетПрайсЛист" с типом Текстовый документ. Пример текста. ``` #Область ШапкаПрайса #Поле ТекущаяДата [ Дата] #КонецОбласти #Область ТабличнаяЧастьЗаголовок --------------------------------- Товар | Цена, рублей #КонецОбласти #Область ТабличнаяЧастьСтрока #Поле Номенклатура #Формат "ЧЦ=12; ЧДЦ=2;ЧРД=." #Забивать Истина #Поле Цена #Выравнивание Центр --------------------------------- [Номенклатура ]|[Цена ] ``` 2. В форму списка номенклатуры добавим команду "Прайс лист". 3. Для печати добавим на клиенте процедуру на клиенте. ```bsl &НаКлиенте Процедура КомандаПрайсЛист(Команда) //выделим несколько строк ВыделенныеСтроки = Элементы.СписокРасширенныйПоискНоменклатура.ВыделенныеСтроки; МассивСтрок = Новый Массив(); Для каждого НомерСтроки Из ВыделенныеСтроки Цикл МассивСтрок.Добавить(Элементы.СписокРасширенныйПоискНоменклатура.ДанныеСтроки(НомерСтроки)); КонецЦикла; //отправим выделенные строки номенклатуры на печать ПечатнаяФорма = ПечатнаяФормуПрайсЛист(МассивСтрок); ПечатнаяФорма.Показать("Прайс-лист"); КонецПроцедуры ``` 4. На сервере формируем печатную форму и возращаем на клиент для печати. ```bsl &НаСервере Функция ПечатнаяФормуПрайсЛист(МассивСтрок) ПечатнаяФорма = Новый ТекстовыйДокумент; Макет = ПолучитьОбщийМакет("МакетПрайсЛист"); // Получаем область шапки и макета по имени Шапка = Макет.ПолучитьОбласть("ШапкаПрайса"); // Заполняем параметр Дата Шапка.Параметры.Дата = ТекущаяДата(); // Выводим область в документ ПечатнаяФорма.Вывести(Шапка); // Получаем область заголовка ТабличнаяЧастьЗаголовок = Макет.ПолучитьОбласть("ТабличнаяЧастьПрайсаЗаголовок"); ПечатнаяФорма.Вывести(ТабличнаяЧастьЗаголовок); // Получаем область строк для формирования табличной части в цикле ТабличнаяЧастьСтрока = Макет.ПолучитьОбласть("ТабличнаяЧастьПрайсаСтрока"); Для каждого СтрокаСписка из МассивСтрок Цикл ТабличнаяЧастьСтрока.Параметры.Номенклатура = СтрокаСписка.Наименование; ТабличнаяЧастьСтрока.Параметры.Цена = 100; ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока); КонецЦикла; // Возвращаем печатную форму обратно на клиент Возврат ПечатнаяФорма; КонецФункции ``` 5. Получим срез последних по регистру сведений Цены номенклатуры для заполнения цены и вставим в соответствующий параметр.