Имя: Пароль:
1C
1С v8
Расширение конфигурации. Не видит ОткрытьФормуМодально
0 zladenuw
 
17.04.17
23:16
Пишу код

&Вместо("ВыбратьКартинкуИзПрисоединенныхФайлов")
Процедура ВыбратьКартинкуИзПрисоединенныхФайлов(Команда)
    
    _ПараметрыВыбора = Новый Структура("ВладелецФайла, ЗакрыватьПриВыборе, РежимВыбора",
                                       Объект.Ссылка, Истина, Истина);
    ЗначениеВыбора = ОткрытьФормуМодально("ОбщаяФорма.ПрисоединенныеФайлы", _ПараметрыВыбора);
    
    Если ЗначениеЗаполнено(ЗначениеВыбора) Тогда
        
        Объект.ФайлКартинки = ЗначениеВыбора;
        АдресКартинки = НавигационнаяСсылкаКартинки(Объект.ФайлКартинки, УникальныйИдентификатор)
        
    КонецЕсли;
        
КонецПроцедуры

Получаю ошибку
Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(6,19)}: Процедура или функция с указанным именем не определена (ОткрытьФормуМодально)
    ЗначениеВыбора = <<?>>ОткрытьФормуМодально("ОбщаяФорма.ПрисоединенныеФайлы", _ПараметрыВыбора); (Проверка: Сервер)

Как сделать что бы она ее видела.
Гугл молчит
1 AlvlSpb
 
17.04.17
23:54
(0) А в конфигураторе разрешено модальное открытие окон? Может проще ОткрытьФорму?
     И, какая платформа с какой совместимостью?
2 AlvlSpb
 
18.04.17
00:27
(0) Увидел. Вы перехватываете процедуру из модуля формы. Нужна директива компиляции. И общие рекомендации - не использовать тоже название процедуры, будут отказы в выполнении. Т.е.

&Вместо("ВыбратьКартинкуИзПрисоединенныхФайлов")
&НаКлиенте
Процедура Расш1_ВыбратьКартинкуИзПрисоединенныхФайлов(Команда)
3 zladenuw
 
18.04.17
06:32
(1) Да стоит использовать и там и там.
(2) Проблема не в этом.
Это типовой код.
И если написать как вы показали. процедура не срабатывает.
Перехват не идет.
4 Chameleon1980
 
18.04.17
06:39
(3) п2. - мистика

(2) прав - тоже самое имя не нужно использовать
5 AlvlSpb
 
18.04.17
08:26
(3) "И если написать как вы показали. процедура не срабатывает. "
Нигде о директивах не написано, но у меня есть расширение, которое никак не хотело выводить Предупреждение, выдавало точно такую же ошибку. Поставил &НаКлиенте и все заработало.
6 Chameleon1980
 
18.04.17
08:46
(5) а кому ты хотел НЕ на клиенте Предупреждение выводить-то?
7 Chameleon1980
 
18.04.17
08:47
(5) "....Нигде о директивах не написано...." если я правильно понял поправку, то поправка - искать нужно уметь.
Это описано, что не нужно использовать тоже имя.
8 zladenuw
 
18.04.17
10:56
(4) Так если меняю один фиг. Пишу директиву на клиенте. И все не идет перехват процедуры.
Типовая конфа после снятие совместимости полезли косяки. Решил все красиво через расширение. А тут вот не хочет.
9 AlvlSpb
 
18.04.17
19:04
(6) (7) ты не понял о чем речь. Перехватываем процедуру в модуле формы. Причем не событие, а обычную (любую) процедуру.
В модуле перехватываемая процедура &НаКлиенте Процедура НашаПроцедура();
В умных книжках: Поставь &Вместо("НашаПроцедура") и все будет работать. На практике столкнулся с такой же проблемой как у автора. Перехватил процедуру с Предупреждением, так как написано, а она мне выдает что не знает что такое Предупреждение. Но поставил &НаКлиенте и все работает.
Собственно пруф  http://s45.radikal.ru/i109/1704/22/5dc196059204.jpg

(8) Вы так и не ответили какая платформа. И, на всякий, посмотрите картинку выше. Расположение НаКлиенте после (ниже) Вместо. Реально работает уже больше года
10 Chameleon1980
 
18.04.17
20:15
(9) да я то понял

ну тут, видимо, нужно конкретно носом расширение ткнуть, что процедура коиентская