Имя: Пароль:
1C
1С v8
запрос с выгрузкой цвета
0 Vasus55
 
09.01.12
07:54
добрый день!
вопрос такой!
есть документ в нем в табличной части документа есть ячейка которая закрашена в определенный цвет, запросом выгружаю данные с этого дока на общую форму в табличное поле, но не знаю как именно сделать так, чтобы выгрузить эту закрашенную ячейку???
подскажите как можно это сделать пож-та
1 andrewks
 
09.01.12
08:19
нифига не понял
2 Vasus55
 
09.01.12
08:31
у меня выводится, но пустая ячейка
3 xarann
 
09.01.12
08:32
Телепаты в отпуске, но, наверняка, в документе ячейка красится при истинности определенного условия, ТС предлагается найти это условие и повторить в запросе или покрасить аналогично.
Не ячейка красит программиста, а программист ячейку :)
4 Vasus55
 
09.01.12
08:35
на этой общей форме в табличном поле отборажаются клиенты, где отображается статус работы с клиентом, в моем случае статус отображается в виде закрашенной ячейки
все эти данные хранятся в доке, где уже в табличной части есть этот статус, также в закрашенной ячейке
5 andrewks
 
09.01.12
08:36
у табличной части нет никаких закрашенных ячеек
6 Рэйв
 
09.01.12
08:37
(0)Ячейка закрашена на форие и ее цвет к выгружаемой таб части не имеет никакого отношения.
Наверняка есть условие по которому ячейка раскрашивается.проверяй его при выводе в общую форму и будешь значит что красить, а что нет
7 Vasus55
 
09.01.12
08:38
andrewks
в табличной части есть ячейка статус, которую я закрашиваю в определеный цвет
8 Рэйв
 
09.01.12
08:39
(7)В табличной части вообще нет ячеек
9 Рэйв
 
09.01.12
08:39
+(8)И тем более нет возможности их раскрашивать
10 Godofsin
 
09.01.12
08:40
Предлагается внимательно перечитать (6) и (3)
11 andrewks
 
09.01.12
08:42
(7) неплохо было бы подучить мат.часть.

представь, что ты смотришь в зеркало, и пририсовал своему отражению в зеркале рожки. потом ты подошёл к другому зеркалу - а рожек-то и нет! что надо сделать? правильно - пририсовать их отражению и во втором зеркале
12 Vasus55
 
09.01.12
08:44
а как это условие привязать к запросу, к той колонке в которой необходимо отобразить цвет?
13 Рэйв
 
09.01.12
08:46
(12)Не к запросу надо привязывать.А в событии ТабличногоПоля общей формы например ПриПолученииДанных() или ПриВыводеСтроки()
14 Vasus55
 
09.01.12
09:00
сделал, но только терь вся колонка закрашивается в один цвет, я так понимаю необходимо делать цикл по строкам табличного поля...
15 Ненавижу 1С
 
гуру
09.01.12
09:03
цветные запросы
16 artbear
 
09.01.12
09:08
(15) В Снегопате цветные запросы, а в 1С только один цвет - черный :)
17 1Сергей
 
09.01.12
09:10
(15) Не толерантно как-то :)
18 Рэйв
 
09.01.12
09:12
(17)Афроамериканские запросы?:)
19 Vasus55
 
09.01.12
09:29
только какое условие задать???
20 Маркетолог
 
09.01.12
09:43
(19) Может так ?
Если СтатусРаботыСКлиентом = ХорошийСтатус Тогда
   Раскрашиваем
КонецЕсли
21 Vasus55
 
09.01.12
10:01
я делаю так
Если форма.ЭлементыФормы.МойПереключатель.Значение = 0
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(0,255,255);
     ИначеЕсли
форма.ЭлементыФормы.МойПереключатель.Значение = 1
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(255,255,0);

КонецЕсли;
ну так все одним цветом красит
22 xarann
 
09.01.12
10:05
Что показывает отладчик у "форма.ЭлементыФормы.МойПереключатель.Значение" в момент выполнения?
23 Маркетолог
 
09.01.12
10:07
(21) Значит
форма.ЭлементыФормы.МойПереключатель.Значение всегда равно единице либо всегда равно нулю.
24 Vasus55
 
09.01.12
10:15
всегда считывает одно и тоже значение
он не переходит на следующую строчку, а по первой строке считывает и закрашивает всю колонку
25 Godofsin
 
09.01.12
10:17
(24) Ты не в цикле что ли проверку делаешь?
26 Godofsin
 
09.01.12
10:17
+(25) Всмысле строки не перебираешь?
27 Vasus55
 
09.01.12
10:18
я не знаю на какое условие цикл навесить(((
28 Маркетолог
 
09.01.12
10:22
(27) мойПереключатель что разные значения может принимать ?
:)
29 Vasus55
 
09.01.12
10:26
Маркетолог
да:0,1,2,3
30 Vasus55
 
09.01.12
10:26
Если форма.ЭлементыФормы.МойПереключатель.Значение = 0
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(0,255,255);
     ИначеЕсли
форма.ЭлементыФормы.МойПереключатель.Значение = 1
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(255,255,0);
     ИначеЕсли
форма.ЭлементыФормы.МойПереключатель.Значение = 2
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(255,153,204);
     ИначеЕсли
форма.ЭлементыФормы.МойПереключатель.Значение = 3
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(204,255,204);

КонецЕсли;
31 hhhh
 
09.01.12
10:29
(30) но в какой момент изменяется этот переключатель. Пользователь это что ли в бешеном темпе прощелкивает, чтобы добиться изменения цвета 8 раз в секунду?
32 Маркетолог
 
09.01.12
10:30
(29) Так когда идет выгрузка МойПереключатель ведь в одном положении находится ?
33 Vasus55
 
09.01.12
10:33
Маркетолог
да!
34 hhhh
 
09.01.12
10:34
(33) ну тогда в один цвет красить должен.
35 Маркетолог
 
09.01.12
10:38
(33) Вот и вывели тебя на чистую воду :)
36 Vasus55
 
09.01.12
10:41
даннные выгружаются со справочника, в каждом элементе справочника выбранно разное значение переключателя
например,
контрагент первый статус работы активно сотрудничает
второй статус работы нет совместных интересов
и т.д.
соответсвенно так как статусы разные переключатели тоже разные выбраны
вот как то так
37 xarann
 
09.01.12
10:46
Кучу кода в студию?
38 Маркетолог
 
09.01.12
10:48
(36) Но выгрузка идет из одного эл.справочника.
    По этому элементу и заполняются цвета для всех строк.
39 Vasus55
 
09.01.12
10:54
Маркетолог
как же сделать чтобы просматривались данные со всех элементов справочника и в зависимости от выбранного в этом элементе спрвочника переключателя закрашивался в нужный цвет?????
40 Маркетолог
 
09.01.12
11:04
(39) Очень просто.
    Смотришь какой реквизит отвечает за статус контрагента
в справочнике контрагенты.
    Потом пишешь примерно так

Если ДанныеСтроки.Контрагент.РеквизитКОторыйОтвечаетЗаСтатус = ...
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(0,255,255);
41 Vasus55
 
09.01.12
11:24
Маркетолог
таким методом тоже нужно будет перебыирать значения
42 Godofsin
 
09.01.12
11:26
(41) Это проблема?
Для каждого ДанныеСтроки из ТабЧасть Цикл
   
КонецЦикла;
43 Vasus55
 
09.01.12
11:35
Для Каждого ДанныеСтроки Из ТабличноеПоле1
   Цикл
Если ДанныеСтроки.Организации.Статус=0
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(0,255,255);
ИначеЕсли
ДанныеСтроки.Организации.Статус=1
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(255,255,0);
ИначеЕсли
ДанныеСтроки.Организации.Статус=2
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(255,153,204);
ИначеЕсли
ДанныеСтроки.Организации.Статус=3
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(204,255,204);
КонецЕсли;

КонецЦикла;
сделал так
поле объекта организации не обнаружено(((
44 Vasus55
 
09.01.12
11:38
Для Каждого ДанныеСтроки Из ТабличноеПоле1
   Цикл
Если ДанныеСтроки.Организация.Статус=0
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(0,255,255);
ИначеЕсли
ДанныеСтроки.Организация.Статус=1
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(255,255,0);
ИначеЕсли
ДанныеСтроки.Организация.Статус=2
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(255,153,204);
ИначеЕсли
ДанныеСтроки.Организация.Статус=3
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(204,255,204);
КонецЕсли;

КонецЦикла;
45 Маркетолог
 
09.01.12
11:41
(44) Процедура ПриВыводеСтроки происходит для каждой строки и ничего не нужно перебирать в цикле.
46 GROOVY
 
09.01.12
11:42
(45) Лучше "ПриПолученииДанных" ИМХО...
Вообще шедевральная тема!
47 Vasus55
 
09.01.12
11:44
Маркетолог
почему тогда не  правильно работает
48 xarann
 
09.01.12
11:47
(47) Огласите весь спис... код, пожалуйста.
49 xarann
 
09.01.12
11:49
50 Маркетолог
 
09.01.12
11:51
(47) Посмотри в дебагаре
что есть внутри  - ДанныеСтроки.
51 GROOVY
 
09.01.12
11:53
Я наверно что то пропустил, а почему ТС не заюзает условное оформление?
52 Vasus55
 
09.01.12
11:59
весь код по этому поводу

Процедура ТабличноеПоле1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
спр=Справочники.Организации;
СтрокаНаименования = ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные.Организация;
НайденнаяСсылка=спр.НайтиПоНаименованию(СтрокаНаименования);
форма=НайденнаяСсылка.ПолучитьФорму("ФормаЭлемента");

Если  форма.ЭлементыФормы.МойПереключатель.Значение = 0
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(0,255,255);
ИначеЕсли
форма.ЭлементыФормы.МойПереключатель.Значение = 1
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(255,255,0);
ИначеЕсли
форма.ЭлементыФормы.МойПереключатель.Значение = 2
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(255,153,204);
ИначеЕсли
форма.ЭлементыФормы.МойПереключатель.Значение = 3
Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(204,255,204);

КонецЕсли;


КонецПроцедуры
53 Vasus55
 
09.01.12
12:02
маркетолог, меня смущает эта строка

ДанныеСтроки.Контрагент.РеквизитКОторыйОтвечаетЗаСтатус = ...

данныестроки - строка ТП общей формы
контрагент - элемент справочника
????
54 Маркетолог
 
09.01.12
12:04
(52) Отличный код
    спр - что такое ?
55 xarann
 
09.01.12
12:06
(52) O_O !!!
56 Маркетолог
 
09.01.12
12:07
(54) Вижу
57 Маркетолог
 
09.01.12
12:11
(53) Посомтри в каком реквизите хранятся данные, которые отображаются на форме переключателем, в справочнике Организации. :)
58 Vasus55
 
09.01.12
12:12
реквизит - статус
59 xarann
 
09.01.12
12:13
Если  ДанныеСтроки.Организация.Статус = <ПравоеЗначениеДляРаскраскиВКрасный> Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(255,0,0);
ИначеЕсли

При условии, что "Организация" наличествует как реквизит в строке. Первый четыре строки выкинуть и забыть как страшный сон.
И все равно это будет работоспособно, но кривовато...
Лучше в ПриПолученииДанных (49), а еще лучше условное оформление (51)

Смотреть курсы GROOVY (ссыска в его профиле)!!!
60 xarann
 
09.01.12
12:21
(11) А какая точная аналогия!
61 Vasus55
 
09.01.12
12:22
xarann
Значение не является значением объектного типа (Статус)
62 GROOVY
 
09.01.12
12:24
Организация какой тип имеет?
63 xarann
 
09.01.12
12:26
(61) Поставь на эту строку точку останова ((F9) в конфигураторе) и посмотри при срабатывании что есть в "ДанныеСтроки" для общей картины и сразу в "ДанныеСтроки.Организация" если она все-таки есть. Если "Статус" это вычисляемый на форме организаций алгоритм, а не реквизит справочника "Организации" или "Контрагенты", то повтори его в своей процедуре проверки на статусность...
64 ptiz
 
09.01.12
12:30
(52) Офигительный код!
65 Vasus55
 
09.01.12
12:33
xarann
ДанныеСтроки - значение  строка таблицы значений
ДанныеСтроки.Организация - значение Ликос
статус - переменная неорпеделна
66 Vasus55
 
09.01.12
12:34
Если "Статус" это вычисляемый на форме организаций алгоритм, а не реквизит справочника "Организации" или "Контрагенты", то повтори его в своей процедуре проверки на статусность...
не понятно.....
67 Vasus55
 
09.01.12
12:38
у меня получается данные сначала запросом выгружаются в ТП
Процедура ПолеВыбора1ПриИзменении(Элемент)

запрос=Новый запрос;
    запрос.Текст=
    "ВЫБРАТЬ
    |    ОбслуживаемыеКлиенты.Контрагент КАК Организация,
    |    ОбслуживаемыеКлиентыРеквизитыКонтрагента.ОсновнойТипОрганизации,
    |    ОбслуживаемыеКлиентыРеквизитыКонтрагента.Телефон КАК Телефон,
    |    ОбслуживаемыеКлиентыРеквизитыКонтрагента.Факс КАК Факс,
    |    ОбслуживаемыеКлиентыРеквизитыКонтрагента.Email КАК Email,
    |    ОбслуживаемыеКлиентыРеквизитыКонтрагента.WebСайт КАК WebСайт,
    |    ОбслуживаемыеКлиентыРеквизитыКонтрагента.Город КАК Город,
    |    ОбслуживаемыеКлиентыРеквизитыКонтрагента.Регион КАК Регион,
    |    ОбслуживаемыеКлиенты.Номер,
    |    ОбслуживаемыеКлиентыРеквизитыКонтрагента.Статус
    |ИЗ
    |    Справочник.Организации КАК Организации,
    |    Документ.ОбслуживаемыеКлиенты.РеквизитыКонтрагента КАК ОбслуживаемыеКлиентыРеквизитыКонтрагента
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОбслуживаемыеКлиенты КАК ОбслуживаемыеКлиенты
    |        ПО ОбслуживаемыеКлиентыРеквизитыКонтрагента.Ссылка = ОбслуживаемыеКлиенты.Ссылка";
    Результат=запрос.Выполнить().Выгрузить();
   
    ЭлементыФормы.ТабличноеПоле1.Значение=Результат;
    ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();

КонецПроцедуры
поле статус у меня выводится не закрашенным
поэтому написана следующая процедура
Процедура ТабличноеПоле1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
//спр=Справочники.Организации;
//СтрокаНаименования = ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные.Организация;
//НайденнаяСсылка=спр.НайтиПоНаименованию(СтрокаНаименования);
//форма=НайденнаяСсылка.ПолучитьФорму("ФормаЭлемента");

Если  ДанныеСтроки.Организация.Статус = 0 Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(0,255,255);
ИначеЕсли
ДанныеСтроки.Организация.Статус = 1 Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(255,255,0);
ИначеЕсли
ДанныеСтроки.Организация.Статус = 2 Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(255,153,204);
ИначеЕсли
ДанныеСтроки.Организация.Статус = 3 Тогда
ОформлениеСтроки.Ячейки.Статус.ЦветФона = Новый Цвет(204,255,204);
КонецЕсли;

КонецПроцедуры
68 hhhh
 
09.01.12
12:39
(66) МойПереключатель.Значение у тебя как-то вычисляется на форме. Возьми этот алгоритм и скопипасть в свою процедуру.

А то если ты по каждой строчке будешь получать форму элемента, полчаса твой список выводиться будет.
69 xarann
 
09.01.12
12:41
ДанныеСтроки.Статус ?
В отладчике можно разворачивать значения плюсиком или по shift+F9 или "зеленый карандашик" сверху справа
70 Vasus55
 
09.01.12
12:45
ДанныеСтроки.Статус - значение 0
71 GROOVY
 
09.01.12
12:48
Разговор слепого с глухим....
72 xarann
 
09.01.12
12:50
Прогонял в консоли запросов свой запрос?
Зачем там кросс-join со справочником Организаций?

"Справочник.Организации КАК Организации,"
73 xarann
 
09.01.12
12:52
(71) Спасибо за слепого или за глухого :)
Все когда-то начинали, и на аргументы почитать будет ведь типовое "Я студент..." и 1) Завтра лабу сдавать 2) Взяли на работу - не сделаю выгонят 3) Решит своей тян помочь, не сделаю не даст "...так что хлопцы выручайте, а читать некогда"
74 Vasus55
 
09.01.12
12:53
(4)
75 xarann
 
10.01.12
16:47
(74) Победил?