Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) РаскрашиватьТаблицу поможете неучу? (число прочтений - 4709 )
SLL
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 29. Февраля 2008
Пол: Мужской
РаскрашиватьТаблицу поможете неучу?
29. Февраля 2008 :: 12:01
Печать  
взял код из примера, и в форме для подбора гтд сделал вот так:

[code]Функция ПроверитьВид()
     Если (ПустоеЗначение(Остаток)=0) Тогда
                 Возврат "FONT["+ПолучитьЦвет(0,0,0)+"] BRUSH["+ПолучитьЦвет(190,190,190)+"]";
           КонецЕсли;
     Возврат "";
КонецФункции
[/code]

при открытии формы все нормально, но стоит только пошевелить скроллбаром...  раскрашенные строчки начинают бегать, практически произвольно...

что я не так сделал?
  

sh2.jpg ( 110 KB | Загрузки )
sh2.jpg
Наверх
 
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: РаскрашиватьТаблицу поможете неучу?
Ответ #1 - 29. Февраля 2008 :: 12:16
Печать  
Колонка с формулой "ПроверитьВид()"  имеет идентификатор? Если да, попробуй его убрать.
В справочниках я не пробовал, но в ТЧ документов - у 1С есть нехилый глюк с порядком вызова формул для колонок разных типов.
  
Наверх
ICQ  
IP записан
 
SLL
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 29. Февраля 2008
Пол: Мужской
Re: РаскрашиватьТаблицу поможете неучу?
Ответ #2 - 29. Февраля 2008 :: 12:22
Печать  
dnp писал(а) 29. Февраля 2008 :: 12:16:
Колонка с формулой "ПроверитьВид()"  имеет идентификатор?


нет, пусто там
  
Наверх
 
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: РаскрашиватьТаблицу поможете неучу?
Ответ #3 - 29. Февраля 2008 :: 12:55
Печать  
Ну, значит где-то ещё рушится соответствие посчитанного остатка и рисуемой строки.

У тебя же "ОСтаток" - это переменная модуля? Ты рядом с ней добавь переменную "НаимОстатка" и заполняй её там же, где считаешь Остаток.

Сделай раскрасочную колоннку видимой и в ПроверитьВид() верни не раскраску, а
НаимОстатка + " = " + Остаток
Скорее всего увидишь, что в ПроверитьВид() использованы другие данные, не принадлежащие этой строке.
  
Наверх
ICQ  
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: РаскрашиватьТаблицу поможете неучу?
Ответ #4 - 29. Февраля 2008 :: 12:56
Печать  
так это... А не отрабатывает ли для строки раньше ПроверитьВид() чем расчет остатка?
  
Наверх
ICQ  
IP записан
 
SLL
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 29. Февраля 2008
Пол: Мужской
Re: РаскрашиватьТаблицу поможете неучу?
Ответ #5 - 29. Февраля 2008 :: 13:28
Печать  
dnp писал(а) 29. Февраля 2008 :: 12:56:
так это... А не отрабатывает ли для строки раньше ПроверитьВид() чем расчет остатка?


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

в общем, вот весь код, вторая часть - стандартная из 7.7 бух

Код
Выбрать все
Перем ОстатокПоНоменклатуре;

Функция ПроверитьВид()
	Если (ПустоеЗначение(ОстатокПоНоменклатуре)=0) Тогда
			Возврат "FONT["+ПолучитьЦвет(0,0,0)+"] BRUSH["+ПолучитьЦвет(190,190,190)+"]";
		КонецЕсли;
	Возврат "";
КонецФункции



// Функция ОстатокНаСкладе()
//
// Вызывается из текстовой строки или колонки, в зависимости от того, где
// показываются остатки.
//
Функция ОстатокНаСкладе(РасчетИзКолонки=1)
    Остаток = 0;
	Если (РасчетИзКолонки = 0) или ((РасчетИзКолонки = 1) и (ФлагОстаткиВКолонке = 1)) Тогда
		Если (КонМесяца(КонтекстФормыДокумента.ДатаДок) <= КонецРассчитанногоПериодаБИ())
			и (ТекущийЭлемент().Выбран() = 1) Тогда
	 		Если Товар.Выбран() = 1 Тогда
 				Остаток = БухИт.СКД(СчГТД, "К",, Товар, ТекущийЭлемент());
            	ОстатокПоНоменклатуре = Остаток;
 			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
    
	Возврат СокрЛ(Формат(Остаток, "Ч15.3."));
КонецФункции // ОстатокНаСкладе 



на выходе фигня явно нездоровая
  

sh3.jpg ( 120 KB | Загрузки )
sh3.jpg
Наверх
 
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: РаскрашиватьТаблицу поможете неучу?
Ответ #6 - 29. Февраля 2008 :: 13:48
Печать  
Код
Выбрать все
Функция ОстатокНаСкладе(РасчетИзКолонки=1)
    Остаток = 0;
    ОстатокПоНоменклатуре = 0; // <<<<< === вот оно, то что тебе нуна.
 


  
Наверх
ICQ  
IP записан
 
SLL
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 29. Февраля 2008
Пол: Мужской
Re: РаскрашиватьТаблицу поможете неучу?
Ответ #7 - 29. Февраля 2008 :: 14:16
Печать  
все равно не помогает  Печаль

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

если не затруднит - попробуй у себя? это же кусок стандартной конфы
  
Наверх
 
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: РаскрашиватьТаблицу поможете неучу?
Ответ #8 - 29. Февраля 2008 :: 14:50
Печать  
Попробовал.
Там те же глюки 1С, что и в ТЧ документов.
Вариант один - переносить вычисление остатка в первую колонку (не имеющую идентификатора!), а "Остаток" выводить посчитанное.
  
Наверх
ICQ  
IP записан
 
SLL
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 29. Февраля 2008
Пол: Мужской
Re: РаскрашиватьТаблицу поможете неучу?
Ответ #9 - 29. Февраля 2008 :: 14:57
Печать  
dnp писал(а) 29. Февраля 2008 :: 14:50:
Вариант один - переносить вычисление остатка в первую колонку (не имеющую идентификатора!), а "Остаток" выводить посчитанное.


а я не умею  Подмигивание

но спасибо anyway, хотя бы понятно, что я не совсем уж тупой и криворукий
  
Наверх
 
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: РаскрашиватьТаблицу поможете неучу?
Ответ #10 - 29. Февраля 2008 :: 15:05
Печать  
Попробуй так :
Код
Выбрать все
Перем ОстатокПоНоменклатуре;


// Функция ОстатокНаСкладе()
//
// Вызывается из текстовой строки или колонки, в зависимости от того, где
// показываются остатки.
//
Функция ОстатокНаСкладе(РасчетИзКолонки=1)
	ОстатокПоНоменклатуре = 0;
	Если (РасчетИзКолонки = 0) или ((РасчетИзКолонки = 1) и (ФлагОстаткиВКолонке = 1)) Тогда
		Если (КонМесяца(КонтекстФормыДокумента.ДатаДок) <= КонецРассчитанногоПериодаБИ())
		и (ТекущийЭлемент().Выбран() = 1) Тогда
			Если Товар.Выбран() = 1 Тогда
				ОстатокПоНоменклатуре = БухИт.СКД(СчГТД, "К",, Товар, ТекущийЭлемент());
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	Возврат СокрЛ(Формат(ОстатокПоНоменклатуре, "Ч15.3."));
КонецФункции // ОстатокНаСкладе

//***********
Функция ПроверитьВид()
	ОстатокНаСкладе(1);
	Если (ПустоеЗначение(ОстатокПоНоменклатуре)=0) Тогда
		Возврат "FONT["+ПолучитьЦвет(0,0,0)+"] BRUSH["+ПолучитьЦвет(190,190,190)+"]";
	КонецЕсли;
	Возврат "";
КонецФункции
 



а в формулу колоки "Остаток" впиши просто :

Код
Выбрать все
СокрЛ(Формат(ОстатокПоНоменклатуре, "Ч15.3.")) 

  
Наверх
ICQ  
IP записан
 
SLL
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 29. Февраля 2008
Пол: Мужской
Re: РаскрашиватьТаблицу поможете неучу?
Ответ #11 - 29. Февраля 2008 :: 15:16
Печать  
йесс! спасибо огромное   Круглые глаза
  
Наверх
 
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: РаскрашиватьТаблицу поможете неучу?
Ответ #12 - 29. Февраля 2008 :: 15:17
Печать  
Подмигивание
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать