Имя: Пароль:
1C
 
Глюк с повторно открытой внешней обработкой
,
0 D_Pavel
 
05.05.16
07:51
Сабдж: глюк с повторно открытой внешней обработкой! Отладчиком ставлю точку останова в файле внешней обработки. Открываю ее в предприятии, она нормально открывается и нормально срабатывает точка останова.
Потом выполняю следующий код в модуле формы:

Закрыть(); // Закрываю обработку (или только форму, ХЗ).
ВнешняяОбработка = ВнешниеОбработки.Создать("C:/users/zuev/МаяОбработка.epf"); // Получаю ту же самую обработку которая открыта в конфигураторе заново.
ВнешняяОбработка.ПолучитьФорму().Открыть(); Открываю ту же самую форму в которой стоит точка останова

В результате обработка закрывается и открывается заново, но в отладчике уже не срабатывает точка останова. Если сработает остановка по ошибке, то в отладчике открывается копия файла с этой обработкой, и в копии уже срабатывают точки останова.
Получается в конфигураторе открыты два одинаковых файла внешней обработки. Что за фигня?

Как сделать чтобы программно открывалась обработка аналогично тому как она открывается через сеню файл? Чтобы не было дублей и чтобы срабатывали точки останова.
1 mehfk
 
05.05.16
07:56
Сабдж
МаяОбработка

Платформу обнови.
2 D_Pavel
 
05.05.16
07:59
(1) Платформу обновлял. На всех версиях так себя ведет. Думаю дело не в платформе
3 Trotter
 
05.05.16
08:12
вообще вроде как нужно вашу обработку открытую искать в %temp%
4 LordCMEPTb
 
05.05.16
08:15
(2) Платформа точно 8.3.7.+?
5 D_Pavel
 
05.05.16
08:15
(4) 1С:Предприятие 8.3 (8.3.6.2449)
6 D_Pavel
 
05.05.16
08:16
(3) Почему в temp? Там ее точно нет, я проверил
7 D_Pavel
 
05.05.16
08:16
(4) а что, есть инфа что в 8.3.7 этот глюк исправили?
8 Trotter
 
05.05.16
08:17
а в 1С КаталогВременыхФайлов чему равен ?
9 D_Pavel
 
05.05.16
08:19
(8) ХЗ. Я даже не знаю для чего ты это спросил.
10 4St
 
05.05.16
08:25
(0) А если разбить на 2 действия?

Форма = ВнешняяОбработка.ПолучитьФорму();
Форма.Открыть();

И добавить любой код в раздел операторов формы, поставить на нем точку останова.
11 D_Pavel
 
05.05.16
08:40
(10) То же самое, все равно не срабатывает точка останова, и создается копия обработки
12 4St
 
05.05.16
08:45
(11) Тогда на этом идеи всё.
P.S. А зачем заново получать объект обработки из формы этой же обработки? Если интерес академический, то ладно, а если сугубо практический, то наверняка задача как-то по-другому решается.
13 D_Pavel
 
05.05.16
08:59
(12) Если обработка обновилась на диске, то нужно закрыть ее и открыть заново с исправлениями. Программно это делать быстрее.
14 TormozIT
 
гуру
05.05.16
09:02
8.3.6 выкидывай на свалку. Там так коряво работает, хотя я это еще в тестовой обнаружил и сообщил в 1С, но они забили и решили исправить только в 8.3.7. Поэтому все мучаются с этой бедой.
15 D_Pavel
 
05.05.16
09:05
(14) Ок, пошел выкидывать. Спасибо
16 mehfk
 
05.05.16
09:12
(15) Все врут см. (2)
17 Vladal
 
05.05.16
09:28
Я подобное наблюдаю с сохраненными настройками средствами платформы, если программно перезапускаю внешний отчет или обработку.
Четные запуски с одной настройкой, нечетные с другой. Если штатно закрывать и открывать внешнюю обработку, то проблема не наблюдается.
18 Serg_1960
 
05.05.16
09:28
Когда обновление платформы не поможет, я озвучу решение проблемы автора :)
19 kittystark
 
05.05.16
12:46
(0) нафига это все?
20 kittystark
 
05.05.16
12:46
попробуй

во = ВнешниеОтчеты.Создать(ИспользуемоеИмяФайла);
во.ПолучитьФорму("ФормаОтчета").Открыть();
ЭтаФорма.Закрыть();
21 kittystark
 
05.05.16
12:47
* вернее в твоем случае ВнешниеОбработки
22 D_Pavel
 
05.05.16
17:35
(18) Действительно не помогло! Дело не в платформе, как я и говорил.
23 D_Pavel
 
05.05.16
17:37
(17) Ты наверное сначала открывал новую обработку, а потом закрывал старую. Попробуй сначала закрыть старую как это сделано у меня, а потом открыть новую.
24 D_Pavel
 
05.05.16
17:37
(20) ты имеешь в виду как предлагали в (10)? Так не помогает.
25 D_Pavel
 
10.05.16
09:47
Ап
26 Мимохожий Однако
 
10.05.16
09:52
Иногда достаточно закрыть все окна 1С и заново зайти
27 D_Pavel
 
10.05.16
10:21
(26) А иногда хочется пивка попить. Но давайте все же по теме, пожалуйста.
28 kittystark
 
10.05.16
17:32
в (0) очень смущает твоя фраза "Получаю ту же самую обработку которая открыта в конфигураторе заново."
КАК ЭТО ЗАНОВО ? руками или автоматом ?

может и не прав, но скорее связано с этим:
в 1с "классический" сборщик мусора в памяти вроде как отсутствует, но для того чтобы память освободилась, нужно чтобы счетчик ссылок на объект был равен нулю

ты закрываешь форму программно, код еще в памяти, форма тоже получается еще в памяти, хотя ее и не видно, счетчик ссылок не равен нулю, и при попытке открыть форму заново у тебя в рантайме второй раз используется ровно то, что до этого сидело и до сих пор еще сидит в памяти
29 kittystark
 
10.05.16
17:32
ты пробовал не то что в (10), а то что в (20) ???
30 D_Pavel
 
10.05.16
19:36
(28) >> КАК ЭТО ЗАНОВО ? руками или автоматом ?
Прочитай ту строку кода целиком с самого начала. А не только окончание.
31 D_Pavel
 
10.05.16
19:38
(29) Я не пробовал (20) потому что по сути это то же самое что (10) и (0) хотя записано по другому. Не предлагайте на угад что попало, чтобы я впустую не проверял не работающие варианты. Гадать я и сам могу.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан