|
Глюк с повторно открытой внешней обработкой | ☑ | ||
---|---|---|---|---|
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) хотя записано по другому. Не предлагайте на угад что попало, чтобы я впустую не проверял не работающие варианты. Гадать я и сам могу.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |