Имя: Пароль:
1C
1C 7.7
v7: Форма.ТолькоПросмотр(1) - так ли это только просмотр..
0 Злопчинский
 
07.04.20
01:46
Запускаем два сеанса.
про документы.
1. Открываем в одном сеансе форму, в коде которой отрабатывает Форма.ТолькоПросмотр(1);
Если во втором сеансе открыть форму аналогично - то фиг вам, "объект заблокирован"
2. Если во втором сеансе открыть лупой "просмотр документа" с панели инструментов - то норм, откроется.
.
получается что
в 1 - объект жестко связан с формой, объект блокируется, а форма сама по себе имеет флаг 1/0
в 2 - форма документа "оторвана" от объекта, объект не блокируется.
.
вот...
и еще есть режим ОткрытьФорму(Док,параметр,РежимОткрытия=1) - интересно в этом случае форма откроется по 1 или 2?
.
и как  располагая контекстом формы открытой только на просмотр узнать - она открыта с блокировкой объекта или нет?
Стучаться в метод Блокировка()...?
73 Ёпрст
 
08.04.20
17:23
(72) во втором случае (с лупой) запись всё равно надо в попытку оборачивать, ибо форму мог открыть кто-то еще на редактирование
74 fisher
 
08.04.20
17:27
Ветка в прошлое. Прям прослезился.
75 Злопчинский
 
08.04.20
18:34
(73) это не та проблема, которая пока вызывает трудность.
готовлю рабочий тестовый примерчик
76 Злопчинский
 
08.04.20
18:34
(74) это тебе не в снеговике тупом тупо галочки расставлять и плеваться на стек вложенности... ;-)
77 Злопчинский
 
08.04.20
18:38
(71) это хорошо.
но нехорошо потому что формекс.
хочется сделать без него.
из любви к искусству. и если не смогу сам то и чтобы всякие ктулхи не выпендривались на словах, а рабочий код дали ;-)
78 Злопчинский
 
08.04.20
18:40
плюс для шибко-шибко умных - форма дока еще вдобавок и МОДАЛЬНО может быть открыта. а это уже значит что закрывать ее нельзя, ибо хз что там после модального вызова стоит...
79 Злопчинский
 
08.04.20
20:11
(73) Ха, Ёпрст, такой финт не сработает:

ТолькоПросмотр = Конт.Форма.ТолькоПросмотр(0);
ФормаСвободна = Конт.Форма.ТолькоПросмотр(0);     

если этот код выполняется в ПриОткрытии() ВПФ и ПриОткрытии() еще не доработала до конца...
обломс самой вкусняшки...
80 Злопчинский
 
08.04.20
20:13
.. соответственно хрен поймешь,ФормаСвободна  - форма документа - заблокировала документ или открыта лупой...
как это еще можно вычислить?
81 Злопчинский
 
08.04.20
20:15
это конечно можно код вынести из ПриОткрытии() в проудуру, которая будет выполняться уже после завершения ПриОткрытии - но это приведет к морганию формы DGA на экране, а это не искусство, а пошлятина...
82 Злопчинский
 
08.04.20
20:33
(73), блин
а откуда Конт в ВПФ возникает?

Перем Конт;
Процедура Сформировать()
    Если ТипЗначения(Конт) <>100 Тогда
        Предупреждение("Закрыли док ужо",10);
        Возврат;
    КонецЕсли;

Опять какой-то шаманский фокус?
83 Злопчинский
 
08.04.20
20:38
Тьфу блин, ПриОткрытии съел.
я уже думаю опять какой-то шаманский фокус
84 Garykom
 
гуру
08.04.20
21:00
(56) Штатно можно запретить отрывать и блокировать документы.

"Открытие" документа по сути создает копию документа и открывает его форму.
Все записи и прочие действия вручную обрабатывать кодом из этой формы нового документа.
85 Ёпрст
 
08.04.20
21:02
(79) тебе в ПриОткрытии впф надо проверить ?
86 Злопчинский
 
08.04.20
21:07
(85) ну, желательно в любом контексте исполнения
87 Ёпрст
 
08.04.20
21:07
И всё же работает и в ПриОткрытии..
ну напиши так, например и проверь:

Процедура ПриОткрытии()
    Конт = Форма.Параметр;    
    
    
    Клиентос = ТекущееВремя();    
    ВсякаХрень = ТекущееВремя();
    Сформировать();    
КонецПроцедуры // ПриОткрытии
88 Ёпрст
 
08.04.20
21:08
это код из впф.
89 Ёпрст
 
08.04.20
21:08
На счет модальности не смотрел, ибо модальность - зло
90 Злопчинский
 
08.04.20
21:10
(84) по существу ниччего не понял из твоего поста.
91 Ёпрст
 
08.04.20
21:14
(90) это обход системных блокировок, описанный на синьоре.
92 Ёпрст
 
08.04.20
21:22
(79) так шта, чего у тя не работает то и где ?
)
93 Злопчинский
 
08.04.20
22:40
ща, сек
94 Злопчинский
 
08.04.20
22:41
(87) проверю уже завтра.
ты вот так вот напиши

    Сформировать();    
    CnfnecDjpdhfnf(0)$ //здесь!!!
КонецПроцедуры// ПриОткрытии
95 Злопчинский
 
08.04.20
22:42
(87)
ты вот так вот напиши

    Сформировать();    
    СтатусВозврата(0); //здесь!!!

КонецПроцедур// ПриОткрытии
96 Злопчинский
 
09.04.20
00:33
Ёпрст, вот ведь, зараза...

Конт.Записать(); - выполняемый до завершения ПриОткрытии() ВПФ - совершенно спокойно записывает Конт.
Конт.Записать(); - выполняемый после завершения ПриОткрытии() ВПФ, в контексте уже открытой формы ВПФ -  хрен там, а не запись Конт - ошибка "Данная команда не может выполняться в формуле элемента диалога!"

неудобно ;-) придется цельную процедуру собственно самой существенной модификации документа делить.. код модификации реквизитов для вызова из разных мест и анализ в каком месте в каких условиях можно выполнить код модификации. а так все красиво почти разложилось...
97 Злопчинский
 
09.04.20
00:33
ну не Епрст - зараза, а ситуация - зараза
98 Злопчинский
 
09.04.20
00:42
и вот еще попутный вопрос.
Допустим есть ВПФ для документа.
Вызывается ВПФ из формы документ штатным образом с передачей параметров.
ВПФ может быть вызвана из формы документа

1. когда форма документа открыта и на экране - ВПФ запускается вне контекста ПриОткрытии() формы документа
и
2. когда форма документа открыта, но еще не экране ВПФ запускается _внутри_ контекста ПриОткрытии() формы документа

Можно ли в самой ВПФ? имея доступ только к контексту формы документа, определить, как вызвана DGA - по 1 или 2..? (желательно без формекса)
99 Cthulhu
 
09.04.20
02:26
(98): в порядке бреда: раскрутить эту (стандартную) ошибку через "ложное закрытие" - никак не получится?
100 Злопчинский
 
09.04.20
02:36
(99) хм, точно - надо попробовать... но это немного другой вопрпос.
вопрос 1,2 - остался
101 Cthulhu
 
09.04.20
02:42
(100): какой именно вопрос?
если ты "раскрутишь" печать из кнопки через ложное закрытие формы - ошибка "Данная команда не может выполняться в формуле элемента диалога" уйдет и печать будет выполняться без ошибок в обоих случаях, описанных в (98)...
или ты о каких вопросах?
102 Злопчинский
 
09.04.20
05:28
(101) ошибку "не может выполняться... " я обошел, тут в чем "тонкость":

если я из КонтекстФормыДокумента (открыто лупой, например) вызываю ВПФ
и в ВПФ ПриОткрытии() сделать КонтекстФормыДокумента.Записать() - то ок!
а вот если форма ВПФ открыта (отработал полностью код ВПФ ПриОткрытии()) и сделать КонтекстФормыДокумента.Записать() уже вне контекста ПриОткрытии() - то получим ошибку.
- и получается что переоткрытие КонтекстФормыДокумента надо разбивать на два этапа
а) КонтекстФормыДокумента.Запись() - в коде ВПФ ПриОткрытии() и
б) КонтекстФормыДокумента.Закрыть() и открыть с уже записанными реквизитами заново в коде ВПФ вне ПриОткрытии()

Причем между а) и б) должна быть пауза, иначе не получится (форма не переоткроется, так как висит еще незакрытая старая)

То есть б) надо выполнять вне ПриОткрытии тоже в два этапа.
б.1 - закрытие старой формы формы, пауза
б.2 - открытие новой формы.

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

вот так как-то.. уф..
103 DrZombi
 
гуру
09.04.20
05:49
(0) Вы в 7.7 еще попробуйте через обработку выполнить манипуляцию с документом, на который у пользователя нет прав.
Результат вас удивит. Смирись.

А если бы вы еще начали в 7.7 разбирать внутреннюю структуру СУБД, то фразу СУБД вам пришлось бы удалить :)
104 Ёпрст
 
09.04.20
11:09
(94) И ? ВСЁ работает!
105 Ёпрст
 
09.04.20
11:09

Перем Конт;
//*******************************************
Процедура Сформировать()
    Если ТипЗначения(Конт) <>100 Тогда
        Предупреждение("Закрыли док ужо",10);
        Возврат;
    КонецЕсли;
    ТолькоПросмотр = Конт.Форма.ТолькоПросмотр(0);
    ФормаСвободна = Конт.Форма.ТолькоПросмотр(0);
    Если ФормаСвободна = 0 Тогда
        Конт.Клиентос = Клиентос;
        Конт.ВсякаХрень = ВсякаХрень;
        Конт.Форма.ТолькоПросмотр(ТолькоПросмотр);
        Сервис = СоздатьОбъект("Сервис");
        Сервис.ВыполнитьПроцедуру(Конт, "Записать");
        Конт.Форма.Обновить(0);
    Иначе
        Док = СоздатьОбъект("Документ.Вася");
        Док.НайтиДокумент(Конт.ТекущийДокумент());
        Док.Клиентос = Клиентос;
        Док.ВсякаХрень = ВсякаХрень;
        Док.Записать();
        //ОткрытьФорму(Док.ТекущийДокумент(),Конт);
        РасшФормы = СоздатьОбъект("РасширениеФормы");
        РасшФормы.УстановитьФорму(Конт.Форма);
        АтрибутФормы = РасшФормы.ПолучитьАтрибут("Клиентос");
        АтрибутФормы.Значение = Клиентос;
        АтрибутФормы = РасшФормы.ПолучитьАтрибут("ВсякаХрень");
        АтрибутФормы.Значение = ВсякаХрень;
        Конт.Форма.Обновить(0);
    КонецЕсли;
КонецПроцедуры
//======================================================================
Процедура ПриОткрытии()
    Конт = Форма.Параметр;    
    Клиентос = ТекущееВремя();    
    ВсякаХрень = ТекущееВремя();
    Сформировать();    
    СтатусВозврата(0);
КонецПроцедуры // ПриОткрытии
106 Ёпрст
 
09.04.20
11:11
(103) Чем удивит ? Права в обработке не проверяются, мы должны удивится, узнав об этом со времен 7.5 ?
107 Ёпрст
 
09.04.20
11:11
или что ?
108 Ёпрст
 
09.04.20
11:12
(103) Ну, вме известна структура 7.7, как и снеговика, зачем что-то удалять ?
109 Ёпрст
 
09.04.20
11:15
(102) чего у тебя такое отторжение от формекса ? Ну строй ты саму dll в макет впф, При открытии впф проверяй, что ежелм формекса нет, то извлечь dll из макета и установить. Делов-то.
110 Ёпрст
 
09.04.20
11:16
прав на dll никаких не надо в системе, в реестре регистрация не требуется, будет работать у всех всегда.
111 Ёпрст
 
09.04.20
11:19
А без формекса, тебе придётся форму, открытую по лупе, переоткрыть. Что будет заметно - "моргание формы", ибо положение её сдвинется, если не во всё окно было открыто. И сделать ты это можешь в ложном закрытии впф.
112 Cthulhu
 
09.04.20
13:16
(102): "а вот если форма ВПФ открыта (отработал полностью код ВПФ ПриОткрытии())" -- а если попробовать вызвать процедуру печати через ОбработкаОжидания("ПечатьВпфМоя",1);
113 Злопчинский
 
09.04.20
15:19
(109) нормально у меня все с формексом.
Без него плохо. ;-)
114 Злопчинский
 
09.04.20
15:20
(111) переоткрытие я через форма.обработкаожидания сделал
115 Злопчинский
 
09.04.20
15:21
(112) ну, так и сделал, только не весь код, а только переоткрытие формы...
116 Злопчинский
 
09.04.20
15:52
А
РасшФормы = СоздатьОбъект("РасширениеФормы");
- разве доступен в контексте ПриОткрытии()..?
вроде раньше всегда говорили что надо это делать в ПослеОткрытия()..?
117 Ёпрст
 
09.04.20
16:21
(116) всегда был доступен
118 Ёпрст
 
09.04.20
16:21
считай это, недокумментирванной фичей )
119 Ёпрст
 
09.04.20
16:22
тем более, что ты применяешь его не к этой форме, а к форме прилетевшего контекста
120 Злопчинский
 
09.04.20
17:34
(105) так не работает. для формы открытой на редактирование или Форма.ТолькоПросмотр(1) - признак модифицированности формы остается. надо в форму документа добавлять ЗаписатьДокумент() и через Сервис эту процедуру вызывать

//======================================================================
Процедура ЗаписатьДокумент()
    Записать();    
КонецПроцедуры // ЗаписатьДокумент()

    //Конт.Записать();
        Сервис = СоздатьОбъект("Сервис");
        Сервис.ВыполнитьПроцедуру(Конт, "Записать"); //так не работает
        Конт.Форма.Обновить(0);

    //Конт.Записать();
        Сервис = СоздатьОбъект("Сервис");
        Сервис.ВыполнитьПроцедуру(Конт, "ЗаписатьДокумент"); //так работает. но это надо править форму документа, бяка
        Конт.Форма.Обновить(0);

Хотя, просто

    Конт.Записать();
        Конт.Форма.Обновить(0);

работает во всех случаях норм
121 Злопчинский
 
09.04.20
18:10
Тьфу,блин
(120) - считать неверным написанное
Конт.Записать() - неверно написал в предыдущем...
Конт.Записать() - ругается
.
надо отдохнуть.. клинит...
122 Ёпрст
 
09.04.20
22:39
(121) где ты в моём коде увидел Конт.Записать ? Приём.. смотри вниматочно ))
123 Ёпрст
 
09.04.20
22:41
и.. всё работает, смотри в демо-конфе моей.
124 Злопчинский
 
09.04.20
23:14
(123) угу, разобрался уже, норм все.
125 Ёпрст
 
09.04.20
23:19
(124) самоизоляция на тебя дурно влияет
126 Злопчинский
 
09.04.20
23:28
(125) Спасибо, ты добр как никогда ;-)
127 Злопчинский
 
10.04.20
20:31
Усе получилось, тупил малость...
.
но вот есть вопрос.
впф вызвана из контекста формы-родителя документа.
.
как в ВПФ, имею доступ к контексту формы-родителя документа, определить что впф вызвана из контекста уже открытой формы -родителя или что код ВПФ выполняется в контексте процедуры ПриОткрытии формы-родителя? Попробовать что-то исполнить/обратитьсякчему-то что есть доступ только при открытой форме-родителя, вне контекста ПриОткрытии?
128 Cthulhu
 
11.04.20
00:44
// (127):
// Добавь на форму флажок ФлПриОткрытии (можно невидимый)
// Добавь на форму текстовый реквизит с формулой "ШаУжоОткрыли()"
ФлПриОткрытии = 1; // в ПриОткрытии в самом начале процедуры
ФлПриОткрытии = 0; // в функции ШаУжоОткрыли
// и в любом месте через контекст проверяй типа КонтекстВызова.ФлПриОткрытии
129 Злопчинский
 
11.04.20
01:39
(128) это неспортивно.
есть ВПФ. в ней я могу делать все.
есть форма-родитель. я в ней делать ничего не могу.
130 Cthulhu
 
11.04.20
03:30
(ё29): а как ты впф то добавляешь (и/или вызываешь) если "делать ничего не можешь"????
131 Злопчинский
 
11.04.20
15:51
(130) Очень просто. создал ВПФ. положил там где должна лежать DGA/
ВПФ подхватывается и используется типовым механизмомм типовой конфиги.
Никогда с ВПФ не работал?
132 Cthulhu
 
12.04.20
21:43
(131): на УФ через БСП? да, там без правки формы документа - подтягивается в список кнопки печати автоматом.
так?
133 Злопчинский
 
13.04.20
00:01
(132) не, вы отстали от жизни, это для 77
134 Cthulhu
 
13.04.20
01:17
(133): да я упомянул единственный мне известный способ прикручивания печ.формы без изменения кода формы.
так что все еще жду ответа на (130).
135 Злопчинский
 
13.04.20
02:15
(134) а что непонятного в (131) с учетом того что (131) используется в 7.7?
136 Ёпрст
 
13.04.20
10:15
(127) из закрытой формы впф не вызвать же :)
узнать, что форма еще открыта, можно проверив на тип контекста, если =100, то форма-родитель еще открыта.
137 Ёпрст
 
13.04.20
10:16
И да, каким образом, открытие впф у тебя попадёт в ПриОткрытии формы документа, если как ты говоришь, доступа к изменению этого документа у тебя нема ?
138 Злопчинский
 
13.04.20
13:19
(137) потому что надо знать типовые 77! ;-)
штатно все, типовая тиС. В журналах документов есть кнопка "Печать", по которой для текущего документа вызывается документ с параметром ("ПечатьНаЭкран","Команда"), а в документе ПриОткрытии() отрабатывает вызов последней использованной ВПФ
139 Ёпрст
 
13.04.20
13:27
(138) нет там такого:

"а в документе ПриОткрытии() отрабатывает вызов последней использованной ВПФ"
140 Ёпрст
 
13.04.20
13:28
Там всего лишь идёт заполнения списка впф для этой формы (который надо выкинуть оттуда к едрени фени, для открытия формы быстрее раз в 10)
141 Злопчинский
 
13.04.20
13:40
(139) есть там такое. в контексте ПриОткрытии отрабатывает код.
    // Заполним таблицу для выбора печатной формы
    НомерТекущейФормы = глУстановкаКнопкиПечать(Контекст, "Документ." + Вид(),ТаблицаПечФорм); //**************** здесь ВПФ
    
    Парам = Форма.Параметр;
    Если ТипЗначенияСтр(Парам)="СписокЗначений" Тогда
        Если ПустоеЗначение(Парам.Получить("Команда"))=1 Тогда
            Сообщить("В форму документа "+Вид()+" передан неверный параметр!","I");
            СтатусВозврата(0);Возврат;
        КонецЕсли;
        Если Парам.Получить("Команда") = "ПечатьНаПринтер" Тогда
            КолЭкз = Макс(Число(Парам.Получить("КолЭкз")),1);
            ПоКнопкеПечать(1,КолЭкз);
            СтатусВозврата(0);Возврат;
        ИначеЕсли Парам.Получить("Команда") = "ПечатьНаЭкран" Тогда
            ПоКнопкеПечать(0);                //************************** ЗДЕСЬ ВПФ
            СтатусВозврата(0);Возврат;
        Иначе
            Сообщить("В форму документа "+Вид()+" передана неверная команда "+Парам.Получить("Команда")+"!","I");
            СтатусВозврата(0);Возврат;
        КонецЕсли;
    КонецЕсли;



вот здесь
    НомерСтроки = глПолучитьТекущуюПечФорму(ВидОбъекта, ТаблицаПечФорм); // ****** вот здесь......
    Если НомерСтроки = 0 Тогда
        ЗагловокКнПечать = "Печать";
    Иначе
        ЗагловокКнПечать = ТаблицаПечФорм.ПолучитьЗначение(НомерСтроки, "Кнопка");
    КонецЕсли;

    Возврат НомерСтроки;
    
КонецФункции // глУстановкаКнопкиПечать()

Функция глПолучитьТекущуюПечФорму(ВидОбъекта, ТаблицаПечФорм) Экспорт
    
    Перем ИмяПечФормы, НомерСтроки;
    
    НомерСтроки = 0;
    
    Если ТаблицаПечФорм.КоличествоСтрок() > 0 Тогда
        ИмяПечФормы    = ВосстановитьЗначение(ВидОбъекта + "ПечФорма"); //***********вот здесь
142 Ёпрст
 
13.04.20
13:55
(141) гы.. т.е ты отправляя на печать форму, хочешь изменять реквизиты в документе ? Зачем ?!
143 Ёпрст
 
13.04.20
13:55
Тебя куда-то не туда заносит
144 Ёпрст
 
13.04.20
13:56
И тем более, передать параметр в форму дока ты можешь только написав это кодом, из обработки или еще откуда. Тогда нафига это всё ? Если в обработке и так можешь поменять что угодно.
145 Злопчинский
 
13.04.20
14:01
(142) ну ты, епрст!
использую DGA как плугин, хоть для печати этикеток, хоть для изменения реквизитов, хоть для выгрузки в иксемель итд.
146 Злопчинский
 
13.04.20
14:02
(144) я ничего не пишу в типовой. это УЖЕ написано.
я просто подсовываю только ВПФ, которяа делает что надо. И всё. в типовой больше ничего не пишу.
147 Ёпрст
 
13.04.20
14:11
(145) Праильно. Ты решаешь задачу через жпо.
148 Ёпрст
 
13.04.20
14:12
Зачем Использовать механизм впф для изменения реквизитов дока из своей обработки ?!
149 Злопчинский
 
13.04.20
14:22
(148) потому что мне так удобно. и клиенту так удобно. и ничего не надо никуда вносить/исправлять.
скопировал два файла в прнформс и плугин установлен.
.
что не нравится-то?
150 Ёпрст
 
13.04.20
14:25
(149) То, что код В ПриОткрытии у документа для "печати" у дока будет вызван из групповой обработки
151 Ёпрст
 
13.04.20
14:25
В которой все эти телодвижения не нужны и вредны
152 Злопчинский
 
13.04.20
14:37
(150) "То, что код В ПриОткрытии у документа для "печати" у дока будет вызван из групповой обработки"
- пока никакой групповой обработки не используется для этой ВПФ.
И использование этой ВПФ в режиме групповой обработки - не предполагается.
153 Злопчинский
 
13.04.20
14:38
(немного в сторону, для обсуждения - если таковое будет - после: и даже если эта ВПФ будет в режиме групповой обработки - ну и что? будет на каждый документ из групповой обработки вываливать диалог "ввода значений реквизитов")
154 Ёпрст
 
13.04.20
14:39
(152) Как это ?!
А нахрена тогда ты спрашиваешь про открытие впф из кода в ПриОткрытии() у документа ?!
155 Ёпрст
 
13.04.20
14:39
И потом все эти вопросы в ранее про ЭТО ?
156 Злопчинский
 
13.04.20
15:23
(154) потому что:

если форма документа открывается в режиме "только чтение" и контекст формы ПриОткрытии - завершен и форма открыта, То для обновления отображения исправленных реквизитов - надо форму "переоткрыть".

если форма документа открывается в режиме "только чтение" и контекст формы ПриОткрытии - не завершен (и после исполнения ПриОткрытии форма документа не откроется стстаусвовзврат(0) - как при передачи "команды"), то и форму документа в самой ВПФ не надо переоткрывать.
157 Злопчинский
 
13.04.20
15:25
(155) "все эти вопросы в ранее про ЭТО"
- нет, куча вопросов была и они успешно решены.

остался вопрос в (127)
158 Ёпрст
 
13.04.20
15:30
(156)
>>>код ВПФ выполняется в контексте процедуры ПриОткрытии формы-родителя?

Вот это возможно только в какой-либо обработке
159 Ёпрст
 
13.04.20
15:31
А там, всё это (впф) не нужно.
160 Ёпрст
 
13.04.20
15:34
Если уж очень хочется, то в своей обработке подключай класс.Перехватчика и паси любые штатные процедуры и меняй их на что хочешь.
Сам класс, не обязвтельно при этом иметь в конфе.
161 Злопчинский
 
13.04.20
19:18
(160) фу, бяка.
из любви к искусству хочу максимально штатно.
162 Злопчинский
 
13.04.20
19:20
(158) "код ВПФ выполняется в контексте процедуры ПриОткрытии формы-родителя?
Вот это возможно только в какой-либо обработке"
-
в смысле..?
необязательно в какой-то обработке.
Формажурнала, кнопка - запускает процедуру - процедура вызывает ОткрытьФорму(текДок,Параметры,1).
Форма документа - запускается ПриОткрытии - запускается ВПФ по переданному параметру/ пока что никаких обработок кроме самой ВПФ.
163 Cthulhu
 
14.04.20
00:35
а можно еще через попытку-исключение.
если выполнится попытка - значит это в контексте приоткрытии.
если перескочит в исключение - значит это в контексте формы (по кнопке на морде). можно дополнительно убедиться в этом проанализировав описаниеошибки.
вот и проанализировали штатно, Серег, а?..
164 Злопчинский
 
14.04.20
01:18
(163) "через попытку-исключение." - что именно?
165 Cthulhu
 
14.04.20
03:10
(164): в каком месте у тебя ошибка лезет "...невозможно из формулы..."
166 Калиостро
 
14.04.20
07:00
(163) Я это предлагал в (14). Почему-то не устроило.
167 Злопчинский
 
14.04.20
08:56
(166) то что в (14) решено уже.
168 Ёпрст
 
14.04.20
10:54
(157) Если типовая, то так

Если ПустоеЗначение(Конт.Форма.АктивныйЭлемент()) = 1 Тогда
    Сообщить("открыли из приОткрытия()");
Иначе
    Сообщить("открыли по кнопке");
КонецЕсли;
169 Злопчинский
 
14.04.20
11:32
(168) О, спсб! а то я думал ты с 8-кой уже квалификацию потерял...
170 Ёпрст
 
14.04.20
11:40
(169) метод не совсем правильный, если у кнопки не будет идентификатора, то облом.
Но, в типовых, вроде как он везде назначен..
171 Злопчинский
 
14.04.20
11:41
(170) не, не везде.
но это не сильно принципиально.
172 Злопчинский
 
14.04.20
11:52
(168) вкрутил, вроде все ок, спсб.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший