Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Сбой при использовании нового метода раскраски (число прочтений - 15800 )
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 записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Сбой при использовании нового метода раскраски
Ответ #15 - 20. Ноября 2008 :: 05:05
Печать  
slider26 писал(а) 20. Ноября 2008 :: 04:48:
Кстати, #3523 не тот же баг?

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Сбой при использовании нового метода раскраски
Ответ #16 - 20. Ноября 2008 :: 07:10
Печать  
Nick писал(а) 20. Ноября 2008 :: 04:11:
Если просто открывать эту обработку в бесконечном цикле, валится на 6 открытой форме. Обработку ожидания конечно нужно отключить. Второй тест не валится. Так что баг имеет место быть.

1. Если просто открывать в бесконечном цикле, начинают работать другие факторы - например, старый и известный баг 1С с утечкой ресурсов при закрытии формы через Форма.Закрыть()
Например, у меня 20 форм открываются нормально, а где-то на 25 валится.
Все зависит от памяти, запущенных программ и других экземпляров 1С.
Для решения этого бага в свое время я добавил в 1С++ метод Система::ЗакрытьФорму(), лишенный этого недостатка и позволяющий немедленно закрыть форму без ожидания конца работы модуля.

В ФормЕкс также АльФ-ом и мной был добавлен почти полный аналог - Окна.ЗакрытьОкно

2. С обработкой ожидания пока не падает, 10 мин.

Опаньки, а ведь это точно баг 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: Сбой при использовании нового метода раскраски
Ответ #17 - 20. Ноября 2008 :: 07:20
Печать  
Автору и тем, у кого валится 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: Сбой при использовании нового метода раскраски
Ответ #18 - 20. Ноября 2008 :: 07:28
Печать  
По выложенному тесту мое резюме - это баг не ФормЕкс, а баг 1С и используемого решения.
Рецепт исправления ситуации я привел выше.
  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Сбой при использовании нового метода раскраски
Ответ #19 - 20. Ноября 2008 :: 07:35
Печать  
artbear писал(а) 20. Ноября 2008 :: 07:20:
Автору и тем, у кого валится 1С - замените в обработке Форма.Закрыть() на Окна.ЗакрытьОкно и потестируйте.


Валится хотя уже не на 6 форме, т.е. работает гораздо дольше. Но размер используемой памяти всё равно растет.
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Сбой при использовании нового метода раскраски
Ответ #20 - 20. Ноября 2008 :: 07:40
Печать  
artbear писал(а) 20. Ноября 2008 :: 07:28:
По выложенному тесту мое резюме - это баг не ФормЕкс, а баг 1С и используемого решения.
Рецепт исправления ситуации я привел выше.


Если бы это был баг 1с то второй тест тоже бы валился
  
Наверх
ICQ  
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Сбой при использовании нового метода раскраски
Ответ #21 - 20. Ноября 2008 :: 09:42
Печать  
artbear писал(а) 20. Ноября 2008 :: 07:20:
Автору и тем, у кого валится 1С - замените в обработке Форма.Закрыть() на Окна.ЗакрытьОкно и потестируйте.

Автору - а откуда взялась/ для чего нужна такая схема - открытие/закрытие формы обработки через таймер??


Самое интересное - валится просто так, на рабочей базе, (Вернее, валилось, пока заглушку не написал Улыбка) и не при закрытии, а при открытии формы вручную. И никаких Форма.Закрыть() там не используется.

Схема появилась так:
Сначала написал обработку, которую тупо надо было вручную открывать (и закрывать), пока глюк не вылезет, А потом, для облегчения работы тестеров, воображение в 3 часа ночи нарисовало такую схему  Очень довольный
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



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

FormEx developer
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Сбой при использовании нового метода раскраски
Ответ #23 - 20. Ноября 2008 :: 10:58
Печать  
АЛьФ писал(а) 20. Ноября 2008 :: 10:19:
Падения я поймал все же (наверное, вечером звезды были не так расположены). Сейчас пытаюсь разобраться почему падает.

Ага, подтверждаю.
  

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



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Сбой при использовании нового метода раскраски
Ответ #24 - 20. Ноября 2008 :: 11:30
Печать  
Прошу проверить прилагаемую сборку.
Так же прошу посмотреть даже тех, у кого не падал тестовый пример, проверить на корректность работы раскраски.
  

fe_test_006.zip ( 236 KB | Загрузки )

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


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Сбой при использовании нового метода раскраски
Ответ #25 - 21. Ноября 2008 :: 02:44
Печать  
2 часа работы обработки - полёт нормальный Улыбка
Корректность работы раскраски на рабочей БД проверить возможности нет - сижу в терминале Печаль Всё серое...
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Сбой при использовании нового метода раскраски
Ответ #26 - 21. Ноября 2008 :: 02:47
Печать  
АЛьФ писал(а) 20. Ноября 2008 :: 11:30:
Прошу проверить прилагаемую сборку.
Так же прошу посмотреть даже тех, у кого не падал тестовый пример, проверить на корректность работы раскраски.


Тест открытия формы в цикле, падений не наблюдается.
  
Наверх
ICQ  
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Сбой при использовании нового метода раскраски
Ответ #27 - 01. Декабря 2008 :: 03:06
Печать  
Уважаемый Альф, так как глюк исправлен, может стоит выложить новую сборку на сайт? Улыбка
Уж очень неприятный баг - вызывает падение системы...
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Сбой при использовании нового метода раскраски
Ответ #28 - 01. Декабря 2008 :: 10:11
Печать  
slider26 писал(а) 01. Декабря 2008 :: 03:06:
Уважаемый Альф, так как глюк исправлен, может стоит выложить новую сборку на сайт? Улыбка
Уж очень неприятный баг - вызывает падение системы...

Я все жду, когда отпишуться люди, у которых не падало. Но поедет ли раскраска.
  

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


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Сбой при использовании нового метода раскраски
Ответ #29 - 02. Декабря 2008 :: 04:40
Печать  
Леш!.
Это сборка с учетом изменений касательно Сервис::ОбработкаОжидания?
Та что я колысь поднимал вопрос
Форма неможет быть открыта в данном контексте.
Когда Серсис пытался открыть форму обработки по время проведения документа.
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Сбой при использовании нового метода раскраски
Ответ #30 - 03. Декабря 2008 :: 08:14
Печать  
АЛьФ писал(а) 01. Декабря 2008 :: 10:11:
Я все жду, когда отпишуться люди, у которых не падало. Но поедет ли раскраска.

Похоже, что ждать в этой ветке можно долго Печаль
Может, стоит подумать над вариантами Улыбка :
-Выложить сборку на сайте как БЕТА,
-Выложить сборку в ветке "Новости FE", либо "Смена принципа раскраски" с просьбой о тестировании, либо завести новую тему "Внимание! Тест!!!"?
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Сбой при использовании нового метода раскраски
Ответ #31 - 10. Февраля 2009 :: 07:51
Печать  
Тестирую 94 релиз Formex. Пока полет нормальный. Использую в ТЗ невидимые колонки.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать