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

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

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

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

18
Набор процедур для создания векторных картинок в формате 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/

18

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

Наименование Файл Версия Размер
РисованиеВекторнойКартинки.epf
.epf 16,40Kb
11.11.14
35
.epf 16,40Kb 35 Скачать

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

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


о, я бы на это глянул!
7. Pasha1st 579 27.11.14 20:20 Сейчас в теме
(6) CratosX, практически закончил, до конца недели оформлю и выложу отдельной обработкой. Будет поддержка EAN8, EAN13, CODE39, CODABAR, CODE128
9. Pasha1st 579 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 579 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 579 03.01.15 00:20 Сейчас в теме
(8) NOVOPRO, Недостаток фантазии - беда для программиста ;)
Формирование рисунков можно использовать для различных нужд - штрихкоды, диаграммы, анимация, игры. Ценность встраиваемого решения без внешних зависимостей познается когда работаешь в ограниченной по правам среде.
11. AlexanderKai 22.04.15 09:42 Сейчас в теме
(8) NOVOPRO,
Вы видимо взрослый и работаете исключительно в командной строке.
Оставьте свое сообщение

См. также

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

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 ERP2 УТ11 Россия Абонемент ($m) Работа с интерфейсом

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

1 стартмани

09.09.2019    2370    4    bmk74    0       

Удобный выбор из таблицы/дерева в УФ 61

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом Разработка

Выбор из таблицы значений или дерева значений в выпадающем списке рядом с полем ввода - УФ, быстро и просто!

1 стартмани

12.08.2019    2883    4    Yashazz    18       

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

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

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

1 стартмани

09.08.2019    4102    4    rpgshnik    37       

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android 21

Инструменты и обработки Программист Пользователь Расширение (cfe) v8 v8::Mobile Розница УНФ ERP2 УТ11 КА2 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика УУ Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Абонемент ($m) Внешние источники данных Сканер штрих-кода Терминал сбора данных Работа с интерфейсом Мобильная разработка

Простой мобильный терминал сбора данных для iOS и Android, не требующий сложных настроек и установки дополнительных программ. Для выгрузки базы штрихкодов и загрузки собранных штрихкодов в документы учетной системы используется Яндекс Диск или облачный сервис и расширение конфигурации. Работает с конфигурациями Розница 2, УНФ 1.6, УТ 11, ERP, КА2.

3 стартмани

22.04.2019    9705    51    suepifanov    61       

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

Инструменты и обработки Программист Архив с данными v8 Абонемент ($m) Разработка внешних компонент

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

1 стартмани

12.11.2018    5865    21    KAV2    57       

Шпаргалка разработчика для работы с формами 23

Отчеты и формы Программист Архив с данными v8 Россия Абонемент ($m) Работа с интерфейсом

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

3 стартмани

31.10.2018    7824    68    ELAM    3       

Открывашка ячеек таблиц 85

Инструменты и обработки Программист Расширение (cfe) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

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

1 стартмани

27.10.2018    9210    11    tormozit    28       

TextRadar - нечеткий поиск в тексте (Native API) 9

Инструменты и обработки Программист Компонента, плагин (dll, vbs,..) v8 1cv8.cf Абонемент ($m) Разработка внешних компонент

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

5 стартмани

19.09.2018    6908    14    TSSV    14       

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

Инструменты и обработки Программист Конфигурация (md, cf) v8 Абонемент ($m) Разработка внешних компонент WEB

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

1 стартмани

01.08.2018    10469    129    RSConsulting    13       

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

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

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

1 стартмани

31.07.2018    13841    127    Plotks2017    24       

Работа с трёхмерными объектами штатными средствами 21

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом

Рисуем объёмные геометрические фигуры в 1С средствами встроенного языка без внешних компонент

1 стартмани

30.07.2018    5946    6    Неопределено    31       

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

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Абонемент ($m) Практика программирования Работа с интерфейсом

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

1 стартмани

24.07.2018    8051    16    WalterMort    27       

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

Инструменты и обработки Системный администратор Пользователь Руководитель проекта Архив с данными v8 Абонемент ($m) Разработка внешних компонент

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

1 стартмани

17.07.2018    10222    72    nomadon    45       

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

Инструменты и обработки Программист Архив с данными v8 Россия Абонемент ($m) Практика программирования Работа с интерфейсом

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

1 стартмани

17.07.2018    19602    13    kalyaka    15       

Управление состоянием формы через конечный автомат 81

Статья Программист Конфигурация (md, cf) v8 Россия Абонемент ($m) Практика программирования Работа с интерфейсом

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

1 стартмани

19.06.2018    9911    11    kalyaka    35       

Tool1CD Beta в деле 96

Инструменты и обработки Программист Компонента, плагин (dll, vbs,..) v8 Абонемент ($m) Разработка внешних компонент

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

1 стартмани

09.05.2018    17087    26    baton_pk    26       

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

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Разработка внешних компонент WEB

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

6 стартмани

30.03.2018    12813    9    Ditron    47       

Тестирование интерфейса в обычном приложении 8.2 при помощи SikuliX 105

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика Работа с интерфейсом

Как же не хватает клиента тестирования на платформе 8.2. Не кликнешь на кнопку, не выберешь из списка, не проверишь видит ли надпись пользователь. Воспользуемся внешним инструментом SikuliX, который позволит нам протестировать функционал форм. Данный инструмент легко встраивается в линию сборки и может "дружить" с уже известным многим Open-source продуктами.

1 стартмани

03.01.2018    19559    2    kraynev-navi    40       

Программное формирование форматированной строки в стиле html+inline CSS 52

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом Инструментарий разработчика

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

1 стартмани

18.11.2017    19176    24    bonv    5       

Размеры управляемой формы 100

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом Универсальные функции

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

1 стартмани

08.10.2017    17573    46    json    8       

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

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом

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

1 стартмани

20.07.2017    13862    49    lazarenko    16       

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

Инструменты и обработки Программист Расширение (cfe) v8 v8::УФ 1cv8.cf Абонемент ($m) Работа с интерфейсом

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

1 стартмани

31.05.2017    24132    143    tormozit    20       

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

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Практика программирования Работа с интерфейсом

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

1 стартмани

23.11.2016    14836    91    igel9780    16       

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

Инструменты и обработки Программист Архив с данными v8 Android Абонемент ($m) Разработка внешних компонент Мобильная разработка

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

1 стартмани

09.09.2016    28654    81    dewersia    48       

HTTP-сервис: отчеты [Расширение] 122

Инструменты и обработки Системный администратор Программист Расширение (cfe) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом

Это HTTP-сервис, который возвращает почти любой отчет в HTML, XLSX или в JSON. Сохраните вариант отчета, получите на него ссылку и можно получить данные без захода в 1С. Работает в конфигурациях на основе БСП 2.3.3+, для отчетов на СКД и в 1С 8.3.8+

2 стартмани

30.08.2016    18875    125    Stepa86    15       

Организация файлового хранилища на базе MS SQL Server с доступом из 1С 79

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Разработка внешних компонент Сервисные утилиты

Пример реализации хранения файлов в базе MS SQL Server с использованием различных технологий. Подробно рассмотрен потоковый доступ к файлам с использованием технологии FileStream.

1 стартмани

27.07.2016    18055    40    tohandr    23       

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

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Разработка внешних компонент

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

10 стартмани

11.03.2016    11003    10    ture    36       

Простые радости жизни программиста 1С: выбор типа значения 51

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом

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

1 стартмани

17.02.2016    38478    45    yuraos    17       

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

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

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

1 стартмани

08.02.2016    20371    30    linkforget    11       

Внешняя компонента для хранения данных во внешней обработке/отчете 100

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Разработка внешних компонент

Шаблон внешней обработки с внешней компонентой, демонстрирующей возможность хранения любых сериализуемых данных непосредственно во внешней обработке или отчете.

1 стартмани

14.01.2016    14918    35    frkbvfnjh    33       

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

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Работа с интерфейсом

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

1 стартмани

02.11.2015    22207    8    Wolex    29       

Инструмент для создания веб приложений на основе 1С REST сервиса 67

Инструменты и обработки Программист Пользователь Приложение (exe) v8 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика WEB Работа с интерфейсом

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

1 стартмани

13.10.2015    21323    82    dmzubr    23       

Асинхронная загрузка данных на Управляемую Форму. Прогресс бар (УФ 8.3). Индикация состояния процесса 78

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Работа с интерфейсом Универсальные функции Внешние источники данных

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

1 стартмани

09.10.2015    28725    133    pbazeliuk    6       

Визуальный html редактор на управляемых формах 64

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) WEB Работа с интерфейсом

Мы рассмотрим некоторые особенности и возможности подключения сторонних визуальных html редакторов на javascript - TinyMCE, CK Editor. С помощью приложенной обработки Вы сможете попробовать в действии полноценный и удобный визуальный html редактор, а при желании перенести подобный функционал к себе.

1 стартмани

30.09.2015    20679    183    ivanov660    26       

Полезные приемы при работе с Excel из 1С (Версия 3.1) 486

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Практика программирования Разработка внешних компонент Загрузка и выгрузка в Excel

Программисту 1С часто приходится работать с таблицами Excel из 1С. Я постарался собрать небольшой FAQ и набор функций для работы с файлами Excel. Надеюсь, кому-то будет полезна данная статья.

1 стартмани

22.09.2015    133799    444    Zerocl    60       

NativeDraw: Компонента рисования для 1С [V2.6.2] 106

Инструменты и обработки Программист Компонента, плагин (dll, vbs,..) v8 1cv8.cf Windows Абонемент ($m) Разработка внешних компонент Работа с интерфейсом

Рисуйте в формах 1С, также предлагается небольшое количество нерисовальных функций

1 стартмани

13.07.2015    39508    421    ПерваяСистема    140       

Компоненты распознавания и печати штрих-кодов 43

Инструменты и обработки Программист Приложение (exe) v7.7 v8 1cv8.cf 1cv7.md Windows Абонемент ($m) Разработка внешних компонент Сканер штрих-кода

Комплект программного обеспечения для реализации функций оптического распознавания штрих-кодов различных систем при помощи обычной web-камеры, а также их отображения в печатных формах. Программы могут работать в составе конфигураций, созданных на базе платформ «1С-Предприятие» версий 7.7, 8.2, 8.3. Компонент чтения кодов реализован в виде внешней компоненты 1С с COM-интерфейсом. Компонент отображения создан по стандартной технологии ActiveX для Windows, и может быть встроен в любое приложение, поддерживающее встраивание ActiveX элементов управления, например в документ Word или Excel, или форму VBA. P.S. Добавлена новая версия программы распознавания. Новые функции: обработка видео в реальном режиме (а не по таймеру, как раньше), добавлена возможность распознавания штрих-кодов из графических файлов JPEG, PNG, GIF, BMP, а также передавать для распознавания картинки из 1С, теперь можно получить в 1С захваченное с камеры или файла изображение, как с выделением мест, содержащих коды, так и без, а также отдельные фрагменты изображений, содержащие код. Добавлены новые свойства и методы для программирования. Обновлена документация.

10 стартмани

10.07.2015    58498    87    igorberezhnov    87       

Кнопки управления группировками табличного документа для управляемых форм 23

Инструменты и обработки Программист Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

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

1 стартмани

02.06.2015    21628    31    unichkin    9       

Управляемая форма 1С 8.2 (8.3) – работа с деревом значений и таблицей значений. Часть I (Основы) 64

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Практика программирования Работа с интерфейсом

Как известно, в платформе 1С 8.1 не составляло никакого труда связать дерево значений с табличным полем на форме, единственное, что при этом нужно было не забыть, так это СоздатьКолонки(). В управляемом приложении 1С 8.2 (8.3) сделать это не так просто, как кажется на первый взгляд. В данной статье речь пойдет о программном создании дерева значений (таблицы значений) на управляемой форме в управляемом приложении 1С

2 стартмани

14.05.2015    69618    25    ll13    13       

Подсистема "Планировщик" (версия 1.1) 138

Отчеты и формы no Конфигурация (md, cf) v8 1cv8.cf Россия Абонемент ($m) Практика программирования WEB Работа с интерфейсом

Конфигурация с подсистемой "Планировщик" (календарь). Бесплатная открытая версия для свободного использования не включает двустороннюю интеграцию с сервисом Google и Outlook.com.

5 стартмани

02.03.2015    55682    463    vandalsvq    62       

Анимация фона элементов на форме в стиле JQuery 75

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

К сожалению, у платформы 1С не так много красивостей, которыми обычно сдабривают формы обычных web-страниц. Нам недоступны эффекты JQuery и других javascript-библиотек. А иногда хочется сделать необычно, красиво и удобно.

1 стартмани

18.02.2015    13873    27    kraynev-navi    9       

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок» 55

Инструменты и обработки no Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Платные (руб) Инструментарий разработчика Универсальные обработки

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Это все позволяет существенно упростить работу с картинками. Также обработка может быть использована из встроенного языка как объект для редактирования картинок с набором экспортных процедур и функций для реализации иных бизнес задач (как пример в состав включена обработка "Стандартизация картинок"). Этот объект является альтернативой стандартного объекта «Картинка» с расширенными возможностями. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Это позволяет существенно упростить и автоматизировать работу с картинками. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

5000 руб.

16.01.2015    38978    168    37       

[ТАКСИ] Шаблон внешней обработки...и не только 207

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Универсальные обработки Работа с интерфейсом Универсальные функции

Обработка предназначена для лентяев, к каковым, в первую очередь, отношу себя. Это в некотором роде шпаргалка в виде шаблона внешней обработки. Для создания новой копируем эту, удаляем ненужное, вставляем нужное - получаем результат. Чем ваять с нуля, каждый раз прописывая одно и то же, проще использовать заготовку, подобную этой... 24.11.2018 - Версия 1.21 - что-то добавил, что-то поправил.... 16.04.2019 - По просьбам трудящихся (немногочисленным, правда) оставил последнюю версию 1.21, дабы не было путаницы... 17.04.2019 - Версия 1.22 Вернул пример сохранения табличного документа в разных форматах и чтения DBF из версии 1.16 (как потерялось - сам не понял)

2 стартмани

22.09.2014    46014    687    Alex_E    27       

Использование .NET сборок в 1С 8.2, 8.3 без установки и без регистрации в реестре. 57

Инструменты и обработки Системный администратор Программист Компонента, плагин (dll, vbs,..) v8 1cv8.cf Windows Абонемент ($m) Разработка внешних компонент

Для использования .NET сборок в 1С обычно приходится их регистрировать как com-объекты, что не всегда удобно. Предлагаемая компонента выполнена по технологии Native API и дает возможность использовать такие компоненты без установки и без регистрации в реестре windows.

1 стартмани

02.09.2014    29249    187    I_G_O_R    73       

Визуализация и интерактивное изменение дерева значений. 68

Инструменты и обработки no Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Практика программирования Универсальные обработки Работа с интерфейсом

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

1 стартмани

01.08.2014    16773    99    Belkin_Sergey    27       

Локализация конфигурации с помощью Google 13

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика Работа с интерфейсом

Обработка позволяет выполнять перевод интерфейсов в любой конфигурации 1С средствами Google. За основу взята обработка: http://infostart.ru/public/190890/

1 стартмани

06.06.2014    15415    32    x-tremeall    6       

Алгоритмы. Часть 1.1. Динамические соединения. 186

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

Конспект первой лекции из свежего курса Принстонского университета США за 2014 год. Вольный перевод с английского с реализацией примеров на 1С. Курс в целом достаточно интересный и полезный для общего развития. Перевел и адаптировал только первую лекцию (в 1 части 11 лекций, 2 часть - еще не завершена преподавателями). Первоисточник на английском - https://www.coursera.org/course/algs4partI. Если сообщество посчитает материал полезным - займусь переводом следующих лекций (но это довольно трудоемко). Enjoy! :)

1 стартмани

04.04.2014    27770    23    Aleksey.Bochkov    33