Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Сбой при использовании нового метода раскраски (число прочтений - 14541 )
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Сбой при использовании нового метода раскраски
19. Ноября 2008 :: 08:24
Печать  
Переделал конфигурацию на использование нового метода раскраски и вот, выловил Печаль
Имеется справочник "Номенклатура", на форме элемента которого раскрашена таблица цен.
Заходим в форму списка справочника и начинаем последовательно открывать элементы.
Если в Г.М. написано: глСервисРасшФормы.ИспользоватьПланРаскраски(1);
то перебрав 5-10-15 элементов получаем сбой 1С Печаль
Если строчку в Г.М. комментируем, то всё ОК...

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


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Сбой при использовании нового метода раскраски
Ответ #1 - 19. Ноября 2008 :: 09:25
Печать  
Нашел закономерность!
Таблица на форме объявлена так:
Код
Выбрать все
ТабЦен.НоваяКолонка("ДляСортировки","Строка");
ТабЦен.ВидимостьКолонки("ДляСортировки",0);
ТабЦен.НоваяКолонка("FormEx_ПланРаскраски","Строка");
ТабЦен.ВидимостьКолонки("FormEx_ПланРаскраски",0);
ТабЦен.НоваяКолонка("ТипЦен","Справочник.ТипыЦен",,,"Тип",15);
ТабЦен.НоваяКолонка("Цена","Число",10,2,"Цена",8);
ТабЦен.НоваяКолонка("Процент","Число",10,1,"%",5);
 


Такой макрос:
Код
Выбрать все
ТабЦен.FormEx_ПланРаскраски = "(BRUSH["+глПолучитьЦвет(255,100,255)+"])"; 


вызывает падение
А такие:
Код
Выбрать все
ТабЦен.FormEx_ПланРаскраски = "()()(BRUSH["+глПолучитьЦвет(255,100,255)+"])";
ТабЦен.FormEx_ПланРаскраски = "()()(BRUSH["+глПолучитьЦвет(255,100,255)+"])()()()"; 


нет...

Вывод: НЕЛЬЗЯ раскрашивать невидимые колонки !?!

Поправте меня, если я не прав...
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Сбой при использовании нового метода раскраски
Ответ #2 - 19. Ноября 2008 :: 10:46
Печать  
А как же в этом случае раскрашивать настраиваемые таблицы?
(Таблицы с возможностью динамического изменения видимости колонок)
ИМХО - это БАГ, стоит учесть значение видимости атрибута в алгоритме раскраски.
Уважаемый Альф, прокомментируйте, плиз.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Сбой при использовании нового метода раскраски
Ответ #3 - 19. Ноября 2008 :: 11:00
Печать  
Выложи простейший тест - одну обработку с таблицей на форме.
Я посмотрю.
  

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


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Сбой при использовании нового метода раскраски
Ответ #4 - 19. Ноября 2008 :: 13:09
Печать  
Вот пока заглушка на скорую руку Улыбка
Код
Выбрать все
//_____________________________________________________________________________
Функция глПолучитьШаблонМакросаРаскраскиДляМногострочнойЧастиФормы(Форма) Экспорт

	Перем ФормаРасш, Х, Атрибут, ШаблонМакроса, ФлагВидимости;

	ФормаРасш = СоздатьОбъект("РасширениеФормы");
	ФормаРасш.УстановитьФорму(Форма);

	ШаблонМакроса = "";
	ФлагВидимости = 0;

	Для Х = 0 По ФормаРасш.КоличествоАтрибутов() - 1 Цикл
		Атрибут = ФормаРасш.ПолучитьАтрибут(Х);
		Если ((Атрибут.Тип = 5) или (Атрибут.Тип = 9)) Тогда
			Если (ПустаяСтрока(ШаблонМакроса) = 1) Тогда //----Первая колонка - это папка, не раскрашиваем----
				ШаблонМакроса = "()";
			Иначе
				Если (Атрибут.Видимость = ФлагВидимости) Тогда
					ШаблонМакроса = ШаблонМакроса + "()";
				Иначе
					ФлагВидимости = Атрибут.Видимость;

					Если (ФлагВидимости = 1) Тогда
						ШаблонМакроса = ШаблонМакроса + "(МАКРОС_РАСКРАСКИ)";
					Иначе
						ШаблонМакроса = ШаблонМакроса + "(FONT[NONE] BRUSH[NONE])";
					КонецЕсли;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;

	Возврат(ШаблонМакроса);

КонецФункции //глПолучитьШаблонМакросаРаскраскиДляМногострочнойЧастиФормы

//_____________________________________________________________________________
Функция глПолучитьМакросРаскраски(ЭлементРаскраски, ШаблонМакроса, 	флТребуетсяОбновлениеМакросаРаскраски = 0, Форма = 0) Экспорт

	Перем МакросЦвета;

	Если (ПустоеЗначение(ЭлементРаскраски) = 1) Тогда
		Возврат("");
	КонецЕсли;

	Если (флТребуетсяОбновлениеМакросаРаскраски = 1) Тогда
		ШаблонМакроса = глПолучитьШаблонМакросаРаскраскиДляМногострочнойЧастиФормы(Форма);
		флТребуетсяОбновлениеМакросаРаскраски = 0;
	КонецЕсли;

	МакросЦвета = "FONT["+глПолучитьЦвет(Мин(ЭлементРаскраски.RШрифт,255),Мин(ЭлементРаскраски.GШрифт,255),Мин(ЭлементРаскраски.BШрифт,255))+"] BRUSH["+глПолучитьЦвет(Мин(ЭлементРаскраски.RФон,255),Мин(ЭлементРаскраски.GФон,255),Мин(ЭлементРаскраски.BФон,255))+"]";

	Возврат(СтрЗаменить(ШаблонМакроса,"МАКРОС_РАСКРАСКИ",МакросЦвета));
    
КонецФункции //глПолучитьМакросРаскраски
 


ШаблонМакроса и флТребуетсяОбновлениеМакросаРаскраски - переменные формы.
Если нужно изменение макроса, просто устанавливаем флаг в (1).

PS: Тестовую обработку попробую написать Улыбка
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Сбой при использовании нового метода раскраски
Ответ #5 - 19. Ноября 2008 :: 16:23
Печать  
Комментирую: видимость колонок у меня учитывается. Из-за нее вообще пришлось изначально код наворачивать дополнительными счетчиками и проверками.
  

FormEx developer
Наверх
www  
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Сбой при использовании нового метода раскраски
Ответ #6 - 19. Ноября 2008 :: 19:42
Печать  
А вот и обещаный тест Улыбка
В архиве MD-шник.
Загружаем в конфу, бросаем FormEx в папку.
На панели инструментов 2 кнопки.
При нажатии на одну из них начинается циклическое открытие формы обработки. Обработки отличаются только одним макросом.
Первая после 2-3-5-10-и т.п. открытий валит 1С, вторая нет.
  

TestMD.rar ( 9 KB | Загрузки )
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Сбой при использовании нового метода раскраски
Ответ #7 - 19. Ноября 2008 :: 20:07
Печать  
Долго ждал. Сходил покурить. Обработка ТестСбоя_Сбой продолжает работать.
Память не течет, объекты GDI и USER закрываются нормально.
Доклад окончил Улыбка
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Сбой при использовании нового метода раскраски
Ответ #8 - 19. Ноября 2008 :: 21:58
Печать  
Запустил, подождал 10 минут. Количество открытий не считал. Сбоя нет.
  

FormEx developer
Наверх
www  
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Сбой при использовании нового метода раскраски
Ответ #9 - 20. Ноября 2008 :: 02:30
Печать  
Давайте определимся Улыбка
Платформа - SQL, комплексная, 27;
FormEx - Последняя, с сайта Dorex
OS: WinXP с последними обновлениями;

Кстати, после закрытия 1С (Была запущена обработка "Сбой")
1С иногда вылетает в ошибку (Память не может быть written по адресу 0xfffffff4). Если обработка "БезСбоя", тогда ошибки нет.

PS: Ошибка может не вылазить долго, а может сразу вылететь.
Попробуйте несколько раз запустить базу заново.
Работает аналогично на сервере Win 2k3.
Блин, какая-то неуловимая ошибка... Печаль
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Сбой при использовании нового метода раскраски
Ответ #10 - 20. Ноября 2008 :: 03:34
Печать  
Платформа - SQL, комплексная, 25;
FormEx - 93
OS: Win2k3 SP2;

Запустил, пошел позавтракал, пришел 1с - вылетела с ошибкой
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Сбой при использовании нового метода раскраски
Ответ #11 - 20. Ноября 2008 :: 03:42
Печать  
У меня минут через 10 валится, и память потихоньку похоже всё-таки течет
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Сбой при использовании нового метода раскраски
Ответ #12 - 20. Ноября 2008 :: 04:11
Печать  
Если просто открывать эту обработку в бесконечном цикле, валится на 6 открытой форме. Обработку ожидания конечно нужно отключить. Второй тест не валится. Так что баг имеет место быть.
  
Наверх
ICQ  
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Сбой при использовании нового метода раскраски
Ответ #13 - 20. Ноября 2008 :: 04:44
Печать  
Зарегистрировал баг #4242
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Сбой при использовании нового метода раскраски
Ответ #14 - 20. Ноября 2008 :: 04:48
Печать  
Кстати, #3523 не тот же баг?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать