Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Вызвать процедуру или функцию из картинки на форме, как?

v7: Вызвать процедуру или функцию из картинки на форме, как?
Я
   MWWRuza
 
20.04.18 - 12:46
Чего-то затупил конкретно... Собственно, сабж...
Подробнее: Форма(справочника, но, это не важно). В ней есть поле картинки. Как кликнув по картинке, вызвать процедуру модуля формы(в ней я хочу открывать картинку методом ЗапуститьПриложение(ПутьКФайлу))-???
В самой картинке есть только идентификатор... Чем отловить событие клика на этом поле?
 
 
   Vippi
 
1 - 20.04.18 - 13:00
(0) FormEx
   dk
 
2 - 20.04.18 - 13:03
штатно тока кнопку ниже картинки сделать и ее жмакать
   MWWRuza
 
3 - 20.04.18 - 14:22
Ясно, спасибо. А я думал, что я туплю... Оказывается, действительно штатными методами нельзя.
   Kigo_Kigo
 
4 - 20.04.18 - 14:49
можно сделать большую кнопку а на нее запилить картинку, на кнопку процедуру, а зачем ЗапуститьПриложение(ПутьКФайлу)) ?
если только рассмотреть картинку, можно вызвать обработку на форме которой лежит большая картинка и при открытии погружать нужную картинку
   MWWRuza
 
5 - 20.04.18 - 14:58
Понятно... Сделал без особых извращений, кнопочку маленькую с буковкой "О", как во многих формах, где выбираемый реквизит можно просматривать, в стандартном стиле. Сабж был совсем не принципиален, скорее, для общего развития.
   MWWRuza
 
6 - 20.04.18 - 15:01
А делать отдельную форму для просмотра большой картинки? Смысла особого не вижу, штатный виндовый "Просмотр изображений и факсов", вполне устраивает.
   Kigo_Kigo
 
7 - 20.04.18 - 15:03
(6) это визовет открытие не нужных домолнительных окон вне 1с, на ворме только картинка с индентификатором картинка
вот код, у меня так

Процедура ПриОткрытии()
    ИмяФотографии = Форма.Параметр;
    ИмяФотографии = СокрЛП(ИмяФотографии);
    Если ПустаяСтрока(ИмяФотографии) = 1 Тогда
        Сообщить("Файл с фотографией не сопаставлен");
    Иначе
        Если ФС.СуществуетФайл(ИмяФотографии) =1 тогда
            Картинка.РежимРисования(3);
            Картинка.Загрузить(ИмяФотографии);
        Иначе
            Предупреждение("Отсутствует файл фотографии");
        КонецЕсли     
    КонецЕсли;
    
    
КонецПроцедуры
   MWWRuza
 
8 - 20.04.18 - 15:15
Понятно. Окна вне 1С, мне особо не мешают, зато открывают картинку в исход сделал вот так:

В глобальнике, потому, что используется в нескольких местах, кроме справочника:

// Влад 19.01.2018

Функция НормализоватьАртикул(Арт) Экспорт
    Рез    = СокрЛП(Арт);
    Рез    = СтрЗаменить(Рез,"\","_");
    Рез    = СтрЗаменить(Рез,"/","_");
    Возврат Рез;
КонецФункции

Функция ВернутьИмяФайлаКартинки(Код, Артикул) Экспорт
    ИмяФайлаКартинки = КаталогИБ() + СокрЛП(Константа.КаталогКартинок)+ "\" + СокрЛП(Код) + "_" + НормализоватьАртикул(Артикул) + ".jpg";
    Возврат ИмяФайлаКартинки;
КонецФункции    
// Конец Влад 19.04.2018

Функция убирает слэши из Артикула, меняет на нижние подчеркивания, иначе "общая файловая ошибка".

В форме справочника:

// Влад 19.01.2018

Процедура ЗагрузитьКартинку()
    ИмяФайлаКартинки = ВернутьИмяФайлаКартинки(Код, Артикул);
    Если ФС.СуществуетФайл(ИмяФайлаКартинки) = 1 Тогда
        Картинка.Загрузить(ИмяФайлаКартинки);    
    КонецЕсли;    
КонецПроцедуры

Процедура УдалитьКартинку()
    Если Вопрос("Вы уверены, что хотите удалить картинку?",4,10) = 6 Тогда
        ИмяФайлаКартинки = ВернутьИмяФайлаКартинки(Код, Артикул);    
        ФС.УдалитьФайл(ИмяФайлаКартинки);
        ПустКартинка = СоздатьОбъект("Картинка");
        Картинка.УстановитьКартинку(ПустКартинка);
        Форма.Обновить(0);
    КонецЕсли;    
КонецПроцедуры

Процедура ЗагрузитьКартинкуВБазу()
    ИмяФайлаКартинки = ВернутьИмяФайлаКартинки(Код, Артикул);
    Если ФС.СуществуетФайл(ИмяФайлаКартинки) = 1 Тогда
        Если Вопрос("Вы уверены, что хотите изменить картинку?",4,10) <> 6 Тогда
            СтатусВозврата(0);
            Возврат;
        КонецЕсли;
    КонецЕсли;
    НоваяКартинка     = "";
    Если ФС.ВыбратьФайлКартинки(0,НоваяКартинка,КатЗагрКартинки,"Выберите файл картинки для текущего товара!","jpg",10) = 1 Тогда
        ФС.КопироватьФайл(КатЗагрКартинки + НоваяКартинка, ИмяФайлаКартинки, 0);    
    КонецЕсли;
    Картинка.Загрузить(ИмяФайлаКартинки);    
КонецПроцедуры

Процедура ПросмотрКартинки()
    ИмяФайлаКартинки = ВернутьИмяФайлаКартинки(Код, Артикул);
    ЗапуститьПриложение(ИмяФайлаКартинки);
КонецПроцедуры
// Конец работы с картинками Влад 19.04.2018


Картинки храню в папке, с именем заданным в константе, внутри ИБ.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует