Зовнішні друковані форми для нетипової конфігурації (керований додаток)
Виникла необхідність використання не типової конфігурації (керований додаток) механізму зовнішніх друкованих форм.
Варіанти розв'язання задачі:
- реалізувати механізм роботи із зовнішніми друкованими формами самостійно;
- включити у власну розробку деякі системи конфігурації «Бібліотека стандартних підсистем».
1)Спробуємо реалізувати роботу із зовнішніми друкованими формами самостійно
- - підтримуємо лише друковані форми;
- - автоматичне надсилання друку на принтер не підтримується;
- - об'єкти друку - довідники та документи;
- - команди виклику друку додатково не налаштовуються;
- - використовується лише безпечний режим роботи;
- - механізм створення зовнішніх друкованих форм буде спрощено щодо методики створення зовнішніх друкованих форм для типових конфігурацій.
Для такого варіанта реалізації нам знадобляться:
- - довідник для зберігання зовнішніх друкованих форм та встановлення відповідності об'єктам;
- - загальна команда виклику списку друкованих форм;
- - загальна форма для вибору друкованих форм;
- - Набір модулів для забезпечення функціонування механізму;
- - Опис створення обробки зовнішньої друкованої форми.
Створюємо довідник ДодатковіДрукарськіФорми
- СховищеДрукарськоїФорми, тип СховищеЗначення;
- ДатаЗавантаження, тип дата;
- коментар, тип рядок;
- КоментарКФайлу, тип рядок;
- Таблична частина Об'єктиДруку:
- Подання, тип рядок;
- ПосиланняОб'єкта, складовий тип ДокументПосилання, ДовідникПосилання.
У довіднику необхідно вказати типи об'єктів метаданих,яких буде доступна друкована форма, та завантажити обробку зовнішньої друкованої форми до довідника.
Вибір типів об'єктів для друку:
Додамо реквізит форми спОб'єктівДруку типу СписокЗначень.
В обробнику форми При створенні на сервері заповнимо список:
Імпорт зовнішньої друкованої форми до довідника:
Додамо реквізит форми АдресаЗовнішньоїДруковноїФорми, тип - рядок.
Організуємо вибір файлу зовнішньої друкованої форми та поміщаємо його у тимчасове сховище.
Запис до довідника:
Отримуємо з тимчасового сховища дані обробки та записуємо їх у довідник в обробнику ПередЗаписомНа Сервері():
Створюємо загальну команду
У конфігураторі створюємо нову спільну команду Додаткові Друкарські Форми. Встановлюємо властивості:
- група = Командна панель форми.
- тип параметра команди = складовий тип, відзначаємо довідники та документи, для яких буде доступна дана команда;
- режим використання параметра = множинний (встановлюємо для друку для списку об'єктів).
Також створився модуль команди, в якому викликатимемо вибір друкованих форм:
У методі ВідкритиФормуКомандДодатковихДруковнихФорм() підготуємо параметри та відкриємо форму зі списком друкованих форм:
Створюємо загальну форму
Створюємо нову загальну форму типу «довільна форма». Форма прийматиме параметри: ПосиланняОб'єкта (міститиме тип об'єкта, що виводиться на друк) та Об'єктиДруку (список об'єктів для друку).
Додаємо реквізити форми:
- - ПосиланняОб'єкта, складовий тип ДовідникПосилання, ДокументПосилання;
- - Об'єктиДруку, тип СписокЗначень;
- - ДрукарськіФорми, тип таблиця значень, таблиця з переліком друкованих форм
У таблицю Друковані Форми виводитимемо список вбудованих та зовнішніх друкованих форм для даного типу об'єктів. Також надамо можливість вибирати необхідні форми для друку встановленням прапорів у рядках таблиці.
Таблиця міститиме колонки:
- - Посилання, тип ДовідникПосилання.ДодатковіДрукарськіФорми;
- - Подання, тип рядок;
- - позначка, тип бульова;
- - ДопФорми, тип бульова, буде показувати, що у рядку додаткова (зовнішня) друкована форма;
- - Макет, рядок, міститиме ім'я вбудованого макета.
Під час створення на сервері заповнимо таблицю друкованих форм:
Також можна додати на форму команди «Позначити всі» та «Зняти позначки» для групового виділення всіх друкованих форм та зняття всіх позначок.
Тепер реалізуємо обробку друку вибраних друкованих форм для переданих об'єктів.
Отримаємо з таблиці позначені прапорцями друкарські форми. Далі, обходячи в циклі вибрані друковані форми, виконуватимемо на сервері друк списку об'єктів. Як результат отримаємо масив табличних документів, для якого організуємо виведення на екран.
Загальні модулі
Створюємо загальні модулі: Звичайні Друковані Форми (сервер, виклик сервера), Додаткові Друковані Форми (сервер, виклик сервера) та Додаткові Друковані Форми Клієнт (клієнт).
Опишемо методи ЗапуститиДрук() модулів звичайних та додаткових друкованих форм. Більш детально з модулями можна ознайомитись у конфігурації.
Примітка : У разі виникнення помилок друку повідомлення виводяться в табличний документ.
Опис створення зовнішньої друкованої форми
Важливо : підготовка зовнішніх друкованих форм для типових конфігурацій відрізняється від спрощеного прикладу.
Зовнішня друкарська формаявлятиме собою зовнішню обробку *.epf, що містить макет та експортну функцію Друк(МасивПосилань) у модулі об'єкта.
Функція Друк() викликається з методу ЗапуститиДрук() модуля ДодатковіДрукарськіФорми. Вона приймає масив посилань на об'єкти, котрим необхідно отримати друковані форми.
Схема роботи: новий табличний документ створюється для кожного посилання, область друку заповнюється даними об'єкта та додається до табличного документа. Як результат повертається масив готових друкованих форм (табличних документів).
У тестовій конфігурації створено документ Лист, для якого підготовлено декілька друкованих форм для друку конвертів. Кожна друкована форма відповідає стандартному розміру конверта.
Таким чином, скориставшись пакетною печаткою, можна отримати відразу кілька друкованих форм для різних типів конвертів як для одного, так і для кількох листів одночасно.
2)Інтеграція БСП
Детально процес застосування БСП можна знайти звернувшись до документації http://its.1c.ru/db/bspdoc.
Зауважу лише, що нам знадобиться підсистема Додаткові Звіти І Обробки із групи стандартних підсистем.
Також обов'язковими для включення у власну конфігурацію будуть підсистеми:
- - Базова функціональність;
- - Контактна інформація;
- - Налаштування порядку елементів;
- - оновлення версії ІБ;
- - Отримання файлів з інтернет;
- - Користувачі.
Опис створення типової зовнішньої друкованої форми
Як і наведений вище приклад, нам потрібно створити зовнішню обробку *.epf.
Загальна структура модуля обробки:
- * обов'язкова сервісна експортна функціяВідомості зовнішню обробку (). Викликається в основній програмі реєстрації обробки в інформаційній базі. У цій функції необхідно вказати, для яких об'єктів призначена ця обробка, вказати її вид (друкована форма, обробка тощо), визначити команди для виклику друку та вказати додаткову інформацію.
Функція повертає структуру параметрів реєстрації:
- - Вид – визначає вид реєстрації, що реєструється, наприклад, "Друкована Форма";
- - Призначення – масив, що визначає набір об'єктів, для яких призначена обробка, наприклад:
- - найменування – найменування обробки;
- - Версія – рядок із номером версії обробки, наприклад, “1.0”;
- - Безпечний Режим – прапор використання обробки у безпечному режимі;
- - Інформація – примітка, додаткова інформація щодо обробки.
- * обов'язкова експортна процедура Друк (Масив Об'єктів, Колекція Друкованих Форм, Об'єкти Друку, Параметри Виводу).
Використовується на формування друкованих форм об'єктів.
- - МасивОб'єктів – список об'єктів посилання типу формування друкованих форм.
- - Колекція Друкованих Форм – таблиця значень, що містить сформовані табличні документи;
- - Об'єктиДруку – список об'єктів друку;
- - ПараметриВиводу – параметри сформованих табличних документів.
- * Допоміжні методи заповнення параметрів, таблиць та інші.
Зауваження:
Запропонована реалізація механізму зовнішніх друкованих форм далека від ідеалу, має значну кількість обмежень та деякі недоліки порівняно з реалізацією в БСП. Наприклад, для підключення зовнішньої друкованої форми до нового типу об'єкта необхіднозмінюватиме тип параметра спільної команди «Додаткові ДрукарськіФорми».
Проте є досить простим і працездатним прикладом роботи із зовнішніми друкованими формами в керованому додатку.
