Переключение на Главную Страницу Страницы: 1 ... 6 7 [8] 9 10 ... 46 ОтправитьПечать
Очень популярная тема (более 25 ответов) Тестирование 1cpp-icl (icpp) (число прочтений - 198063 )
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Тестирование 1cpp-icl (icpp)
Ответ #105 - 06. Апреля 2008 :: 07:50
Печать  
Вот, набросал минитест, демонстрирующий наследование транзакций 1С в штатном режиме (в том числе и без 1cpp).
Чтобы не позабыть с течением времени.

Соответственно, в отладочных режимах поведение получается таким же.
  

TranForm.ert ( 8 KB | Загрузки )

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Тестирование 1cpp-icl (icpp)
Ответ #106 - 06. Апреля 2008 :: 08:01
Печать  
fez писал(а) 06. Апреля 2008 :: 06:22:
Конечно же такое решение кроет в себе опасность того, что к моменту, когда мы все придумаем - Мише уже будет не до транзакций Улыбка
Но лучше шашкой пока не махать, кмк.

Ну, рано или поздно нам всем станет не до транзакций Улыбка Но пока все хорошо; у нас еще получается попадать в индекс... (c) aou1c Улыбка

--
Федор, ты абсолютно правильно понял картину, все именно так и есть.
Я думаю, что решение для управления транзакциями, подобное штатному, можно найти для большинства случаев.
Ну, что делать, иногда приходится принимать условия игры.

В принципе, проблема затрагивает небольшую группу самых продвинутых пользователей.
Я вот, кстати, оказался непродвинутым, ибо о таком поведении узнал от Артура, хотя у меня этот код уже год как работает.

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

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #107 - 06. Апреля 2008 :: 17:46
Печать  
Так, мой отпуск закончился, я пошел в атаку Улыбка

Почему перестал работать такой код:
В деструкторе базового класса вызываем Сам().Тест() - экспортный метод базового класса. Создаем наследника, прибиваем его, вызывается деструктор базового класса, и вуаля "Базовый::Деструктор() : Поле агрегатного объекта не обнаружено".

Тесты приложил.


P.S. на ночнике 2.5 работает. ногами не пинать, я и так после отпуска/лыж еле живой Улыбка
  

Artbear_.rar ( 5 KB | Загрузки )
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #108 - 07. Апреля 2008 :: 11:32
Печать  
Arta писал(а) 06. Апреля 2008 :: 17:46:
Так, мой отпуск закончился, я пошел в атаку Улыбка

Почему перестал работать такой код:
В деструкторе базового класса вызываем Сам().Тест() - экспортный метод базового класса. Создаем наследника, прибиваем его, вызывается деструктор базового класса, и вуаля "Базовый::Деструктор() : Поле агрегатного объекта не обнаружено".

Тесты приложил.


P.S. на ночнике 2.5 работает. ногами не пинать, я и так после отпуска/лыж еле живой Улыбка

Artbear_.rar  - типа намек для/на меня Улыбка
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #109 - 07. Апреля 2008 :: 12:26
Печать  
artbear писал(а) 07. Апреля 2008 :: 11:32:
Artbear_.rar  - типа намек для/на меня Улыбка

Ой, как-то случайно вышло Смех

P.S. Артур, этот баг для меня очень критичный Печаль
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #110 - 07. Апреля 2008 :: 12:34
Печать  
Разбираюсь, тут еще один, не менее критичный нарисовался, на тестовой базе 1С++
ЗЫ а ведь дома практически все тесты проходили Улыбка
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #111 - 07. Апреля 2008 :: 12:52
Печать  
artbear писал(а) 07. Апреля 2008 :: 12:34:
Разбираюсь, тут еще один, не менее критичный нарисовался, на тестовой базе 1С++
ЗЫ а ведь дома практически все тесты проходили Улыбка


Дык по-моему такого теста и нету. Экспортные методы предка пропадают именно в его деструкторе.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #112 - 08. Апреля 2008 :: 07:07
Печать  
Да, баг виден в полный рост Печаль
Смысл в том, что для 3.0 метод Сам() в базовом классе возвращает объект Потомка, у которого уже нет базовых классов, соответственно при обращении к экспортному методу предка возникает ошибка, т.к. метод просто не находится.
Все дело в реализации удаления объектов классов в 1С++
Фактически сначала удаляются базовые классы, а уж затем объект Потомок, но для пользователя 1С++ все выглядит наоборот, т.е. правильно.

Странно, почему же в 2.5 все работает Печаль

Что делать пока не знаю
Как промежуточный вариант можно сделать так - метод Сам(), вызываемый внутри метода класса, всегда будет возвращать правильный контекст класса, независимо от того, как он написан.
Главное, что в модуле класса было определен, как обычно, код
Код
Выбрать все
Функция Этот(Конт) Возврат Конт; КонецФункции
Функция Сам() Возврат Этот(Контекст); КонецФункции( 


А после выполнения деструктора потомка этот метод будет возвращать правильный контекст, а не тот, что сейчас Печаль
Для меня это простейший вариант.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #113 - 08. Апреля 2008 :: 07:08
Печать  
Arta писал(а) 07. Апреля 2008 :: 12:52:
Дык по-моему такого теста и нету. Экспортные методы предка пропадают именно в его деструкторе.

+1
Теперь такой тест есть Улыбка
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #114 - 08. Апреля 2008 :: 21:47
Печать  
Артур, пока не выработали окончательное решение, может быть хотя бы временную заплатку поставить, а то я даже потестировать не могу Печаль
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #115 - 09. Апреля 2008 :: 04:33
Печать  
Как исправить баг, я разобрался.
К сожалению, так и не удалось понять, почему происходит такое поведение Печаль

Поставил заплатку - внутри 1С++ проверяется флаг фВызовВнутриДеструктора, включащийся после вызова деструктора класса-наследника, но перед удалением объекта-наследника и его базовых классов. Если флаг включен, значит, все вызовы методов класса-наследника перенаправляются в текущий активный класс.
Пока не заливал. Сегодня залью
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #116 - 09. Апреля 2008 :: 06:27
Печать  
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #117 - 09. Апреля 2008 :: 13:45
Печать  
artbear писал(а) 09. Апреля 2008 :: 06:27:

Залил свои исправления в 3.0
Цитата:
Пользовательские классы:

   -  Исправлен  баг  при  вызове  экспортных  методов  и  свойств
   базового класса при вызове в деструкторе  базового  класса  уже
   после вызова деструктора потомка
     [bug 3710]

   - Исправлен баг - Для публичного метода класса, не описанного в prm-файле, а
           описанного только в модуле класса, не работает передача
           параметров по значению, а работает только по ссылке
           [bug 3658]

     + исправление реализации динамических свойств для обеспечения нормального ООП
           [bug 3606] и [bug 3592]

   ВНИМАНИЕ (несовместимость): необходимо вручную исправление классов, реализующих динамические свойства !!
   - Класс (или его клиент(не рекомендуется)) должен самостоятельно добавить динамическое свойство с помощью встроенного метода ДобавитьДинамическоеСвойство(стрИмяНовогоСвойства)

     - [bug 3621] Исправлен неверный вызов произвольного конструктора для класса-наследника при создании класса через Фабрика.Новый()

     - Исправлен баг - при разном порядке объявления множественных базовых классов
работа наследуемых методов класса-наследника отличается.
     http://www.1cpp.ru/bugs/show_bug.cgi?id=3589


kms
Предлагаю тебе выложить новую сборку.
Сейчас она совпадает с 2.5 в части ООП на 100%

ЗЫ тем более, я там еще кое-что по мелочи поменял, 1С++ должна чуток пошустрее шуршать Улыбка
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #118 - 09. Апреля 2008 :: 13:50
Печать  
По нативной отладке предлагаю принять какое-то общее решение, которое устроит обе стороны - и сторонников нативной отладки, и сторонников транзакции между несколькими модулями.
Мне видится, что-то вроде этого:
1. По умолчанию нативная отладка включена, т.к. ИМХО этот режим удобен большинству пользователей.
2. В 1С++ добавляется спец.метод/настройка, которая отключает этот режим и включает работу с транзакциями в разных модулях.
МОжно привязаться к кнопке/настройка Отладка (типа она всегда включена), но думаю, что использование метода более прозрачно и удобно.

Пока и в 2.5, и в 3.0 возможность нативной отладки опять отключена
для сохранения совместимости с существующим кодом.
Например, без этого отключения не работает общая тестовая конфигурация 1С++ Печаль
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #119 - 09. Апреля 2008 :: 13:53
Печать  
artbear писал(а) 09. Апреля 2008 :: 13:45:
kms
Предлагаю тебе выложить новую сборку.
Сейчас она совпадает с 2.5 в части ООП на 100%


ЗЫ тем более, я там еще кое-что по мелочи поменял, 1С++ должна чуток пошустрее шуршать Улыбка
  

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