Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Помогите новичку (число прочтений - 4931 )
grig1
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 13. Сентября 2008
Помогите новичку
13. Сентября 2008 :: 07:17
Печать  
Пытаюсь раскрасить справочник продукции.Что-бы каждый тип продукции отображася свом цветом:
Функция ПроверитьВид()
     
     Если Тип_продукции = TV Тогда
     Возврат "BRUSH["+ПолучитьЦвет(173,255,47)+"]BRUSH_S["+ПолучитьЦвет(255,255,0)+"]";
         ИначеЕсли Тип_продукции = DVD Тогда
                 Возврат "FONT["+ПолучитьЦвет(0,0,0)+"] BRUSH["+ПолучитьЦвет(193,255,193)+"]BRUSH_S["+ПолучитьЦвет(255,255,0)+"]";


     КонецЕсли;
     Возврат "";
КонецФункции

Дело в том,что Тип_продукци берется из справочника.При запуске справочника выдается сообщение:
Если Тип_продукции = TV <<?>>Тогда
{Справочник.Модель.ФормаСписка.ФормаСписка.Модуль(6)}: Переменная не определена (TV)
ИначеЕсли Тип_продукции = DVD <<?>>Тогда
{Справочник.Модель.ФормаСписка.ФормаСписка.Модуль(8)}: Переменная не определена (DVD)
Подскажите пож,  что я не так делаю?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите новичку
Ответ #1 - 13. Сентября 2008 :: 08:08
Печать  
Ну так тебе же отвечают:
Цитата:
Переменная не определена (TV)
  
Наверх
 
IP записан
 
grig1
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 13. Сентября 2008
Re: Помогите новичку
Ответ #2 - 13. Сентября 2008 :: 08:52
Печать  
Я понимаю, что надо использовать родителя, но как это сделать не знаю.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите новичку
Ответ #3 - 13. Сентября 2008 :: 09:38
Печать  
Что у тебя "Тип_продукции"? Реквизит справочника? Какого типа?
А что ты подразумевал по TV и DVD?
  
Наверх
 
IP записан
 
grig1
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 13. Сентября 2008
Re: Помогите новичку
Ответ #4 - 13. Сентября 2008 :: 09:54
Печать  
Из справочника выбирается тип продукции.
  

1_002.jpg ( 93 KB | Загрузки )
1_002.jpg
Наверх
 
IP записан
 
grig1
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 13. Сентября 2008
Re: Помогите новичку
Ответ #5 - 13. Сентября 2008 :: 09:58
Печать  
Вот реквизит
  

2_002.jpg ( 14 KB | Загрузки )
2_002.jpg
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите новичку
Ответ #6 - 13. Сентября 2008 :: 10:02
Печать  
Ну тогда, наверное, лучше сделать примерно так:
Код
Выбрать все
Если ВРЕГ(СОКРЛП(Тип_продукции)) = "TV" Тогда 


Хотя это не очень красиво и не очень правильно, т.к. если пользователи поменяют название типа продукции с "TV" на
"телевизоры", то придётся опять всё переписывать!
Было бы хорошо, если бы типы продукции имели бы тип "перечисление".
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите новичку
Ответ #7 - 13. Сентября 2008 :: 10:09
Печать  
Можно ещё в справочник "Тип_Продукции" добавить реквизит "цвет_окраски_в_списке", на основе которого и раскрашивать.
Получится что-то типа:
Код
Выбрать все
Функция ПроверитьВид()
     Если ПустоеЗначение(Тип_продукции) = 1 Тогда
	 Возврат "";
     Иначе
	Возврат "BRUSH["+Тип_Продукции.цвет_окраски_в_списке+"]";
     КонецЕсли;
КонецФункции 



или же этот реквизит будет хранить всю строку окраски, т.е. будешь делать просто:
Код
Выбрать все
Возврат Тип_Продукции.цвет_окраски_в_списке; 

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


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 13. Сентября 2008
Re: Помогите новичку
Ответ #8 - 13. Сентября 2008 :: 10:22
Печать  
Спасибо все получилось.Использовал 1-й метод.Пользователи не изменят это исключено.
  
Наверх
 
IP записан
 
grig1
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 13. Сентября 2008
Re: Помогите новичку
Ответ #9 - 15. Сентября 2008 :: 08:28
Печать  
Все таки  вариант
Если ВРЕГ(СОКРЛП(Тип_продукции)) = "TV" Тогда
не подходит он работает если в Тип_продукции нет русских букв.Если есть русские буквы то не закрашивает.Остальные варианты закрашивают все ячейки в черный цвет.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите новичку
Ответ #10 - 15. Сентября 2008 :: 08:43
Печать  
Какие остальные варианты? Расскажи как делаешь.
  
Наверх
 
IP записан
 
grig1
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 13. Сентября 2008
Re: Помогите новичку
Ответ #11 - 15. Сентября 2008 :: 08:53
Печать  
Если в справочник "Тип_Продукции" добавить реквизит "цвет_окраски_в_списке", на основе которого и раскрашивать.
Цитата:
Функция ПроверитьВид()
     Если ПустоеЗначение(Тип_продукции) = 1 Тогда
      Возврат "";
     Иначе
     Возврат "BRUSH["+Тип_Продукции.цвет_окраски_в_списке+"]";
     КонецЕсли;
КонецФункции

Тогда все закрашивается в черный цвет.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите новичку
Ответ #12 - 15. Сентября 2008 :: 10:02
Печать  
А чем у тебя заполнен этот реквизит? Если хочешь, чтобы для незаполненных ничего не менялось, то делай так:
Код
Выбрать все
Функция ПроверитьВид()
    Если ПустоеЗначение(Тип_продукции) = 1 Тогда
	Возврат "";
    Иначе
	Если ПустоЕЗначение(Тип_Продукции.цвет_окраски_в_списке)=1 тогда возврат ""; КонецЕсли;
    	Возврат "BRUSH["+Тип_Продукции.цвет_окраски_в_списке+"]";
    КонецЕсли;
КонецФункции 


А в этот реквизит ты должен записывать: Цитата:
<Цвет> - представление необходимого цвета в формате RGB в виде положительного числа. Может быть как десятеричным, так и шестнадцатеричным (в этом случае необходимо добавить ''0x'' перед числом).
  
Наверх
 
IP записан
 
grig1
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 13. Сентября 2008
Re: Помогите новичку
Ответ #13 - 15. Сентября 2008 :: 10:05
Печать  
Все решил проблему
Код
Выбрать все
  Функция ПроверитьВид()
	Если ВРЕГ(СОКРЛП(Тип_продукции.Код)) = "0" Тогда
	Возврат "BRUSH["+ПолучитьЦвет(193,255,193)+"]";
	  ИначеЕсли ВРЕГ(СОКРЛП(Тип_продукции.Код)) = "1" Тогда
			Возврат "BRUSH["+ПолучитьЦвет(99,184,255)+"]"; 



Спасибо за помощь
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите новичку
Ответ #14 - 15. Сентября 2008 :: 10:06
Печать  
Привязка кода к наименованию или коду справочника - это не есть хорошо!
Если у тебя появится новый вид продукции, ты опять полезишь код править?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать