Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Вылетает 1С при загрузке 1С++. (число прочтений - 15319 )
Alex_Spb
Junior Member
**
Отсутствует



Сообщений: 43
Местоположение: Санкт-Петербург
Зарегистрирован: 21. Февраля 2008
Пол: Мужской
Вылетает 1С при загрузке 1С++.
21. Апреля 2008 :: 13:16
Печать  
Добрый день.
Исходные данные :
Сервер
Win 2003 Сервер SP1 + Citrix Metaframe Presentation Server 4
1C (27 релиз SQL ) опубликовано как приложение.

Версия 1С++ - Пробовал 2.5.0.1, 2.5.0.5, 2.5.0.6 ,  2.3.0.7  и icpp 3.0

Делаю пустую конфигурация с кодом
Код
Выбрать все
		Попытка
			Сообщить("Пытаемся загрузить 1cpp.dll");
			ЗагрузитьВнешнююКомпоненту("1cpp.dll");
			Сообщить("Компонента 1С++ загружена!");
		Исключение

			Сообщить("Компонента 1С++ НЕ загружена!","!!");
			Сообщить(ОписаниеОшибки());

		КонецПопытки;
 



Получаю вылет 1С.
С записью в логе

Код
Выбрать все
Event Type:       Error
Event Source:   Application Error
Event Category:               (100)
Event ID:             1000
Date:                    21.04.2008
Time:                    14:55:12
User:                    N/A
Computer:         CITRIX-40
Description:
Faulting application 1cv7s.exe, version 7.70.0.27, faulting module mfc42.dll, version 6.6.8063.0, fault address 0x000d21ff.
 



Без загрузки 1cpp.dll  всё ок.
При запуске через rdp тоже всё ок.
В чём могут быть грабли ?


  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вылетает 1С при загрузке 1С++.
Ответ #1 - 21. Апреля 2008 :: 13:32
Печать  
Поищи по форуму по слову "mfc42". Только когда будешь искать - не забудь поменять период с недели на "все сообщения". Проблема известная и изъезженная.
  
Наверх
www  
IP записан
 
Alex_Spb
Junior Member
**
Отсутствует



Сообщений: 43
Местоположение: Санкт-Петербург
Зарегистрирован: 21. Февраля 2008
Пол: Мужской
Re: Вылетает 1С при загрузке 1С++.
Ответ #2 - 21. Апреля 2008 :: 15:23
Печать  
fez писал(а) 21. Апреля 2008 :: 13:32:
Поищи по форуму по слову "mfc42". Только когда будешь искать - не забудь поменять период с недели на "все сообщения". Проблема известная и изъезженная.


Пробовал подсовывать разные версии mfc42.dll
ничего не помогло , по прежнему вылетает.

Кстати попробовал загрузить старую rainbow подключается нормально.

Ести ещё какие нибудь решения кроме замены mfc42.dll ?

Или может кто кинет dll с которой вышеуказанная конфигурация работатет.


  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Вылетает 1С при загрузке 1С++.
Ответ #3 - 21. Апреля 2008 :: 16:56
Печать  
х.з. в чем дело, к сожалению.

На этой версии mfc42.dll обычно проблем нет, но конкретных случаев, чтобы это работало на на PS4 по ICA, мне не известно.
У меня так руки и не дошли до PS4 - а на XPe/2000 все работает нормально.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Alex_Spb
Junior Member
**
Отсутствует



Сообщений: 43
Местоположение: Санкт-Петербург
Зарегистрирован: 21. Февраля 2008
Пол: Мужской
Re: Вылетает 1С при загрузке 1С++.
Ответ #4 - 21. Апреля 2008 :: 19:02
Печать  
kms писал(а) 21. Апреля 2008 :: 16:56:
х.з. в чем дело, к сожалению.

На этой версии mfc42.dll обычно проблем нет, но конкретных случаев, чтобы это работало на на PS4 по ICA, мне не известно.
У меня так руки и не дошли до PS4 - а на XPe/2000 все работает нормально.


Совсем забыл добавить важное дополнение, вспомнил
что я два дня работал нормально и ничего на сервере не менялось , а сегодня всё накрылось.
Я уже стал думать что у меня крыша едет, но на форуме Цитрикса нашёл следующую инфу.
Цитата:
Поставил у себя клиента версии 8.1. Всё заработало.
Значит проблема с цитриксом. Но странно вообще, вчера ещё всё отлично работало,а сегодня бац, и вылетает.
Настроек на серваке никаких не делал

Автор тоже использует 1c++.

Буду искать 8-клиента Цитрикса,

а информацию о подобном краше мне кажется надо как минимум добавить в список известных багов.

А может и удасться как то побороть, rainbow то работает.

Кстати каким образом можно провести отладку 1с++ , надо собрать в режиме debug, а дальше, что
отладчик VS пойдёт сам по коду ?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Вылетает 1С при загрузке 1С++.
Ответ #5 - 21. Апреля 2008 :: 19:15
Печать  
Alex_Spb писал(а) 21. Апреля 2008 :: 19:02:
а информацию о подобном краше мне кажется надо как минимум добавить в список известных багов.

Ну, ссылка на багтракер есть на заглавной странице 1cpp.ru
Это бесплатный сервис Улыбка

Цитата:
Кстати каким образом можно провести отладку 1с++ , надо собрать в режиме debug, а дальше, что
отладчик VS пойдёт сам по коду ?

Проще всего взять 1cpp 2.5, vs6 sp6 и, действительно собрав debug сборку, запустить из-под отладчика 1C.
Если повезет, можно будет увидеть стек вызовов и т.д.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вылетает 1С при загрузке 1С++.
Ответ #6 - 21. Апреля 2008 :: 21:38
Печать  
1. Клиент 10.00.52110
2. PS4
3. 1cpp - ночник 3.0

Такой проблем нет и никогда не было. Проблема не в mfc 100%.
  
Наверх
 
IP записан
 
Alex_Spb
Junior Member
**
Отсутствует



Сообщений: 43
Местоположение: Санкт-Петербург
Зарегистрирован: 21. Февраля 2008
Пол: Мужской
Re: Вылетает 1С при загрузке formex
Ответ #7 - 23. Апреля 2008 :: 15:46
Печать  

Кажется картина начала прояснятся.
Походу вешает 1С не 1С++ , а formex.

У меня был следующий код:
Код
Выбрать все
Процедура ПриНачалеРаботыСистемы()
	Попытка
		ЗагрузитьВнешнююКомпоненту("1cpp.dll");
		Сообщить("Компонента 1С++ загружена!");
	Исключение
		Сообщить("Пытались, но не загрузили компоненту 1С++ :(");
	КонецПопытки;

	Попытка
		ЗагрузитьВнешнююКомпоненту("formex.dll");
		Сообщить("Компонента formex загружена!");
	Исключение
		Сообщить("Пытались, но не загрузили компоненту formex:(");
	КонецПопытки;

КонецПроцедуры    
 



А так как сообщения "Компонента 1С++ загружена!"
не появлялось я считал, что не проходит загрузка 1С++.

Сегодня начла тестить на сервере, поставленном с нуля,
попоробовал загрузить только 1C++ - оказалось всё ОК.
Проверил на двух рабочих серверах , тоже одна 1С++ грузится без проблем.

Оказалось что всё висло из за загрузки formex  Печаль
Правда мне от этого не сильно легче , стало т.к.
я хочу перейти с rainbow на 1С++ , но

в rainbow есть единственная функция, которой нет в 1С++ , это getsource() - она получает текст текущего модуля


Подобная функция (свойство ) есть в formex  это ТекстМодуля / ModuleText - Описание: Возвращает текст модуля формы.



Нельзя ли подобную функция реализовать в классе ВыполняемыйМодуль ?

  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вылетает 1С при загрузке 1С++.
Ответ #8 - 24. Апреля 2008 :: 04:44
Печать  
Т.е. просто для текущего ВМ добавить возможность получать свой же текст модуля?
Если да, то нет проблем Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
WH_Eagle
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 10
Зарегистрирован: 04. Декабря 2007
Re: Вылетает 1С при загрузке 1С++.
Ответ #9 - 24. Апреля 2008 :: 05:07
Печать  
Была та же самая проблема. Именно из-за FormEx+Citrix. Потом накатили на Citrix все последние обновления. Теперь полет нормальный.
  
Наверх
 
IP записан
 
Alex_Spb
Junior Member
**
Отсутствует



Сообщений: 43
Местоположение: Санкт-Петербург
Зарегистрирован: 21. Февраля 2008
Пол: Мужской
Re: Вылетает 1С при загрузке formex
Ответ #10 - 24. Апреля 2008 :: 06:20
Печать  
artbear писал(а) 24. Апреля 2008 :: 04:44:
Т.е. просто для текущего ВМ добавить возможность получать свой же текст модуля?
Если да, то нет проблем Улыбка


Нет, не совсем .
Нужно получать текст текущего модуля т.е. текст модуля  обработки из которого вызывается метод

Пример обработка doc2000.ert :
Код
Выбрать все
************
Функция hello()
	сообщить("Hello");
	возврат 1;
КонецФункции

//CUT  //- Это специальные метки
Процедура ПриОткрытии()
	Перем A;          

	DOC2000	= CreateObject("classcontext");  // это фактически выполняемый модуль

	A = CreateObject("ModuleContext");// это объект  rainbow который позволяет получить текст текущего модуля
	SRC1 = A.GetModuleSource(); // текст текущего модуля
                // теперь вырежем из текста модуля Процедуру ПриОткрытии()
	Поз = Найти(SRC1,ВРег("//cut")); // найдём метки чтобы избавиться от приоткрытии
	Если Поз > 0 Тогда
		SRC = Left(SRC1,Поз-1);
		Поз = Найти(SRC1,ВРег("//endcut"));
		Если Поз > 0 Тогда
			SRC = SRC + Сред(SRC1,Поз+8);
		КонецЕсли;
	КонецЕсли;
                // теперь у нас в SRC текст модуля (текущего) без процедуры ПриОткрытии
	DOC2000.AssignSource(SRC);
	DOC2000.AssignContext(ВзятьГлобальныйКонтекст());
	DOC2000.Compile();
	DOC2000.Execute();
	СтатусВозврата(0);
КонецПроцедуры

//ENDCUT    //- Это специальные метки

 



В итоге после открытия doc2000.ert
я автоматом получу в глобальной переменной doc2000 - Выполняемый модуль с Функцией Hello()
Так намного удобнее чем писать текст модуля в кавычках, и самое главное , что так сейчас сделано
повсеместно в конфе Печаль
И эта функция реализована в formex называется ТекстМодуля
но как назло formex не пашет в citrix PS4 в режиме публикации приложений (проверял на 3-х серверах.)
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вылетает 1С при загрузке 1С++.
Ответ #11 - 24. Апреля 2008 :: 06:25
Печать  
В принципе, можно ввести подобный метод в класс Информатор или Система.
Мне больше нравится Информатор - я его как раз для подобных целей и сделал Улыбка
ЗЫ подождем денек, если возражений не появится, добавлю.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Alex_Spb
Junior Member
**
Отсутствует



Сообщений: 43
Местоположение: Санкт-Петербург
Зарегистрирован: 21. Февраля 2008
Пол: Мужской
Re: Вылетает 1С при загрузке 1С++.
Ответ #12 - 24. Апреля 2008 :: 06:38
Печать  
WH_Eagle писал(а) 24. Апреля 2008 :: 05:07:
Была та же самая проблема. Именно из-за FormEx+Citrix. Потом накатили на Citrix все последние обновления. Теперь полет нормальный.


Насколько я понял у тебя стоит PS 4.5 . У меня PS 4.0.
Я вчера накатил на PS 4.0 апрельские хотфиксы и это не помогло .
  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Вылетает 1С при загрузке formex
Ответ #13 - 24. Апреля 2008 :: 06:54
Печать  
Цитата:
В итоге после открытия doc2000.ert
я автоматом получу в глобальной переменной doc2000 - Выполняемый модуль с Функцией Hello()


а может в глобальную перменную засунуть экземпляр класса doc2000 с экспортируемой функцией Hello()
а модуль класса хранить в текстовом файле doc2000.txt

в качестве идеи  Улыбка
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вылетает 1С при загрузке formex
Ответ #14 - 24. Апреля 2008 :: 06:56
Печать  
lustin писал(а) 24. Апреля 2008 :: 06:54:
Цитата:
В итоге после открытия doc2000.ert
я автоматом получу в глобальной переменной doc2000 - Выполняемый модуль с Функцией Hello()


а может в глобальную перменную засунуть экземпляр класса doc2000 с экспортируемой функцией Hello()
а модуль класса хранить в текстовом файле doc2000.txt

в качестве идеи  Улыбка

ты неверно понял, вчитайся Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать