Имя: Пароль:
1C
1С v8
УФ: Как вызвать программно стандартную команду "Просмотреть картинку"
0 runoff_runoff
 
14.08.18
12:17
Есть управляемая форма.
На форма размещено поле картинки.
Всё хорошо, картинка отображается.
Поле картинки имеет стандартное контекстное меню, в котором есть команда "Просмотреть картинку", по которой платформа открывает окошко просмотра этой самой картинки.
Команда очень хорошая, но она есть только в этом контекстном меню.
В списке стандартных команд (на закладке Команды) её нет, поэтому разместить её непосредственно на других командных панелях не представляется возможным.

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

PS: Если, например, было бы поле табличного документа, то его стандартные команды были бы доступны на закладке стандартных команд, и их можно было бы разместить на форме как захочется.
1 Кац
 
14.08.18
12:19
нет, это платформенная фича
2 Tatitutu
 
14.08.18
12:34
(1) и да и нет

вызывает тоже самое действие

Процедура ПросмотрКартинки(Элемент)
   ОткрытьЗначение(ЭлементыФормы.МояКартинка.Картинка)
КонецПроцедуры
3 runoff_runoff
 
14.08.18
12:38
(2) ЭлементыФормы - это из прошлой жизни ;-)
4 runoff_runoff
 
14.08.18
12:41
В принципе (2) уже ответил на вопрос. Вопрос закрыт.
5 runoff_runoff
 
14.08.18
12:49
Более развернуто.
Пусть есть справочник, в котором есть реквизит ХранилищеЗначения для хранения картинки (ХранилищеКартинки).
В форме объекта добавляем реквизит "АдресКартинки" (Строка,0) и размещаем его как поле картинки.
Далее, полный цикл работы с такой картинкой (загрузка, очистка и просмотр) оказался очень прост.
6 runoff_runoff
 
14.08.18
12:49
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

    АдресКартинки = ПоместитьВоВременноеХранилище(ТекущийОбъект.ХранилищеКартинки.Получить(), УникальныйИдентификатор);
    
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    
    Если ЭтоАдресВременногоХранилища(АдресКартинки) Тогда
        ТекущийОбъект.ХранилищеКартинки = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(АдресКартинки), Новый СжатиеДанных(9));
    Иначе
        ТекущийОбъект.ХранилищеКартинки = Неопределено;
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьКартинку(Команда)
    
    НачатьПомещениеФайла(Новый ОписаниеОповещения("ЗагрузитьКартинкуЗавершение", ЭтотОбъект), , , Истина, УникальныйИдентификатор);
    
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьКартинкуЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
    
    Если Результат = Истина Тогда
        АдресКартинки = Адрес;
        Модифицированность = Истина;
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура ОчиститьКартинку(Команда)
    
    АдресКартинки = "";
    Модифицированность = Истина;
    
КонецПроцедуры

&НаКлиенте
Процедура АдресКартинкиНажатие(Элемент, СтандартнаяОбработка) // нажатие на поле картинки
    
    СтандартнаяОбработка = Ложь;
    ПоказатьЗначение(, Новый Картинка(ПолучитьИзВременногоХранилища(АдресКартинки)));
    
КонецПроцедуры
7 Кац
 
14.08.18
13:10
ПоказатьЗначение отрабатывает так же. Не знал, посыпаю голову пеплом :)
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.