Если Форма.ТолькоПросмотр() = 0 Тогда
// тут еще можно флаг взвести чтобы в ПриОткрытии() сделать СтатусВозврата(ФлагКоторыйНоль)
ОткрытьФорму(ТекущийДокумент(),,1);
КонецЕсли;
Процедура ПриОткрытии()
ОткрытьФорму(ТекущийДокумент(),,1);
КонецПроцедуры // ПриОткрытии()
Функция СобытиеГМ_ПриОткрытии(Конт, ФлагЧтенияНастройки) Экспорт
......
Рез=ПроверкаРазрешенияРедактирования(КонтФормы);
Если Рез=0 Тогда
......
ИначеЕсли Рез=-1 Тогда
ДокИнв=КонтФормы.ТекущийДокумент(); //Переменная для внешнего события
Сервис.ВнешнееСобытие("Фабрика","ПриОткрытии","ОткрытьТолькоНаПросмотр"); //Открываем повторно форму в режиме ТолькоПросмотр только через ВнешнееСобытие, т.к. иначе глюки с открытием
Возврат 0;
ИначеЕсли Рез=-10 Тогда
СообщитьВОтладке(""+ТекущееВремя()+" КОНЕЦ "+л_ИмяСобытия+" НЕ разрешаем открывать форму");
Возврат 0;
КонецЕсли;
Функция Событие_ОбработкаВнешнегоСобытия(Источник,Событие,Данные) Экспорт //+Al 2016-04-13 16:53:09 глобальная (СобытиеГМ_) перехватывается при вызове Сервис.ВнешнееСобытие из глМодуля
//!!! При открытии форм из ПриНачалеРаботыСистемы теряется контекст откуда вызывалось ВнешнееСобытие. КонтФормы будет = последней открытой форме. Это, по всей видимости, глюк перехватчика из ВК 1с++
Перем л_ИмяСобытия,ЕстьМетод,ИмяМетода;
л_ИмяСобытия = ""+ID+" ФабрикаСобытий Событие_ОбработкаВнешнегоСобытия() ";
СообщитьВОтладке(""+ТекущееВремя()+" НАЧАЛО "+л_ИмяСобытия+" Источник="+Источник+" Событие="+Событие+" Данные="+Данные);
СообщитьВФайл("НАЧАЛО "+л_ИмяСобытия+" Источник="+Источник+" Событие="+Событие+" Данные="+Данные,"ФабрикаСобытий"); //+Al 2024-06-13 11:54
Если Данные="ОткрытьТолькоНаПросмотр" Тогда
ОткрытьФорму(ДокИнв,,1);
ДокИнв=0;Рез=0;
ИначеЕсли Данные="ОткрытьНаРедактирование" Тогда
ОткрытьФорму(ДокИнв,,0);
ДокИнв=0;Рез=0;
......
Цитата: item от 06 апреля 2026, 00:35Не проверял, но ИД базы должен быть зашит в ИД обьекта.Проверил, не зашит.
Цитата: sau от 05 апреля 2026, 21:48Если база распределеннаяДа я вот тоже посмотрел повнимательнее:
Процедура Глобальная_ПриОткрытии(Конт) //Formex
глИзначальныйРежимОткрытияФормы = Конт.Форма.ТолькоПросмотр();
глИзначальныйПараметрФормы = Конт.Форма.Параметр;
КонецПроцедуры
//
Процедура ПослеОткрытия(Конт)
ТекущийРежимОткрытияФормы = Конт.Форма.ТолькоПросмотр();
Если (ТекущийРежимОткрытияФормы = 1) и (глИзначальныйРежимОткрытияФормы = 0) Тогда // форму перевели в режим просмотра
ТекущийПараметрФормы = Конт.Форма.Параметр;
Если ТекущийПараметрФормы = глИзначальныйПараметрФормы Тогда //убедимся, что ПриОткрытии не поменял Форма.Параметр()
Если СтатусВозврата() <> 0 Тогда // не бывает, иначе ПослеОткрытия не сработает, но посдтрахуемся
ТипКонтекста = глВернутьТипКонтекста(Конт);
Если (ТипКонтекста = "Справочник") или (ТипКонтекста = "Документ") Тогда
Если Конт.Выбран() = 1 Тогда
ТекОбъект = ?(ТипКонтекста = "Справочник", Конт.ТекущийЭлемент(), Конт.ТекущийДокумент());
ОткрытьФорму(ТекОбъект, глИзначальныйПараметрФормы, 1);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры