Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Вылет ДобавитьГлобальныйМодуль() при нескольких вызовах (число прочтений - 3981 )
Anthon
Junior Member
**
Отсутствует


Тупой 1сник

Сообщений: 31
Местоположение: Chitago
Зарегистрирован: 17. Июня 2009
Пол: Мужской
Вылет ДобавитьГлобальныйМодуль() при нескольких вызовах
15. Июля 2009 :: 09:49
Печать  
Бывают ситуации, когда нет конфигуратора под рукой и доступа к внешним обработкам (при удаленном администрировании удаленных юзеров и по УРБД), и необходимо быстро выполнить какой-нибудь микрокод, типа "увеличить все цены в такой-то группе товаров на столько-то". Чтоб особо не париться, повесил на хоткей функцию


Перем глМодуль, глКод;
//-----------------------------------------------------------------------------
Функция Выполнить(Код, Конт = 0) Экспорт
     Старый = глМодуль;
     глКод = "Функция ВыполнитьДополнительно" + Старый + "() Экспорт " +
           РазделительСтрок + Код + РазделительСтрок + "Возврат 1; КонецФункции";
     глМодуль = глСервис.ДобавитьГлобальныйМодуль(глКод);
     глКод = Код;
     Если глМодуль = 0 Тогда
           Сообщить("Невозможно запустить код. Ошибка: " + ОписаниеОшибки());
           Возврат 0;
     КонецЕсли;
     Если Шаблон("[ВыполнитьДополнительно" + Старый + "()]") = "1" Тогда
           Сообщить("Выполнение завершено успешно. Код модуля: " + глМодуль);
//            глСервис.УдалитьГлобальныйМодуль(глМодуль);
           Возврат 1;
     КонецЕсли;
     Сообщить("Выполнение завершено с ошибками. Код модуля: " + глМодуль, "!!");
//      глСервис.УдалитьГлобальныйМодуль(глМодуль);
     Возврат 0;
КонецФункции

...
     Если (КодКл = 123) и (Алт * 4 + Шифт * 2 + Контрол = 1) Тогда
           Код = глКод;
           Если ВвестиСтроку(Код, "Введите код:", 0, 1) = 1 Тогда
                 Выполнить(Код, Конт);
           КонецЕсли;
     КонецЕсли;
...

,


которая позволяет выполнить произвольный код в режиме работы 1С:Предприятие.

1. НА СТРОКАХ глСервис.УдалитьГлобальныйМодуль(глМодуль) 1С ВЫЛЕТАЕТ.
2. ПОСЛЕ ДВУХ-ТРЕХ ВЫПОЛНЕНИЙ КОДА, А БЫВАЕТ И СРАЗУ, 1С ВЫЛЕТАЕТ.

Код может быть примитивный, например,

Спр = СоздатьОбъект("Справочник.Номенклатура");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлементы() = 1 Цикл
     Спр.Удалить(0);
КонецЦикла;
Сообщить("Очистка завершена...");


Получилась такая PHP-подобная конструкция, только она очень нестабильная.
Мне в дебаггер системы очень не охота лазить, возможно, косяк в FormEx, потому и пишу сюда.

П. С. Я не вирусописатель, это моя база и пишу такие извраты только для себя.
  

Все в мире относительно
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вылет ДобавитьГлобальныйМодуль() при нескольких вызовах
Ответ #1 - 15. Июля 2009 :: 10:35
Печать  
Мот тогда ВыполняемыйМодуль посмотришь из 1с++, вместо доп.глобальника ?
  
Наверх
 
IP записан
 
Anthon
Junior Member
**
Отсутствует


Тупой 1сник

Сообщений: 31
Местоположение: Chitago
Зарегистрирован: 17. Июня 2009
Пол: Мужской
Re: Вылет ДобавитьГлобальныйМодуль() при нескольких вызовах
Ответ #2 - 15. Июля 2009 :: 10:49
Печать  
Забыл сказать, мне нельзя использовать 1c++. Я не единственный программист, и у моих коллег не все в ладах с головой...
  

Все в мире относительно
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вылет ДобавитьГлобальныйМодуль() при нескольких вызовах
Ответ #3 - 15. Июля 2009 :: 11:00
Печать  
А формекс, значит можно ?
Улыбка)
  
Наверх
 
IP записан
 
Anthon
Junior Member
**
Отсутствует


Тупой 1сник

Сообщений: 31
Местоположение: Chitago
Зарегистрирован: 17. Июня 2009
Пол: Мужской
Re: Вылет ДобавитьГлобальныйМодуль() при нескольких вызовах
Ответ #4 - 15. Июля 2009 :: 11:21
Печать  
А вот мне не смешно. Разрешено пользоваться только одной ВК и все. Потому что все конфигурации - стандартные 1С. Мне для формекса достаточно двух внедрений в ЛЮБУЮ конфигурацию, чтобы она стала такой, какой мне надо. А 1с++ - это пипец будет.
Я не знаю, как у вас, но, скорее всего, у вас торговые и бухгалтерские конфиги, а, может, даже и самописные, над которыми вы можете издеваться, как хотите, а у меня наоборот - минимум внедрения в конфигурацию при максимуме возможностей. Везде должна стоять стандартная 1С, стандартная конфига и стандартный набор внешних обработок. Так как клиенты у нас обслуживаются по франчайзи, не воен час, что придет какой-нить деревенский урод, который обновит конфигу, не глядя внутрь (такое у нас постоянно), а FormEx я потихоньку подключил через ExtForms, и ее не видно вооруженным глазом. Правда, я работаю по самым "тяжелым" случаям, и мне необходима эта компонента, как воздух. За что спасибо АЛьФу еще раз (еще б стабильности ей добавить бы...)
  

Все в мире относительно
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вылет ДобавитьГлобальныйМодуль() при нескольких вызовах
Ответ #5 - 15. Июля 2009 :: 11:55
Печать  
Я не проверял, но попробуй не отключать доп.глобальник.. сколько потянет вызовов тогда ?
И вообще, каков максимум доп глобальников можно создать?
Улыбка
Тебе же всё равно ..разово это делать... пускай живут себе.
  
Наверх
 
IP записан
 
Anthon
Junior Member
**
Отсутствует


Тупой 1сник

Сообщений: 31
Местоположение: Chitago
Зарегистрирован: 17. Июня 2009
Пол: Мужской
Re: Вылет ДобавитьГлобальныйМодуль() при нескольких вызовах
Ответ #6 - 15. Июля 2009 :: 14:12
Печать  
Ну я же написал, 1-3 раза - и вылет. Это если не отключать... А с отключением - вообще вылетает.
И выполнять мне надо это несколько раз (до 15). Просто перезаходить по удаленному рабочему столу с килобитным интернетом глубинки хреново...
  

Все в мире относительно
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вылет ДобавитьГлобальныйМодуль() при нескольких вызовах
Ответ #7 - 15. Июля 2009 :: 14:44
Печать  
А версия формекса хоть какая ?
Попробовал - нормально загрузил 20 глобальников...
Не вылетает.
ЗЫ: С рабочим столом заходи по удаленке... достаточно будет 1с-ину еще раз запустить, при вылете Улыбка

  
Наверх
 
IP записан
 
Anthon
Junior Member
**
Отсутствует


Тупой 1сник

Сообщений: 31
Местоположение: Chitago
Зарегистрирован: 17. Июня 2009
Пол: Мужской
Re: Вылет ДобавитьГлобальныйМодуль() при нескольких вызовах
Ответ #8 - 15. Июля 2009 :: 15:24
Печать  
Версия формекса 2.0.5.95, 1С 7.7.027 SQL/DBF, конфига ЗиК AC 2.3.289.016.067 Улыбка (22 МБ)
винда Server Enterprise 2003 SP1 Rus, XP 2001-2008 Home-Pro SP1-SP2-SP3-SP4...

Да 1Ска после подключения формекса часто вылетает на функциях формекса, особенно на двойном правом клике, по которому у меня вызывается универсальное меню. Только все их залогить нереально, да и "стабильных" глюков привести примеры не могу, вот этот самый легковоспроизводимый.. Надо учиться пользоваться какими-нибудь отладчиками, чтобы засейвить контексты ошибок, но некогда никак, да и неинтересно уже... пора на 8-ку переходить...

Хотя все равно спасибо, что откликнулись...
  

Все в мире относительно
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вылет ДобавитьГлобальныйМодуль() при нескольких вызовах
Ответ #9 - 15. Июля 2009 :: 16:20
Печать  
http://www.1cpp.ru/forum/YaBB.pl?num=1232965066/18#28
вот еще почитай..
Мот его вообще не отключать?
  
Наверх
 
IP записан
 
Anthon
Junior Member
**
Отсутствует


Тупой 1сник

Сообщений: 31
Местоположение: Chitago
Зарегистрирован: 17. Июня 2009
Пол: Мужской
Re: Вылет ДобавитьГлобальныйМодуль() при нескольких вызовах
Ответ #10 - 15. Июля 2009 :: 22:53
Печать  
Понятно. Я и не удаляю. Просто вылетает и все.  Плачущий Ладно, забей...
  

Все в мире относительно
Наверх
 
IP записан
 
nicolas
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 148
Зарегистрирован: 24. Мая 2006
Re: Вылет ДобавитьГлобальныйМодуль() при нескольких вызовах
Ответ #11 - 16. Июля 2009 :: 06:50
Печать  
Anthon писал(а) 15. Июля 2009 :: 11:21:
А вот мне не смешно. Разрешено пользоваться только одной ВК и все. Потому что все конфигурации - стандартные 1С. Мне для формекса достаточно двух внедрений в ЛЮБУЮ конфигурацию, чтобы она стала такой, какой мне надо. А 1с++ - это пипец будет.
Я не знаю, как у вас, но, скорее всего, у вас торговые и бухгалтерские конфиги, а, может, даже и самописные, над которыми вы можете издеваться, как хотите, а у меня наоборот - минимум внедрения в конфигурацию при максимуме возможностей. Везде должна стоять стандартная 1С, стандартная конфига и стандартный набор внешних обработок. Так как клиенты у нас обслуживаются по франчайзи, не воен час, что придет какой-нить деревенский урод, который обновит конфигу, не глядя внутрь (такое у нас постоянно), а FormEx я потихоньку подключил через ExtForms, и ее не видно вооруженным глазом. Правда, я работаю по самым "тяжелым" случаям, и мне необходима эта компонента, как воздух. За что спасибо АЛьФу еще раз (еще б стабильности ей добавить бы...)

Ситуация была намного хуже. УРБД не моя. И я там ни чего не мог. Ert  и для тех пользователей кому уже полюбились мощь 1С++ запускали через Доп возможности. Даже перехват работал. Может не полный но тем не менее то что было сделано работало. А вот сейчас думаю. Если бы 1С++ был бы в 2003 году, типовые бухии можно было бы не курочить. 10 строк кода  В глобальнике и БОЛЬШОЕ спасибо Артуру за перехватчик!!!!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать