Имя: Пароль:
1C
 
Картинка во внешней обработке
,
0 Momus
 
22.10.21
14:34
УФ. Загрузил картинку в макет (двоичные данные) обработки. В форме создал реквизит типа "Картинка", вывел на форму. При создании пишу:
КартинкаРеквизит = Новый Картинка(РеквизитФормыВЗначение("Объект").ПолучитьМакет("МояКартинка"));
Картинка пустая. Что не так?
1 vde69
 
22.10.21
14:37
Сделай декорацию
2 Momus
 
22.10.21
14:38
(1) я не понял как декорации присвоить картинку из двоичных данных
3 vde69
 
22.10.21
14:40
Декорация бывает двух видов, текстовой и картинкой
4 Momus
 
22.10.21
14:41
(3) я не понял как декорации присвоить мою картинку из двоичных данных
5 vde69
 
22.10.21
14:42
Ну и общая концепция 1с с картинками нужно работать через пути к ним,
То есть через строку или к метаданные или к файлу на диске или в хранилище
6 Галахад
 
гуру
22.10.21
14:44
(4) Декорация.Картинка = МояКартинка;
7 Momus
 
22.10.21
14:45
(5) т.е. обработку со своими картинками на форме, печатной форме и т.д. я не могу создать?
8 Momus
 
22.10.21
14:45
(6) Недопустимое значение
9 Momus
 
22.10.21
14:47
(8) если имеется ввиду элемент формы декорация
10 Галахад
 
гуру
22.10.21
14:47
(8) Хм. А что там за значение?
11 vde69
 
22.10.21
14:48
(7) можешь, но я сейчас без компа, чтобы пример дать
12 Momus
 
22.10.21
14:49
(10) и там, и там картинка.
Элементы.КартинкаФормы.Картинка = Новый Картинка(РеквизитФормыВЗначение("Объект").ПолучитьМакет("МояКартинка"));;
13 Momus
 
22.10.21
15:05
Сделал так:
КартинкаРеквизит - тип Строка
КартинкаФормы - вид Поле картинки
При создании:
КартинкаРеквизит = ПоместитьВоВременноеХранилище(Новый Картинка(РеквизитФормыВЗначение("Объект").ПолучитьМакет("МояКартинка")), УникальныйИдентификатор);
14 Momus
 
22.10.21
15:09
Вид, конечно, ппц у такой картинки. Может быть через декорацию можно сделать?
15 Momus
 
22.10.21
15:13
Из СП для картинки декорации:
Примечание:
Если картинка задается программно, может быть установлена картина вида Пустая или ИзБиблиотеки.
Получается, что только мой способ рабочий
16 Ёпрст
 
22.10.21
15:41
(15) ну, для чего то они всё же влепили тип реквизита Картинка, значит, по идее и туда можно зхапихать. Не всё же делать строку с отображением картинка
17 Ёпрст
 
22.10.21
15:53
Видать реквизит формы с типом картинка, нужен только для хранения самой картики..без показа на форме (видать не доработали это дело).
Проверил, так и есть :


&НаСервере
Функция Команда1НаСервере()
       Возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
КонецФункции
&НаКлиенте
Процедура Команда1(Команда)
    РеквизитСТипомКартинка = Новый Картинка(Команда1НаСервере());
    РеквизитНаФормеСТипомСтрока = ПоместитьВоВременноеХранилище(Реквизит1.ПолучитьДвоичныеДанные());
КонецПроцедуры

18 Ёпрст
 
22.10.21
15:54
поправочка:

&НаСервере
Функция Команда1НаСервере()
       Возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
КонецФункции
&НаКлиенте
Процедура Команда1(Команда)
    РеквизитСТипомКартинка = Новый Картинка(Команда1НаСервере());
    РеквизитНаФормеСТипомСтрока = ПоместитьВоВременноеХранилище(РеквизитСТипомКартинка.ПолучитьДвоичныеДанные());
КонецПроцедуры
19 Ёпрст
 
22.10.21
15:56
Ну или так писать, если реквизит не нужен для хранения..
РеквизитНаФормеСТипомСтрока  = ПоместитьВоВременноеХранилище(Команда1НаСервере());
20 Momus
 
22.10.21
16:20
Пришлось так и делать, жаль только, что событие нажатия не работает в таком варианте :(
21 Ёпрст
 
22.10.21
16:28
(20) самый прикол, что для реквизита с типом картинка, картинка там всё же есть, тока она не отображается. Воткни этому реквизиту "гиперрсылка" - если потом нажать на картинку, оно откроется в новом окне как надо.
22 Ёпрст
 
22.10.21
16:29
И событие нажатия имеется
23 Ёпрст
 
22.10.21
16:30
И да, если реквизит с типом строка и видом поле картинки - то тоже, воткни в свойстве- гипперссылка и будет работать событие нажатие в коде + курсор изменится.
24 Momus
 
22.10.21
16:38
(21) круто! Спасибо :)
25 vde69
 
22.10.21
20:44
есть еще способ юзать через гипер подсказку к реквизиту.

Там можно в тексте сделать и раскраску и гиперссылку только части текста и еще много чего
26 Гений 1С
 
гуру
23.10.21
08:12
27 серый КТУЛХУ
 
24.10.21
00:39
// 1. Реквизит обработка "Избражение" тип "Строка"
// 2. Макет "МакетДвоичныеДанныеКартинка" в который загрузио картинку.
// 3. В диалог добавлен элемент типа "Поле":
//    3.1. Вид = Поле картинки
//    3.2. Данные = Объект.Изображение
//    3.3. Гиперссылка = Да
//    3.4. Подписка на событик "Нажатие" = "ПолеДляКартинкиНажатие"
// ******* Модуль формы:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Объект.Изображение = ПоместитьВоВременноеХранилище(РеквизитФормыВЗначение("Объект").ПолучитьМакет("МакетДвоичныеДанныеКартинка"));
КонецПроцедуры //ПриСозданииНаСервере

&НаКлиенте
Процедура ПолеДляКартинкиНажатие(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь; Сообщить(Элемент.Имя + " = """ + Объект.Изображение + """");
    ПоказатьПредупреждение(, Элемент.Имя + Символы.ВК + " = """ + Объект.Изображение + """", 11);
КонецПроцедуры //ПолеДляКартинкиНажатие

и картинка рисуется и нажатие отрабатывает (ПолеДляКартинки = "e1cib/tempstorage/b6550337-d8c8-46dc-a7d7-04bd4f8993a9?seanceId=6eb58469-d3f7-4e30-949f-de69351a793f")
что я делаю не так?
28 серый КТУЛХУ
 
24.10.21
00:40
*
// ОБРАБОТКА (тупо внешняя):
// 1. Реквизит "Избражение" тип "Строка"
29 Ёпрст
 
24.10.21
10:56
(27) не читаешь тему целиком.
30 Ёпрст
 
24.10.21
10:56
+29
>>>>что я делаю не так?
31 серый КТУЛХУ
 
25.10.21
00:14
(29): ну вообще-то читаю. в том числе (и прежде всего) - цель: показать в диалоге обработки картику, зашитую в двоичный макет этой обработки (как это формулировалось изначально) и чтобы на клик обработчик повесить (как после уточнилось). что и продемонстрировано. при том, что ваши пляски вокруг поля картинки - может конечно весело, но в смысле цели - как-то ниочем.
32 Ёпрст
 
25.10.21
01:41
(31) да нет, в ответах всё есть и про поле картинки и про поле в виде строки с отображением картинка, и про ловлю клика.