Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Странные баги компиляции модулей (число прочтений - 4748 )
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Странные баги компиляции модулей
14. Июля 2006 :: 21:02
Печать  
Тут было попытался отлаживать класс. Сделал все, как и написано.
Код
Выбрать все
Процедура ПриОткрытии()
//#if _NOW_PREPARE_CLASS
	Форма.Параметр._ПриОткрытии();
//#else
	ДругойКод();
//#endif
КонецПроцедуры
 


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

Тест залил в хранилище. Тесты_КомпиляцияКласса. Посмотрите, пожалуйста. Такое ощущуние, что при включенном режиме отладки отъезжает TurboBL.

Был еще странный баг в этом месте:
Код
Выбрать все
	ОткрытьФорму("Обработка#", КонтФормы, Сам.ПолучитьПуть());
	Сам.ПроверитьРавенство(КонтФормы.фЭтоОбъект, ПолучитьПустоеЗначение());
 


Но он изчез после перезагрузки 1С. Может быть и его заметите.

ЗЫ. Кстати, что решили с параметрами по умолчанию? То, что есть ведь совсем не замечательно. Даже Deb не смог вспомнить, как надо писать.

Надо хотя бы реализовать такой вариант:
Код
Выбрать все
void Метод(Тип Параметр=%Тип%); 

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


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Странные баги компиляции модулей
Ответ #1 - 15. Июля 2006 :: 09:52
Печать  
Чем дальше я пишу тест, тем больше я понимаю, что либо я чего-то не понимаю, либо одно из двух. Печаль

Полностью все в тест запихнуть не удалось, но остальное видно из сообщений. Видно, что ПриОткрытии() работает в каком-то другом контексте, чем созданный объект.

Может быть кто-то объяснит, как работает отладка? Что-то с ней очень сложно. Мне кажется, что там можно все упростить. Кстати, кто-то уже говорил, что можно сделать отладку прозрачной. Не помню кто, надо поискать.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Странные баги компиляции модулей
Ответ #2 - 15. Июля 2006 :: 19:24
Печать  
Ну вот. Более-менее разобрался с отладкой. Сделал тест, который проверяет все, что надо. Осталось исправить баги, чтобы тесты проходили.

PS. Но с отладкой все равно сложно. В качестве первого шага можно использовать события, которые АЛьФ приделал к форме, чтобы _ПриОтладке() вызывалось автоматически.
  
Наверх
 
IP записан
 
Deb
1c++ developer
Отсутствует


Sex, drugs and 1C

Сообщений: 41
Зарегистрирован: 21. Мая 2006
Re: Странные баги компиляции модулей
Ответ #3 - 17. Июля 2006 :: 07:08
Печать  
sedmin писал(а) 14. Июля 2006 :: 21:02:
ЗЫ. Кстати, что решили с параметрами по умолчанию? То, что есть ведь совсем не замечательно. Даже Deb не смог вспомнить, как надо писать.

Надо хотя бы реализовать такой вариант:
Код
Выбрать все
void Метод(Тип Параметр=%Тип%); 



Ничего не решили потому как нет проблемы, все это можно решить с текущими правилами написания кода. Я все тебе ответил в том посту и ничего не забыл.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Странные баги компиляции модулей
Ответ #4 - 17. Июля 2006 :: 17:15
Печать  
А по отладке кто-нибудь ответить может?.
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Странные баги компиляции модулей
Ответ #5 - 18. Июля 2006 :: 14:52
Печать  
sedmin писал(а) 17. Июля 2006 :: 17:15:
А по отладке кто-нибудь ответить может?.

Я очень давно устал бороться с отладкой и полностью перешел на отладочную печать.
  
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Странные баги компиляции модулей
Ответ #6 - 18. Июля 2006 :: 16:28
Печать  
После того, как я примерно понял, как она работает, проблем с отладкой почти не возникает.

И ведь, кроме прочего, приведен же юнит-тест. Надо только сделать так, чтобы он проходил.
  
Наверх
 
IP записан
 
Deb
1c++ developer
Отсутствует


Sex, drugs and 1C

Сообщений: 41
Зарегистрирован: 21. Мая 2006
Re: Странные баги компиляции модулей
Ответ #7 - 19. Июля 2006 :: 07:33
Печать  
С отладкой так сложно потому-что я так и не нашел способа регистрировать программный модуль класса для отладчика, а вот если открываешь с начало как внешний отчет (поэтоиу контекст в "приоткрытии" не родной), все регестрируется, а потом подменяешь контекст на родной...
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Странные баги компиляции модулей
Ответ #8 - 19. Июля 2006 :: 10:44
Печать  
Сейчас есть такой способ - можно перехватить событие ПриСозданииФормы() (или что-то подобное) из FormEx.

Но сейчас ошибка не в этом. А в том, что при компиляции модуля как внешнего отчета не учитываются конструкции
//if _NOW_PREPARE_CLASS

В тесте это видно. То есть достаточно сделать так, чтобы проходил тест.
  
Наверх
 
IP записан
 
Deb
1c++ developer
Отсутствует


Sex, drugs and 1C

Сообщений: 41
Зарегистрирован: 21. Мая 2006
Re: Странные баги компиляции модулей
Ответ #9 - 20. Июля 2006 :: 09:41
Печать  
Это в багзилу отправить нужно, видимо уже косяк свежий. Раньше работало...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать