Skip to content

Latest commit

 

History

History
157 lines (118 loc) · 14.2 KB

homework-12-3.md

File metadata and controls

157 lines (118 loc) · 14.2 KB

Домашнее задание к занятию «Варианты отчётов и печать»

Цель задания

  1. Научиться формировать печатные формы с помощью БСП:
    • с выводом QR-кодов,
    • с печатью комплекта документов,
    • в формате .docx.

Чеклист готовности к домашнему заданию

Инструкция к заданию

  1. Решите описанные задачи в конфигураторе.
  2. Протестируйте решение в пользовательском режиме.
  3. В личном кабинете Нетологии отправьте на проверку один общий файл базы данных (.dt), содержащий решение по всем 3 задачам. Файл прикрепите в раздел «решение» в практическом задании.

Задание 1. «Печать Анкеты клиента и Транспортной накладной»

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

По заданию заказчика вы реализуете печатные формы Анкета клиента и Транспортная накладная для документа Доставка.

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

У документа Доставка в форме документа и форме списка должны выводиться команды на печать Анкеты клиента и Траспортной накладной. При нажатии на команды должны формироваться печатные формы в соответствии с предоставленными макетами. В правом верхнем углу печатной формы должен выводиться QR-код с внутренней ссылкой на документ. Должна быть предусмотрена массовая печать документов.

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

  1. Ознакомьтесь с шаблонами печатных форм Анкеты клиента и Товарной накладной.
  2. Создайте макеты для документа Доставка в соответствии с шаблонами.
  3. В общем модуле УправлениеПечатьюПереопределяемый в методе ПриОпределенииОбъектовСКомандамиПечати добавьте информацию о документе Доставка.
  4. В модуле менеджера документа Доставка реализуйте алгоритм вывода команд печати и алгоритм печати. В качестве образца можно использовать алгоритм из документа Заказ покупателя.
  5. Для вывода QR-кода в печатную форму:
    • добавьте в макет в нужную область рисунок, задайте ему подходящее по смыслу имя;
    • в алгоритме печати сформируйте QR-код:
    ДанныеQRКода = ГенерацияШтрихкода.ДанныеQRКода(СсылкаНаДокумент, 1, 120);
    • проверьте, что QR-код сформирован успешно и выведите его в документ:
    Если НЕ ТипЗнч(ДанныеQRКода) = Тип("ДвоичныеДанные") Тогда
        ТекстСообщения = НСтр("ru = 'Не удалось сформировать QR-код.
                    |Технические подробности см. в журнале регистрации.'");
        ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
    Иначе
        КартинкаQRКода = Новый Картинка(ДанныеQRКода);
        Область.Рисунки.ИмяРисунка.Картинка = КартинкаQRКода;
    КонецЕсли;		

Результат задания

  1. Запустите базу в пользовательском режиме.
  2. Убедитесь, что на форме документа и на форме списка документа Доставка в панели действий отображаются команды печати.
  3. Убедитесь, что печатные формы формируются корректно, в том числе формируется QR-код и работает множественная печать.

Задание 2. «Печать комплекта документов»

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

По заданию заказчика вы реализуете возможность печати Анкеты клиента и Транспортной накладной в виде комплекта документов одной кнопкой.

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

У документа Доставка в форме документа и форме списка должны выводиться команда Комплект документов. При нажатии на команды должен формироваться комплект документов, состоящий из Анкеты клиента и Транспортной накладной. Должна быть предусмотрена массовая печать документов.

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

Добавьте команду печати для вывода комплекта документов в модуле мендежера документа Доставка. В качестве образца можно использовать команду вывода комплекта из документа Заказ покупателя.

Результат задания

  1. Запустите базу в пользовательском режиме.
  2. Убедитесь, что на форме документа и на форме списка документа Доставка в панели действий отображается команда печати комплекта.
  3. Убедитесь, что печатные формы формируются корректно.

Задание 3. «Печать договора на доставку»

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

По заданию заказчика вы реализуете возможность печати Договора на доставку в формате .docx.

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

У документа Доставка в форме документа и форме списка должны выводиться команда Договор на доставку. При нажатии на команды должна формироваться печатная форма в формате .docx средствами БСП.

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

  1. Ознакомьтесь с шаблоном печатной формы Договор на доставку.
  2. Подготовьте на основе шаблона печатной формы макет для печати средствами БСП. Определите области и параметры.
  3. Добавьте в конфигурацию реквизиты, необходимые для заполнения полей печатной формы. Для части полей, если они на ваш взгляд нужны только для печатной формы и вряд ли будут использоваться для других функций, можно использовать подсистему Свойства (Использовать данную подсистему не обязательно, можно добавлять реквитзиты непосредственно в конфигурацию). То есть брать данные из соответствующего регистра или табличной части.
  4. В модуле менеджера реализуйте алгоритм для вывода команды для печати Договора на доставку.
  5. В процедуре Печать определите блок для печати в .docx, он будет отличаться от печати в mxl:
    ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ДоговорDOCX");
    Если ПечатнаяФорма <> Неопределено Тогда
    	ОфисныеДокументы = НапечататьДоговорDOCX(МассивОбъектов);
        ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Договор (MS Word)'");
        ПечатнаяФорма.ОфисныеДокументы = ОфисныеДокументы;
    КонецЕсли;
  6. Реализуйте функцию для печати договора:
    Функция НапечататьДоговорDOCX(МассивОбъектов)
        // Создаём пустое соответствие для размещения печатных форм OpenXМL — результат функции
        ОфисныеДокументы = Новый Соответствие;
        
        // Готовим макет для формирования печатной формы OpenXML
        МакетДокумента = УправлениеПечатью.МакетПечатнойФормы("ПутьКМакету");
        Макет = УправлениеПечатью.ИнициализироватьМакетОфисногоДокумента(МакетДокумента,
            Неопределено);  
            
        // Создаём структуру областей формируемой печатной формы OpenXМL
        ОписаниеОбластей = Новый Структура;
        УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Шапка", "Общая");
        
        // Получаем данные для печати из базы данных
        // Функцию ДанныеДляПечатиДоговора необходимо разработать самостоятельно
        ДанныеДляПечати = ДанныеДляПечатиДоговора(МассивОбъектов);
        
        Для Каждого ДанныеДокумента Из ДанныеДляПечати Цикл 
            
            // Готовим печатную форму в формате офисного документа
            ПечатнаяФорма = УправлениеПечатью.ИнициализироватьПечатнуюФорму(Неопределено, Неопределено, Макет);
            
            Область = УправлениеПечатью.ОбластьМакета(Макет, ОписаниеОбластей["Шапка"]);
            УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеДокумента);
        
            АдресХранилищаПечатнойФормы = УправлениеПечатью.СформироватьДокумент(ПечатнаяФорма);
            ОфисныеДокументы.Вставить(АдресХранилищаПечатнойФормы, Строка(ДанныеДокумента.Ссылка));
            УправлениеПечатью.ОчиститьСсылки(ПечатнаяФорма);
            
        КонецЦикла;        
        
        УправлениеПечатью.ОчиститьСсылки(Макет);
        
        Возврат ОфисныеДокументы;
        
    КонецФункции  

Минимально, в договоре должны быть заполнены - Дата договора, Отправитель (Организация из документа), Перевозчик (Контрагент), их ИНН и КПП, а так же юридический и почтовый адрес

Результат задания

  1. Запустите базу в пользовательском режиме.
  2. Убедитесь, что на форме документа и на форме списка документа Доставка в панели действий отображается команда печати Договора.
  3. Убедитесь, что печатная форма формируется корректно.

Критерии оценки

  1. Зачёт — выполнены все задания, в выполненных заданиях нет противоречий и нарушения логики.
  2. На доработку — задание выполнено частично или не выполнено, в логике выполнения заданий есть противоречия, существенные недостатки.

Все задачи обязательны к выполнению. Пожалуйста, присылайте на проверку все задачи сразу.

Любые вопросы по решению задач задавайте в чате учебной группы.

Примерное время выполнения: 45–240 минут