![]() |
![]() |
![]() |
|
Помогите с ОформлениеСтроки | ☑ | ||
---|---|---|---|---|
0
Alexey87
22.03.10
✎
15:19
|
Всем привет!Хочу раскрашивать строки формы списка документа "Заказ покупателя" в зависимости от реквизита "состояние"
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок) здесь вычисляется этот самый реквизит "состояние" Для Каждого ОформлениеСтроки из ОформленияСтрок Цикл .... ОформлСтроки=ОформлениеСтроки.ДанныеСтроки.Ссылка.ПолучитьОбъект(); ОформлСтроки.Состояние=Перечисления.СостояниеЗаказаПокупателя.НеВыполнен; ....//пытаюсь записать новое состояние КонецЦикла; //здесь уже раскраска СписокПриВыводеСтроки(ЭтаФорма, Элемент, ОформлениеСтроки,ОформлениеСтроки.ДанныеСтроки); но после этого состояние у ОформлениеСтроки.ДанныеСтроки.Ссылка.Состояние не меняется, следовательно ничего и не раскрашивается, подскажите где ошибка |
|||
1
Defender aka LINN
22.03.10
✎
15:20
|
Мать моя...
|
|||
2
Лефмихалыч
22.03.10
✎
15:21
|
(0) ты определись - ты вичисляешь состояние или устанавливаешь его?
ЗЫ закрой конфигуратор срочно |
|||
3
Нуф-Нуф
22.03.10
✎
15:21
|
(1)+100
|
|||
4
Нуф-Нуф
22.03.10
✎
15:21
|
(2)+100
|
|||
5
Alexey87
22.03.10
✎
15:24
|
В зависимости от условия ему присваивается значение, которое потом хочу записать в оформление строк
|
|||
6
Нуф-Нуф
22.03.10
✎
15:25
|
приведи весь код процедуры СписокПриПолученииДанных
|
|||
7
Лефмихалыч
22.03.10
✎
15:27
|
(5) ты хочешь красить строки табличного поля в зависимости от данных в строках? Я правильно понимаю?
|
|||
8
Defender aka LINN
22.03.10
✎
15:28
|
(6) Смелый ты...
*убежал с визгами* |
|||
9
Irbis
22.03.10
✎
15:29
|
Даром что 87, может обманывает?
|
|||
10
Лефмихалыч
22.03.10
✎
15:29
|
(9) может явнварь? типа почти 86... на машинах так часто пишут
|
|||
11
Alexey87
22.03.10
✎
15:29
|
ОформлениеСтроки.ДанныеСтроки.Ссылка и есть сам документ, сначала вычислять его реквизит состояние, потом красить, щас код выложу
|
|||
12
Лефмихалыч
22.03.10
✎
15:30
|
(11) ответь на (7) внятно
|
|||
13
IronDemon
22.03.10
✎
15:30
|
На ИТСе статью читал?
|
|||
14
Лефмихалыч
22.03.10
✎
15:30
|
(13) возвижу следующий вопрос...
|
|||
15
Alexey87
22.03.10
✎
15:31
|
(7)ДА
(13)Нет - как называется? |
|||
16
Irbis
22.03.10
✎
15:34
|
ОформлениеСтроки (RowAppearance)
Свойства: ДанныеСтроки (RowData) ЦветТекста (TextColor) ЦветФона (BackColor) Шрифт (Font) Ячейки (Cells) Описание: Определяет оформление строки табличного документа. Используется для определения значений типа ОформлениеСтроки. Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения. См. также: ОформлениеЯчейки ТабличноеПоле, событие ПриВыводеСтроки ОформленияСтрок, метод Получить ТабличноеПоле, метод ОформлениеСтроки |
|||
17
IronDemon
22.03.10
✎
15:37
|
||||
18
Alexey87
22.03.10
✎
15:45
|
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
Для Каждого ОформлениеСтроки из ОформленияСтрок Цикл ЗаказСсылка = Элемент.ТекущаяСтрока; ДвиженияЗаказа = ПолучитьДвиженияЗаказа(ЗаказСсылка); ЭтотЗаказ = ЗаказСсылка.ПолучитьОбъект(); Если ЗаказСсылка.Проведен И ДвиженияЗаказа<>Неопределено Тогда КолРаспределенных = 0; Для каждого СтрокаТЧ Из ЗаказСсылка.Товары Цикл ОтборПоНоменклатуре=Новый Структура("Номенклатура,ХарактеристикаНоменклатуры",СтрокаТЧ.ДанныеСтроки.Номенклатура,СтрокаТЧ.ДанныеСтроки.ХарактеристикаНоменклатуры); НоменклатураОбороты=ДвиженияЗаказа.НайтиСтроки(ОтборПоНоменклатуре); Если НоменклатураОбороты.Количество()>0 Тогда //В списке оборотов номенклатура найдена ДвиженияНоменклатуры=НоменклатураОбороты[0]; Если ДвиженияНоменклатуры.Распределено=NULL Тогда ДвиженияНоменклатуры.Распределено=0; КонецЕсли; КонецЕсли; КонецЦикла; //Здесь нужно изменять оформления строк Если Распределенных = 0 Тогда ЭтотЗаказ.Состояние = Перечисления.СостояниеЗаказаПокупателя.НеВыполнен; ИначеЕсли Распределенных < ЗаказСсылка.Товары.Количество() Тогда ЭтотЗаказ.Состояние = Перечисления.СостояниеЗаказаПокупателя.ВыполненЧастично; ИначеЕсли Распределенных = ЗаказСсылка.Товары.Количество() Тогда ЭтотЗаказ.Состояние = Перечисления.СостояниеЗаказаПокупателя.Выполнен; КонецЕсли; Иначе ЭтотЗаказ.Состояние = Перечисления.СостояниеЗаказаПокупателя.НеВыполнен; КонецЕсли; //Если ЗаказСсылка.Проведен И ДвиженияЗаказа<>Неопределено Тогда СписокПриВыводеСтроки(ЭтаФорма, Элемент, ОформлениеСтроки, ОформлениеСтроки.ДанныеСтроки); КонецЦикла; КонецПроцедуры //СписокПриПолученииДанных() |
|||
19
Лефмихалыч
22.03.10
✎
15:47
|
(15) тогда удали код
и ни когда ни кому не показывай. Вообще приПолученииДанных не трогай, используй ПриВыводеСтроки |
|||
20
IronDemon
22.03.10
✎
15:49
|
Я за (8)
|
|||
21
Irbis
22.03.10
✎
15:50
|
После (18) чуствуется 87 тоже не хило досталось.
|
|||
22
Apokalipsec
22.03.10
✎
15:56
|
а у нас есть реквизит состояние...
Если ДанныеСтроки.Ссылка.СостояниеЗаказа = Перечисления.СостояниеЗаказа.Закрыт Тогда ОформлениеСтроки.ЦветТекста = WebЦвета.Красный; ИначеЕсли ДанныеСтроки.Ссылка.СостояниеЗаказа = Перечисления.СостояниеЗаказа.Запущен Тогда ОформлениеСтроки.ЦветТекста = WebЦвета.Зеленый; ИначеЕсли ДанныеСтроки.Ссылка.СостояниеЗаказа = Перечисления.СостояниеЗаказа.Открыт Тогда ОформлениеСтроки.ЦветТекста = WebЦвета.Черный; КонецЕсли; Вот так банально. |
|||
23
Irbis
22.03.10
✎
15:58
|
(22) У (0) тоже есть, но все "... смешалось в доме Облонских" ©
|
|||
24
Alexey87
22.03.10
✎
16:31
|
прошу критики дальше
|
|||
25
Alexey87
22.03.10
✎
16:31
|
Функция дкСписокПриВыводеСтроки(ЭтаФорма, Элемент, ОформлениеСтроки, ДанныеСтроки, ПраваПользователя=Неопределено) Экспорт
Если ЭтаФорма.Заголовок = "Заказ покупателя" Тогда ЗаказСсылка = ДанныеСтроки.Ссылка; ..... //здесь формирование таблицы "ДвиженияЗаказа" заказа покупателя// .... ЭтотЗаказ = ЗаказСсылка.ПолучитьОбъект(); Если ЗаказСсылка.Проведен И ДвиженияЗаказа<>Неопределено Тогда Распределенных = 0; Для каждого СтрокаТЧ Из ЭтотЗаказ.Товары Цикл ОтборПоНоменклатуре=Новый Структура("Номенклатура,ХарактеристикаНоменклатуры",СтрокаТЧ.Номенклатура,СтрокаТЧ.ХарактеристикаНоменклатуры); НоменклатураОбороты=ДвиженияЗаказа.НайтиСтроки(ОтборПоНоменклатуре); Если НоменклатураОбороты.Количество()>0 Тогда //В списке оборотов номенклатура найдена ДвиженияНоменклатуры=НоменклатураОбороты[0]; Если ДвиженияНоменклатуры.Распределено=NULL Тогда ДвиженияНоменклатуры.Распределено=0; КонецЕсли; Если ДвиженияНоменклатуры.Распределено>0 Тогда Распределенных = Распределенных + 1; КонецЕсли; КонецЕсли; КонецЦикла; Если Распределенных = 0 Тогда ЭтотЗаказ.Состояние = Перечисления.СостояниеЗаказаПокупателя.НеВыполнен; ИначеЕсли КолРаспределенных < ЗаказСсылка.Товары.Количество() Тогда ЭтотЗаказ.Состояние = Перечисления.СостояниеЗаказаПокупателя.ВыполненЧастично; ИначеЕсли КолРаспределенных = ЗаказСсылка.Товары.Количество() Тогда ЭтотЗаказ.Состояние = Перечисления.СостояниеЗаказаПокупателя.Выполнен; КонецЕсли; Иначе ЭтотЗаказ.Состояние = Перечисления.СостояниеЗаказаПокупателя.НеВыполнен; КонецЕсли; //Если ЗаказСсылка.Проведен И ДвиженияЗаказа<>Неопределено Тогда Если ЭтотЗаказ.Состояние = Перечисления.СостояниеЗаказаПокупателя.Выполнен Тогда ОформлениеСтроки.ЦветФона = WindowsЦвета.ГраницаАктивногоОкна; ИначеЕсли ЭтотЗаказ.Состояние = Перечисления.СостояниеЗаказаПокупателя.ВыполненЧастично Тогда ОформлениеСтроки.ЦветФона = WebЦвета.БледноЛиловый; КонецЕсли; КонецЕсли; Результат = Истина; Возврат Результат; КонецФункции // дкСписокПриВыводеСтроки() |
|||
26
hhhh
22.03.10
✎
16:58
|
(25) неужели не понимаешь, что эта твоя процедурка будет выполняться минимум несколько секунд, а если умножить на количество строк, получится что на экран список будет выводиться больше чем минуту. Да тебя пользователи живьем закопают за такую программу.
|
|||
27
Alexey87
22.03.10
✎
17:00
|
это и понятно, можно еще проверять на то изменился ли реквизит или нет, если изменился - тогда перекрашивать
|
|||
28
Лефмихалыч
22.03.10
✎
17:00
|
(24) Ты на обращенные к тебе предложения по исправлению твоего кода не реагируешь и продолжаешь писать адову поделку, другой критики не будет, кроме вариаций на тему: "Убейся об дерево"
|
|||
29
Alexey87
22.03.10
✎
17:02
|
перенес все в СписокПриВыводеСтроки(), еще то как?
|
|||
30
hhhh
22.03.10
✎
17:04
|
(29) лучше заведи регистр сведений, и в нем два поля: заказ и выполнен. Заполняй его при при проведении заказа. А при выводе строки, просто анализируй этот регистр.
|
|||
31
Alexey87
22.03.10
✎
17:10
|
дык все и вычисление из-за того что, проведение заказа покупателя никаким образом не влияет на его состояние, проведение лишь регистрирует сам факт заказа товаров покупателем. Потом в заказе поставщику размещаются заказы покупателей, потом идут поступления от этих поставщиков, которые могут привести заказ полностью либо частично, вот и получается, что состояние заказа покупателя нужно постоянно анализировать.
|
|||
32
Лефмихалыч
22.03.10
✎
17:11
|
вот это вот убери совсем "ЭтотЗаказ = ЗаказСсылка.ПолучитьОбъект();" для начала.
Для решения этой задачи нужно сделать какой-нить регистр сведений, в который писать состояние заказов. Записывать туда должны документы, которые двигают регистр заказов. Кстати, раз запросом к базе лезешь, то код раскрашиваться тогда все-таки придется перенести в ПриПолучении данных, чтобы запрос формировать по пачке отображаемых в данный момент документов за раз. Запрос должен получать из этого нового регистра состояние заказа по ссылкам, полученным из оформленияСтрок |
|||
33
Alexey87
22.03.10
✎
17:13
|
ну сделаю это я допустим это на значениях свойств, все равно суть не изменится, все равно запрос и перезапись реквизитов
|
|||
34
Alexey87
22.03.10
✎
17:17
|
(32)Если убирать ЭтотЗаказ = ЗаказСсылка.ПолучитьОбъект(), то и реквизит "Состояние" нафиг убрать и его перезаполнение. Получается красить только по данным запроса
|
|||
35
Лефмихалыч
22.03.10
✎
17:21
|
(34) а, так ты СОЗНАТЕЛЬНО при отображении в списке меняешь данные документа?! о_О
|
|||
36
Alexey87
22.03.10
✎
21:50
|
(35)Всем привет!Хочу раскрашивать строки формы списка документа "Заказ покупателя" в зависимости от реквизита "состояние" - это я как бы не просто так наисал;
заказ, размещенный поставщику может прийти в любой момент, вот и проверяю, а уж не надо ли менять реквизит "состояние" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |