Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Вылетает 1С:Предприятие при СоздатьОбъект("ИмяМоегоКласса") (число прочтений - 10921 )
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Вылетает 1С:Предприятие при СоздатьОбъект("ИмяМоегоКласса")
Ответ #15 - 01. Сентября 2009 :: 13:24
Печать  
Вот еще одно наблюдение. Полностью отказался от неявных параметров:
Объявил метод в prm-файле -
Код
Выбрать все
Строка Упаковать(Строка Параметры=""); 


В тестовой обработке запустил на выполнение без параметров -
Код
Выбрать все
Арх.Упаковать() 


1С вылетела.

Выходит, что неявные параметры здесь не причем. Это баг по работе с пустыми по умолчанию параметрами?
  
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вылетает 1С:Предприятие при СоздатьОбъект("ИмяМоегоКласса")
Ответ #16 - 02. Сентября 2009 :: 03:43
Печать  
1. Какая у тебя версия 1С++ ? ты об этом так и не упомянул.
1С - штатное "О программе", закладка 1С++
2. Надеюсь, режим проверки типов у тебя отключен?
  

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


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Вылетает 1С:Предприятие при СоздатьОбъект("ИмяМоегоКласса")
Ответ #17 - 02. Сентября 2009 :: 05:56
Печать  
artbear писал(а) 02. Сентября 2009 :: 03:43:
1. Какая у тебя версия 1С++ ? ты об этом так и не упомянул.
1С - штатное "О программе", закладка 1С++
2. Надеюсь, режим проверки типов у тебя отключен?

Доброе утро!
1С++ v3.0.1.23
"Проверка типов" отключена всегда.
В режиме откладки отключаю "Оптимизацию", включаю "Отладчик".
В рабочем режиме - включена только "Оптимизация".
  
Наверх
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Вылетает 1С:Предприятие при СоздатьОбъект("ИмяМоегоКласса")
Ответ #18 - 02. Сентября 2009 :: 06:05
Печать  
Вчера вернул неявные параметры и убрал значение по умолчанию явного параметра. При обращении к методу передаю ему 0 или строку "{ИменаПеременных}".
Пол дня отлаживал код с неявными параметрами и без них - ни одного вылета.
  
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вылетает 1С:Предприятие при СоздатьОбъект("ИмяМоегоКласса")
Ответ #19 - 03. Сентября 2009 :: 04:00
Печать  
simply писал(а) 02. Сентября 2009 :: 06:05:
Вчера вернул неявные параметры и убрал значение по умолчанию явного параметра. При обращении к методу передаю ему 0 или строку "{ИменаПеременных}".

Это как? Расшифруй
  

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


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Вылетает 1С:Предприятие при СоздатьОбъект("ИмяМоегоКласса")
Ответ #20 - 03. Сентября 2009 :: 09:48
Печать  
artbear писал(а) 03. Сентября 2009 :: 04:00:
Это как? Расшифруй

Расшифровываю )):
Содержание prm-файла
Код
Выбрать все
Класс WinRAR = .\Classes\archiving\clsWinRAR.ert : Archiving
	{
	Строка Упаковать(Строка Параметры, ...);
	Строка Распаковать(Строка Параметры, ...);
	}
 


и из файла реализации КОП
Код
Выбрать все
Функция Упаковать(Параметры) Экспорт
 ...  


т.е., неявные параметры есть. А явный параметр стал обязательным (без значения по умолчанию).

Из тестовой обработки с использованием явных параметров
Код
Выбрать все
	Арх=СоздатьОбъект("WinRAR");
	Арх.Установить_СписокФайлов("d:\t1.txt d:\t2.txt d:\t3.txt");
	Арх.Установить_Архив("d:\111\arch14.err");
	Арх.Установить_Пароль("111");
	Арх.Упаковать("{ФоновыйРежим,СообщатьОбОшибках}","отменить","отменить");
 


а если не использовать неявные параметры, то
Код
Выбрать все
Арх.Упаковать(0); 



Мои эксперименты показали, что неявные параметры не влияют на вылет 1С. Влияет наличие хотя бы одного явного параметра с установленным по умолчанию значением.

Zealot посоветовал вообще не использовать значения по умолчанию в prm-файлах. Если параметров много, то использовать "АссоциативныйВектор" - очень удобно! И значение по умолчанию любое можно назначить, и обратиться по имени (ключу) через точку.
  
Наверх
IP записан
 
Zealot
1c++ donor
Отсутствует


Будьте профессионалами!

Сообщений: 180
Местоположение: KIEV
Зарегистрирован: 17. Сентября 2007
Пол: Мужской
Re: Вылетает 1С:Предприятие при СоздатьОбъект("ИмяМоегоКласса")
Ответ #21 - 03. Сентября 2009 :: 12:16
Печать  
simply писал(а) 03. Сентября 2009 :: 09:48:
Zealot посоветовал вообще не использовать значения по умолчанию в prm-файлах. Если параметров много, то использовать "АссоциативныйВектор" - очень удобно! И значение по умолчанию любое можно назначить, и обратиться по имени (ключу) через точку.


Спасибо за пиар  Очень довольный, нестоит  Улыбка
  

Старание и труд все перетрут.
Наверх
 
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: Вылетает 1С:Предприятие при СоздатьОбъект("ИмяМоегоКласса")
Ответ #22 - 02. Февраля 2010 :: 12:55
Печать  
И эта проблема решилась!

Во-первых, обратите внимание, после закрывающей фигурной скобки не стоит точка с запятой

simply писал(а) 03. Сентября 2009 :: 09:48:
Содержание prm-файла
Код
Выбрать все
Класс WinRAR = .\Classes\archiving\clsWinRAR.ert : Archiving
	{
	Строка Упаковать(Строка Параметры, ...);
	Строка Распаковать(Строка Параметры, ...);
	}
 



Об одном из возможных последствий см. http://www.1cpp.ru/forum/YaBB.pl?num=1250513180

Во-вторых, и главное (!), если все значения по умолчанию указывать только в prm-файлах, то все будет в порядке.

В prm-файле:
Код
Выбрать все
// Класс по работе с WinRAR
Класс WinRAR = .\Classes\archiving\clsWinRAR.ert : Archiving
	{
		Число Упаковать(Неопределенный СписокФайлов, Строка ПолноеИмяАрхива="", Строка Пароль="");
		Число Распаковать(Строка ПолноеИмяАрхива, Строка КаталогНазначения=СокрЛП(Константа.ПапкаДляПолученияДанных), Строка Пароль=""); 


В файле реализации КОП:
Код
Выбрать все
//==================================================
Функция Упаковать(СписокФайлов,ПолноеИмяАрхива,Пароль) Экспорт
...

//==================================================
Функция Распаковать(ПолноеИмяАрхива,КаталогНазначения,Пароль) Экспорт
... 

  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать