Трохи флекса з минулого. Колись давно, ще в часи windows, MS SQL і Delphi, до мене, як "тижайтішніка" звернулись знайомі з турфірми допомогти з прогою, яку вони собі придбали. Там така собі повнофункціональна CRM з турами, туристами і тд, все прикольно і працює, але була проблема з тим, що паперові документи воно генерувало не такі, як потрібно. Ну знаєте, ваучери, квитки, звіти тощо. А виробник чи то не хотів це міняти, чи було дорого, але як би там не було, вирішили покликати компʼютерного майстра, що живе поряд, тобто мене.
Виявилось, що там стек такий самий, що і в усіх: умовний Delphi / C++ клієнт та MS SQL сервер з базою. Сервак стояв на тому ж компі, шо і клієнт і все чудово працювало. Клієнт звісно не мав ніяких можливостей для розширення (плагінів тощо), але цього і не потрібно було. Оскільки всі дані були в базі, можна було зробити зовніше рішення для друку необхідних документів. Стандартне рішення було б використовувати якусь бібліотеку для репортів, типу CrystalReports (вибачте, якщо у вас тут звело олдскули), але в нього були недоліки. Кожен репорт у разі змін потрібно було б фіксити мені, компілювати, давати нову версію, надсилати її імейлом, а потім ще й траблшутити, чи точно нову версію запустили, чи стару 🙂
Я хотів мінімізувати підтримку і зробити максимально гнучке (і в той же час зручне) рішення. Тому обрав автоматизацію з MS Word. Ідея в тому, щоб зробити шаблон (це документ .dot), в якому буде весь необхідний текст і поля, які замінюються значеннями з бази. І кожен документ представляв із себе звʼязку шаблону з SQL запитом, який мав параметри, міг був дуже складним, дістати будь-що і зконвертити у потрібну форму. Шаблон містив поля, в які підставлялись значення з відповідних полей результату, що повертав запит.
Здається прога ще містила базові вхідні параметри, типа пошук тура чи туриста, для яких треба згенерувати документи і усе. Працювало як годинник. А якщо треба було додати щось нове, то я вдома писав скрипт, робив шаблон і надсилав це користувачам. Вони додавали це в прогу, редагували шаблон, приводячи його до потрібної форми і використовували.
Таким чином, використання готових інструментів – Word для роботи з текстом, T-SQL для своєрідних лямбд для кастомної логіки без компіляції і Delphi, щоб дати цьому всьому гарненький сучасний для тих часів UI – допомогло реалізувати елегантне прагматичне рішення, яке тішить мене до сих пір. Ось такі технології нульових.
Розказуйте, чи було у вас щось схоже 🙂