Друк договору з ут 11 - статті - 1с франчайзі сума технологій

Зокрема, в ній реалізований цікавий механізм, "друк" документів в MS Word. Наприклад, чернетка комерційної пропозиції можна отримати натисканням однієї кнопки, і потім відредагувати його безпосередньо в Word. На жаль, у типовій конфігурації не реалізований такий експорт для найбільш, з нашої точки зору, що підходять для цього об'єктів, а саме договорів. Нижче ми розберемо по пунктах, як це виправити.

Розбираємося з технологією

В УТ 11 реалізований полустандартний механізм експорту в MS Word. Через DCOM-з'єднання відкривається додаток MS Word, що має "свою 1С-ку", VBA (Visual Basic for Applications). Засобами VBA створюється новий документ і заповнюється за шаблоном, який зберігається в базі "1С: Підприємство 8". Полустандартний він тому, що код сильно "заточений" під конкретні об'єкти, і для експорту інших доводиться писати багато свого, обійтися параметричної налаштуванням не вийде.

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

Шаблон друкованої форми зберігається як макет в двійкових даних:

Для того, щоб зрозуміти, як влаштований шаблон, просто вивантажимо готовий на диск і подивимося, що там всередині:

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

Шаблон зробили:

Тепер підчепити його макетом до потрібного об'єкту і завантажимо.

Додаємо об'єкту команду друку:

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

ДанниеОб'екта = Новий Структура;

Для Кожного Колонка З РезультатЗапроса.Колонкі Цикл

ДанниеОб'екта.Вставіть (Колонка.Імя,? (Вибірка [Колонка.Імя] = NULL АБО ПустаяСтрока (Вибірка [Колонка.Імя]), "_________________", Вибірка [Колонка.Імя]));

Отже, шаблон заповнюється даними, відмінно:

Червоним я підсвітив області, які заповнюються з "Управління торгівлею" 11, щоб око відразу чіпляв місця, які потрібно перевірити. Тепер залишаються нюанси. Нюанс перший: в договорах потрібні кінцеві рядки з підписами на кожній сторінці, крім останньої. На останній сторінці цей "колонтитул" йде відразу за текстом, і крім підписів, має маркування місця під друку. Це завдання прекрасно вирішується в MS Word створенням двох розділів з різними колонтитулами. Вручну - легко. А ось при програмному заповненні доводиться помучитися:

УправленіеПечатьюКліент.ПрісоедінітьОбласть (ПечатнаяФорма, Область, Брехня);

УправленіеПечатьюКліент.ПрісоедінітьОбласть (ПечатнаяФорма, Область, Брехня);

Тепер наш договір заповнюється, колонтитули відмінно встають як потрібно. Передостання сторінка:

Dialog = ПечатнаяФорма.COMСоедіненіе.Dialogs (84); Dialog.Name = ДанниеОб'екта.ІмяДокумента; Dialog.Show ();

За допомогою цього рішення бізнес отримує такі результати:

  • гарантія наявності і збіги реквізитів в базі і в паперовому договорі
  • гарантія того, що в договір одного контрагента не потрапить найменування іншого (реальний випадок з практики)
  • економія до 10-15 хвилин часу на кожен формується договір (а судячи по роботі з деякими контрагентами, і до трьох діб)
  • гарантія однаковості оформлення договорів