[GDI+] - Рисуем программно в 1С

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

Разработка - Работа с интерфейсом

94
ActiveX-компонента для рисования в 1С.

*** Для работы компоненты потребуется установленный Microsoft .NET Framework 2.0, который можно скачать отсюда.

и зарегистрировать компоненту в Windows - запустить reg.bat
(для удаления информации о компоненте в Windows - запустить unreg.bat)

*** Добавление на форму 1С:

v7: Использовать 1С++ и FormEx
v8: Меню "Форма" - "Вставить ActiveX..." - Выбрать элемент "Душелов.GDI"

*** Методы:
 
  *** Основные:
  
  - НоваяКартинка(Ширина, Высота); //создает новую картинку с заданной шириной и высотой
  - Очистить(Цвет); //Очищает всю поверхность рисования и выполняет заливку поверхности указанным цветом фона.
  - СкопироватьСЭкрана(ИсточникХ, ИсточникY, НазначениеХ, НазначениеY, Размер); //Выполняет передачу данных о цвете блоками битов с экрана на поверхность рисования объекта. 
  //Размер - объект типа "Размер"
  - ЗагрузитьКартинку(Файл);
  - СохранитьКартинку(Файл, ФорматФайла); //ФорматФайла - строка (bmp, emf, exif, gif, icon, jpg, memorybmp, png, tiff)
  - ОчиститьПамять();


  *** Создание элементов:

  - СоздатьПеро(Цвет, Ширина); //создает объект типа "Перо". 
  //Цвет - объект типа "Цвет"  
  - СоздатьКисть(r, g, b); //создает объект типа "Кисть" заданного цвета
  //r, g, b - числа
  - СоздатьШрифт(Название, Размер, Стиль); //создает объект типа "Шрифт". 
  //Название - имя шрифта, размер - число, стиль - строка с описанием шрифта, разделенные "|" (bold, italic, strikeout, underline) 
  - ПолучитьЦвет(r, g, b); //создает объект типа "Цвет". 
  //r, g, b - числа
  - СоздатьТочку(х, у); //создает объект типа "Точка". 
  //х, н - координаты
  - СоздатьМассивТочек(Размер); //создает объект типа "Точки". 
  //Размер - число, размер массива
  - УстановитьТочкуВМассив(Точки, Индекс, Точка); //
  //Точки - объект типа "Точки", Индекс - число, Точка - объект типа "Точка"
  - СоздатьИконку(Файл); //создает объект типа "Иконка" из файла
  - СоздатьКартинку(Файл); //создает объект типа "Картинка" из файла
  - СоздатьПрямоугольник(х, у, Ширина, Высота); //создает объект типа "Прямоугольник". 
  - СоздатьРазмер(Ширина, Высота); //создает объект типа "Размер". 

  *** Рисование:

  - РисоватьЛинию(Перо, х1, у1, х2, у2); //Рисует линию между двух точек
  - РисоватьЛинии(Перо, Точки); //Рисует набор сегментов линии, которые соединяют массив точек
  - РисоватьДугу(Перо, Прямоугольник, НачальныйУгол, Угол); //Рисует дугу, которая является частью эллипса, заданного прямоугольником
  //НачальныйУгол - Угол (в градусах), который измеряется по часовой стрелке, начиная от оси X и заканчивая начальной точкой дуги.
  //Угол - Угол (в градусах), который измеряется по часовой стрелке, начиная от значения параметра НачальныйУгол и заканчивая конечной точкой дуги. 
  - РисоватьКривуюБезье(Перо, x1, y1, x2, y2, x3, y3, x4, y4); //Строит кривую Безье, определяемую четырьмя упорядоченными парами координат, которые представляют собой точки.
  - РисоватьКривыеБезье(Перо, Точки); //Рисует последовательность кривых Безье из массива точек
  - РисоватьСтроку(Строка, Шрифт, Кисть, х, у); //Создает указываемую текстовую строку в заданном месте
  - РисоватьМногоугольник(Перо, Точки); //Рисует многоугольник, определяемый массивом точек
  - РисоватьЗамкнутуюКривую(Перо, Точки); //Строит замкнутую фундаментальную кривую, определяемую массивом точек
  - РисоватьКривую(Перо, Точки); //Строит фундаментальную кривую через точки указанного массива точек
  - РисоватьЭллипс(Перо, Прямоугольник); //Рисует эллипс, определяемый ограничиваемым прямоугольником
  - РисоватьИконку(Иконка, х, у); //Формирует изображение, представленное указанным объектом Icon, расположенным по указанным координатам.
  - РисоватьИконкуБезРастягивания(Иконка, Прямоугольник); //Формирует изображение, представленное указанным объектом Иконка без его масштабирования.
  - РисоватьКартинку(Картинка, х, у); //Рисует заданное изображение, используя его исходный фактический размер, в месте, задаваемом парой координат.
  - РисоватьКартинкуБезМасштабирования(Картинка, Точка); //Рисует заданное изображение в заданном месте, используя его исходный фактический размер.
  - РисоватьКартинкуБезМасштабированияСОбрезанием(Картинка, Прямоугольник); //Рисует заданное изображение без масштабирования и при необходимости обрезает его, чтобы оно вмещалось в указываемом прямоугольнике.
  - РисоватьСектор(Перо, Прямоугольник, НачальныйУгол, Угол); //Рисует сектор, определяемый эллипсом, заданным структурой Rectangle и двумя радиальными линиями.
  //НачальныйУгол - Угол (в градусах), который измеряется по часовой стрелке, начиная от оси X и заканчивая первой стороной сектора.
  //Угол - Угол (в градусах), который измеряется по часовой стрелке, начиная от значения параметра НачальныйУгол и заканчивая второй стороной сектора
  - РисоватьПрямоугольник(Перо, Прямоугольник); //Рисует прямоугольник

  *** Заливка:

  - ЗаполнитьЗамкнутуюКривую(Кисть, Точки); //Заполняет внутреннюю часть замкнутой фундаментальной кривой, определяемой массивом точек
  - ЗаполнитьЭллипс(Кисть, Прямоугольник); //Заполняет внутреннюю часть эллипса, определяемого ограничивающим прямоугольником
  - ЗаполнитьСектор(Кисть, Прямоугольник, НачальныйУгол, Угол); //Заполняет внутреннюю часть сектора, определяемого эллипсом, который задан прямоугольником, и двумя радиальными линиями.
  //НачальныйУгол - Угол (в градусах), который измеряется по часовой стрелке, начиная от оси X и заканчивая первой стороной сектора.
  //Угол - Угол (в градусах), который измеряется по часовой стрелке, начиная от значения параметра НачальныйУгол и заканчивая второй стороной сектора
  - ЗаполнитьМногоугольник(Кисть, Точки); //Заполняет внутреннюю часть многоугольника, определяемого массивом точек
  - ЗаполнитьПрямоугольник(Кисть, Прямоугольник); //Заполняет внутреннюю часть прямоугольника

*** События:

  - ПриНажатииКнопкиМышки(Кнопка, X, Y);
  - ПриДвиженииМышкой(Кнопка, X, Y);
  - ПриОтжатииКнопкиМышки(Кнопка, X, Y);
  - ПриШелчкеМышкой(Кнопка, X, Y);
  - ПриДвойномШелчкеМышкой(Кнопка, X, Y);

94

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

Наименование Файл Версия Размер
-
.1241528369 19,58Kb
26.02.13
1058
.1241528369 19,58Kb 1058 Скачать бесплатно
Пример работы с компонентой из 1С 7.7
.1243615943 7,00Kb
26.02.13
239
.1243615943 7,00Kb 239 Скачать бесплатно

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

Комментарии
Избранное Подписка Сортировка: Древо
1. Душелов 3902 05.05.09 17:02 Сейчас в теме
Снова почитал комменты http://infostart.ru/projects/1747/?p=3#comm50
и решил написать свою компоненту...
vladimir-boy; +1 Ответить
2. vip 05.05.09 17:11 Сейчас в теме
Давно пишу такой же активикс, да все не допишу.
Василий, развивать дальше будешь?
Если нет, буду дописывать свой, если да, попробую твой. ;))
GDI+ действительно используешь или название прихватизировал просто?

Однозначно плюс.
3. Душелов 3902 05.05.09 17:13 Сейчас в теме
(2) Реально его использую. В понятии .NET я сделал обертку для пространства имен System.Drawning;

Развивать в целом - да. Есть еще ряд того, чего я не успел сегодня сделать :)
5. vip 05.05.09 17:16 Сейчас в теме
(3) Гуд.
С удовольствием потестю, и, с разрешения, попробую применить.
С хотелками и ошибками куда обращаться?
107. GSA3D 23.01.12 15:44 Сейчас в теме
(3) Пространство имен System.Drawning; это тут?
А как заставить их работать в 1С?
4. Abadonna 3836 05.05.09 17:15 Сейчас в теме
за активикс-то вроде как плюс, но вопросик мучает - а на фига?
6. vip 05.05.09 17:18 Сейчас в теме
(4) Уж ты то в курсе, зачем он мне ;))
И первому активиксу ты меня научил.
8. Abadonna 3836 05.05.09 17:22 Сейчас в теме
(6) Да я не про актив-икс. Хоть убей не могу понять ЗАЧЕМ рисовать через одно место внутри 1С
(7) Опять таки не понимаю - ЗАЧЕМ рисовать
9. Душелов 3902 05.05.09 17:26 Сейчас в теме
(8) Видно, иногда кому-то надо :) Какое-нибудь визуально представление чего-нибудь :))))
krasavcheg; +1 Ответить
11. vip 05.05.09 17:30 Сейчас в теме
(9) Скажу, зачем это мне.
Голубая мечта - конфа для производителей изделий ПВХ.
Рынок не тронут, работы хватит до конца жизни.
vitaliy.ermolenko; +1 Ответить
12. Abadonna 3836 05.05.09 17:30 Сейчас в теме
(11) Т.е ты хочешь сказать, что если я добавлю в Miracle рисование прямо но форме отчета - это будет зашибись? Там добавить - даже проще чем два байта остослать...
13. vip 05.05.09 17:32 Сейчас в теме
(12) Будет. И было уже у тебя.
Только рисование рисованию рознь.
14. vip 05.05.09 17:35 Сейчас в теме
(12) И то, что это активикс, тоже хорошо. Можно наделать примитивов на нескольких экземплярах АХ и складывать их мышей, как кубики.
28. kolyada 295 06.05.09 02:54 Сейчас в теме
(11)
Насчет голубой мечты в ПВХ:
с графикой в 1С8 прекрасно справляется VML (граф. язык встроенный в IE и заодно в соотв. объект 1С). На одной фирме (ООО "Промаокна" в Москве, если кому интересно) я так и реализовывал расчет изделий ПВХ. Всё элементарно и безо всяких доп. ухищрений типа активикс. Довольно небольшой код позволял интерактивно рисовать (визуально результат выглядел не хуже чем в специализированных ппрограммах) и обсчитывать как прямоугольные конструкции, так и арочные, треугольные и т.п. Единственно ОЧЕНЬ сильно пришлось вспоминать математику с её синусами и косинусами.
38. vip 07.05.09 09:17 Сейчас в теме
(28)(37) Насчет рисования изделий ПВХ.
На самом деле особая графическая мощь тут не нужна.
При массовом производстве 99% изделий состоят из простых элементов - рама, створки, импосты.

Я пошел таким путем.
При использовании моего активикса рисование створки, например, выглядит примерно так: ЗакуячитьСтворкуЛевуюПоворотноОткидную(Ширина,Высота). Вся математика зашита в активиксе.

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

Таким образом, в документе я храню только вид и координаты ПВХ-примитивов.
При открытии формы документа, картинка рисуется заново.
Чем не векторная графика? ;))

Так что использовать компоненту Василия пока погожу.
Все равно большое спасибо ему, натолкнул на некоторые мысли :))
39. kolyada 295 07.05.09 14:32 Сейчас в теме
(38) в том то и дело, что считать нестандарт ПВХ (арки, трапеции и т.п.) на примитивах никак нельзя. И они точно составляют больше 1% при массовом производстве (если конечно не сидеть на заказах новостроек) - заказчик ныне пошёл привиредливый. Так что векторная графика в 1С нужна и автор пусть дальше развивает контрол.
40. vip 07.05.09 14:47 Сейчас в теме
(39) Конечно, пусть развивает.
А я буду развивать свой :))

Все больше склоняюсь к мысли, что нестандарт можно посчитать и на бумажке ;))
Не стоит овчинка выделки.
41. kolyada 295 07.05.09 15:32 Сейчас в теме
(40) ну смотря какого размера фирма и требования к персоналу расчитывающему изделия. На той фирме где я работал изделия расчитывали менеджеры (не конструктора) и результат расчета они должны были сказать сразу вне зависимости от сложности. Научить даже одного менеджера правильно расчитать нестандарт - утопия. А их на фирме было 50 человек в офисе + куча в регионах и на точках по всей Москве.
45. Душелов 3902 08.05.09 23:55 Сейчас в теме
36. vladsol 06.05.09 22:57 Сейчас в теме
Рисовать действительно бывает нужно, поэтому +.
(11)(28) Я тоже сталкивался с этой проблемой в ПВХ (производство окон), тогда я пошел через использование PHP. Программно по заданным пользователям установкам генерился скрипт, выполнялся и в 1с возвращалась картинка. Жалко у меня тогда не было этой компоненты, жизнь была бы легче.
37. maljaev 789 07.05.09 00:42 Сейчас в теме
(36) vladsol, а ты бы поиском по сайту воспользовался. У меня уж год подобная штука лежит (правда не моя), только у Душелова она выполнена в виде ActiveX-контрола, что конечно же удобно, но до функционала Gflax не дотягивает. Конечно Дужелов и не будет дотягивать контрол до gflax, он просто скорее всего сделает тот функционал которого там нету - например векторные сплайны, анимацию, градиенты. Ну а в случае с ПВХ хватило бы и Gflax, по крайней мере с PHP бы не извращался.

Душелов, даёшь мощную векторную графику!!! :)
10. vip 05.05.09 17:28 Сейчас в теме
(8) Если рисунок рисуется по данным 1С или наоборот, данные берутся из рисунка, то через то место получается как раз, когда рисуешь ВНЕ 1С.
7. Душелов 3902 05.05.09 17:20 Сейчас в теме
(4) Ну к примеру можешь комменты почитать в (1) ссылка.
Что-то рисовать, графики какие-то.
59. rboy 22.06.09 16:28 Сейчас в теме
Счас ковыряюсь с Душелов.GDI на восьмерке,

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

Точки = Рис.СоздатьМассивТочек(4);
Рис.УстановитьТочкуВМассив(Точки, 0, Рис.СоздатьТочку(X+40, 10));
Рис.УстановитьТочкуВМассив(Точки, 1, Рис.СоздатьТочку(X+40, 40));
Рис.УстановитьТочкуВМассив(Точки, 2, Рис.СоздатьТочку(X+30, 30));
Рис.УстановитьТочкуВМассив(Точки, 3, Рис.СоздатьТочку(X+30, 20));

Рис.ЗаполнитьМногоугольник(Кисть, Точки);
Рис.РисоватьМногоугольник(ЧерноеПеро, Точки);

тут в цикле изменяется только "X". В результате появляется ругатня на функцию "ЗаполнитьМногоугольник", типо исключительная ситуация, Parameter is not valid.

Такое впечатление что функция ЗаполнитьМногоугольник может вызываться ограниченное количество раз
15. Abadonna 3836 05.05.09 17:37 Сейчас в теме
Ну лана, рисуйте;) Мне бы ваши заботы :))))))))))
16. vip 05.05.09 17:39 Сейчас в теме
(15) И скорость отрисовки на уровне пикселей при использовании GDI+ должна быть высокой.
> Мне бы ваши заботы
Стареешь, блин ;))
17. Душелов 3902 05.05.09 22:49 Сейчас в теме
На самом деле можно добавить и визуальное рисование, да оно не надо.
Как вариант - добавить шейпы, которые предварительно описаны и двигать их мышкой.
18. GSoft 2851 05.05.09 23:49 Сейчас в теме
19. Душелов 3902 05.05.09 23:54 Сейчас в теме
(18) Ага, что-то типа MS Visio получится :))
20. GSoft 2851 06.05.09 00:01 Сейчас в теме
а одним только формексом обойтись низя?

(18) ну в каком то усеченном варианте да
21. Душелов 3902 06.05.09 00:04 Сейчас в теме
(20) На сколько я знаю, 1С++ создает объект АктивХ, а формэкс пользуется ради "ПослеОткрытия".
22. GSoft 2851 06.05.09 00:12 Сейчас в теме
Василь а можешь сделать компоненту которая просто таскает картинки по форме + пару полигонов, типа линии, прямоугольника и круга?
23. Душелов 3902 06.05.09 00:13 Сейчас в теме
24. GSoft 2851 06.05.09 00:15 Сейчас в теме
общая идея: справочник картинок, оттуда выбираем ее и таскаем по форме
а потом сохраняем все это или в файл конфигураций,или в подчиненные справочники(в зависимости от необходимой реализации)
25. Душелов 3902 06.05.09 00:17 Сейчас в теме
Сохраняем итоговую картинку? Или набор шейпов?
26. GSoft 2851 06.05.09 00:21 Сейчас в теме
лучше второй вариант, готовая картинка как довесок

чтобы при повторном открытии можно было редактировать дальше
27. MrDen 06.05.09 01:39 Сейчас в теме
29. venger 2086 06.05.09 12:59 Сейчас в теме
(0) Василий, (просто не успел качнуть еще, не пробовал) а для игр динамических как, пойдет? Я ж думаю когда-нибудь сделать прохождение лабиринтов с трехмерным видом изнутри ( я про это http://infostart.ru/projects/3474/ ). Просто эта http://infostart.ru/projects/1747/ мне немного не подошла, т.к. обновлять целиком надо файл, а потом его заново отображать, или я не доразобрался с ней... Как думаешь?
31. Душелов 3902 06.05.09 16:24 Сейчас в теме
(29) Возможно. Просто закрашиваешь старое цветом фона и все.
А трехмерный вид изнутри это как? :)

(30) Это уже не к этой компоненте.
33. venger 2086 06.05.09 16:54 Сейчас в теме
(31) > А трехмерный вид изнутри это как? :)

Ну типа как в 3D-бродилках (тот же Doom), только попроще, без теней и крутой графики;-) В общем, не спрашивай лучше, сам боюсь;)
34. Душелов 3902 06.05.09 16:59 Сейчас в теме
(33) Это лучше мой 3Д склад использовать :))
30. CheBurator 06.05.09 13:14 Сейчас в теме
Да! и чтобы еще к графическому примитиву можно было привязывать некий "описатель" 1Совский - типа "Расшифровки" - а туда уже можно запихнуть какой-хочешь 1Совский объект - хоть СЗ, хоть ТЗ, хоть описательную строку... - вот такая у мну хотелка
32. roman 06.05.09 16:33 Сейчас в теме
БОЛЬШОЙ +. Василий, будете в Вильнюсе, милости просим в гости - с меня пиво, сам хотел писать подобное
35. Душелов 3902 06.05.09 16:59 Сейчас в теме
(32) Ну как буду в Вильнюсе - напомню ;)
42. elkpro 08.05.09 10:05 Сейчас в теме
Не могу заставить работать из под 1С 7.7.

Код такой

Перем Кисти_;

//***************************************************************
Процедура ПослеОткрытия()
Кисти_ = СоздатьОбъект("АктивИкс");
Кисти_.УстановитьАтрибут(Форма, "АктХ");
Кисти_.СоздатьЭУ("Душелов.GDI");
Кисти_.УстановитьФокус();

КонецПроцедуры

На этом этапе все нормально, но потом на форме пытаюсь сделать

Кисти_.НоваяКартинка(400,200);

выдает ошибку Поле агрегатного объекта не обнаружено (НоваяКартинка).
Почему так?
43. Ёпрст 1036 08.05.09 10:06 Сейчас в теме
(42) Кисти_.Объект.НоваяКартинка(400,200);
47. vladimir-boy 29.05.09 17:16 Сейчас в теме
Отличная разработка! Просто жесть!!! Автору большой плюс и признание!
Но к сожаленью так и не смог ничего нарисовать в семёрке, так как нет реального живого примера например элементарной обработки или отчётика, где реализован весь етот шедевр!!!
У меня к примеру(42) выдаёт ошибку: "Неудачная попытка создания объекта (АктивИкс)"
Напишите пожалуйста например обрабоку с кодом построения точки, линии на форме!
А вообще огромное человеческое спасибо!!!
48. Ёпрст 1036 29.05.09 17:22 Сейчас в теме
(47) Установите 1с++ для начала, раз ругается на объект АктивИкс...
vladimir-boy; +1 Ответить
49. vladimir-boy 29.05.09 18:34 Сейчас в теме
(48) Спасибо ЁПРСТ! Забыл ЗагрузитьВнешнююКомпоненту, но после загрузки проблема не исчезла снова новая ошибка: "Неверный идентификатор атрибута"
Ребята кто-нить может выложить пример.ert, чтоб было наглядно понятно как и что? Заранее огромное пасибо!!!
44. elkpro 08.05.09 10:27 Сейчас в теме
46. alekseineputin 12.05.09 15:54 Сейчас в теме
Уверен, что хорошая разработка. Плюс.
50. Душелов 3902 29.05.09 20:52 Сейчас в теме
Добавил пример работы с компонентой из 7.7
vladimir-boy; +1 Ответить
51. vladimir-boy 01.06.09 11:13 Сейчас в теме
(50)Пример - суперсила!!! Большое пребольшое спасибо!!!
52. MadRabbit 101 22.06.09 11:38 Сейчас в теме
Знатная штука! С разрешения автора попользуюсь немного. Вот если бы кто-нибуть подсказал как такое написать :)) с добавлением Drag&Drop... или может ссылочку какую-нибуть полезную кинул... то с меня пиво!
53. Душелов 22.06.09 11:52 Сейчас в теме
54. MadRabbit 101 22.06.09 11:54 Сейчас в теме
(53) Надо пользователюкартинки по форме перетаскивать, а мне - отслеживать, и при масштабировании, смене ориентации страницы и т.д. учитывать. А как пока не пойму...
55. Душелов 22.06.09 11:56 Сейчас в теме
(54) Данная компонента исключительно для программного рисования. Никаких юзерабилити действий.

Для "перетаскиваний" есть соседняя разработка.
56. MadRabbit 101 22.06.09 12:19 Сейчас в теме
(55) "[VectorDrawing] - Векторная графика в 1С"? Смотрел, можно было бы использовать, есть перетаскивание, можно сделать масштабирование, группировку - все замечательно, но пункт контекстного меню "О компоненте" не дает мне возможности ее использовать в своих разработках. Что, по моему, вполне естественно. По этому хотелось бы все-таки самому попробовать разобраться и написать собственную ВК. Кроме того, все-таки хочеться самому чему-нибуть научиться, а не тупо таскать с ИС чужие разработки.
Душелов; +1 Ответить
57. Душелов 22.06.09 13:18 Сейчас в теме
58. MadRabbit 101 22.06.09 13:34 Сейчас в теме
(57) Сэнкс, а то я уже полез за покрывшимся пылью диском с Delphi. Хотя, как говорится, давно не брал я в руки шашку, так что или вспонинать Delphi или изучать .net - одно и тоже :))
60. rboy 22.06.09 16:32 Сейчас в теме
причем если вызываю этот цикл в процедуре "ПриОткрытии" документа, то вс нормально, если вызываю из обработчика нажатия кнопки в форме того же документа, то на определенном номере фигуры выпрыгивает ошибка.
61. Душелов 22.06.09 16:41 Сейчас в теме
(60) Может передаешь несуществующие координаты?

Сделай обработку с примером, где эта ошибка показывается....
62. rboy 22.06.09 17:08 Сейчас в теме
Сейчас сделаю, куда выложить?... я недавно на этом сайте.
64. rboy 22.06.09 17:30 Сейчас в теме
ну вот обработочка

http://narod.ru/disk/10148525000/%D0%92%D0%BD%D0%B5%D1%88%D0%BD%D1%8F%D1%­8F%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B01.epf.html

Нажми на кнопку "выполнить" 2 раза и получишь результат.
Кроме того если попробуешь открыть эту обработку второй раз не закрывая 1С то глюк увидишь после первого нажатия на кнопку "Выполнить"

66. Душелов 22.06.09 20:08 Сейчас в теме
(64) Скачивай обновление.
В своей обработке в процедуре рисования квадратиков добавь очистку памяти

Рис = ЭлементыФормы.GDI;
Рис.ОчиститьПамять();
Рис.НоваяКартинка(700, 700);

Ну и перепиши создание кистей.
65. Душелов 22.06.09 20:06 Сейчас в теме
Изменено:

- СоздатьКисть(r, g, b); //создает объект типа "Кисть" заданного цвета
//r, g, b - числа

Добавлено:

- ОчиститьПамять();
67. rboy 23.06.09 12:31 Сейчас в теме
Вроде заработало после того как поменял СоздатьКисть(r, g, b); даже Рис.ОчиститьПамять(); не использовал.
68. Душелов 23.06.09 12:35 Сейчас в теме
(67) Если часто будете пользоваться перерисовкой, то память стоит очищать, дабы в 1С-ке не было утечки памяти.
69. rboy 23.06.09 12:41 Сейчас в теме
Кстати функция ОчиститьПамять() не работает.

{Форма.Форма1(70)}: Ошибка при вызове метода контекста (ОчиститьПамять): Произошла исключительная ситуация (Dushelov.GDI): Method not found: 'System.GCNotificationStatus System.GC.WaitForFullGCComplete()'.
Рис.ОчиститьПамять();
по причине:
Произошла исключительная ситуация (Dushelov.GDI): Method not found: 'System.GCNotificationStatus System.GC.WaitForFullGCComplete()'.
72. rboy 23.06.09 17:22 Сейчас в теме
73. Душелов 23.06.09 17:31 Сейчас в теме
(72) У меня ее нет.
Поставь себе SP1 для фреймворка, видимо этот метод был добавлен позже.
75. Душелов 25.06.09 22:15 Сейчас в теме
(72) Обновил, пробуй.
Добавил еще сглаживание.
70. rboy 23.06.09 12:45 Сейчас в теме
а нельзя ли воткнуть процесс очистки памяти поместить в функцию НоваяКартинка(), а то запаришся каждому объяснять для чего она нужна.
71. Душелов 23.06.09 13:06 Сейчас в теме
(70) При новой картинке она не нужна.
74. rboy 23.06.09 22:02 Сейчас в теме
Вот такой фреймворк пойдет?

http://www.microsoft.com/downloads/details.aspx?FamilyID=5b2c0358-915b-4eb5-9b1d-10e506da9d0f&DisplayLang=ru

просто у тебя в ридмишке дана ссылка на фреймворк без всяких сервиспаков, я его и ставил.
Спрашиваю прежде чем качать, потму что инет у меня не очень анлим и качать все подряд не очень охота.
76. Душелов 26.06.09 11:03 Сейчас в теме
Добавлены события:

- ПриНажатииКнопкиМышки(Кнопка, X, Y);
- ПриДвиженииМышкой(Кнопка, X, Y);
- ПриОтжатииКнопкиМышки(Кнопка, X, Y);
- ПриШелчкеМышкой(Кнопка, X, Y);
- ПриДвойномШелчкеМышкой(Кнопка, X, Y);
Sudareva; +1 Ответить
77. rboy 26.06.09 14:04 Сейчас в теме
Вот про эти как раз события я и хотел намекнуть. Они как раз нужны в задаче которую я решаю. Спасибо.
78. rboy 26.06.09 14:09 Сейчас в теме
Новый косяк

Рис = ЭлементыФормы.GDI;
ЦветФона=Рис.ПолучитьЦвет(255, 251, 240);
Рис.НоваяКартинка(700, 700);
Рис.Очистить(ЦветФона);

Получаем:

{Документ.XXX.Форма.ФормаДокумента(130)}: Метод объекта не обнаружен (ПолучитьЦвет)
ЦветФона=Рис.ПолучитьЦвет(255, 251, 240);
79. rboy 26.06.09 14:16 Сейчас в теме
(78) Забираю свои слова обратно ошибки нет, просто объект ActiveX надо было удалить и вставить новый.
80. rboy 26.06.09 14:25 Сейчас в теме
События
- ПриНажатииКнопкиМышки(Кнопка, X, Y);
- ПриДвиженииМышкой(Кнопка, X, Y);
- ПриОтжатииКнопкиМышки(Кнопка, X, Y);
- ПриШелчкеМышкой(Кнопка, X, Y);
- ПриДвойномШелчкеМышкой(Кнопка, X, Y);

не работают даже в твоем примере!!!

но Рис.ОчиститьПамять(); - заработала на новой длл-ке без обновлений фреймворка
81. Душелов 26.06.09 14:34 Сейчас в теме
(80) Обнови до SP1 и события будут ловиться. Да и проверь, подписаны ли эти события у компоненты (после того, как удалил/добавил) они у тебя, скорее всего пустые, не подписанные.
82. Alex_Sun 05.10.09 08:42 Сейчас в теме
А эта компонента позволяет програмно узнать текущий цвет какой либо определенной точки рисунка?
83. MAXXL 10 17.10.09 11:15 Сейчас в теме
Подскажите, как в 7.7 использовать события ПриНажатииКнопкиМышки ?
84. Душелов 17.10.09 14:14 Сейчас в теме
(83)

v7: Использовать 1С++ и FormEx
85. MAXXL 10 17.10.09 17:01 Сейчас в теме
(84) Про 1С++ это понятно,я имел в виду события от этой компоненты. Или они для чего предназначены?
86. Душелов 17.10.09 22:35 Сейчас в теме
Ну вот в 1С++ подписываться на эти события и их обрабатывать.
87. zk96 04.12.09 15:21 Сейчас в теме
Можно ли в катинку на форме скопировать картину из памяти? Обе картинки объекты типа Душелов.GDI.
88. asdfgcom 372 07.02.10 17:15 Сейчас в теме
Процедура КнопкаВыполнитьНажатие(Кнопка)
КрасноеПеро = Рис.СоздатьПеро(Рис.ПолучитьЦвет(255, 0, 0), 1);
Рис.РисоватьЛинию(КрасноеПеро,1, 1, 100, 100);
КонецПроцедуры


линия не выводится на форму, пока не свернешь/развернешь окно. Как устроить обновление изображения или что-то в этом роде?
89. asdfgcom 372 07.02.10 18:09 Сейчас в теме
Процедура КнопкаВыполнитьНажатие(Кнопка)
КрасноеПеро = Рис.СоздатьПеро(Рис.ПолучитьЦвет(255, 0, 0), 1);
Рис.РисоватьЛинию(КрасноеПеро,1, 1, 100, 100);
КонецПроцедуры

линия не выводится на форму, пока не свернешь/развернешь окно. Как устроить обновление изображения или что-то в этом роде?


Отвечаю сам себе:
Рис.Refresh();

Уважаемый Dushelov. Control на 5 баллов. То, что нужно, спасибо. Только хотелось бы более подробного описания функций. Трудновато до всего доходить методом тыка...
90. zk96 01.05.10 19:26 Сейчас в теме
Подскажите, как загрузить картинку из памяти, IPicture.
91. zk96 07.05.10 15:09 Сейчас в теме
92. aegoncharov 29.07.10 06:12 Сейчас в теме
А как нарисвать точку? Специальной процедуры нет, а при рисовании линии с совпадающим концом и началом не рисуется ничего.
93. quadro3 21.09.10 11:53 Сейчас в теме
Под Windows 7 не фурычит.
Видимо из-за встроенного там NET 3.5 ((
При установке не находит ngen
Есть лекарство?
94. dvv_mail 28.10.10 19:21 Сейчас в теме
Поддерживаю предыдущего оратора. Какие перспективы работы компоненты по Win7
95. Tria 14 30.12.10 15:57 Сейчас в теме
А что на счет полос прокрутки? Нарисовал большой прямоугольник, он выходит за рамки элемента, но просмотреть все нет возможности.
96. Душелов 3902 30.12.10 22:01 Сейчас в теме
(95) Основная идея - программно рисовать. Отображать можно в стандартном 1С-овском поле картинки
97. Tria 14 31.12.10 15:38 Сейчас в теме
да вот отображать надо именно в Вашей компоненте. Задача в следующем: нарисовать таблицу (большую или нет зависит от пользователя), в некоторых ячейках нарисовать цветные квадратики, некоторые ячейки соединить дугами, и дат пользователю возможность перемещать эти квадратики. А для перемещения надо отслеживать события нажатие кнопки мыши, движение курсора и отжатие кнопки. Поэтому рисовать картинку, сохранять в файл и загружать в поле картинки не подходит.
98. Tria 14 10.01.11 15:42 Сейчас в теме
Нашёл выход: на форме разместить панель, отключить свойство "использовать только видимую область", на ней разместить актив-икс и у него указать ширину и высоту большие, тогда полосы прокрутки будут у панели и много места для рисования! Спасибо за компоненту!
wanderer-miass; Душелов; +2 Ответить
Оставьте свое сообщение

См. также

Управляемые формы. Изменение формы списка или формы объекта без внесения изменений в типовые формы (без использования расширений) 83

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом

Вносим изменения в типовые формы объектов (документы, справочники, журналы, обработки, общие формы). Не снимая с поддержки эти формы. Создаем программно элементы из общего модуля. Для примера рассмотрю добавление колонки "Скрепка" в форму списка документа. Если к документу привязан файл, то в списке в новой колонке должна отображаться "скрепка".

12.11.2019    4664    John_d    22       

Перенос данных УТ 10.3 => УТ 11 / КА 2 / ERP 2 (ЕРП 2) (документы, остатки и справочная информация из "1С:Управление торговлей, ред. 10.3" в УТ 11 / КА 2 / ERP 2). Обновлен до УТ 10.3.56.х, УТ 11.4.10.х, КА 2.4.10.х и ERP 2.4.10.х! Промо

Уже более 100 компаний приобрели перенос и выполнили переход на УТ 11 / КА 2 / ERP 2 с помощью нашей разработки! Обработка перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2 позволяет перенести не только остатки на указанную дату (как типовой перенос), но и все возможные документы за выбранный период. При выходе новых релизов этих программ оперативно выпускаем обновление обработки. Предоставляем техническую поддержку. Можем сделать бесплатный тестовый перенос!

29700 руб.

ELK. Время изумительных историй! 27

Статья Системный администратор Программист Бизнес-аналитик Руководитель проекта Нет файла v8 1cv8.cf Бесплатно (free) Журнал регистрации Работа с интерфейсом

Всем привет! Сегодня хочу рассказать вам несколько полезных историй про то как нам помог Elastic search в связке с Kibana. Про сам Elastic рассказывать не буду, уже все давным давно описали и до меня. Все обычно говорят что это полезно, это классно. В то же время, очень мало кто рассказывает про практические ситуации: когда и как помог Elastic. Итак, начнем.

31.10.2019    3734    slozhenikin_com    25       

Лайфхаки 1С (часть 2) Настройка работы интерфейса такси. Настройка и советы по работе 11

Статья no Нет файла v8 1cv8.cf Россия Бесплатно (free) Работа с интерфейсом

Советы по настройке интерфейса Такси и особенности работы в этой среде.

24.10.2019    3066    VachKirp    7       

Онлайн-курс "Технология выполнения проектов ERP-класса – процессный подход". Третий поток. Курс проходит с 21 января по 18 марта 2020 года. Промо

Курс разработан Внедренческим центром «Раздолье». Курс предназначен для подготовки аналитиков, архитекторов и руководителей проектов автоматизации процессов управления с использованием комплексных ИТ-систем (1С:ERP, 1С:УХ, 1С:КА, 1С:УТ). В основе курса лежит методика применения процессного подхода.

9000 рублей

Создание асинхронных виджетов 103

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом

Описание нескольких способов создания асинхронных виджетов для 1С:Предприятия. Рассматриваются способы с использованием HTTP-сервисов и фоновых заданий.

16.10.2019    5105    YPermitin    15       

Формы. Трудности программной работы 79

Статья Программист Нет файла v8 v8::УФ 1cv8.cf Бесплатно (free) Работа с интерфейсом

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

06.10.2019    5429    YPermitin    21       

Подборка программ для взаимодействия с ЕГАИС Промо

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

Лайфхаки 1С (часть 1). Настройки отчетов и печатных форм 1С 40

Статья Программист Пользователь Стажер Нет файла v8 1cv8.cf Россия Бесплатно (free) Работа с интерфейсом

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

02.10.2019    6301    VachKirp    9       

Добавляем виджет "Задачи от меня" в Документооборот 2.1 28

Статья Программист Нет файла v8 v8::Бизнес-процессы ДО Россия Бесплатно (free) Практика программирования Работа с интерфейсом

Небольшая доработка Документооборота 2.1 для возможности добавления виджета "Задачи от меня" в обработку Текущие дела.

25.09.2019    2708    Sergey_Borisovi4    3       

1С:Предприятие через Интернет. 1С:Fresh Промо

Ведение бухгалтерского и налогового учет, сдача отчетности, управление бизнесом из любой точки мира. Привычные программы «1С» через Интернет без приобретения коробочных программ.

[Механизм интерфейса] Часы 55

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом Практика программирования Разработка

Добавляем цифровые часы на форму, как бонус рассмотрим вариант и с аналоговыми.

26.08.2019    4350    rpgshnik    34       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Произвольная начальная страница через расширение (программно) 42

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом

Установка своей формы произвольному пользователю на начальную страницу.

14.08.2019    3829    nagaitseff    14       

Подходы, методы и инструменты UX/UI для разработки эффективных интерфейсов на 1С 32

Статья Программист Нет файла v8 Бесплатно (free) Работа с интерфейсом

Интерфейсам в 1С обычно уделяют мало внимания. Это в итоге снижает востребованность платформы, делает ее неконкурентной, лишает большой доли рынка. Как не потерять старых клиентов и привлекать новых с помощью интерфейсов, а главное – как сделать «правильный» интерфейс, рассказал участникам конференции Infostart Event 2018 Education управляющий партнер и основатель консалтинговой группы WiseAdvice Иван Тягунов.

07.08.2019    5613    IvanAT1981    14       

Перенос данных КА 1.1 / УПП 1.3 => БП 3.0 (перенос остатков, документов и справочников из "1С:Комплексная автоматизация 1.1" / УПП 1.3 в "1С:Бухгалтерия 3.0"). Обновлен до версий КА 1.1.115.х, УПП 1.3.127.х! Промо

Разработка позволяет перенести остатки по всем счетам бух.учета в программу "1С:Бухгалтерия предприятия 8", ред. 3.0 на выбранную дату начала ведения учета. Также переносятся документы за период и вся необходимая справочная информация. Правила оперативно обновляю при выходе новых релизов. Рассылка обновлений правил бесплатно в течение 12 месяцев. Есть видеодемонстрация проведения переноса данных. Конфигурации при использовании обмена остаются полностью типовыми. Перенос данных возможен в Бухгалтерию 3.0 версии ПРОФ, КОРП или базовую.

24700 руб.

Пользовательские настройки системы компоновки данных 88

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Работа с интерфейсом

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

09.07.2019    9055    ids79    0       

Онлайн-интенсив "Бизнес-процессы для подготовки к экзамену 1С:Специалист по платформе" 12 декабря 2019 г. Промо

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

777 рублей

Подсистема "Варианты отчетов". Используете ли Вы ее правильно? 220

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом БСП (Библиотека стандартных подсистем)

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    19222    YPermitin    49       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Расшифровка отчета на СКД с детализацией по выбранному полю на основе БСП 93

Статья Программист Нет файла v8 v8::УФ v8::СКД 1cv8.cf Россия Бесплатно (free) Практика программирования Работа с интерфейсом Разработка

В данной статье рассмотрим механизм работы с расшифровкой отчета, созданного при помощи системы компоновки данных, в управляемом приложении. Показывать буду на примере реальной задачи. Условие: использовать имеющиеся в конфигурации механизмы БСП, с минимальными и "правильными" изменениями. Расшифровка должны быть двух видов на каждом поле: 1. Открывать ссылочный объект 2. Открывать новую форму с детализацией табличной части документа. Собственно ради второго пункта и писалась статья, в основном для себя, чтобы не забыть.

14.05.2019    9466    Viktor_Ermakov    6       

Свой макет оформления отчета 35

Статья Программист Нет файла v8 v8::СКД Россия Windows Бесплатно (free) Работа с интерфейсом

Пример создания и оформления и применения своего (пользовательского ) макета оформления для СКД.

24.04.2019    5953    olegpkc    5       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Динамический вывод таблицы значений на форму 35

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом

Вывести на форму таблицу значений, а потом на её место другую, третью, четвёртую? Не вопрос.

11.01.2019    6825    Vlad1917    26       

Перенос данных УПП 1.3 => ERP 2 (ЕРП) / УТ 11 / КА 2.х (обработка переноса документов, остатков и справочников из "1С:Управление производственным предприятием, ред. 1.3" в ERP / УТ 11 / КА 2). Обновлен до УПП 1.3.127.х, КА 2.4.10.х и ERP 2.4.10.х! Промо

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

29700 руб.

Прикладной пример переработки стандартной формы РМК - Розница 74

Статья Программист Нет файла v8 Розница УУ Кассовые операции Розничная торговля Бесплатно (free) Работа с интерфейсом

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

04.10.2018    12237    asdfgcom    56       

Cправочная информация. Картинки. 16

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом

Справочную информацию мало кто любит писать, но вот захотелось. И что с этим делать?

06.06.2018    7150    aspirator23    2       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Итоги в динамическом списке 48

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом

Предлагаю вариант, как быстро сделать итоги в динамическом списке, например в форме списка журнала документов.

28.05.2018    9972    CXY    16       

Программное управление обычными формами документов и справочников в УПП/КА 34

Статья Программист Нет файла v8 v8::УФ КА1 УПП1 Россия Бесплатно (free) Работа с интерфейсом

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

09.05.2018    9232    dima_home    9       

Перенос данных БП 2.0 => УТ 11 / КА 2 / ERP 2 (перенос остатков, документов и справочников из "1С:Бухгалтерия предприятия 8", ред. 2.0 в "1С:Управление торговлей 8", ред.11 / КА 2 / ERP 2). Обновлено до УТ 11.4.10.х, КА 2.4.10.х, ERP 2.4.10.х! Промо

Перенос позволяет загрузить в УТ 11 / КА 2 / ERP 2 документы за выбранный период, справочную информацию и остатки по счетам бух. учета. Переносятся остатки денежных средств, взаиморасчетов, остатки товаров и материалов на складах. Переносятся девятнадцать основных видов документов за выбранный период и вся нормативно-справочная информация. Есть фильтр по организации. Если нужно переносить что-то дополнительно, то обычно бесплатно дорабатываю правила (перед покупкой согласуйте необходимые доработки).

29700 руб.

Решение проблемы отображения интерфейса Такси на экранах с маленьким разрешением 26

Статья Программист Нет файла v8 v8::УФ Беларусь Windows Бесплатно (free) Работа с интерфейсом

Решение возникшей проблемы при переходе с интерфейса 8.2 на интерфейс Такси на экранах с маленьким разрешением.

06.04.2018    10392    Drak87    18       

Красивые графики. Пошаговая инструкция (Highstock) 122

Статья Программист Нет файла v8 Бесплатно (free) Работа с интерфейсом

Данный подход опробован на библиотеках: Нighcharts и Highstock. Для работы будет необходима 1С и браузер Google Chrome. Чукча не писатель (первая публикация).

22.11.2017    14900    Degrement    20