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

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

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

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
11.11.14
36
.epf 16,40Kb 36 Скачать

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

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


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

См. также

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

Инструментарий разработчика Универсальные обработки v8 v8::УФ 1cv8.cf Платные (руб)

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

5000 руб.

16.01.2015    44885    26    45    

Интерактивная справка по объектам 1С (автономное расширение)

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

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

3 стартмани

29.09.2020    5612    26    sapervodichka    30    

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

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

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

1 стартмани

26.01.2020    8977    13    herfis    16    

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

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

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

2 стартмани

23.12.2019    7579    35    XilDen    5    

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

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

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

1 стартмани

09.09.2019    11433    17    bmk74    4    

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

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

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

1 стартмани

12.08.2019    13325    7    Yashazz    18    

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

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

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

1 стартмани

09.08.2019    15773    18    rpgshnik    43    

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

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

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

1 стартмани

12.11.2018    12454    30    KAV2    62    

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

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

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

1 стартмани

30.03.2018    26459    36    Ditron    83    

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

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

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

1 стартмани

27.10.2018    17022    12    tormozit    31    

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

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

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

1 стартмани

03.10.2018    14443    44    DO_WHILE_LOOP    28    

Рисуем диаграммы в metadata.js

Инструментарий разработчика Работа с интерфейсом v8 v8::СКД 1cv8.cf Абонемент ($m)

Не одной же литературой заниматься?

1 стартмани

20.09.2018    16869    3    1c-intelligence    77    

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

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

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

1 стартмани

31.05.2017    32491    150    tormozit    23    

TextRadar - нечеткий поиск в тексте

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

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

1 стартмани

19.09.2018    17373    23    TSSV    18    

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

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

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

1 стартмани

01.08.2018    24953    198    RSConsulting    16    

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

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

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

1 стартмани

31.07.2018    23740    139    Plotks2017    27    

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

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

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

1 стартмани

13.05.2011    40342    24    Tatitutu    45    

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

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

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

1 стартмани

30.07.2018    8328    10    Неопределено    34    

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

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

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

1 стартмани

24.07.2018    15702    18    WalterMort    29    

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

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

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

1 стартмани

17.07.2018    16184    72    nomadon    45    

Использование сборок .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    83144    237    Serginio    71    

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

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

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

1 стартмани

17.07.2018    47121    17    kalyaka    16    

Tool1CD Beta в деле

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

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

1 стартмани

09.05.2018    25608    28    baton_pk    26    

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

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

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

1 стартмани

03.01.2018    29517    5    kraynev-navi    41    

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

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

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

1 стартмани

29.10.2011    18154    2    Vin_Tik    9    

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

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

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

1 стартмани

18.11.2017    32010    35    bonv    10    

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

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

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

1 стартмани

20.07.2017    21040    62    lazarenko    18    

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

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

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

1 стартмани

23.11.2016    20990    94    igel9780    22    

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

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

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

1 стартмани

28.10.2016    20564    1    IntelInside    68    

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

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

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

2 стартмани

19.10.2016    37449    217    Erne100    24    

[Расширение] Стартовые страницы. Автозапуск форм при старте 1С. (8.3.9+, без доработки конфигурации)

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

Уверен, что в большинстве случаев список справочников, отчетов, обработок (объектов 1С в целом), к которому обращаются пользователи после запуска конфигурации 1С, раз от раза меняется не сильно. Так почему бы немного не упростить процесс открытия часто используемых форм? Данное расширение позволяет настроить автоматическое открытие различных форм объектов сразу после запуска 1С. Список форм настраивается индивидуально для каждого пользователя. Работает на платформе 8.3.9, без доработки конфигурации.

1 стартмани

03.10.2016    21508    82    Artem-B    20    

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

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

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

1 стартмани

09.09.2016    38049    88    dewersia    53    

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

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

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

2 стартмани

30.08.2016    26709    135    Stepa86    15    

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

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

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

1 стартмани

27.07.2016    25242    41    tohandr    37    

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

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

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

10 стартмани

11.03.2016    16457    0    ture    36    

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

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

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

1 стартмани

17.02.2016    49797    50    yuraos    17    

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

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

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

1 стартмани

08.02.2016    27955    33    linkforget    11    

Связь Asterisk и 1С, внешняя компонента

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

Поддержка ROM-Asterisk прекращена, на 1С: Предприятии 8.3.6 вылетает. Пишем свою.

6 стартмани

28.01.2016    46911    271    BigTaur    82    

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

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

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

1 стартмани

14.01.2016    18253    34    frkbvfnjh    36    

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

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

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

1 стартмани

02.11.2015    33611    12    Wolex    29    

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

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

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

1 стартмани

13.10.2015    26721    77    dmzubr    23    

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

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

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

1 стартмани

09.10.2015    36004    128    pbazeliuk    6    

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

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

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

1 стартмани

30.09.2015    29169    205    ivanov660    41    

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

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

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

1 стартмани

22.09.2015    199011    444    Zerocl    70