Имя: Пароль:
1C
1С v8
Маленький вопросик
,
0 Valiant
 
12.04.12
22:48
Можно ли сделать в документе поступления товаров в табличном поле "Товары" что при нажатии на какую-дь любую кнопку строка окрашивалась, БЕЗ ДОБАВЛЕНИЯ реквизита табличной части "Товары"?
Вроде легкая задача, добавить руками колонку в табличное поле ставить туда значение когда нажимаем на кнопку а потом при выводе строки если в этой колонке значение у строки есть то оформлением менять цвет фона.
Но без данных то для новой колонки записать туда ничего не получается! Вроде не сложно должно быть ума не преложу как сделать! Помогите плиз!
1 Valiant
 
12.04.12
22:50
Плохо объяснил ?
2 Dethmont
 
12.04.12
22:55
По какому условию то она должна окрашиваться?
3 Valiant
 
12.04.12
22:59
Ну например:
Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

  Если ДанныеСтроки.Окрашивать тогда
       ОформлениеСтроки.................
  КонецЕсли;    

КонецПроцедуры // ТоварыПриВыводеСтроки()

Сложность в том что в ДанныеСтроки нету колонки "Окрашивать" которую я в ручную добавил на форму в "Товары"
4 Valiant
 
12.04.12
23:00
Так как данные в колонке пустые
5 Конфигуратор1с
 
12.04.12
23:01
(4)так присвоить нужно значение. А вообще оформление строки попробовать
6 Valiant
 
12.04.12
23:02
Заполнен только "ЭлементУправления" в конфигураторе. Плохо обясняю щас есчо раз по пунктам объясню
7 Valiant
 
12.04.12
23:03
Есто у документа табличная часть "Товары"
8 Valiant
 
12.04.12
23:03
На форме есть табличное поле "Товары"
9 Valiant
 
12.04.12
23:04
Соответствующее табличной части
10 Valiant
 
12.04.12
23:04
Я руками добавляю колонку "Окрашивать"
11 Valiant
 
12.04.12
23:05
Ставлю ЭлементУправления = ПолеВвода в конфигураторе
12 le_
 
12.04.12
23:05
(10) Зачем?
13 Valiant
 
12.04.12
23:06
Данные и ДанныеФлажка пустые так как соответствия из табличной части нету, я бы тогда просто размещение данных бы сделал
14 Valiant
 
12.04.12
23:06
Что бы туда что нибудь записывать когда нажимаю на кнопку
15 Valiant
 
12.04.12
23:06
потом при выводе строки смотреть если записано то окрашивать
16 le_
 
12.04.12
23:06
(14) Зачем?
17 Valiant
 
12.04.12
23:07
но не записывать не считывать не получается
18 Dethmont
 
12.04.12
23:07
Вопрос??????? КАК ТЫ заполняешь значение окрашивать?
19 Valiant
 
12.04.12
23:07
В том то и вопрос, что не получается заполнять )
20 Valiant
 
12.04.12
23:08
Хоть через текущую чтроку хоть через текущие данные
21 le_
 
12.04.12
23:08
Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

  Если ДанныеСтроки.НомерСтроки = 1 Тогда//тут может быть любое условие
       ОформлениеСтроки.................
  КонецЕсли;


Без всяких доп. колонок.
22 vs7719
 
12.04.12
23:08
Так не получится. Нужно либо добавлять реквизит в структуру документа, либо условие окрашивания должно основываться на данных в строке.
23 Dethmont
 
12.04.12
23:09
Если чтоТоТам = ЧемуТоТам Тогда
Строка.Окрашивать = Истина;
КонецЕсли;


Ты же примерно вот так это собрался делать?
24 Valiant
 
12.04.12
23:09
да
25 Dethmont
 
12.04.12
23:10
(21) только вот это написать хотел )
26 Dethmont
 
12.04.12
23:10
(21) ТОЖЕ САМОЕ
27 Valiant
 
12.04.12
23:11
мне надо окрашивать активную строку табличной части если пользователь нажал на форме кнопку, как сделать ?
28 Valiant
 
12.04.12
23:12
я решил добавить колонку и изменять в ней значение в текущей строке, а потом при выводе смотреть если изменено то окрашивать
29 le_
 
12.04.12
23:12
(27)  Если ДанныеСтроки.НомерСтроки = ЭлементыФормы.Товары.ТекущаяСтрока.НомерСтроки Тогда
30 Dethmont
 
12.04.12
23:12
Массив.Добавить(ЭлементыФормы.ТЧ.ТекущиеДанные.НомерСтроки);

Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

  Если Массив.Найти(ДанныеСтроки.НомерСтроки) <> Неопределено Тогда//тут может быть любое условие

       ОформлениеСтроки.................
  КонецЕсли;
31 Dethmont
 
12.04.12
23:13
(27) Или так
32 le_
 
12.04.12
23:14
(28) Заноси в переменную номер тек. строки и проверяй ДанныеСтроки.НомерСтроки в ПриВыводеСтроки.
33 Valiant
 
12.04.12
23:15
(29) мне надо и "старые текущие" запоминать и выводить с фоном  типа как в (30), а не только текущую, но в (30) надо учесть что пользователь может и добавить строку например в начале и индекс сдвинется
34 Valiant
 
12.04.12
23:15
(32) он ведь только текущую каждый раз будет окрашивать ?
35 Valiant
 
12.04.12
23:16
хотя
36 Valiant
 
12.04.12
23:16
если у остальных фон не обнулит то почему нет ) щас попробую
37 jsmith
 
12.04.12
23:16
а нахрена окрашивать-то
надо окрашивать несколько строк, я так понимаю?
38 jsmith
 
12.04.12
23:17
а потом кнопка типа "Обработать выделенные"
39 le_
 
12.04.12
23:17
(33) А зачем это вообще нужно?
40 Valiant
 
12.04.12
23:20
(37) да надо несколько окрашенных, а точнее те на которых пользователь стоял и нажимал кнопку(СоздатьВнутрШК), что бы если он сходит покурить и вернется видел какие строки он уже обработал
41 Valiant
 
12.04.12
23:20
какой товар оприходавал и наклеил ШК
42 Valiant
 
12.04.12
23:20
а какой еще нет
43 le_
 
12.04.12
23:25
Вариант (30), наверное, подойдет. Только не НомерСтроки заносить, а Номенклатуру.
44 Valiant
 
12.04.12
23:27
(43) кстати да я тоже про номенклатуру не подумал )
45 jsmith
 
12.04.12
23:28
а как обработчик при выводе вызвать
46 Valiant
 
12.04.12
23:28
(29) он не запоминает все равно при обновлении старые фоны, перерисовывает на текущую строку, не идет в общем
47 le_
 
12.04.12
23:29
(46) (29) Не подойдет. См. (30).
48 Valiant
 
12.04.12
23:30
при нажатии на кнопку запомнил номенклатуру тек строки в массив, потом при выводе строки 1с-как перебирая все строки будет искать её в нашем массиве и если нашел рисовать фон, должно прокатить
49 Valiant
 
12.04.12
23:31
тупа искать в запомненом и вообще не смотреть на текущие строки
50 Valiant
 
12.04.12
23:33
всем большое спасиба за идею с массивом номенклатуры, я бы полночи еще пытался записывать/считывать табличную часть )
51 jsmith
 
12.04.12
23:35
я вот такую хрень замутил, но текст почему-то пропадает

Процедура ПриОткрытии()
   ЭлементыФормы.ТС.Колонки.Добавить("Икс");
   ЭлементыФормы.ТС.Колонки.Икс.Видимость = Ложь;
КонецПроцедуры

Процедура КоманднаяПанель1Окрасить(Кнопка)
   
   Строка = ЭлементыФормы.ТС.ТекущиеДанные;
   ОФ = ЭлементыФормы.ТС.ОформлениеСтроки(Строка);
   ОФ.Ячейки.Икс.УстановитьТекст("Окрашено");
   ЭлементыФормы.тс.ОбновитьСтроки();
   
КонецПроцедуры

Процедура ТСПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   
   Если ОформлениеСтроки.Ячейки.Икс.Текст = "Окрашено" Тогда
       ОформлениеСтроки.ЦветФона = Новый Цвет(1,1,1);
   КонецЕсли;
   
КонецПроцедуры
52 le_
 
12.04.12
23:38
(45) Не потребуется. Оно само вызовется при нажатии на кнопку.
53 jsmith
 
12.04.12
23:38
(52) а у меня не вызывается..
54 jsmith
 
12.04.12
23:39
только если через ОбновитьСтроки()
55 jsmith
 
12.04.12
23:39
давно толстое приложение не троллил, забыл уже всё
56 Valiant
 
12.04.12
23:45
Строка = ЭлементыФормы.ТС.ТекущиеДанные;
   ОФ = ЭлементыФормы.ТС.ОформлениеСтроки(Строка);
   ОФ.Ячейки.Икс.УстановитьТекст("Окрашено");

я что то и не думал что так можно, привык что к ОформлениеСтроки только ПриВыводеСтроки есть доступ в обычных формах
57 jsmith
 
12.04.12
23:47
в типовых раньше была обработка Корректировка движений, вернее она и щас есть, но там вот динамически создавались колонки и заполнялись
58 le_
 
12.04.12
23:49
(53) Попробовал - если кнопка в панели над ТП, не обновляется, если в другом месте формы - обновляется...
(51) Пропадает, видимо, потому, что в данных его нет, только в оформлении, которое до след. вывода строки остается.
(57) Там у колонок данные есть.
59 Valiant
 
12.04.12
23:50
Конечный вариант, если кому вдруг пригодится:

Перем Массив;


Процедура СоздатьВернутьШК(Кнопка)
........
   Массив.Добавить(ЭлементыФормы.Товары.ТекущиеДанные.Номенклатура);
   ЭтаФорма.Обновить();
КонецПроцедуры


Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
.......
   Если (Массив.Найти(ДанныеСтроки.Номенклатура) <> Неопределено) тогда
       ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона = WebЦвета.Красный;    
   КонецЕсли;

КонецПроцедуры // ТоварыПриВыводеСтроки()

Массив = Новый Массив;
60 Valiant
 
12.04.12
23:52
(57) да, были бы данные было бы где хранить факт окраски
61 lex-kex
 
12.04.12
23:55
(60) а сравнить цвет фона нельзя, чтобы определить окрашен он или нет?
62 lex-kex
 
13.04.12
00:00
Процедура ТабличноеПоле1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   
   Если ОформлениеСтроки.ЦветФона = Новый Цвет тогда
       Сообщить("Строка не окрашена");
   КонецЕсли;
   
КонецПроцедуры
2 + 2 = 3.9999999999999999999999999999999...