Имя: Пароль:
1C
1C 7.7
v7: Как сделать окно внешней обработки невидимым - 2
,
0 victuan1
 
27.07.16
18:26
Продолжение темы Как сделать окно внешней обработки невидимым

Через 1с++ можно сделать окно внешней обработки невидимым? Т.е. пользователь ее не видит. Но можно обращаться к ней из других форм через Форма.Параметр и процедуру ПриПовторномОткрытии().

Ёпрст: А зачем для этого форма обработки ?
ВыполняемыйМодуль(2) или ДопГлобальник(1) формекса .. или классы(3) - покрывают все потребности

(1) Если использовать ДопГлобальник, то модуль не проходит синтаксический контроль при использовании процедур и функций ДопГлобальника.
Можно? конечно, ДопГлобальник загружать в модуле одной обработки, а использовать в модуле другой, но рой синтаксических ошибок всё равно будет мешать в конфигураторе.

Использовать Шаблон? Некрасиво, и не получится определить в ДопГлобальнике процедуры. А функции должны будут возвращать только простые типы данных, либо придется результат оборачивать в ЗначениеВСтрокуВнутр. Использование этих доп. функций (Шаблон, ЗначениеВстрокуВнутр, ЗначениеИзСтрокиВнутр) наверняка скажется на производительности.

Как изящно решить проблему?
355 victuan1
 
01.09.16
21:38
Вылетает, если в отладчике пытаться прочитать значение переменной, которая не существует в данном контексте.
356 victuan1
 
07.09.16
18:52
На одном компьютере обнаружил еще одну бяку. Если загружены 1с++ и Формекс, то при использовании КОП 1с++, происходит падение 1с на операторе Предупреждение().
Если формекс не загружать, то падения не происходит.
Как лечить?
357 victuan1
 
08.09.16
10:34
ап. вопрос серьезный.
358 ADirks
 
08.09.16
10:43
В каком порядке грузятся компоненты?
Что ещё грузится?


крайне желательно, чтобы первой грузилась 1cpp, потом FormEx, а потом уж всё остальное
359 victuan1
 
08.09.16
12:22
Сначала грузиться 1с++, потом формекс, потом подключается класс через МетаИнфо, затем в классе вызывается Предупрждение.
Если из этой цепочки убрать загрузку формекса, то траблы нет.
Пока на одном компьютере такая бяка обнаружена.
360 victuan1
 
08.09.16
13:28
какую еще инфу предоставить?
361 Ёпрст
 
08.09.16
14:26
>>>затем в классе вызывается Предупрждение.
Зачем ?
362 Ёпрст
 
08.09.16
14:27
Используй лучше "Легкое сообщение" заместо этого, и красившее и систему не стопарит
363 Это_mike
 
08.09.16
14:36
(362)офф. А почему Турбомд может не работать? Из-за перехватчика - может?
А то вот понадобилось внезапно под конец, и не заработало
364 victuan1
 
08.09.16
15:35
Обнаружил что еще запускается класс с перехватчиком предопределенных процедур.
365 victuan1
 
08.09.16
15:36
(362) Что такое "легкое сообщение"?
366 victuan1
 
08.09.16
16:11
Проверил влияние Перехватчика отключением он не причем. Виснет 1С если запущен формекс, если формекс не запускать, то не виснет. Куда копать дальше?
367 Это_mike
 
08.09.16
16:19
(366) а какие-нибудь формексовские объекты создаются? или только загрузка?
368 Ёпрст
 
08.09.16
17:42
(363) Их есть несколько версий и только одна корректно более менее работает с 1cpp
369 Ёпрст
 
08.09.16
17:47
370 Ёпрст
 
08.09.16
17:57
371 victuan1
 
08.09.16
19:35
(367) упростил всё до минимума - только загрузка
(368) 2.0.5.108
372 victuan1
 
10.09.16
14:51
Ну вот, еще на одном компьютере тоже зависло. Но уже на операторе Вопрос() внутри КОП.
Формекс не загружался, только 1с++.
Как решить проблему?
373 victuan1
 
10.09.16
18:04
(372) Нет, формекс там стоит в закгрузке ПриНачалеРаботыСистемы. просто версия древняя, в Сервис-Параметры не отображалась. Отключил загрузку формекса - проблема ушла. Запуск 1с++ перед формексом не решает проблему.
374 victuan1
 
10.09.16
18:22
Удалось создать демо-пример для иллюстрации ошибки. Если есть заинтересованные, то могу выслать для анализа кода.
375 victuan1
 
10.09.16
18:50
Для всех заинтересованных: https://yadi.sk/d/ODIKTzSFuyqUN
Для иллюстрации проблемы используются файлы:
ПроверкаКОП.ert - обработка, инициализирующая КОП.
КОП_Проверка.ert - собственно класс.

Порядок действий, приводящий к появлению проблемы:
1) в гл. модуле конфигурации 1С нужно объявить экспортную переменную глКОП:
Перем глКОП Экспорт;
2) В режиме 1С:Предприятие открыть ПроверкаКОП.ert, нажать кнопку Сформировать, затем Проверка - произойдет показ диалогов Предупреждение и Вопрос.
3) Закрыть обработку ПроверкаКОП.ert
4) Снова открыть ПроверкаКОП.ert, нажать кнопку Проверка - произойдет зависание программы 1С. Отладчик остановится на операторе Предупреждение внутри класса КОП_Проверка.ert
Если кнопку Проверка нажимать повторно, не закрывая обработку ПроверкаКОП.ert - зависания не происходит. Т.е. проблема возникает при переопредении переменной, ссылающейся на экземпляр класса.

1с++ использовалась версии 3.2.4.3.
Формекс - 2.0.5.108, но на более ранних версиях проблема сохраняется.
376 victuan1
 
10.09.16
18:53
Возможно окна Предупреждение или Вопрос появляются, но они невидимы и нет возможности их интерактивно обработать.
377 Djelf
 
10.09.16
21:54
(375) Win10, 1cpp 3.2.4.3, formex 2.0.5.101 - все ок.
А если таймаут в предупреждении и вопросе указать тоже замерзает?
378 victuan1
 
11.09.16
05:04
(377) Не успел еще проверить. При случае проверю. Мне приходится удаленно подключаться к клиенту для проверки. Т.к. на моих компах подобного сабжа нет.
379 victuan1
 
12.09.16
12:08
Доп. информация. "Замерзает" именно из-за переопределения переменной, ссылающейся на экземпляр класса:
    глЕ = глКОП;
    глЕ.ИмяФайлаОбработки("Проверка")

В таком виде:
    глКОП.ИмяФайлаОбработки("Проверка")
зависания при повторном запуске обработки не происходит.

Таймаут в Предупреждение не помогает.
380 victuan1
 
12.09.16
12:22
Если Формекс не загружать, то зависания также нет при любом варианте.

На одном из двух компьютеров сторонний дебаггер сообщает об необработанном исключении в 1cv7s.exe (https://yadi.sk/i/YdHco4Guv4HjN).

Могу организовать удаленный доступ на компьютер, в котором имеет место быть сабж (уже два таких устойчивых инцидента на разных компьютерах зарегистрированы).
381 Ёпрст
 
12.09.16
12:30
Ничего не падает и не "подвисает"
Win2012 x64
Win XP x32
382 Злопчинский
 
12.09.16
12:38
смотреть версии формекса и 1С++ ???
383 victuan1
 
12.09.16
13:51
(382) А что смотреть? Последние стоят.
384 victuan1
 
12.09.16
13:51
(381) Этот сабж я воспроизвел на двух ПК из 20. Могут дать уд. доступ к сабжевому компу.
385 Djelf
 
12.09.16
17:30
Поймал вылет! Еще одно условие для вылета: объявление  переменной глКОП не должно быть первым в глобальнике.
Странно, вчера не вылетало...
386 victuan1
 
12.09.16
17:58
(385) У меня первым стоит.
387 Djelf
 
12.09.16
18:28
(386) Вот поэтому и вылетает не всегда. Перемести пониже будет вылетать стабильнее.
Присвоение глЕ=глКОП тоже не обязательно...
Похоже при закрытии формы глКОП как то портится
Без formex, кстати, тоже вылетает, даже на таком коде


// Функция в Обработке
Процедура Проверка()
    глКОП.ИмяФайлаОбработки();
КонецПроцедуры
// Функция в Коп
Функция ИмяФайлаОбработки() Экспорт
    Предупреждение("Ой упаду...");
КонецФункции
388 victuan1
 
12.09.16
18:32
(387) Мне без формекса уронить не удалось ни разу.
389 Злопчинский
 
12.09.16
19:09
продолжаю наблюдение...
390 Djelf
 
12.09.16
21:14
А что там наблюдать? И так уже понятно.

Открытие модальных окон из класса можно делать только из класса инициализированного в вызывающей форме.
391 Злопчинский
 
13.09.16
12:02
А в доку внести...?
392 victuan1
 
13.09.16
18:53
Это пока предположение. И почему проблему с классами КОП вызывает  формекс?
393 Djelf
 
13.09.16
23:01
(392) formex не виноват т.к. я воспроизвел проблему на созданной с нуля базе только с загрузкой 1сpp (иначе классов же не будет).
Для вывода монопольной формы нужна ссылка на родительскую.
Видимо класс при создании запоминает эту ссылку.
Когда форма закрыта, что-то еще может остаться в памяти как "мусор", но именно этот мусор и помогает не падать.
Когда ссылка очищается полностью - ссылка на форму ведет в космос и мы падаем...
А вот когда ссылка на форму очистится явление не сильно предсказуемое, поэтому оно иногда работает довольно долго.
394 victuan1
 
14.09.16
15:06
И что, 1с++ кривая, или есть возможность ее поправить?
395 Djelf
 
14.09.16
15:41
(394) Кто ж это уже будет делать...
Есть обходной путь: сделай микро класс обертку над предупреждением и вопросом и пересоздавай его внутри своего класса.
396 victuan1
 
14.09.16
16:03
(395) Не понял идею.
397 Djelf
 
14.09.16
16:09
(396) В Класс Сообщения
Функция Предупредить(ТекстПредупреждения="",Таймаут=0) Экспорт
    Предупреждение(ТекстПредупреждения,Таймаут);
КонецФункции

в твой коп вместо Предупредить
Сообщения=СоздатьОбъект("Сообщения");
Сообщения.Предупредить("Упаду?");

привязка к форме будет пересоздаваться и так падать не должно.
398 Chieftain
 
14.09.16
17:10
(375) 1C++ 3.2.4.1, FormEx 2.0.5.101, не воспроизвелось.
399 victuan1
 
14.09.16
17:12
(398) У меня воспроизводилось на этих версиях.
400 victuan1
 
14.09.16
17:13
(398) Для чистоты эксперимента нужно проверить на указанных мною.
401 Chieftain
 
14.09.16
17:17
(400) Выложи свои версии, 4.3 на 1Cpp.ru не нашел что-то сходу
402 Chieftain
 
14.09.16
17:20
(399) Понял в чем косяк, 1С++ и formex загружал в глобальнике. При загрузке из обработки были какие-то проблемы, сейчас порою - может найду.
403 victuan1
 
14.09.16
17:30
(402) Какая разница где загружать?
404 victuan1
 
14.09.16
17:33
(401) 3.2.4.3 здесь лежит http://www.1cpp.ru/forum/YaBB.pl?num=1332077808
405 Chieftain
 
14.09.16
17:34
(404) Устал я походу - не вижу там ссылки
406 Djelf
 
14.09.16
17:45
А нет... все таки formex. Забыл что он в функции загрузки коп грузится. Убрал - не падает.
Но в любом случае через класс обертку и с ним не падает.
407 Djelf
 
14.09.16
17:51
(405) https://cloud.mail.ru/public/45EM/KVt7spxJW
чистая конфа с тестом падения, внутри 1cpp 3.2.4.3
у меня 100% падение
408 victuan1
 
14.09.16
18:05
(407) Проверил на дом. компе. Упало. Спасибо)
Напомню инструкцию для вызова падения:
1) запустить демо-конфу по ссылке https://cloud.mail.ru/public/45EM/KVt7spxJW
2) в меню выбрать "упасть"
3) откроется обработка, нажать последовательно кнопки "ИнитКОП", "Упасть", "Закрыть", обработка закроется.
4) в меню выбрать "упасть"
5) обработка снова откроется, сразу нажать "Упасть". 1С зависнет.
409 Chieftain
 
14.09.16
18:56
(408) Попробуй в КОП_Проверка.ert добавить код:

Перем FormEx_ЗаголовокПредупреждения Экспорт;
Перем FormEx_ИконкаПредупреждения Экспорт;
Перем FormEx_ОсновнаяКнопкаПредупреждения Экспорт;
410 Djelf
 
14.09.16
18:59
(409) Ай шайтан! Не падает ;)
411 Chieftain
 
14.09.16
19:01
(410) Видимо ноги растут из этой фичи:

[.0] функционал переопределения иконки, заголовка и кнопки "по умолчанию" для диалогов "Предупреждение" и "Вопрос"
// для переопределения надо определить переменные FormEx_ЗаголовокПредупреждения, FormEx_ИконкаПредупреждения и FormEx_ОсновнаяКнопкаПредупреждения и задать им значение
//FormEx_ЗаголовокПредупреждения: строка с заголовком диалога
//FormEx_ИконкаПредупреждения: число 1 - "стоп"; 2 - "вопрос"; 3 - "предупреждение"; 4 - "информация"; любое другое значение - не менять;
//FormEx_ОсновнаяКнопкаПредупреждения: число - порядковый номер кнопки диалога, которая становится "по умолчанию"
412 Chieftain
 
14.09.16
19:03
+(411) ИМХО: пытается получить переменные из текущего контекста как из модуля, а там другой тип (КОП) - вот и валится.
413 Djelf
 
14.09.16
19:05
(411) Об этом я думал, т.е. пытался установить эти параметры через Сервис - не помогало. А вот про экспортные переменные совсем не подумал.
414 Chieftain
 
14.09.16
19:10
(413) Возможно для обычных модулей FormEx их явно добавляет, поэтому проблем с чтением нет. А у КОПов свойства нет и при попытке чтения крашится.
415 victuan1
 
14.09.16
19:56
(409) Проверил, не падает.
Оператор Вопрос это тоже "лечит"?
416 Chieftain
 
14.09.16
20:04
(415) Что мешало сразу и проверить? У меня не падает.
417 victuan1
 
14.09.16
20:06
(416) Я сразу и проверил. У меня не падает. Интересуюсь, как у других.
418 Chieftain
 
14.09.16
20:10
(417) Ну в общем-то, если логически рассуждать - должно вылечиться, т.к. эти переменные и на диалог вопроса влияют
419 victuan1
 
14.09.16
20:16
(418) Да, прочитал - вижу. Проверю еще на двух компьютерах (когда будет доступ) и можно будет считать вопрос решенным.))
420 Злопчинский
 
14.09.16
20:25
Ну вы монстры!!!
421 victuan1
 
15.09.16
14:17
Пользователи тех двух ПК отчитались - всё стало работать нормально.
АЛьФ подготовил сборку, в которой эта проблема решена без объявления в КОП переменных переопределения иконки.
https://yadi.sk/d/mp4drZMqvBqLr
422 Ёпрст
 
15.09.16
14:43
(421) Попроси его, чтоб событие ПослеОткрытия работало в модальных формах еще.
423 Chieftain
 
15.09.16
14:57
(422) Так юзай ФормаПриСоздании(), оно вроде работает везде
424 victuan1
 
15.09.16
15:02
(422) А сам что не попросишь?
425 АЛьФ
 
15.09.16
15:03
Обновленная версия выложена на dorex.pro
2(422) При всем моем уважении... Там реально не реально сделать.
2(423) ПослеСозданияФормы()
426 Chieftain
 
15.09.16
15:06
(425) ФормаПриСоздании аналогично ПослеСозданияФормы и генерится объектом "Форма" из состава 1С++
427 victuan1
 
15.09.16
15:07
(425)
[665.21 Kb]
[версия: 2.0.5.110 от 15.09.2016]
[скачиваний: 888]
Откуда столько скачиваний?
428 Chieftain
 
15.09.16
15:08
+(426) правда оно чуть сложнее - объект "Форма" нужно держать. У меня просто в глобальном перехватчике все есть + доп.процедуры генерятся
429 АЛьФ
 
15.09.16
15:11
2(427) Логично предположить, что я просто не скидываю счетчик. :)
Но он и сам по себе глючно сделан.
430 Ёпрст
 
15.09.16
15:47
(425) ну и ладно, я то переделал в своё время все свои поделки :)
Так, думал, мот там не долго.
431 Ёпрст
 
15.09.16
15:49
(429) А, древнюю хотелку, с добавитьАтрибут с типом атрибута 9 (текстовая колонка), можно как-нить доработать ? Или там тоже засада по самые помидоры ?
432 АЛьФ
 
15.09.16
15:55
2(431) Добавление атрибутов это ж вообще не я до работоспособного состояния доводил, а Артур. Так что для меня там действительно засада, надо опять во всю влезать в проект.
Смотри как я к "вижуал студио" сейчас подключаюсь:
- на работе бездисковая станция, сервер где-то далеко-далеко за морями,
- с нее подрубаюсь к домашнему компу в терминальном режиме,
- там запускаю виртуальную машину с хрюшей,
- и уже тут запускаю студию.
Естественно, в таком режиме нормально не поработаешь. Кстати, во многом именно поэтому и пришлось остановить развитие проекта.
433 Ёпрст
 
15.09.16
15:57
(432) ну ясно. Артуру, тоже в своё время некогда было копаться. Так-то много полезных вещей с добавленной колонкой можно было бы лепить.
А и ладно, один хрне, все на снеговике ужо. почти все
434 Chieftain
 
15.09.16
16:08
(432) (433) Вроде на 1Cpp какой-то деятель вопросы по этому поводу сегодня задавал
http://www.1cpp.ru/forum/YaBB.pl?num=1191404333/all
435 АЛьФ
 
15.09.16
16:20
2(434) Это месяц назад. Но там я тоже уже не бывал давно. Спасибо.
436 Vippi
 
15.09.16
16:38
(433)
> А и ладно, один хрне, все на снеговике ужо. почти все

Не, не все :)

(435) Рад видеть, Алексей.
437 АЛьФ
 
15.09.16
16:40
2(436) Взаимно.
438 Chieftain
 
15.09.16
16:47
(435) Извиняюсь за ошибку, забыл что сегодня уже сентябрь... заработался...
439 victuan1
 
15.09.16
17:42
(438) Хорошо, когда детей в школу отправлять не надо)))
440 Chieftain
 
15.09.16
17:45
(439) Ну дочь в этом году в 1 класс пошла)) Правда водит ее жена - я в этот момент только спать ложусь последнее время))
441 victuan1
 
15.09.16
17:52
А я и дочь в школу вожу и сына в садик. И забираю я же. И жену на/с работу вожу)))
442 Djelf
 
15.09.16
21:10
(425) Я как-то не понял про ПослеОткрытия...
> 2(422) При всем моем уважении... Там реально не реально сделать.
FormEx_2.0.5.101 - в модальных срабатывает
FormEx_2.0.5.108 - в модальных не срабатывает
FormEx_2.0.5.110 по ссылке выше - в модальных срабатывает! оО
443 АЛьФ
 
16.09.16
08:34
2(442) Эуэмуэ.... Кхем... Вот точно помню, что затык там конкретный был с CDialog::DoModal, что я так и не разобрался как обойти. Может я чего не то помню? Старею...
444 ildary
 
16.09.16
15:00
Уважамые гуру, все не читал, стоит обновлять FormEx до 2.0.5.110, если сейчас стоит 2.0.5.109? Задача скрытия формы пока что не стоит.
445 АЛьФ
 
16.09.16
15:49
2(444) Если все работает, то нет смысла обновляться. Этот новый релиз очень специфичный глюк исправляет.
446 Злопчинский
 
16.09.16
17:12
(433) а я? а как же я...?! ;-)
447 Злопчинский
 
16.09.16
17:14
так где правильный формекс следует брать, со всеми псолдедними и предпоследними доработками? ведь вроде когда Альф отошел от проекта - его автономно пилили формекс на 1С++ ктото.. а сейчас Альф допилил... в итоге - где "правильно"..? или ветка по формексу всего одна?
448 Chieftain
 
16.09.16
17:20
(447) на дорексе, вестимо. Артур, емнип, когда пилил - все изменение Алексею сливал
449 Злопчинский
 
16.09.16
19:42
(448) спсб!
450 Djelf
 
16.09.16
21:17
(445) На 110й РасширениеФормы.ОбработкаОжидания спамит  CTimerWithEvent::SendEvent
451 АЛьФ
 
19.09.16
11:03
2(450) Так и знал, что что-то обязательно всплывет. Сегодня поправлю.
452 АЛьФ
 
19.09.16
12:41
+(451) Поправил.
453 Djelf
 
19.09.16
13:14
(452) Спасибо! Не спамит, на предупреждении не вылетает.
А с методами methColArray, methCreateStdControl_Static, methCtrlInfo, methFieldsArray, methGetCtrl, methTraceWindows что-то полезное/интересное сделать можно? Или это только для отладки?
454 АЛьФ
 
19.09.16
13:20
2(453) Это Артур делал. Насколько я понимаю, именно для отладки.