Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   ОткрытьФорму() в функции (http://forums.kuban.ru/f1040/otkryt-formu_v_funkcii-3028101.html)

AlexY 05.09.2012 21:31

ОткрытьФорму() в функции
 
суть дела. в форме журнала добавил текстовое поле, чтоб выводило пиктограмму.
прописал функцию
Функция ПолучитьЗначок()
СпПараметров = СоздатьОбъект("СписокЗначений");
СпПараметров.Установить("Действие","ПолучитьФлагИзменения");
Если ТекущийДокумент.Выбран() = 1 Тогда
СпПараметров.Установить("Конт",ТекущийДокумент);
КонецЕсли;
ОткрытьФорму("Отчет",СпПараметров,КаталогИБ()+"ExtForms\СписокИзменений.ert");
ФлагИзменения = СпПараметров.Получить("ФлагИзменения");
Возврат ФлагИзменения;

КонецФункции //
но выдает ОткрытьФорму("Отчет",СпПараметров,КаталогИБ()+"ExtForms\СписокИзменений.ert");
{Журнал.ДокументыПоПокупателям.Форма.ФормаСписка.Модуль(19)**: Открытие окна в данном режиме недоступно!
я вызываю внешний отчет для того чтоб можно было не изменяя конфу менять параметры получения флага изменения.
посоветуйте плиз, что можно ищо)) сделать, не особенно сильно пиная.
заранее спасибо.

VZ 05.09.2012 22:31

Если родительская форма открыта в модальном режиме, то дочерняя может быть открыта только в модальном режиме.
И никак иначе.
Но твоя функция таааакие тормоза будет генерить... ;)
Кстати, после метода открытьформу управлене передается сразу на следующую строку модуля. И модуль отчета должен успеть сделать свою работу :))

Гнилое решение. Хотя и можно побороть ложным закрытием родительской формы, или формексом, но лучше поищи другое решение.

Чучундер 06.09.2012 00:31

вот смотри.. у тебя эта функция будет отрабатывать каждый раз при перерисовке формы.. будет открываться много...много... много.. окошечек/ок...

Чучундер 06.09.2012 00:33

и, даже , если, вобработке окно открываться не будет... о... о.. все равно плохо...
.
так как конфа у тебя все равно изменена - можно попробовать генерить дополнительные глобальные модули формексом...

VZ 06.09.2012 01:26

2-Чучундер > Та неее... Он явно заблокирует открытие формы через статусвозврата(0)...
Но даже если оптимизировать
[em]Перем СпПараметров, Внешняяформа;
Функция ПолучитьЗначок()
Если ТекущийДокумент.Выбран() = 1 Тогда
СпПараметров.Установить("Конт",ТекущийДокумент);
КонецЕсли;
ОткрытьФорму("Отчет",СпПараметров,Внешняяформа);
ФлагИзменения = СпПараметров.Получить("ФлагИзменения");
Возврат ФлагИзменения;
КонецФункции //
........
Внешняяформа = КаталогИБ()+"Ext Forms\СписокИзменений.ert";
СпПараметров = СоздатьОбъект("СписокЗначений");
СпПараметров.Установить("Действие","ПолучитьФлагИз менения");[/em]
-- все едино тормоза будут...

VZ 06.09.2012 01:33

+4 И да, ошибку не заметил сразу: в функции [em]КонецЕсли[/em] надо перед [em]Возврат[/em] запсочить.
Ну и значение [em]ФлагИзменения[/em] для [em]Иначе[/em] установить ;)

Чучундер 06.09.2012 01:41

(4) да понял я это

Чучундер 06.09.2012 01:46

так, а если попробовать так: открываем форму обработки, оставляем ее открытой, через контекст автообновление открытой формы с передачей значения назад (по типу как сделано "показать остатки" по номенклатуре в типовой тис...
.
но все равно тормозно будет.
.
я бы сделал иначе. через типовые внешние обработки которые вызываются при старте системы (например обработка подключени яоборудования) - через формекс инициализировал бы допглобмодуль, в него напихал бы чего угодно - процедур, функций И КАК ОБЫЧНО обратился бы к ним..
т.е. у автора тупо стояло бы
Функция ПолучитьЗначок()
Возврат ФункцияИзДопГМ(Контекст);
КонецФункции //

VZ 06.09.2012 01:51

7-Чучундер > Внешние приблуды - зло...
Они будут, скажем, на "севене" работать? Кто даст гарантию? То-то...

AlexY 06.09.2012 12:27

Ясно. Спасибо за обсуждение. буду явно писать, без вызова внешней обработки.

Sadovnikov 06.09.2012 13:25

8-VZ >[em]Они будут, скажем, на "севене" работать? Кто даст гарантию?[/em]
Ты не поверишь, но и за саму 1С никто таких гарантий не даст...

VZ 06.09.2012 13:32

10-Sadovnikov > Ну дык... Зачем же себе нагружать проблемы-то?
Одно дело - приблуды жизненно необходимы, другое совсем дело - ежели можно обойтись. В данном случае - можно ;)

Sadovnikov 06.09.2012 13:33

11-VZ > Так я ж не спорю. Это я так - за фразу зацепился :)


Текущее время: 12:39. Часовой пояс GMT +3.