Имя: Пароль:
1C
1С v8
Изменение цвета текста в списке справочника "Номенклатура"
, ,
0 Ly_Alena
 
10.03.16
10:41
Добрый день! Знаю вопрос плевый, но ни в какую не получается. Справочник "Номенклатура", при выделении строки номенклатуры в форме и при выполнении условия должно выделиться цветом значение текущей ячейки. Постоянно вылетает ошибка.
Например,
ЭлементыФормы.Список.ТекущаяСтрока.ЦветТекста = WebЦвета.Красный;

Хотя с колонкой прокатывает:
ЭлементыФормы.Список.ТекущаяКолонка.ЦветТекста = WebЦвета.Красный;

Подскажите как быть?
195 Ma3eIIa
 
11.03.16
08:55
(194) Я бы сделал так. добавил это поле не активный. при получение данных его заполнять. потом уже раскрашивать
196 DDwe
 
11.03.16
08:55
(194) Ты собираешься показать пользователю номенклатуру, потом он будет кликать по каждой позиции чтобы выяснить актуальная она или нет?
197 Ma3eIIa
 
11.03.16
08:55
198 Ma3eIIa
 
11.03.16
08:56
(196) возможно тс. не так поняла тз :)
199 Ly_Alena
 
11.03.16
08:57
(185) так пробовала - вообще ничего не происходит
200 DDwe
 
11.03.16
08:58
(197) Мы гадаем, а про это ей в (136) вказано.
201 франц
 
11.03.16
08:58
Вставь в форму списка справочника номенклатура данную процедуру.
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)

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

            Девольвация = Дата(2015,08,19);
            Запрос.УстановитьПараметр("Девольвация", Девольвация);
            Запрос.УстановитьПараметр("Номенклатура", Строка.ДанныеСтроки.Ссылка);

            Результат = Запрос.Выполнить();

            ВыборкаДетальныеЗаписи = Результат.Выбрать();

            Если ВыборкаДетальныеЗаписи.Количество()>0 Тогда
                //пНеактуальнаяСтоимостьМатериалов = Истина;
                ЦветФона = Новый Цвет(250,128,114);
                Строка.Ячейки.Наименование.ЦветФона = ЦветФона;
            //    
            //Иначе
            //    пНеактуальнаяСтоимостьМатериалов = Ложь;
            КонецЕсли;
    
    КонецЕсли;
КонецЦикла

КонецПроцедуры
202 DDwe
 
11.03.16
08:58
(199) Ты на вопросы будешь отвечать?
203 Мимохожий Однако
 
11.03.16
08:59
(199)Покажи код. Не будь голословной.
204 Ly_Alena
 
11.03.16
08:59
(196) да именно так. Открывается справочник номенклатуры, потом пользователь смотрит интересующую номенклатуру - нажимает и номенклатура окрашивается если цены неактуальные.
205 Ly_Alena
 
11.03.16
08:59
(202) не успеваю )
206 Ly_Alena
 
11.03.16
09:00
(203) код условия или код окрашивания?
207 Ma3eIIa
 
11.03.16
09:00
(206) Процедура ТаблицаДокументовВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)    
    ВЫБРАННЫЙДОКУМЕНТ=ЭлементыФормы.ТаблицаДокументов.ТекущаяСтрока;
КонецПроцедуры

Процедура ТаблицаДокументовПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    Если ДанныеСтроки=Неопределено Тогда
        Возврат;
    ИначеЕсли ДанныеСтроки=ВЫБРАННЫЙДОКУМЕНТ Тогда
            ОформлениеСтроки.ЦветФона=Новый Цвет(0,255,0);
    КонецЕсли;    
КонецПроцедуры

Только тебе надо выбор заменить на активизацию строки
208 Мимохожий Однако
 
11.03.16
09:00
(204)Если номенклатура несколько тысяч? Я бы этот вопрос заказчику задал... несколько тысяч раз.
209 франц
 
11.03.16
09:00
(205) проверяй (201).. и не смей говорить, что это не работает.
210 DDwe
 
11.03.16
09:01
(204) Жесть.... Не любишь ты пользователей.
211 Мимохожий Однако
 
11.03.16
09:01
(206)Всю процедуру обработчика
212 Мимохожий Однако
 
11.03.16
09:02
(210)Она любит заказчика. Пользователи не платят.
213 Ly_Alena
 
11.03.16
09:02
(210) это пользователи усложняют себе жизнь. Отчетом не хотят - хотят сложности. Хозяин - барин.
214 Ma3eIIa
 
11.03.16
09:02
(201) у тебя запрос выполняется в цикле. можно же получить список номенклатуры и этот список передать в запрос. потом соответствие сделать и раскрашивать.
215 Ma3eIIa
 
11.03.16
09:03
(213) так можно же сразу отобразить. что цена не актуальная. если строка активная. то что окрашена не видно. так как будет выделена.
216 Мимохожий Однако
 
11.03.16
09:03
ОФФ:А Заказчик не любить пользователей, поэтому нанимает ТС. Вернее заказчик любит пользователей даже тогда, когда они не хотят уже
217 Ma3eIIa
 
11.03.16
09:04
218 DDwe
 
11.03.16
09:04
(213) Заработало? (201)
219 DDwe
 
11.03.16
09:06
(217) (Это нужно было в первом посте показать ))
220 Мимохожий Однако
 
11.03.16
09:06
(218)Она так не хочет ))
221 франц
 
11.03.16
09:06
(214) да знаю я... она пусть хотя бы это сделает.. потом можно и остальное..
222 Ma3eIIa
 
11.03.16
09:06
(219) так 5 минут гугла.
223 Ma3eIIa
 
11.03.16
09:07
(221) это не правильно. учить писать быдло код. даже если сложно. пусть тс разбирается.
224 DDwe
 
11.03.16
09:07
(223) +100
225 Ma3eIIa
 
11.03.16
09:07
(223) вдруг ты потом попадешь к этому заказчику. а там твой пример :)
226 DDwe
 
11.03.16
09:08
(225) Ты чего с сам собой?
227 Мимохожий Однако
 
11.03.16
09:08
(226)нет он с нами
228 франц
 
11.03.16
09:09
(225) вот я, когда попаду к заказчику, за оптимизацию денежьку и возьму))..
229 Ma3eIIa
 
11.03.16
09:10
(226) это дописка к тому посту :)
230 франц
 
11.03.16
09:10
(225) сцу_ко, знал же, что кто нибудь истерию на тему цикла поднимет)) и уже начинал переделывать запрос)))
231 Ly_Alena
 
11.03.16
09:11
(218) Да взлетело и кажется как-то странно. Нужно проверить!
Спасибо за пример.
232 Ma3eIIa
 
11.03.16
09:11
(228) я бы то что хочет тс. выкинул бы нафиг.
И сделал бы при получение данных. а при выборе в документ. добавил бы проверки и отмена выбора. и предупреждение. цена не актуальная
233 DDwe
 
11.03.16
09:13
(231) Не делай так!
234 Ma3eIIa
 
11.03.16
09:13
(231) О_о. (230) вот видишь. теперь твой код используют :)
235 Ly_Alena
 
11.03.16
09:13
(232) предупреждение о неактуальности цены неочень удобно, если будут тыкать не один раз. Я понимаю что об удобности тут вообще неуместно говорить...
236 DDwe
 
11.03.16
09:13
(231) Пример смотри в (217)
237 Ly_Alena
 
11.03.16
09:13
(233) да понятно что не делать ) Хотя бы с мертвой точки сдвинулась - что-то покрасилось через один )
238 франц
 
11.03.16
09:13
(231) ничего там странного нет.. вчера тебе весь день это пытались сказать... после 30-40 даже я отвалился - думал проблема решена.. (232) ну, и я бы.. кстати, я и выкинул установку признака при выборе строки)) у нее просто все неактуальные сразу пометятся))
239 Мимохожий Однако
 
11.03.16
09:14
Франц, браво.
240 франц
 
11.03.16
09:15
(234) так, я ж раньше тебя выложил)) ну, если у них мониторы не шибко большие, и иерархию отключать не будут - с тормозами практически не должно быть проблем..
241 Ly_Alena
 
11.03.16
09:15
(234) никто ничего не использует ) Спокойно
Вот, если тапками не кидаться - а совет дать, ну как быть в такой ситуации - самой не нравится эта раскраска но "хочут".
242 Chameleon1980
 
11.03.16
09:15
(185) ничего не даст.
Элемент=ТП. Хотя и есть там такое свойство - не получится

Через Элемент - которы тип ТП не дотянешься до цвета текущей строки. У меня не получалось как-то. Там в свойствах тек.строка лежит сама номенклатура.

текущие данные тоже не подходят
243 Ma3eIIa
 
11.03.16
09:15
(238) Гггг :)
244 DDwe
 
11.03.16
09:15
Т.е. ТС сюда не за помощью приходила, а чтобы ей готовый код выложили )))
245 франц
 
11.03.16
09:16
(241) так, проблема в 201 не в раскраске.. и раскраска - вполне себе приемлемое решение.. проблема в 201 - есть вероятность тормозов)) там чуть переделать - ваще конфета будет))
246 Ma3eIIa
 
11.03.16
09:17
(241) Тебе тут советы дают. а тапками кидаются. ты еще профессионального тролинга не видела :)
247 Ma3eIIa
 
11.03.16
09:17
(245) да забей :) ТС все равно не вкурила как это работает.
248 Chameleon1980
 
11.03.16
09:17
(195) чуть поправлю.

устанавливать его приАктивизацииСтроки (из задачи автора)

ПРИ ПОЛУЧЕНИИ ДАННЫх (пардон) его раскрашивать

т.е. получится как автор хотел раскрасятся только те строки по которым автор прошлась и которые удовлетворяют условиям
249 Ma3eIIa
 
11.03.16
09:18
(248) если хранить список пройденных. то это массив пройденных и при выводе строки. расскаршивать эту строку
250 франц
 
11.03.16
09:18
(247) надеюсь, разберется в 201)) и, если получит проблему тормозов, вспомнит тут посты, и тоже дооптимизирует))..
251 Ma3eIIa
 
11.03.16
09:19
(250) реально 5 минут гугла. там море примеров. даже в книге знаний есть.
252 Ma3eIIa
 
11.03.16
09:20
я уже просто не удивляюсь. мне попалось наследство. конфу перевели с 1с77. там код тупо 7 :) я был в акуе.
253 Ma3eIIa
 
11.03.16
09:21
(252) я понимаю что проверка истины. это 1 или 0. но блин в 1с8
254 франц
 
11.03.16
09:21
(244) так, я решил не рисковать, и выложить код.. догнал, что в полчаса не управлюсь дать ей нужный совет, и придется выполнить (180) )))
255 DDwe
 
11.03.16
09:23
(254) Код выложил это хорошо..ладно. Но зачем плохому учишь?
256 франц
 
11.03.16
09:24
(251) ну, в моем случае я просто из своего архива выдернул + ее код взял)) и быстро сваял, чтобы уложиться в полчаса))
257 Ly_Alena
 
11.03.16
09:24
(244) пардоньте ТС?
258 франц
 
11.03.16
09:24
(255) да лана тебе.. я уже написал: если не вырубят иерархию, и если монитор не хренадцатьтыщ дюймов - все будет работать..
259 Мимохожий Однако
 
11.03.16
09:24
ТС = топик стартёр = автор ветки. Ничего личного
260 DDwe
 
11.03.16
09:25
(258) Слишком много "если" )))
261 франц
 
11.03.16
09:25
(259) плин.. вчера ТП тут проскочило)) теперь и ТС))
262 Chameleon1980
 
11.03.16
09:25
пля да я уже предлагал жеж приактивизации смотреть что с номенлатурой и в элементформы.строка писать - актуально или нет ?

что уже второй день голову кружите
263 франц
 
11.03.16
09:26
(260) я знаю... и знаю, что нет ничего более постоянного, чем временное..
264 франц
 
11.03.16
09:26
(262) а все уже.. решили.. сейчас бьют по рукам того, кто выложил решение))
265 Ma3eIIa
 
11.03.16
09:31
(264) ага. железной линейкой..
266 DDwe
 
11.03.16
09:32
(264) Решение в (207), а это подстава.
267 Chameleon1980
 
11.03.16
09:35
+(266) вроде как еще хуже чем через ПриПолученииДанных
268 франц
 
11.03.16
09:35
(266) ты понимаешь, как работает 201, или просто эрегируешь на запрос в цикле?
269 Ma3eIIa
 
11.03.16
09:43
(267) это пример когда при нажатие на строку выделить ее. а вообще. ошибка изначально. что не актуальные цены. нужно получать и проверять до отображения пользователю. то есть в при получение данных. решение франца, подходит. но его нужно оптимизировать :)
270 франц
 
11.03.16
09:46
(269) знаешь, тут еще вопрос, что быстрее: цикл с заполнением массива (структуры\соответствия) и потом поиск в них или запрос в цикле..
либо, для оптимизации, нужно добавить реквизит для номенклатуры (я в свое время просто свойство добавил) и при выборе заполнять номенклатуры проверять актуальность, и устанавливать признак. и потом при получении данных будет внезапный оптимальный профит..
271 Ma3eIIa
 
11.03.16
09:56
(270) каждому свое. но в упр формах. это был бы ДС. а это запрос к дополнительным таблицам.
272 Ly_Alena
 
11.03.16
10:28
(251) как ни странно ни одного примера не нашла, который бы помог в этом море. Поэтому открыла тему.
273 mTema32
 
11.03.16
10:58
(0) Без доп реквизита в табличном поле задача не решаема.
Хотя может быть я и ошибаюсь...
274 Chameleon1980
 
11.03.16
11:06
(273) +++100500 с ним красиво будет

по автору если:

приАктивации если нужно ставим реквизит

ПриПолученииДанных - раскрашиваем быстро все видимые (если наш реквизит выставлен) элементы с установленным значением.

профит.
275 франц
 
11.03.16
11:11
(273) (274) таки же, уже ж в 260 все это есть))..
276 Ly_Alena
 
11.03.16
11:13
Франц, спасибо большое! Все шикарно!
277 Chameleon1980
 
11.03.16
11:17
да это вроде и выше от кого то наблюдалось :)
278 Ly_Alena
 
11.03.16
11:20
(277) ну конечно всем спасибо, не легко пришлось Вам )
279 Chameleon1980
 
11.03.16
11:25
ДАЁШЬ НОВУЮ ТЕМУ !!!
280 Ly_Alena
 
11.03.16
11:41
(279) пятница нынче, не буду к выходным народ выбешивать )
281 франц
 
11.03.16
11:43
(280) так, никто ж не бесился)) все с задором накинулись на раскраску))
282 Ly_Alena
 
11.03.16
11:45
(281) а я запереживала что всех выбесила ) Переживательная знаете ли такая
283 Ly_Alena
 
11.03.16
11:50
Ща я тогда начну колготиться с реквизитом приАктивации. Держитесь )
284 франц
 
11.03.16
11:51
(283) а ты определилась, как будешь значение хранить?.. добавишь новый реквизит для спр Номенклатура?.. или добавишь свойство?..
285 франц
 
11.03.16
11:51
или категорию..
286 Ly_Alena
 
11.03.16
12:00
(284) вообще я еще вчера добавила реквизит...
287 франц
 
11.03.16
12:02
(286) ну, таки, он заполняется при активации строки?
288 Ly_Alena
 
11.03.16
12:18
(287) да он заполняется. ТОлько мне малость схема непонятна...
289 франц
 
11.03.16
12:19
(288) если он заполняется, то просто в код из 201 убери запрос, и поставь проверку твоего реквизита.. и, как бы, все..
290 DDwe
 
11.03.16
12:20
(288) Рассказывай, что не понятно.
291 Ly_Alena
 
11.03.16
12:22
(289) вот тут и непонятно - я тыкаю в номенклатуру - заполняется реквизит, при получении как будто только один реквизит и обновится. Как будто получится как я изначально хотела. Но мне так понравилась теперь идея что при отображении "без тыкания" сразу видно на что обратить внимание.
292 франц
 
11.03.16
12:24
(291) так, и не тыкай тогда.. вообще убери этот реквизит и код из процедуры активации.. он не нужен для кода из 201
293 Ly_Alena
 
11.03.16
12:28
(292) тогда каким образом будет заполняться реквизит?
Выставила условия в запросе, будто все красиво...

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

        Девольвация = Дата(2015,08,19);
        Запрос.УстановитьПараметр("Девольвация", Девольвация);
        Запрос.УстановитьПараметр("Номенклатура", Строка.ДанныеСтроки.Ссылка);

        Результат = Запрос.Выполнить();

        ВыборкаДетальныеЗаписи = Результат.Выбрать();
        Если ВыборкаДетальныеЗаписи.Количество()>0 Тогда
            ЦветТекста = Новый Цвет(250,0,0);
            Строка.Ячейки.Наименование.ЦветТекста = ЦветТекста;
        КонецЕсли;
    КонецЦикла;
294 франц
 
11.03.16
12:31
(293) так
1. Если хочется отображения "без тыканья" - то оставить все как есть.
2. если все же хочется "с тыканьем" - тогда в 201 убрать запрос, и добавить проверку твоего реквизита. Сейчас коду в 201 вообще фиолетово на значение твоего реквизита. он выводит для ВСЕХ неактуальных..