Малюємо в 1С 8
Нещодавно з’явилася цікава задача. Треба в 1С зробити малюнок у вигляді невеличкої схеми: декількох ліній, фігур і прикріпити його до документу. Задача проста, але виявилось що простими засобами 1С це зробити не можна, точніше можна вставити табличне поле і робити деякі фігури і прямі лінії, а мені потрібно простий набросок як олівцем.
Знайшов я декілька способів як це зробити: перший і на мій погляд найбільш зручний і простий спосіб – це відкрити сторонній редактор наприклад paint і потім вставити готовий файл в 1С. В цьому випадку ми отримуємо всі можливості редактору для формування та редагування нашого зображення. Другий спосіб це використати одну з системних компонентів activeX, наприклад, InkPicture, або іншу. Плюс в цьому способі – що все редагування відбувається прямо в 1С. Використовувати їх зручно, вони мають методи для роботи, але як правило такі компоненти мають обмежені можливості. На жаль, я не знайшов такої, яка б відповідала моїм потребам, тому зупинився на першому способі.
Робота 1С з редактором зображень встановленим в системі за замовчуванням, в нашому випадку це Paint.
Робота в цьому випадку буде виглядати так: 1С створює порожній файл малюнку, відкриває його в редакторі і чекає відповіді від редактору про закриття, далі зчитує цей файл і далі вже з ним працює. Все просто. Єдина незручність в тому, що редактор відкривається як окрема програма, а 1С в цей час висить чекає відповіді, але в моєму випадку це не було критично. Код в 1Спри цьому буде такий:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//Створюємо порожній тимчасовий файл, або зберігаємо існуючий, якщо нам потрібно редагувати фото НовыйПуть = ПолучитьИмяВременногоФайла("jpg"); //Створюємо нову картинку, якщо потрібний спеціальний розмір картинки //тоді можна зробити шаблон файлц і його використовувати НК = новый Картинка; НК.Записать(НовыйПуть); //Відкриваємо редактор за замовчуванням, //в настройках системи потрібен стояти для потрібного формату головним // Параметр істина означає що 1С буде чекати поки Ви закриєте редактор ЗапуститьПриложение(НовыйПуть,,Истина); //Грузимо файл в 1С. В прикладі ми просто виводимо на форму в картинку, якщо потрібно то необхідно записати в потрібний реквізит ВыбранноеИзображение = Новый Картинка(НовыйПуть, Ложь); ЭлементыФормы.ПолеКартинки1.Картинка = ВыбранноеИзображение; //видаляємо тимчасовий файл УдалитьФайлы(НовыйПуть); |
Як видно, код дуже простий, але дозволяє робити малюнки і зберігати їх в 1С.