Зовнішні обробки, друковані форми, обробки щодо заповнення табличних частин

  1. Загальний опис
  2. Опис видів довідника ВПФО і вимоги до підключається зовнішнім обробкам
  3. довільна обробка
  4. Обробка для заповнення ТЧ об'єктів
  5. Зовнішня друкована форма
  6. Технічна реалізація механізму "Зовнішні обробки, друковані форми, обробки щодо заповнення табличних...
  7. Підключення додаткових друкованих форм до форм об'єктів конфігурації
  8. Підключення обробок щодо заповнення табличних частин до форм об'єктів конфігурації

В даному матеріалі описуються особливості реалізації механізму підключення "Зовнішні обробки, друковані форми, обробки щодо заповнення табличних частин" (далі ВПФО). Також перераховуються вимоги, що пред'являються до зовнішніх обробок, для можливості їх використання даними механізмом.

Загальний опис

Механізм призначений для підключення (без зміни конфігурації):

  • Зовнішніх обробок для довільного виконання
  • Зовнішніх обробок в якості додаткових друкованих форм об'єктів (довідників і документів)
  • Обробок для заповнення табличних частин об'єктів

Зовнішні друковані форми і обробки створюються розробником з дотриманням певних умов. Умови є обов'язковими для виконання на етапі створення зовнішньої обробки, для її коректної роботи в якості підключається до конфігурації.
Для реалізації механізму ВПФО використовується довідник "Зовнішні обробки".

Для довідника передбачені спеціалізовані реквізити *:

  • "Вид обробки" - описує, якого виду дана ВПФО
    1. довільна обробка
    2. Обробка для заповнення табличних частин об'єктів
    3. Зовнішня друкована форма
  • "Сховище зовнішньої обробки" - зберігає виконавчі дані підключається зовнішньої обробки. При використанні двійкові дані зберігаються на диск під тимчасовий файл, і звернення до файлу проводиться програмно як до зовнішньої обробки.

ПРИМІТКА
Повний перелік реквізитів буде описаний нижче, в розділі Технічна реалізація механізму "Зовнішні обробки, друковані форми, обробки щодо заповнення табличних частин"

Для зручності, форми списків ВПФО викликаються окремо, з передвстановленим відбором з реквізиту "Вид обробки", з підміню "Сервіс".
Додавати і змінювати ВПФО в базі даних може користувач, який має право адміністрування додаткових форм і обробок. Це окрема роль в конфігурації.
Для інших користувачів призначаються права на читання (використання) і запис (зміна) по кожному елементу довідника ВПФО.
Переваги використання механізму ВПФО перед механізмом платформи відкриття зовнішніх обробок:

  • Можливість використання механізму користувачами, НЕ мають права на інтерактивне відкриття зовнішніх обробок
  • Обмеження доступу до використання і зміни обробок на рівні записів (RLS), тобто до кожної обробці окремо
  • Цілісність БД і незмінність функціоналу залежно від зовнішніх чинників (перенесення БД, мережевий роботи користувачів, створення резервних копій БД та ін.)

Опис видів довідника ВПФО і вимоги до підключається зовнішнім обробкам

Розглянемо кожен вид ВПФО окремо.

довільна обробка

Для включення довільних обробок в базу даних, необхідно вказувати тільки зовнішню обробку, яка знаходиться на диску.
Відкриття довільних обробок в формі списку проводиться при виборі елемента ВПФО з видом "Довільна обробка". При цьому, проводиться збереження двійкових даних з реквізиту "Сховище зовнішньої обробки" на диск під тимчасовий файл. Після цього, у збереженій зовнішньої обробки відкривається основна форма.
Основна форма для довільної обробки повинна бути визначена обов'язково.

Обробка для заповнення ТЧ об'єктів

Для обробок заповнення ТЧ необхідно вказувати зовнішню обробку (файл на диску, з розширенням epf), список об'єктів і їх ТЧ, для яких необхідно використовувати дану обробку.
У типових конфігураціях об'єктами, що використовують даний механізм, є всі документи, що містять хоч одну табличну частину.
Перед відкриттям форми об'єкта в командних панелях табличних полів (джерелом даних для яких є таблична частина об'єкта), яким відповідають певні рядки в довіднику ВПФО, програмно додаються пункти в підміню "Заповнити" (якщо підміню "Заповнити" відсутній на командній панелі, воно створюється) .
При натисканні на створену перед відкриттям кнопку підміню "Заповнити" відбувається збереження відповідної обробки на диск під тимчасовий файл, для збереженої зовнішньої обробки викликається процедура:

Копіювати в буфер обміну

Ініціалізувати (Об'єкт, ІмяТаблічнойЧасті, ТаблічноеПолеОб'екта)

де:

  • Об'єкт - ДокументОб'ект, СправочнікОб'ект. Звідки був зроблений виклик процедури заповнення зовнішньої обробки;
  • ІмяТаблічнойЧасті - Рядок. Ім'я табличній частині, для якої викликана обробка;
  • ТаблічноеПолеОб'екта - Елемент форми: Табличне поле. Табличне поле форми, для якого викликана обробка.

Наявність експортної процедури "Ініціалізувати ()" в модулі об'єкта обробки з видом "Заповнення табличних частин" обов'язково. У тілі даної процедури повинен розташовуватися програмний код, що заповнює табличну частину відповідно до призначення обробки.
Обробка так само може мати в своєму складі макет "Параметри_Авторегістраціі", який використовується для автоматичного заповнення приналежності друкованої форми в довіднику "Зовнішні обробки". Макет повинен складатися з 2-х колонок - "повне ім'я об'єкта" і "ім'я табличній частині".
Приклад макета Параметри_Авторегістраціі:
Наявність експортної процедури Ініціалізувати () в модулі об'єкта обробки з видом Заповнення табличних частин обов'язково

Зовнішня друкована форма

Для підключаються зовнішніх друкованих форм вказується:

  • зовнішня обробка
  • список об'єктів, для яких дана друкована форма використовується

Для кожного типу об'єкта додатково можна вказати:

  • Відбір. Друкована форма буде доступною тільки для об'єктів, що задовольняють встановленим відбору.
  • Окрему друковану форму. Слід враховувати, що в списках друкованих форм в об'єктах буде завжди з'являтися однаковий пункт підміню. Якщо окрема друкована форма не вказана, то буде використовуватися друкована форма з шапки елемента ВПФО.
  • Вбудовану друковану форму. При заповненні цього реквізиту, зазначена вбудована друкована форма буде замінена зовнішньої.

Виклик діалогу налаштування умов відбору здійснюється при початку вибору значення в колонці "відбір":
Виклик діалогу налаштування умов відбору здійснюється при початку вибору значення в колонці відбір:   У формах об'єктів, в командній панелі форми (зазвичай це нижня командна панель) формується підміню кнопок друкованих форм
У формах об'єктів, в командній панелі форми (зазвичай це нижня командна панель) формується підміню кнопок друкованих форм. Підміню формується програмно, при відкритті форми і при запису об'єкта в формі (для забезпечення зміни пунктів меню в залежності від даних об'єкта, і спрацьовування зазначених в друкованих формах умов відборів). У сформованому меню стандартні друковані форми відділяється від підключаються роздільником.
наприклад:

Якщо знаходиться підключається друкована форма, якої необхідно замінити стандартну, то вона замінюється і показується в списку стандартних друкарських форм. В цьому випадку підключена друкована форма окремо в списку підключених друкованих форм не відображається.
При натисканні на будь-яку з кнопок друку відбувається визначення, чи відповідає ця кнопка зовнішньої друкованій формі або вбудованої в конфігурацію.
Для кнопок, відповідних друкованим формам вбудованим в конфігурацію, викликається вбудований механізм друку (даний механізм в рамках поточного проекту не розглядається).
Для кнопок, відповідних зовнішнім друкованим формам, відбувається збереження відповідної обробки на диск під тимчасовий файл.
Для збереженої зовнішньої обробки:

  • заповнюється реквізит "СсилкаНаОб'ект" - тип "Будь-яка посилання", в який передається посилання на об'єкт, для якого необхідно виконати друк;
  • викликається функція "Друк ()" (повинна розташовуватися в модулі обробки з ознакою "Експорт") без параметрів, що повертає табличний документ.

Наявність реквізиту "СсилкаНаОб'ект" і експортної функції "Друк ()" в модулі об'єкта обробки з видом "Зовнішня друкована форма" обов'язково.
У тілі функції "Друк ()" повинен розташовуватися програмний код, який формує і повертає табличний документ, відповідно до значення реквізиту "СсилкаНаОб'ект".
Обробка так само може мати в своєму складі макет "Параметри_Авторегістраціі", який використовується для автоматичного заповнення приналежності друкованої форми в довіднику "Зовнішні обробки" складається з однієї колонки - повне ім'я об'єкта для якого буде створюватися відповідна кнопка друку.
Приклад макета Параметри_Авторегістраціі:
Наявність реквізиту СсилкаНаОб'ект і експортної функції Друк () в модулі об'єкта обробки з видом Зовнішня друкована форма обов'язково
При дотриманні цих вимог користувачеві буде досить вказати при реєстрації додаткової друкарської форми файл зовнішньої обробки, після чого всі реквізити форми заповняться автоматично.

Технічна реалізація механізму "Зовнішні обробки, друковані форми, обробки щодо заповнення табличних частин"

У базі даних зовнішні обробки, друковані форми, обробки щодо заповнення табличних частин зберігаються в довіднику "Зовнішні обробки". Довідник має наступну структуру:
У базі даних зовнішні обробки, друковані форми, обробки щодо заповнення табличних частин зберігаються в довіднику Зовнішні обробки
реквізити:

  • ХраніліщеВнешнейОбработкі. Сховище значення, зберігаються двійкові дані обробки, визначеної для всього елемента.
  • ВідОбработкі. ПеречісленіеСсилка. ВідиДополнітельнихВнешніхОбработок, визначає вид ВПФО кожен вид (друкована форма, заповнення табличних частин, обробка) розглянуто окремо в розділі "Опис видів довідника ВПФО і вимоги до підключається зовнішнім обробкам".
  • Коментар. Рядок необмеженої довжини.
  • КомментарійКФайлуІсточніку. Рядок, необмеженої довжини, зберігає параметри файлу, дату створення та ін. Заповнюється автоматично в момент інтерактивного вибору файлу зовнішньої обробки. Користувачем не змінюється.

ТаблічнаяЧасть.Прінадлежность. Зберігає типи об'єктів, для яких задається ВПФО і інші описані нижче параметри. Таблична частина використовується для елементів з видом обробки: "Друкована форма" або "Заповнення табличних частин".

Реквізити табличній частини:

  • ПредставленіеОб'екта. Рядок, необмеженої довжини, зберігає строкове представлення обраного об'єкта, для відображення користувачеві.
  • СсилкаОб'екта. СправочнікСсилка, ДокументСсилка, містить порожню посилання на об'єкт конфігурації. тому реквізит типу "Тип" для табличній частині не може бути визначений, то по порожній посиланням визначається тип об'єкта, для якого слід підключати зовнішню друковану форму або обробку щодо заповнення табличній частини. Посилання на порожнє значення певного типу зручно використовувати в запитах.
  • ТаблічнаяЧастьІмя **. Рядок, 100. Містить ім'я ТЧ об'єкта, для якого задається ВПФО.
  • ТаблічнаяЧастьПредставленіе **. Рядок, необмеженої довжини. Містить синонім ТЧ об'єкта, використовується для відображення користувачеві уявлення табличній частині об'єкта, для якого задається.
  • НастройкіПостроітеляДляОтбора ***. Сховище значення, може містити установки будівника звіту, вивантажені з нього відбори для обраного об'єкта.
  • ХраніліщеВнешнейОбработкі ***. ХраніліщеЗначенія, може містить двійкові дані підключається зовнішньої обробки., Яка буде використовуватися в першу чергу, замість обробки розташованої в шапці.
  • ЗаменяемаяПечатнаяФорма ***. Рядок, 200. Ім'я друкованої вбудованої форми об'єкта, яку необхідно замінити підключається.
  • ІмяФайлаПечатнойФорми ***. Рядок, необмеженої довжини - ім'я файлу підключеної друкованої форми.
  • ПредставленіеОтбораПостроітеля ***. Рядок, необмеженої довжини, зберігає уявлення відбору будівника, використовується для відображення уявлення відбору в табличній частині форми елемента довідника "Зовнішні обробки".

** Використовується тільки для елементів з видом обробки: "Заповнення табличних частин"
*** Використовується тільки для елементів з видом обробки: "друкована форма".

Підключення додаткових друкованих форм до форм об'єктів конфігурації

Механізм додаткових друкованих форм є розширенням стандартного механізму друкованих форм об'єкта. Додавання додаткової форми в загальний список форм виконується в процедурах модуля форми об'єкта перед відкриттям, після запису і при натисканні на кнопку "Встановити друк за замовчуванням".
Підменю "Друк" і кнопка "Друк за замовчуванням" в формі об'єкта не повинні бути присутніми в обов'язковому порядку. Вони формуються програмно, в тому випадку, якщо є хоч одна друкована форма і задана друк за замовчуванням.

Копіювати в буфер обміну

////////////////////////////////////////////////// //////////////////////////// // МОДУЛЬ ОБ'ЄКТА ////////////////// ////////////////////////////////////////////////// ////////// // Повертає доступні варіанти друку документа, оброблювані в модулі об'єкта // // Вовращаемое значення: // струткура, кожен рядок якої відповідає одному з варіантів друку // Функція ПолучітьСтруктуруПечатнихФорм () Експорт // структура індивідуальна для кожного типу об'єкта Повернення Новий структура ( "Аванс_Отчет", "Авансовий звіт"); КонецФункціі // ПолучітьСтруктуруПечатнихФорм () //////////////////////////////////////////// ////////////////////////////////// // ФОРМА ОБ'ЄКТА //////////// ////////////////////////////////////////////////// //////////////// // Зберігає дерево макетів друкованих форм Перем мДеревоМакетов; // Зберігає елемент управління підміню друку Перем мПодменюПечаті; // Зберігає елемент управління кнопку друк за замовчуванням Перем мПечатьПоУмолчанію; // Процедура - обробник події "ПередОткритіем" форми. // Процедура ПередОткритіем (Відмова, СтандартнаяОбработка) ... // Установка кнопок друку УстановітьКнопкіПечаті (); ... КонецПроцедури // ПередОткритіем () // Процедура - обробник події "послезапісі" форми. // Процедура послезапісі () ... // Установка кнопок друку УстановітьКнопкіПечаті (); ... КонецПроцедури // послезапісі () // Процедура встановлює підміню "Друк" і кнопку "Друк за замовчуванням" при необхідності // Процедура УстановітьКнопкіПечаті () мДеревоМакетов = ПолучітьДеревоМакетовПечаті (Посилання, ПолучітьСтруктуруПечатнихФорм (), Новий Дія ( "ОсновниеДействіяФормиПечать"), Новий Дія ( "ОсновниеДействіяФормиУстановітьПечатьПоУмолчанію")); УстановітьПодменюПечаті (мПодменюПечаті, ЕлементиФорми .ОсновниеДействіяФорми, мДеревоМакетов .Строкі .Кількість ()> 0); УстановітьПечатьПоУмолчанію (мПечатьПоУмолчанію, ЕлементиФорми .ОсновниеДействіяФорми, мДеревоМакетов, Метадані () .Імя, Новий Дія ( "ОсновниеДействіяФормиПечатьПоУмолчанію")); Якщо Чи не мПодменюПечаті = Не визначено Тоді СформіроватьПодменю (мДеревоМакетов, мПодменюПечаті, Істина, Істина); КонецЕсли; КонецПроцедури // Процедура - обробник натискання на кнопку "Друк за замовчуванням" // Процедура ОсновниеДействіяФормиПечатьПоУмолчанію (Кнопка) ПечатьПоДополнітельнойКнопке (мДеревоМакетов, ЕтотОб'ект, ЕтаФорма, Кнопка .Текст); КонецПроцедури // Процедура - обробник натискання на кнопку "Друк" // Процедура ОсновниеДействіяФормиПечать (Кнопка) ПечатьПоДополнітельнойКнопке (мДеревоМакетов, ЕтотОб'ект, ЕтаФорма, Кнопка .Текст); КонецПроцедури // Процедура - обробник натискання на кнопку "Встановити друк за замовчуванням" // Процедура ОсновниеДействіяФормиУстановітьПечатьПоУмолчанію (Кнопка) Якщо НазначітьКнопкуПечатіПоУмолчанію (мДеревоМакетов, Метадані () .Імя) Тоді УстановітьКнопкіПечаті (); КонецЕсли; КонецПроцедури

Підключення обробок щодо заповнення табличних частин до форм об'єктів конфігурації

Для забезпечення підключення механізму в формі об'єкта повинні бути присутніми наступні процедури і функції:

Копіювати в буфер обміну

////////////////////////////////////////////////// //////////////////////////// // ФОРМА ОБ'ЄКТА ////////////////// ////////////////////////////////////////////////// ////////// // Зберігає відповідність Перем мКнопкіЗаполненіяТЧ; // Процедура - обробник події "ПередОткритіем" форми. // Процедура ПередОткритіем (Відмова, СтандартнаяОбработка) ... // Установка кнопок заповнення ТЧ УстановітьКнопкіПодменюЗаполненіяТЧ (); ... КонецПроцедури // ПередОткритіем () // Процедура встановлює підміню "Заповнити" в командних панелях ТЧ документа при необхідності // Процедура УстановітьКнопкіПодменюЗаполненіяТЧ (); СоответствіеТЧ = Новий Відповідність; СоответствіеТЧ .Вставіть (ЕлементиФорми .ВиданниеАванси, ЕлементиФорми .КоманднаяПанельВиданниеАванси); СоответствіеТЧ .Вставіть (ЕлементиФорми .ВозвратнаяТара, ЕлементиФорми .КоманднаяПанельВозвратнаяТара); СоответствіеТЧ .Вставіть (ЕлементиФорми .Прочее, ЕлементиФорми .КоманднаяПанельПрочее); СоответствіеТЧ .Вставіть (ЕлементиФорми .ОплатаПоставщікам, ЕлементиФорми .КоманднаяПанельОплатаПоставщікам); СоответствіеТЧ .Вставіть (ЕлементиФорми .Товари, ЕлементиФорми .КоманднаяПанельТовари .Кнопкі .Заполніть); мКнопкіЗаполненіяТЧ = СформіроватьПодменюЗаполненіяТЧ (Посилання, СоответствіеТЧ, Новий Дія ( "НажатіеНаДополнітельнуюКнопкуЗаполненіяТЧ")); КонецПроцедури // Процедура - обробник натискання на будь-яку з додаткових кнопок щодо заповнення ТЧ // Процедура НажатіеНаДополнітельнуюКнопкуЗаполненіяТЧ (Кнопка) ОбработатьНажатіеНаДополнітельнуюКнопкуЗаполненіяТЧ (мКнопкіЗаполненіяТЧ .Строкі .Знайти (Кнопка .Імя, "Ім'я", Істина), ЕтотОб'ект); КонецПроцедури

Дополнительная информация

rss
Карта