Имя: Пароль:
1C
1C 7.7
v7: ОткрытьФорму() ругается
0 evgpinsk_
 
15.11.25
13:52
Странное поведение открытьФорму():
Если Процедура запускается при редактирования Поля ввода (которое находится например в журнале документов)
то 1с ругается на код
открытьФорму(док.ТекущийДокумент());

сообщением "Открытие окна в данном режиме недоступно!"

если же в этом же журнале этот же код выполнять из кнопки - всё ок.

Но хочется документ открывать сразу при редактировании поля ввода а не через кнопку )
1 MWWRuza
 
гуру
15.11.25
14:46
Да, есть такое, подтверждаю...


Как обойти - пока не знаю, надо подумать...
Может через какие-то ложные закрытия, или чего-то на подобии. Если, что-то придумаю - отпишусь.
2 craxx
 
15.11.25
14:55
(1) Обработка ожидания не пойдет?
3 MWWRuza
 
гуру
15.11.25
15:04
(2) Возможно, надо пробовать...
Так: https://forum.infostart.ru/forum9/topic4200/
Работает.
ОткрытьФормуМодально(ТекущийДокумент)

4 evgpinsk_
 
15.11.25
15:44
ОткрытьФормуМодально
это сразу проверил и увидел что работает. Но не очень красиво ).
5 MWWRuza
 
гуру
15.11.25
15:49
(4) Ну, тогда или как в (2) предложили - через обработку ожидания пробовать, или формексом генерить внешнее союытие, и из его обработки открывать документ...
6 Олдж
 
15.11.25
18:59
(4) (5) Есть еще один старый обходной манёвр, как  ранее написал "ложное закрытие"
Перем НельзяЗакрытьформу;
 

Процедура ЗапускаемаяИзПоляВвода()  
	//ОткрытьФорму(ТекущийДокумент);
	
	НельзяЗакрытьформу= 1;
	Форма.Закрыть(0);
	
КонецПроцедуры          

Процедура ПриЗакрытии()  
	
	Если НельзяЗакрытьФорму = 1 Тогда
		НельзяЗакрытьФорму = 0;
		СтатусВозврата(0);
		ОткрытьФорму(ТекущийДокумент);  	
	КонецЕсли;
	
КонецПроцедуры
7 MWWRuza
 
гуру
15.11.25
17:56
(6) Ну, да, я ранее в (1) именно про это и писал...
Только проверять не стал, так, как подумал, что ТС уже проверил, и (2) с толку сбило, думал не работает, раз пошли такие сложности с обработкой ожидания и т.д...
Но, нет, все ОК!

PS Только в первой процедуре ошибка в имени переменной. Так, Вы ее никогда не закроете - придется задачу снимать, с переиндексацией и прочими последствиями.
8 AAA
 
15.11.25
18:43
Я бы просто не стал делать такой интерфейс. Выбор-это выбор, редактирование - это редактирование. Да и вообще в форме списка редактировать так себе, кроме простых, обычно служебных данных
9 Олдж
 
15.11.25
19:00
(7) ага, скорректировал
10 Злопчинский
 
15.11.25
22:20
Formex
Сервис:
РазрешитьОткрытиеОкон(<?>)
Синтаксис:
РазрешитьОткрытиеОкон(Флаг)
Назначение:
для обхода запрета открытия форм из формулы реквизита диалога
Параметры:
<Флаг> - 1 - разрешить открытие форм, 0 - запретить открытие форм.
ЗАМЕЧАНИЕ:
Метод надо вызывать непосредственно в месте, где открытие запрещено.
11 Злопчинский
 
15.11.25
22:21
(8) поддерживаю
ненавижу ад когда из списка справочника делают рабочее место и потом при вызове этой формы куча ненужной хрени
12 evgpinsk_
 
16.11.25
11:01
(8) Сабж нужен чтобы максимально быстро находить нужный документ, а не штатными средствами через ctrl+F3,
а минусы в чём?
13 Олдж
 
16.11.25
12:29
(12) Обычно это делается через вывод на печатный макет документа штрих-кода (или QR-код) и  сканер шк с процедурой ОбработкаВнешнегоСобытия()  
Сканер стоит копейки, подключается через USb, драйвер от Атола для 7.7 (Scaner1C.dll) спокойно отрабатывает при подключении сканера как клавиатура (без com портов)
14 MWWRuza
 
гуру
16.11.25
14:59
(13) Да и через эмуляцию COM-порта тоже прекрасно работает... Тем более, можно дату/номер документа в QR код закодировать с правильным чтением которых, у КБ сканеров бывают проблемы.
Но, тут, как я понимаю, речь идет о старых документах, на ПФ которых нет ШК для поиска... А на будущее, если часто нужно искать доки в журнале для совершения с ними каких-то действий, конечно можно и о ШК подумать.
15 MWWRuza
 
гуру
16.11.25
15:07
А так, вообще, поле ввода можно на активеикс из офиса заменить, что-бы "живой" поиск работал, без нажатия ентер в поле ввода. По типу, как у меня в справочнике номенклатура сделано, быстрый поиск: https://cloud.mail.ru/public/JFHJ/P3cktsv3z
16 evgpinsk_
 
16.11.25
15:33
(13) Задача была другая, гдето есть характеристика документа (номер договора, УНП клиента и т.д.). И хочется этот документ максимально быстро находить и открывать (т.к. пользователи это делают часто), самый быстрой способ - там где чаще всего сидит пользователь (а это журнал), скопипастить в нём кудато значение поиска и документ должен открыться.

Почему такую реализацию делать "не правильно" - я не очень понимаю )
17 Олдж
 
16.11.25
16:16
(16) Скопипастил пользователь, например, номер договора и открылось N-дцать документов с этим номером? или вообще скопипастил случайно какую-то фигню, под которую подходит весь журнал и что, формы всех документов открывать? :)

Фильтр с поиском из (15) выглядит логичнее, все красиво реализуется с 1сpp и formex
18 evgpinsk_
 
16.11.25
16:24
(17) А если в 95% случаев по вводимому тексту находится только один документ? Либо пользователям нужен последний созданный? )
Т.е. получается что к решению какой-то конкретной задачи не правильно приступать не зная саму задачу, верно? )
п.с. ну и вроде как понятно, что очень редко когда есть смысл открыть множество найденных объектов, почти всегда если требуется открытие - то открывать нужно один документ/элемент
19 MWWRuza
 
гуру
16.11.25
18:54
Да ладно, забейте... Что вы так накинулись на ТС, он сам себе архитектор своих решений(ЗБ(злобный буратино :-)), ему виднее, вопрос был про открытие формы документа из поля ввода на форме, мы его решили в (1)(6)(10)... Все остальное из области флуда, типо как все в интернете - "на любой вопрос, будет дано куча оценок автора вопроса, и рекомендаций куда ему пойти, и только в конце, может кто-то чего-то дельного посоветует" :-) Тут, с самого начала был дан совет верный :-)