Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Чисто поржать над очередным багом платформы. (число прочтений - 1839 )
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Чисто поржать над очередным багом платформы.
24. Августа 2012 :: 09:36
Печать  
Забавный баг откопал, и даже не поленился немного исследовать.

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

В ходе адова алгоритма, в том числе, выполняются некоторые проверки, результат которых выводится в окно сообщений примерно так:
Код
Выбрать все
тзДоки = ЗапросСКЛ.ВыполнитьИнструкцию(ТекстЗапроса);
тзДоки.ВыбратьСтроки();
Пока тзДоки.ПолучитьСтроку() = 1 Цикл
	Сообщить(тзДоки.Док);
КонецЦикла; 



ВНЕЗАПНО, Сообщить() начало периодически вываливать в окно сообщений вместо представления документа представление какого-то контрагента.

Начал разбираться, выяснил следующее:

1) в форме документа делается Записать(), в ответ на которое журнал документов позиционируется так, что записываемый документ оказывается примерно по центру журнала. (Что, ко всему прочему, вызывает обновление отображение табличной части.)
2) Окно сообщений должно быть закрыто. Если в ходе выполнения какое-то другое Сообщить() открыват окно сообщение - представление документа выводится нормально.
3) явное приведение представление документа к строке (Сообщить("" + тзДоки.Док)Подмигивание лечит баг.

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

Почему именно контрагента? Похоже, потому что Контрагент - это 6 колонка в форме журнала. Ибо когда я в конфигураторе поменял Контрагента и Менеджера местами - стал выводиться менеджер. И это не зависит ни от видимости колонок, ни от того, какая колонка является текущей.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Чисто поржать над очередным багом платформы.
Ответ #1 - 24. Августа 2012 :: 09:38
Печать  
О! Заглавное сообщение темы стало моим 500 постом на форуме.  Смех
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Чисто поржать над очередным багом платформы.
Ответ #2 - 27. Августа 2012 :: 02:38
Печать  
Это старый баг. Первый вызов Сообщить может вывести что угодно (что-то из некой области памяти), т.к. выводились и имена классов и многое другое. Происходит это только в том случае, если в Сообщить передается объект, или любое его поле (даже числовое)! Логично, что это легко лечится приведением параметра к строке, или конкатенацией со строкой (пустая строка в этом смысле удобнее всего).
  
Наверх
 
IP записан
 
--Aleksey--
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 16. Мая 2013
Re: Чисто поржать над очередным багом платформы.
Ответ #3 - 16. Мая 2013 :: 12:58
Печать  
Смех
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать