Имя: Пароль:
1C
 
Плавающее окно с фоткой
0 BARS_2
 
07.12.05
16:56
есть желание зделать плавающее окно в которое будет показываться фотка товара из текущей строки документа. из идей было только вызов формы состоящей из одного объекта "Картинка" по переключателю на форме, но эта самая форма почему-то кпорно отказывается выскочить (я уж не говорю что ее надо зделать поверх всех как калькулятор, если это возможно).

ОткрытьФорму("Отчет.ОкноФото#1", Конт);
{Документ.Счет.Форма.Модуль(35)}: Открытие окна в данном режиме недоступно!

че делать? и вообще желание реальное или я че-то много хочу? если подправить форму документа и вставить там объект "Картинка" то все работает. хотелось бы плавающее
1 smaharbA
 
07.12.05
17:00
Всплывающее ?
2 smaharbA
 
07.12.05
17:00
+(1) Слои
3 BARS_2
 
07.12.05
17:02
Всплывающее не в смысле что оно то есть то нет, а в смысле что оно отделено от формы документа. как пример окошко калькулятора
4 smaharbA
 
07.12.05
17:10
Дорого, но можно...
5 BARS_2
 
07.12.05
17:10
А вообще насчет ошибки может кто-то подсказать что-то? модально открывает, но модально не надо :((
6 BARS_2
 
07.12.05
17:11
(4) дорого не устраивает. это типа свободная практика. :)) то что в принципе можно все я верю, но меня интересует стандартными средствами
7 Композитор
 
07.12.05
17:48
Это делается так.

В модуле формы документа:

Перем ФормаТаблицыИзображений; // контекст формы с таблицей изображений

//******************************************************************************
Процедура ПоказатьИзображение()
   
   Параметр = глВзятьКонтекст(Контекст);
   ОткрытьФорму("Отчет", Параметр, глКаталогПечФорм+"ПоказатьИзображениеНоменклатуры.ert");
   ФормаТаблицыИзображений = Параметр; // через параметр возвращается контекст открытой формы обработки
   
КонецПроцедуры //


//******************************************************************************                                        
Функция ИнформацияОНоменклатуре()       //вешается на форму
   ИнфоТекст="";
   Если Номенклатура.Выбран()=0 Тогда
       Возврат(ИнфоТекст);
   КонецЕсли;
   ИнфоТекст=ИнфоТекст+СокрЛП(Номенклатура.Наименование);
   Если ПустоеЗначение(Номенклатура.Артикул)=0 Тогда
       ИнфоТекст=?(ИнфоТекст="","",ИнфоТекст+",");
       ИнфоТекст=ИнфоТекст+" арт. "+СокрЛП(Номенклатура.Артикул);
   КонецЕсли;                          
   Файл = КаталогИБ()+СокрЛП(Номенклатура.КаталогКартинки)+СокрЛП(Номенклатура.ИмяФайлаКартинки);
   Если (ПустоеЗначение(Номенклатура.ИмяФайлаКартинки) = 0)И
       (ФС.СуществуетФайл(Файл) = 1) Тогда
       Картинка.Загрузить(Файл);    
       Картинка.РежимРисования(3);
   Иначе
       Картинка1 = СоздатьОбъект("Картинка");
       Картинка.УстановитьКартинку(Картинка1);    
   //Конец
   КонецЕсли;            
 
   Если ТипЗначения(ФормаТаблицыИзображений) = 100 Тогда
               
               // если открыта форма с таблицей остатков, то обновим в ней текущий элемент
               ФормаТаблицыИзображений.Форма.Обновить(0);
               
           КонецЕсли;    
   Возврат(ИнфоТекст);
КонецФункции //ИнформацияОНоменклатуре()

В модуле формы, на которой есть объект "Картинка":

Перем ОбъектАнализа, КонтДокумента;

Процедура ПоказатьИзображения(Ном)        
   ФайлИзображения = КаталогИБ()+СокрЛП(Ном.КаталогКартинки)+СокрЛП(Ном.ИмяФайлаКартинки);
   ФайлЧертежа = КаталогИБ()+СокрЛП(Ном.М_КаталогЧертежа)+СокрЛП(Ном.М_ИмяФайлаЧертежа);
   Попытка
       Если ФС.СуществуетФайл(ФайлИзображения)=1 Тогда
             Картинка.Загрузить(ФайлИзображения);
           Картинка.РежимРисования(3);
       КонецЕсли;
       Исключение
   КонецПопытки;
   Попытка
       Если ФС.СуществуетФайл(ФайлЧертежа)=1 Тогда
             Чертеж.Загрузить(ФайлЧертежа);
           Чертеж.РежимРисования(3);
       КонецЕсли;
       Исключение
   КонецПопытки;
   
   Форма.Описание.Заголовок(Ном.М_Описание);
КонецПроцедуры    //ПоказатьИзображения()

//******************************************************************************
Функция СформироватьИнформационнуюСтроку()
   Перем ИнфСтрока;

   Если ТипЗначения(КонтДокумента) = 100 Тогда
       ТекЭлемент = КонтДокумента.Номенклатура;
       Если ТекЭлемент <> ОбъектАнализа Тогда
           ОбъектАнализа = ТекЭлемент;
           ПоказатьИзображения(ОбъектАнализа);
       КонецЕсли;
       
       Если ПустоеЗначение(ОбъектАнализа) = 1 Тогда
           // не выбран элемент
           ИнфСтрока = "";
       Иначе
       
           Если ОбъектАнализа.ЭтоГруппа() = 0 Тогда
           
               ИнфСтрока = СокрЛП(ОбъектАнализа.ПолнНаименование) +
                           ?(ПустоеЗначение(ОбъектАнализа.Артикул) = 0, "  Артикул: " + СокрЛП(ОбъектАнализа.Артикул), "") +
                           ?(ПустоеЗначение(ОбъектАнализа.Комментарий) = 0, "  Комментарий: " + СокрЛП(ОбъектАнализа.Комментарий),    "");
           КонецЕсли;
       КонецЕсли;
   
   КонецЕсли;
   Возврат ИнфСтрока;
   
КонецФункции // СформироватьИнформационнуюСтроку()                              


Процедура ПриОткрытии()
   
   КонтДокумента = Форма.Параметр;
   
   Если ПустоеЗначение(КонтДокумента) = 1 Тогда
       Предупреждение("Данная обработка вызывается из других модулей конфигурации",60);
       СтатусВозврата(0);
       Возврат;
   КонецЕсли;
   
КонецПроцедуры // ПриОткрытии()


На форму документа повесить кнопку с процедурой ПоказатьИзображение()

При нажатии на кнопку появится форма с картинкой. При перемещении курсора по строкам документа, в форме с изображением будет меняться картинка.
8 Композитор
 
07.12.05
17:49
В справочнике Номенклатура должны быть прописаны пути до картинки (забыл сказать)
9 smaharbA
 
07.12.05
17:50
(7) и будет поверх всех ? или а, там все время откытьформу ?
10 Композитор
 
07.12.05
17:52
(9) Нет, не поверх всех. А что надо было поверх всех? У меня монитор большой, я рформы дока, справочника и форму скартинкой или с остатками рядом располагаю.
11 smaharbA
 
07.12.05
17:57
(10) Ну наверное надо поверх, тогда можно ФормаТаблицыИзображений.Активизировать() еще добавить
12 BARS_2
 
07.12.05
18:01
"Мать моя муравьиха" это откуда-то взято стандартное или это ты на коленке наваял? надо теперь еще вкурить это все
13 Композитор
 
07.12.05
18:02
(11) Неудобно. Не получится "листания".
14 smaharbA
 
07.12.05
18:03
(12) на коленке, на женской ;) явно...
15 Композитор
 
07.12.05
18:04
(12) Свое из стандартного. За основу взята форма с остатками, которая открывается из формы списка справочника Номенклатура. А потом уже своя фантазия.

Я этот прием очень широко применяю. Остатки, цены, изображения....
16 smaharbA
 
07.12.05
18:05
(13) Почему ? после смены контекста активизировать и обновить а потом вернуть активизировать в исходную, тогда не поверх ее будет, но хоть не спрятана под многими если так получилось
17 Композитор
 
07.12.05
18:06
В приведенном примере картинка меняется как на форме документа, так и на форме отчета. Можно выбрать любой вариант.
18 Композитор
 
07.12.05
18:07
(16) Наверное, можно согласиться.
19 BARS_2
 
07.12.05
18:46
Еще раз спасибо буду разбирать. но у меня вопрос. как с формы документа вызывается Процедура ПоказатьИзображение()? дело в том что у меня при вызове процедуры с кнопки отчет открывается, а если я вызываю с чекбутона то тогда получаю
ОткрытьФорму("Обработка.ОкноФото#1", Конт);
{Документ.Счет.Форма.Модуль(36)}: Открытие окна в данном режиме недоступно!
20 smaharbA
 
07.12.05
18:48
(19) А ты ее с предопределенной открой