Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Дериктивы #include в файле Defcls.prm (число прочтений - 7769 )
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Дериктивы #include в файле Defcls.prm
04. Июня 2012 :: 04:42
Печать  
Решил на ваять свой класс для получения отправки почты с фильтром. Возможно что и есть уже, но решил попробовать сам. Писать начал на XP, а продолжить пришлось на w7. Так вот на w7 объекты любых классов отказались создаваться. При долгом копании этого всего выяснялось, что в файле определений классов не срабатывают #include. Если в файле определить полные пути к обработкам реализаций классов, то все работает. Кто то сталкивался с подобной бедой??
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Дериктивы #include в файле Defcls.prm
Ответ #1 - 04. Июня 2012 :: 05:07
Печать  
И ?

покажи хоть, что пишешь в файле определения классов.

+ права то хоть есть на тот каталог ?
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Дериктивы #include в файле Defcls.prm
Ответ #2 - 04. Июня 2012 :: 05:33
Печать  
Eprst писал(а) 04. Июня 2012 :: 05:07:
И ?

покажи хоть, что пишешь в файле определения классов.

+ права то хоть есть на тот каталог ?


Права есть.

Файл в каталоге БД
Код
Выбрать все
//#include SystemData\Classes\Defcls.prm
 


Файл в каталоге SystemData\Classes\
Код
Выбрать все
//#include SystemData\Classes\ПоставщикДанных\Defcls.prm
//#include SystemData\Classes\ПрямыеЗапросы\Defcls.prm
//#include SystemData\Classes\ЭлементыФормы\Defcls.prm
//#include SystemData\Classes\УправлениеФормой\Defcls.prm
//#include SystemData\Classes\AccountsRecordset\Defcls.prm
//#include SystemData\Classes\ПрогрессБар\Defcls.prm
//#include SystemData\Classes\Объекты_V8\Defcls.prm
//#include SystemData\Classes\Почта\Defcls.prm
 


в остальных файлах определение классов. Вот пример одного
Код
Выбрать все
класс МодульПочта = МодульПочта.ert{};
 


на Хрюше работает на 7 нет
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Дериктивы #include в файле Defcls.prm
Ответ #3 - 04. Июня 2012 :: 06:57
Печать  
И.. нафига такие сложности ?
Мот того, в каталоге ИБ кинешь 1 файлик и в нём Defcls.prm

Код
Выбрать все
//#include SystemData\Classes\ПоставщикДанных\Defcls.prm
//#include SystemData\Classes\ПрямыеЗапросы\Defcls.prm
//#include SystemData\Classes\ЭлементыФормы\Defcls.prm
//#include SystemData\Classes\УправлениеФормой\Defcls.prm
//#include SystemData\Classes\AccountsRecordset\Defcls.prm
//#include SystemData\Classes\ПрогрессБар\Defcls.prm
//#include SystemData\Classes\Объекты_V8\Defcls.prm
//#include SystemData\Classes\Почта\Defcls.prm 



а в SystemData\Classes\Почта\Defcls.prm уже будет
Код
Выбрать все
класс МодульПочта = МодульПочта.ert{}; 


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


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Дериктивы #include в файле Defcls.prm
Ответ #4 - 04. Июня 2012 :: 07:39
Печать  
Eprst писал(а) 04. Июня 2012 :: 06:57:
И.. нафига такие сложности ?
Мот того, в каталоге ИБ кинешь 1 файлик и в нём Defcls.prm

Код
Выбрать все
//#include SystemData\Classes\ПоставщикДанных\Defcls.prm
//#include SystemData\Classes\ПрямыеЗапросы\Defcls.prm
//#include SystemData\Classes\ЭлементыФормы\Defcls.prm
//#include SystemData\Classes\УправлениеФормой\Defcls.prm
//#include SystemData\Classes\AccountsRecordset\Defcls.prm
//#include SystemData\Classes\ПрогрессБар\Defcls.prm
//#include SystemData\Classes\Объекты_V8\Defcls.prm
//#include SystemData\Classes\Почта\Defcls.prm 



а в SystemData\Classes\Почта\Defcls.prm уже будет
Код
Выбрать все
класс МодульПочта = МодульПочта.ert{}; 



пробовал и так не работает. На хрюше все работает на w7 нет
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Дериктивы #include в файле Defcls.prm
Ответ #5 - 04. Июня 2012 :: 07:46
Печать  
Попробуй через FileMon отследить - к какому файлу 1С-ка пытается достучаться
  
Наверх
ICQ  
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Дериктивы #include в файле Defcls.prm
Ответ #6 - 04. Июня 2012 :: 08:04
Печать  
Salimbek писал(а) 04. Июня 2012 :: 07:46:
Попробуй через FileMon отследить - к какому файлу 1С-ка пытается достучаться

дак к файлу который лежит в корне базы, только почему - то директива не срабатывает.
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Дериктивы #include в файле Defcls.prm
Ответ #7 - 04. Июня 2012 :: 08:20
Печать  
Спасибо всем, сам затупил в первом файле дерективу без комментов написал
Добавил комменты, все работает.
  
Наверх
 
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: Дериктивы #include в файле Defcls.prm
Ответ #8 - 29. Мая 2014 :: 05:55
Печать  
А никто такого не делал?
Создаю строку с инициализацией класса в DefCls и ссылаюсь на Обработку.Функции
//#класс глФункции=Функции@MD{}

В ней одна единственная строка
#ЗагрузитьИзФайла functions.txt

при попытке создать объет пишет:
(1)<<?>>#ЗагрузитьИзФайла functions.txt      Обнаружено логическое завершение исходного текста модуля
Функции@MD
Класс: глФункции Файл: Функции@MD компиляция не выполнена!
ааа = СоздатьОбъект("глФункции");
{C:\ААА.ERT(3)}: Внимание! Инициализация класса: глФункции закончилась не удачно!


Хотя если вызвать      ОткрытьФормуМодально("Обработка.Функции");
то работает

Загрузил файл напрямую без вызова всяких форм.
//#класс глФункции=functions2.txt{}
работает, но нарвался на интересную вещь, есть функция внутри класс экспортная
Функция Пример(сообщение = 0) Экспорт
КонецФункции
так вот вызвать не удается пока не передам параметр, хотя он по умолчанию должен браться этого не происходит и в итоге кричит на не достаточность переданных параметров, а если передать работает на ура Улыбка
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Дериктивы #include в файле Defcls.prm
Ответ #9 - 29. Мая 2014 :: 09:34
Печать  
А зачем ты так делаешь???

ИМХО, если держишь инфу внутри МД-шника, то используешь обработку в МД, если хочешь держать отдельно, то описываешь класс как внешнюю обработку. Смысл какой держать класс в МД и выносить текст в файл? Если для тестов, то тоже можно сохранить как внешнюю обработку, деф.цлс поправить и пользоваться, как нормально все отладишь - внедрить внутрь МД-шника, еще раз деф.цлс поправить и все.

P.S. Я, как бы, понимаю, что оно вроде бы должно и так работать, только, имхо, никому из разработчиков в голову такой изврат не пришел, и парсинга такого они не делали. И тут либо ты принимаешь что это "фича" и находишь обходные пути, либо продолжаешь кушать кактус.
  
Наверх
ICQ  
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: Дериктивы #include в файле Defcls.prm
Ответ #10 - 29. Мая 2014 :: 10:44
Печать  
Это не класс, просто пытаюсь тут оптимизировать то, что сделано до меня без 1cpp.
Там подгружались через открытьФорму() все функции, которые потом использовались.
Сейчас определил как в конце написал, объявление класса уже и туда все яункции чуть переписал, и теперь не только каждый раз, так вообще не вызывается открытие формы, что хорошо и сократило время работы в 3 раза.

Осталась проблема только одна, о которой я написал, с параметром в функции, не понятно если он там стоит инициализированный в 0, почему она требудет указывать параметры описанные в функции все равно Подмигивание
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Дериктивы #include в файле Defcls.prm
Ответ #11 - 30. Мая 2014 :: 05:45
Печать  
Проще делать часть классов в мд, а часть во внешних обработках.. и привет.
Смысл в ЗагрузитьИзФайла не ясен..
  
Наверх
 
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: Дериктивы #include в файле Defcls.prm
Ответ #12 - 31. Мая 2014 :: 06:01
Печать  
Вопрос не в этом сейчас Улыбка а в том почему требует параметр вводить обязательно у функции/процедуры объявленной в классе, когда она там объявлена со значением по умолчанию? Улыбка
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Дериктивы #include в файле Defcls.prm
Ответ #13 - 05. Июня 2014 :: 14:41
Печать  
Попробуй упростить код до минимума.
В тексте класса только один этот метод с параметром по умолчанию.
И проверь вызов.
Возможно, баг не повторится Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Дериктивы #include в файле Defcls.prm
Ответ #14 - 10. Июня 2014 :: 06:38
Печать  
pavlo писал(а) 31. Мая 2014 :: 06:01:
Вопрос не в этом сейчас Улыбка а в том почему требует параметр вводить обязательно у функции/процедуры объявленной в классе, когда она там объявлена со значением по умолчанию? Улыбка

А если
Код
Выбрать все
класс глФункции = functions2.txt
{
    Неопределенный Пример(Число сообщение = 0);
} 


?
  

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