Рисование векторных картинок в формате WMF средствами 1С8 без внешних компонент

Публикация № 312139 12.11.14

Приемы и методы разработки - Разработка внешних компонент

WMF рисование картинки картинка векторная картинка векторное изображение

Набор процедур для создания векторных картинок в формате WMF.
Векторные картинки хорошо масштабируются, в первую очередь при печати.

Данная обработка содержит набор методов для создания векторных картинок в формате WMF.

WMF - векторный формат, состоящий из команд, практически повторяющих Windows GDI API. Векторное изображение для простых рисунков занимает меньше места по сравнению с растровым, отображается быстрее и отлично масштабируется.

Данная реализация содержит не все команды. Я не включал команды работы с палитрой (за неактуальностью) и с регионами (из-за определенной бедности и муторности по сравнению с WinAPI). Некоторые команды или параметры команд не поддерживаются приложениями. В частности, мне не удалось указать межсимвольный интервал или задать поворот символов относительно оси рисования. При желании можно добавить любую команду, вооружившись описанием формата - официальное описание тут: http://msdn.microsoft.com/en-us/library/cc250370.aspx
Стоит учитывать что почти все параметры задаются 16-разрядными словами.

 Сразу предупреждаю - не следует полагаться на "умолчания" - тестовая картинка в 1С, ACDSee и WinWord выглядела по-разному пока все возможные параметры не были уточнены.

Система координат по умолчанию - влево и вниз. Создаваемая картинка предполагает что отсчет начинается с 0,0. Единицы измерения достаточно условны, особенно с учетом что картинка может масштабироваться. В создаваемой картинке я указываю рекомендуемую плотность 1440 точек на дюйм (стандартное разрешение), что при стандартном отношении 96 точек/дюйм для экрана даст 15 WMF-точек на пиксель.

Для рисования требуется создавать объекты PEN ("ручка","карандаш") - для линий, BRUSH ("кисть") - для закрашивания, FONT - шрифт. При создании ручки и кисти указывается их цвет и узор. Для описания шрифта я использую стандартный объект "Шрифт". Свойство "Размер" указывает на высоту шрифта в условных единицах. Можно заранее создать несколько кистей и других объектов, по мере необходимости подключая нужную функцией SelectObject(). Функции создания объектов возвращают номер, который требуется использовать в функции ВекторнаяКартинкаSelectObject()

Все замкнутые фигуры рисуют границу стилем PEN и заливаются стилем BRUSH. Если выбран стиль кисти Штриховка, то указывается СтильШтриховки. Следует ли затирать то что находится под текстом или штриховой заливкой и как, регулируется функциями фона: SETBKMODE, SETBKCOLOR.

Текст выводится в кодировке Win-1251, перекодирую из строки автоматически. Так же для TEXTOUT можно указать в качестве параметра "текст" массив байт-кодов символов.

Основные используемые константы я вынес в Структуры: СтильКарандаш для создания PEN, СтильКисть и СтильШтриховки для создания BRUSH, ВыводТекста, ВыравниваниеТекста и ВыводФона для отображения текста.

Для указания цветов я использую объект Цвет, заданный цветовыми компонентами (Абсолютный)

Можно вставить растровую картинку с изменением пропорций (последняя функция).

Для начала работы требуется создать объект с указанием планируемой ширины и высоты в условных единицах функцией
Функция СоздатьВекторнуюКартинку(Ширина,Высота) Экспорт

После формирования картинки её можно вывести в ДвоичныйПоток:
Функция ВекторнаяКартинкаСохранитьВДанные(картинка) Экспорт
В файл:
Процедура ВекторнаяКартинкаСохранитьВФайл(картинка,ИмяФайла) Экспорт
Для получения системного объекта Картинка требуется:
поток=ВекторнаяКартинкаСохранитьВДанные(к);
Картинка1=Новый Картинка(поток);

Создание объектов:

//Создать объект PEN для рисования линий
Функция ВекторнаяКартинкаCREATEPENINDIRECT(картинка,Стиль,Толщина,Цвет) Экспорт
//Создать объект BRUSH для заливки
Функция ВекторнаяКартинкаCREATEBRUSHINDIRECT(картинка,Стиль,знач Цвет=Неопределено,знач Штриховка=0) Экспорт
//Создание объекта "Шрифт" в картинке
//@шрифт - объект Шрифт
//@Ширина - подбор ширины символов, 0 - авто
//@Поворот - угол наклона шрифта в градусах
//@ПоворотЗнаков - угол наклона символов. По умолчанию совпадает с наклоном шрифта
//@Кодировка - значение CharSet из стандарта WMF. 0 - Ansi, 1 - по умолчанию, 204 - русский
//@Подбор - значение OutPrecision Enumeration
//@ПодборОбрезания - значение ClipPrecision Flags
//@Качество - значение FontQuality Enumeration
//@Семейство - значение PitchAndFamily = FamilyFont + PitchFont*64
Функция ВекторнаяКартинкаCREATEFONTINDIRECT(картинка,шрифт,Ширина=0,Поворот=0,знач ПоворотЗнаков=Неопределено,Кодировка=1,Подбор=0,ПодборОбрезания=0,Качество=0,Семейство=0) Экспорт

Функции рисования:

//Рисование прямоугольника с заливкой
Процедура ВекторнаяКартинкаRECTANGLE(картинка,х1,у1,х2,у2) Экспорт
//Рисование прямоугольника с заливкой с закругленными краями, ширина и высота задают степень скругления
Процедура ВекторнаяКартинкаROUNDRECT(картинка,х1,у1,х2,у2,ширина,высота) Экспорт
//Рисует дугу эллипса выбранным PEN, дуга задается пересечением эллипса,
//заданного описанным прямоугольником (ПрХ1,ПрУ1)-(ПрХ2,ПрУ2)
//и пересекающими его отрезками из центра к точкам (ОХ1,ОУ1) и (ОХ2,ОУ2)
Процедура ВекторнаяКартинкаARC(картинка,ПрХ1,ПрУ1,ПрХ2,ПрУ2,ОХ1,ОУ1,ОХ2,ОУ2) Экспорт
//Рисует усеченный эллипс с заливкой, дуга задается пересечением эллипса,
//заданного описанным прямоугольником (ПрХ1,ПрУ1)-(ПрХ2,ПрУ2)
//и пересекающими его отрезками из центра к точкам (ОХ1,ОУ1) и (ОХ2,ОУ2)
Процедура ВекторнаяКартинкаCHORD(картинка,ПрХ1,ПрУ1,ПрХ2,ПрУ2,ОХ1,ОУ1,ОХ2,ОУ2) Экспорт
//Рисует сектор эллипса, дуга задается пересечением эллипса,
//заданного описанным прямоугольником (ПрХ1,ПрУ1)-(ПрХ2,ПрУ2)
//и пересекающими его отрезками из центра к точкам (ОХ1,ОУ1) и (ОХ2,ОУ2)
Процедура ВекторнаяКартинкаPIE(картинка,ПрХ1,ПрУ1,ПрХ2,ПрУ2,ОХ1,ОУ1,ОХ2,ОУ2) Экспорт
//Рисует эллипс выбранным PEN с заливкой BRUSH,
//заданный описанным прямоугольником (ПрХ1,ПрУ1)-(ПрХ2,ПрУ2)
Процедура ВекторнаяКартинкаELLIPSE(картинка,ПрХ1,ПрУ1,ПрХ2,ПрУ2) Экспорт
//Закрашивает область выбранной BRUSH,
//Указываются координаты начала заливки, цвет и режим - 0 - до цвета границы, 1 - область указанного цвета
Процедура ВекторнаяКартинкаEXTFLOODFILL(картинка,Х,У,цвет,режим=0) Экспорт
//Перемещение текущей точки
Процедура ВекторнаяКартинкаMOVETO(картинка,х,у) Экспорт
//Рисование отрезка от текущей точки до указанных координат
Процедура ВекторнаяКартинкаLINETO(картинка,х,у) Экспорт
//Рисование ломаной, параметр "точки" - двумерный массив[][2] точек
Процедура ВекторнаяКартинкаPOLYLINE(картинка,точки) Экспорт
//Рисование многоугольника, параметр "точки" - двумерный массив[][2] точек
Процедура ВекторнаяКартинкаPOLYGON(картинка,точки) Экспорт
//Установить пиксель по заданным координатам
Процедура ВекторнаяКартинкаSETPIXEL(картинка,Х,У,цвет) Экспорт

Вывод текста:
//Вывод текста
Процедура ВекторнаяКартинкаTEXTOUT(картинка,х,у,текст) Экспорт
//Вывод текста с возможностью обрезки и указания межсимвольных отступов
Процедура ВекторнаяКартинкаEXTTEXTOUT(картинка,х,у,текст,опции=0,ПрХ1=0,ПрУ1=0,ПрХ2=0,ПрУ2=0,отступы=Неопределено) Экспорт
//Установить фоновый цвет
Процедура ВекторнаяКартинкаSETBKCOLOR(картинка,цвет) Экспорт
//Установить режим фона из ВыводФона
Процедура ВекторнаяКартинкаSETBKMODE(картинка,режим) Экспорт
//Установить режим выравнивания текста из ВыравниваниеТекста
Процедура ВекторнаяКартинкаSETTEXTALIGN(картинка,режим) Экспорт
//Установить цвет текста
Процедура ВекторнаяКартинкаSETTEXTCOLOR(картинка,цвет) Экспорт

//Отобразить растровую картинку с возможным сжатием/увеличением
//@ИсходнаяКартинка - системный объект Картинка формата BMP/JPG/PNG/GIF/TIFF/Icon
Процедура ВекторнаяКартинкаSTRETCHDIB(картинка,ИсходнаяКартинка,ИсхХ,ИсхУ,знач ИсхШирина=0,знач ИсхВысота=0,ЦельХ,ЦельУ,ЦельШирина,ЦельВысота) Экспорт

Картинка в заголовке сформирована следующей процедурой:

    к=СоздатьВекторнуюКартинку(15*400,15*200);
   
Белый=Новый Цвет(255,255,255);
   
Черный=Новый Цвет(0,0,0);
   
Красный=Новый Цвет(255,0,0);
   
Зеленый=Новый Цвет(0,255,0);
   
Голубой=Новый Цвет(128,128,255);
   
Синий=Новый Цвет(0,0,255);
   
Желтый=Новый Цвет(255,255,0);
   
ВекторнаяКартинкаSelectObject(к,ВекторнаяКартинкаCREATEFONTINDIRECT(к,Новый Шрифт("Arial",15*25,Ложь,Истина,Истина,Ложь),15*6,0));
   
ВекторнаяКартинкаSelectObject(к,ВекторнаяКартинкаCREATEPENINDIRECT(к,СтильКарандаш.Невидимый,0,Белый));
   
ВекторнаяКартинкаSelectObject(к,ВекторнаяКартинкаCREATEBRUSHINDIRECT(к,СтильКисть.Сплошной,Голубой));
   
ВекторнаяКартинкаRECTANGLE(к,0,0,15*400-1,15*200-1);
   
ВекторнаяКартинкаSelectObject(к,ВекторнаяКартинкаCREATEBRUSHINDIRECT(к,СтильКисть.Сплошной,Зеленый));
   
ВекторнаяКартинкаRECTANGLE(к,0,15*100,15*400-1,15*200-1);
   
ВекторнаяКартинкаSelectObject(к,ВекторнаяКартинкаCREATEBRUSHINDIRECT(к,СтильКисть.Сплошной,Желтый));
   
ВекторнаяКартинкаSelectObject(к,ВекторнаяКартинкаCREATEPENINDIRECT(к,СтильКарандаш.Сплошной,15*2,Желтый));
   
ВекторнаяКартинкаELLIPSE(к,15*300,15*30,15*370,15*70);
   
ВекторнаяКартинкаMOVETO(к,15*335,15*55);
   
ВекторнаяКартинкаLINETO(к,15*335,15*10);
   
ВекторнаяКартинкаMOVETO(к,15*335,15*55);
   
ВекторнаяКартинкаLINETO(к,15*335,15*90);
   
ВекторнаяКартинкаMOVETO(к,15*335,15*55);
   
ВекторнаяКартинкаLINETO(к,15*310,15*15);
   
ВекторнаяКартинкаMOVETO(к,15*335,15*55);
   
ВекторнаяКартинкаLINETO(к,15*360,15*15);
   
ВекторнаяКартинкаMOVETO(к,15*335,15*55);
   
ВекторнаяКартинкаLINETO(к,15*310,15*85);
   
ВекторнаяКартинкаMOVETO(к,15*335,15*55);
   
ВекторнаяКартинкаLINETO(к,15*360,15*85);
   
ВекторнаяКартинкаMOVETO(к,15*335,15*55);
   
ВекторнаяКартинкаLINETO(к,15*310,15*15);
   
ВекторнаяКартинкаARC(к,15*270,15*40,15*300,15*60,15*300,15*50,0,0);
   
ВекторнаяКартинкаARC(к,15*370,15*40,15*400,15*60,15*400,15*40,15*370,15*50);
   
ВекторнаяКартинкаSelectObject(к,ВекторнаяКартинкаCREATEBRUSHINDIRECT(к,СтильКисть.Штриховка,Красный,СтильШтриховки.КосойКрест));
   
ВекторнаяКартинкаSelectObject(к,ВекторнаяКартинкаCREATEPENINDIRECT(к,СтильКарандаш.Сплошной,0,Синий));
   
ВекторнаяКартинкаSETBKCOLOR(к,Синий);
   
ВекторнаяКартинкаCHORD(к,15*10,15*10,15*40,15*40,15*35,15*50,15*35,15*0);
   
ВекторнаяКартинкаPIE(к,15*50,15*10,15*80,15*40,15*80,15*10,15*80,15*40);
   
точки1=Новый Массив(5,2);
   
Pi = 3.1415926535897932;
    Для
н=0 по 4 цикл
       
точки1[н][0]=Окр(Cos((360/5*н-90)/180*pi)*15*10)+15*100;
       
точки1[н][1]=Окр(Sin((360/5*н-90)/180*pi)*15*10)+15*20;
    КонецЦикла;
   
точки2=Новый Массив(6,2);
    Для
Н=0 по 5 цикл
       
точки2[н][0]=Окр(Cos((360/5*н*2-90)/180*pi)*15*10)+15*100;
       
точки2[н][1]=Окр(Sin((360/5*н*2-90)/180*pi)*15*10)+15*40;
    КонецЦикла;
   
ВекторнаяКартинкаPOLYGON(к,точки1);
   
ВекторнаяКартинкаPOLYLINE(к,точки2);
   
ВекторнаяКартинкаSelectObject(к,ВекторнаяКартинкаCREATEBRUSHINDIRECT(к,СтильКисть.Сплошной,Голубой));
   
ВекторнаяКартинкаSelectObject(к,ВекторнаяКартинкаCREATEPENINDIRECT(к,СтильКарандаш.Штрих,15*2,Новый Цвет(190,128,255)));
   
ВекторнаяКартинкаRECTANGLE(к,15*30,15*110,15*100,15*140);
   
ВекторнаяКартинкаROUNDRECT(к,15*330,15*150,15*380,15*180,15*10,15*10);
   
ВекторнаяКартинкаSETBKMODE(к,ВыводФона.Прозрачный);
   
ВекторнаяКартинкаSETTEXTALIGN(к,ВыравниваниеТекста.ПравоНиз);
   
ВекторнаяКартинкаSETTEXTCOLOR(к,Красный);
   
ВекторнаяКартинкаTEXTOUT(к,15*390,15*190,"Автор Pasha1st");
   
поток=ВекторнаяКартинкаСохранитьВДанные(к);
   
//поток.Записать("E:\2.wmf");
   
ЭтаФорма.ЭлементыФормы.ПолеКартинки1.Картинка=Новый Картинка(поток);
   
ЭлементыФормы.ПолеКартинки1.Масштабировать=Истина;

Предлагаю так же оценить аналогичный модуль рисования растровой картинки - BMP: //infostart.ru/public/310668/

Скачать файлы

Наименование Файл Версия Размер
РисованиеВекторнойКартинки.epf

.epf 16,40Kb
42
.epf 16,40Kb 42 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. WKBAPKA 211 13.11.14 10:25 Сейчас в теме
за труды :)
правда, зачем это нужно, не совсем понятно, но круто
3. Pasha1st 672 13.11.14 13:33 Сейчас в теме
(1) WKBAPKA, (2) bandru, Изврата тут много, факт. А вот для чего это было сделано:
В одной организации, которой я иногда помогаю, управление IT из центра, об оперативности каких-то внедрений мечтать не приходится. Организация печатает квитанции с включением штрихкода, а работа ведется в основном через терминальную ферму. В результате:
* установка шрифта штрихкода затруднена - прав нет, терминальных серверов много
* если вставлять штрихкод картинкой (а официальная ВК именно так и делает) - при передаче потока печати из терминальной сессии на локальный принтер картинка размазывается. При этом при локальном подключении печать четкая.
Формирование штрихкода как векторной картики решает проблему - штрихкод печатается четко вне зависимости от места запуска 1С.
Ну и векторное рисование происходит достаточно быстро, что дает возможности, не связанные с собственно учетом - встраивание игр в обработки.
Так что в ближайшее время выложу обработку формирования штрихкодов без ВК и шрифтов, и планирую нарисовать какую-нибудь игру типа арканоида-пакмана.
6. CratosX 111 27.11.14 19:57 Сейчас в теме
(3)
в ближайшее время выложу обработку формирования штрихкодов без ВК и шрифтов


о, я бы на это глянул!
7. Pasha1st 672 27.11.14 20:20 Сейчас в теме
(6) CratosX, практически закончил, до конца недели оформлю и выложу отдельной обработкой. Будет поддержка EAN8, EAN13, CODE39, CODABAR, CODE128
9. Pasha1st 672 03.01.15 00:15 Сейчас в теме
(6) CratosX, завершил, формирование штрихкодов без использования внешних компонент и шрифтов, смотреть тут
2. bandru 13.11.14 11:28 Сейчас в теме
Это примерно как бензопилой колбасу резать - в принципе можно, но как ведь нужно извратиться!
4. LuxVeritatis 18.11.14 16:28 Сейчас в теме
Что-то мне это напомнило, как мы в школе рисовали в Turbo Pascal, только на экране. А ещё можно добавить динамику. Ну там солнышко за горизонт ушло, трава пожелтела, снег пошёл. Кстати о снеге, как бы сделать снежинки на всех окнах?)
5. Pasha1st 672 19.11.14 15:16 Сейчас в теме
(4) Obscurus, напоминает, да, но есть и расширенные функции - сегмент эллипса (круга), дуга окружности, скругленные прямоугольники. Почему-то в WMF не предусмотрены сплайны - плавная линия, построенная по точкам, скорее всего в EMF они есть, не смотрел.
Картинка в заголовке у меня рисуется со скоростью 50шт/сек - полное формирование и преобразование к системному объекту Картинка. Анимацию сделать легко:
Делаем функцию Функция ПолучитьКартинку(парам) - с параметром "номер кадра", объявляем переменную перем нКадра; и функцию НарисоватьКадр() с кодом:
кар=ПолучитьКартинку(нКадра);
ЭтаФорма.ЭлементыФормы.ПолеКартинки1.Картинка=кар;
нКадра=нКадра+1;
Если нКадра<300 тогда
ПодключитьОбработчикОжидания("НарисоватьКадр",0.1,истина);
КонецЕсли;

Делаем вызов
ПодключитьОбработчикОжидания("НарисоватьКадр",0.1,истина);
И смотрим анимацию с 10FPS
8. NOVOPRO 11.12.14 08:13 Сейчас в теме
Похоже на детство, солнышко, травку через бейсик рисуешь.....
самое то для великовозростного дитя......
10. Pasha1st 672 03.01.15 00:20 Сейчас в теме
(8) NOVOPRO, Недостаток фантазии - беда для программиста ;)
Формирование рисунков можно использовать для различных нужд - штрихкоды, диаграммы, анимация, игры. Ценность встраиваемого решения без внешних зависимостей познается когда работаешь в ограниченной по правам среде.
11. AlexanderKai 22.04.15 09:42 Сейчас в теме
(8) NOVOPRO,
Вы видимо взрослый и работаете исключительно в командной строке.
Оставьте свое сообщение

См. также

Внешняя компонента: Android tools Промо

Мобильная разработка Разработка внешних компонент v8 v8::Mobile Абонемент ($m)

Несколько дополнительных функций для мобильного приложения\клиента под Android. Размер архива внешних компонент под архитектуры ARM и x86 - 230KB.

1 стартмани

12.01.2021    9994    30    KAV2    35    

Пишем внешнюю компоненту для 1С, NativeAPI на С++, для ОС Linux, с использованием Qt Creator

Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

В статье рассмотрен процесс создания внешней компоненты для 1С в среде Qt Creator для операционной системы Linux (ubuntu, debian, mint и им подобных). На примере компоненты для сбора данных от внешней аппаратуры и сохранение их в базе, посредством 1С. В качестве внешней аппаратуры в данном примере будем использовать Arduino UNO.

1 стартмани

13.05.2022    4003    3    user1779098    28    

Делаем табло в обозревателе из 1Ски с нуля за полчаса. Без бутстрапов, реактов и ангуляров. Жизнетрюки от kuzkov.info

Разработка внешних компонент WEB v8 Абонемент ($m)

На Инфостарте много разработок, которые предназначены для отображения в обозревателе данных на связи из 1С. С разными способами подключения, на разных технологиях. Есть платные, есть бесплатные. В данной публикации я хочу показать, как можно сделать сопряжение 1С обозреватель своими 1Сными силами с базовыми навыками верстки с нуля за полчаса и бесплатно.

1 стартмани

02.05.2022    4332    119    Steelvan    0    

Выделение текущей строки в отчете (сделать сразу во всех отчетах и ничего не сломать)

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Как за 10 минут упростить работу с отчётами программистам и пользователям. Добавить ВО ВСЕ ОТЧЁТЫ механизм автоматического выделения текущей строки отчёта (той, на которой установлен курсор). И ПРИ ЭТОМ НИЧЕГО НЕ СЛОМАТЬ.

1 стартмани

17.10.2021    6844    8    Патриот    49    

Альтернативный способ добавления элементов и реквизитов на формы Промо

Работа с интерфейсом v8 ERP2 УТ11 Россия Абонемент ($m)

Предлагаю альтернативный вариант добавления динамически создаваемых элементов и реквизитов на форму.

1 стартмани

09.09.2019    21731    39    bmk74    8    

Работа с картами в 1С на примере бесплатной библиотеки Leaflet

WEB Работа с интерфейсом Языки и среды v8 1cv8.cf Абонемент ($m)

Разработка функционала отображения и выбора пунктов доставки на карте прямо в 1С с помощью бесплатной библиотеки Leaflet. Тестирование производилось на платформе 8.3.15.1534 на тонком клиенте.

1 стартмани

31.03.2021    17402    52    Parsec1C    19    

Использование встроенного сканера ТСД на Android в мобильном клиенте и мобильном приложении (драйвер сканера Android для 1С)

Разработка внешних компонент Мобильная разработка v8 Абонемент ($m)

Используя данный драйвер, можно без единой строки кода, просто установив на ТСД мобильный клиент 1С, сразу начать подбирать товары в документах вашей учётной системы. А, адаптировав нужные формы под небольшой размер экрана ТСД, можно просто создать полноценное рабочее место для выполнения операций с помощью ТСД, не прибегая к стороннему софту. Если же на складе плохая связь (или её нет вовсе), то можно использовать возможности мобильного клиента в автономном режиме (потребуется доработка вашей конфигурации). Драйвер также можно использовать и для Android приложения на мобильной платформе. В результате чего можно обойтись без ненужных полей ввода и клавиатуры «на пол-экрана».

3 стартмани

09.10.2020    36465    282    ltfriend    187    

Делаем из СКД Excel (ну, почти)

Работа с интерфейсом v8 Абонемент ($m)

Несложный в использовании способ внедрить в обычный отчет СКД возможность редактировать значения ресурсов отчета (а-ля Excel) и получать отредактированные значения для дальнейшей обработки.

1 стартмани

26.01.2020    20172    31    herfis    16    

Внешняя компонента для работы по Web-socket протоколу x32 x64 Промо

Разработка внешних компонент WEB v8 Абонемент ($m)

Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.

2 стартмани

30.03.2018    43656    103    Ditron    118    

Индикация прогресса выполнения фонового задания на управляемой форме внешней обработки

БСП (Библиотека стандартных подсистем) Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

Внешняя обработка с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП >= 2.3 без изменения конфигурации и встраивания обработки в "Дополнительные отчеты и обработки".

1 стартмани

27.12.2019    25943    51    1sig    17    

Декомпиляция условного оформления

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Обработка автоматически генерирует полный код создания условного оформления формы любой сложности. Достаточно настроить для формы в конфигураторе условное оформление, а затем выбрать данную форму в обработке. В результате будет сгенерирован программный код создания условного оформления.

2 стартмани

23.12.2019    15089    66    XilDen    7    

Многоуровневые списки выбора с оформлением элементов

Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

Данная статья - попытка решить один маленький кусочек большой проблемы платформы 1С, а именно - бедные и невыразительные пользовательские интерфейсы. Поскольку 1С в режиме управляемого приложения позволяет задействовать веб-клиент, то хочется реализовывать интерфейсы как у взрослых веб-приложений - красивые, дружелюбные для пользователя и, желательно, с положительным UX. Возможно, кто-то со мной не согласится и скажет, что учетные системы должны быть строгие и линейные. Но мы все знаем, что 1С - это уже не только про бухгалтерию. Небольшое отступление для разработчиков, работающих с типовыми конфигурациями. Я не знаю, использует ли фирма 1С что-то похожее в своих разработках. Если да, то данная статья навряд ли будет вам полезна.

1 стартмани

17.12.2019    15940    2    azhilichev    5    

Расширенная настройка динамического списка УФ Промо

Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

Открывая управляемую форму выбора и не увидев там видимых в форме списка элементов, часто хочется узнать причину их отсутствия там, т. е. какой наложен отбор. Но стандартная настройка списка управляемой формы показывает только пользовательские настройки, скрывая от пользователя фиксированный отбор. Предлагаю вам расширение конфигурации с расширенной настройкой динамического списка, отображающей пользователю кроме пользовательских настроек еще фиксированные.

1 стартмани

31.05.2017    42783    165    tormozit    25    

Маленькая и скромная мобильная внешняя компонента

Разработка внешних компонент v8 Абонемент ($m)

Изваять простенькую мобильную компоненту на 1С для android не так-то просто. Посему назло отдельным супостатам, не желающим делится исходниками, представляю весь свой скромный труд на публичный суд.

1 стартмани

21.10.2019    18173    14    ripreal1    34    

[Механизм интерфейса] Свой флажок (чекбокс)

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Создадим свой флажок для интерфейса, используем простой универсальный алгоритм.

1 стартмани

09.08.2019    26832    23    rpgshnik    43    

Отбор на управляемой форме из списка значений

Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

Пример простого удобного отбора любых данных ссылочного типа на управляемой форме. Работа обработки проверена на релизе: 1С:Предприятие 8.3.13.1513.

1 стартмани

09.08.2019    42351    47    nagaitseff    6    

Открывашка ячеек таблиц Промо

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Глобальное сочетание клавиш для открытия объекта по ссылке из текущей ячейки любой таблицы в большинстве управляемых форм

1 стартмани

27.10.2018    25681    14    tormozit    38    

Внешняя компонента для выполнения регулярных выражений

Разработка внешних компонент v8 Абонемент ($m)

Внешняя Native API компонента для выполнения регулярных выражений на платформе 1С:Предприятие 8. Написана на C++. Используется движок PCRE2 версии 10.36 (до версии 13, использовался boost::regex v 1.69). Версия синтаксиса Perl Compatible Regular Expressions.

1 стартмани

12.11.2018    20769    53    KAV2    121    

Рисуем и распознаем нарисованное при помощи нейросети

Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

Используем нейронную сеть для распознавания нарисованных объектов.

1 стартмани

03.10.2018    21366    50    DO_WHILE_LOOP    28    

TextRadar - компонента нечеткого поиска

Разработка внешних компонент Поиск данных v8 1cv8.cf Абонемент ($m)

Компонента нечеткого поиска TextRadar для организации поиска в текстовых данных и решения задач сопоставления списков. Вычисляемый коэффициент релевантности (похожести) - нормированный, в диапазоне между 0 и 1. Формируются данные для отображения найденных фрагментов. Расчет коэффициентов происходит в многопоточном режиме (на уровне компоненты). Для 32 и 64 разрядных систем.

7 стартмани

19.09.2018    28090    37    TSSV    19    

Лучший подарок для бухгалтера - счёты 8.2 (со звуком) Промо

Работа с интерфейсом v8 1cv8.cf Россия Абонемент ($m)

(Толстый клиент) Подарите бухгалтеру счеты, и он(а) Вас никогда не забудет.

1 стартмани

13.05.2011    47653    924    Tatitutu    45    

Класс-обработка “Работа с картами Яндекс”

Разработка внешних компонент WEB v8 Абонемент ($m)

Как показать точку или маршрут на карте Яндекс. Как получить координаты по строке адреса (геокодирование).

1 стартмани

01.08.2018    40291    278    RSConsulting    19    

Визуализация событий на временной шкале средствами "Поле HTML документа"

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Интересный способ наглядно отобразить события на временной шкале. Например, может быть применен для красивого вывода документов по клиенту. Тестировалось на платформе 8.3.12.1469

1 стартмани

31.07.2018    32532    151    Plotks2017    27    

Продвинутое рисование в табличном документе (стрелок и не только)

Работа с интерфейсом v8 Абонемент ($m)

Вспоминаем геометрию и основы компьютерной графики. Матрицы и аффинные преобразования на плоскости.

1 стартмани

24.07.2018    24426    22    WalterMort    31    

Использование сборок .NET в 1С 7. и 8.x. Создание внешних Компонент. Промо

Разработка внешних компонент v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Данная разработка создана для использования сборок .Net в 1С через преобразование объектов и классов в COM-объекты, которые можно использовать в 1С. Достигается это путем создания класса, реализующего методы интерфейса IReflect public class AutoWrap: IReflect.

1 стартмани

28.11.2013    99601    307    Serginio    80    

Распознавание лиц (off-line). Демонстрационная база.

Разработка внешних компонент v8 Абонемент ($m)

Распознавание лиц входит в нашу жизнь стремительными темпами, бизнес стремится за событиями. В публикации находится описание и пример использования нейросетей для распознавания лиц.

1 стартмани

17.07.2018    22945    82    nomadon    45    

Работа с данными выбора

Работа с интерфейсом v8 Россия Абонемент ($m)

В управляемом интерфейсе заложена мощная возможность описывать связи реквизитов формы через параметры. Установка параметров связей позволяет ограничить выбор данных так, чтобы целостность данных была обеспечена на этапе ввода. Однако без дополнительного программирования задать можно только самые простые связи. Такие условия связи, как зависимость от реквизита через точку или зависимость через дополнительное отношение, заданное в регистре сведений - уже задать без программирования не получится.

1 стартмани

17.07.2018    81692    26    kalyaka    17    

Иерархическая диаграмма

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Концепция диаграммы по иерархической структуре данных, например по номенклатуре (продажи или остатки на складах).

2 стартмани

17.06.2018    21485    21    DrAku1a    7    

Интерактивный интерфейс Промо

Рабочее место Работа с интерфейсом v8 1cv8.cf Россия Абонемент ($m)

Обработка (отдельная панель меню), позволяющая настраивать интерфейс пользователя интерактивно (права не настраивает). Мне очень пригодилось, так как приходится прописывать индивидуальный интерфейс, каждому пользователю (а их уже сотни). Выложил 2 версии одна в виде таблицы, вторая в виде выпадающего меню

1 стартмани

29.10.2011    24358    65    Vin_Tik    9    

Markdown и 1С:Предприятие. Визуализация разметки MD в поле HTML документа

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Пример работы с документами Markdown (MD) на платформе 1С:Предприятие 8. Используется поле HTML документа, подключение JavaScript библиотеки преобразования разметки Markdown в HTML.

1 стартмани

12.06.2018    14827    20    infosoft-v    12    

Tool1CD Beta в деле

Разработка внешних компонент v8 Абонемент ($m)

Пс, парень! Не хочешь немного сырых байтов?

1 стартмани

09.05.2018    35565    32    dmpas    32    

Вставка снимка экрана (screenshot) в форматированный документ

Работа с интерфейсом v8 Россия Абонемент ($m)

Пример работы с буфером обмена и программной вставки скриншота в форматированный документ.

1 стартмани

30.08.2017    31871    51    Boneman    14    

Цветовые схемы для конфигуратора 1С (Популярные цветовые схемы для C# - теперь и для 1С) (Теперь 8.2 - 8.3) Промо

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Тёмные цветовые схемы кода. То, что было доступно всем передовым средствам разработки, теперь доступно и на 1С. 13.12.17 UPD: Теперь работает с платформой 8.3

3 стартмани

07.10.2013    47704    195    Chernov_Dmitriy    82    

Программное создание элементов графической схемы (через XSLT)

Работа с интерфейсом Универсальные функции v8 1cv8.cf Абонемент ($m)

Встала как-то передо мной задача визуализировать определенный прикладной процесс, лучше всего для этого подходит графическая схема. Так уж вышло, что 1С по не понятным мне причинам не предоставила возможность программно работать с элементами графической схемы. Пришлось импровизировать.....

1 стартмани

20.07.2017    29420    82    lazarenko    20    

Рисуем в 1С

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Вдруг захотелось порисовать в paint, а его использование заблокировано корпоративными политиками. Бывало такое? Тогда прошу под кат...

1 стартмани

11.05.2017    26574    83    pallid    35    

Графическая схема. Управление при помощи XDTO.

Работа с интерфейсом v8 Абонемент ($m)

В статье описывается методика программного управления элементами графической схемы при помощи механизма XDTO. Приложена готовая к использованию библиотека функций для создания и удаления графических объектов, а также для связи элементов схемы соединительными линиями.

2 стартмани

16.01.2017    35002    152    Alxby    25    

Простой редактор плана помещения JavaScript

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

На ресурсе сейчас очень много решений, которые позволяют редактировать карты, используя географические схемы. Так же много решений, которые позволяют редактировать объекты онлайн веб-карт. Мне же нужно было простое решение, для того чтобы расставить квадратные объекты на плане, показать их пользователю. Ну и распечатать, опять же. Я решил написать простенький редактор на JavaScript с использованием библиотеки Raphael.

1 стартмани

23.11.2016    31111    111    igel9780    23    

1С+Классы. Версия-0

Разработка внешних компонент Математика и алгоритмы v8 1cv8.cf Абонемент ($m)

Разработано ООП-расширение языка 1С, включающее (но не ограничивающееся): Классы как абстрактные типы данных с элементами «переменная», «свойство», «функция», «процедура»; Интерфейсы как абстрактные классы без элементов состояния («переменная») и без привязки к реализации методов (свойств, процедур, функций) при определении; Имплементация (реализация) интерфейсов классами; - одиночное открытое наследование; Области видимости «внутренняя» (private), «экспорт» (public), «защищенная» (protected); Статические элементы классов (общие для всех экземпляров класса); Замещение (переопределение реализации) методов при наследовании – «виртуальные методы, свойства»; Сокрытие (затенение) обычных (не замещаемых) элементов при наследовании; Перегрузка процедур и функций по количеству и типам данных аргументов; Конструкторы класса; Деструктор класса; Слабые ссылки; Делегаты.

1 стартмани

28.10.2016    25695    7    IntelInside    68    

Настройка начальной страницы (Рабочего стола)

Работа с интерфейсом Рабочее место Универсальные обработки v8 1cv8.cf Абонемент ($m)

Альтернатива стандартной настройке начальной страницы. В типовой доступны лишь те формы, что явно "разрешены" разработчиком в режиме конфигуратора. Эта обработка позволяет собрать "Рабочий стол" из любых подходящих форм в пользовательском режиме. Без программирования. БСП не используется. Не расширение. Универсальна, т.е. подойдет для любой конфигурации (в т.ч. самописной).

2 стартмани

19.10.2016    50927    283    Erne100    32    

"Внешнее событие" и мобильная платформа 1С

Разработка внешних компонент Мобильная разработка v8 Абонемент ($m)

Внешние компоненты в Android для Мобильной Платформы 1С или как вызвать внешнее событие, когда его нет.

1 стартмани

09.09.2016    47239    93    dewersia    55    

Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии

Работа с интерфейсом Языки и среды v8 1cv8.cf Россия Абонемент ($m)

Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)

1 стартмани

22.03.2016    105340    178    igo1    65    

Внешняя компонента для сжатия/распаковки файлов, двоичных данных и строк по алгоритму Zlib, Deflate и GZip

Разработка внешних компонент v8 v8::УФ 1cv8.cf Абонемент ($m)

Внешняя компонента для сжатия/распаковки файлов, двоичных данных и строк по алгоритму Zlib, Deflate и GZip.

1 стартмани

15.03.2016    40309    164    frkbvfnjh    112    

Проект внешней компоненты для 1С:8 (сделай сам)

Разработка внешних компонент v8 Абонемент ($m)

Как их делают? Как регистрируют? С чего начать? Где взять стартовый проект? Вопросов вообще много можно задать, но лучше один раз увидеть!

10 стартмани

11.03.2016    26836    3    ture    38    

Снимок экрана для 1С

Универсальные обработки Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

Довольно часто люди сталкиваются с необходимостью сделать снимок экрана. Если вы или ваши сотрудники основную часть времени проводят в 1С и у вас есть необходимость прикреплять графические файлы, то эта компонента для вас.

1 стартмани

08.02.2016    35198    34    linkforget    11