Менеджеры нуждаются в цветовом оформлении формы списка Заказов покупателей. Причем им хочется приблизительно такое:
Цвет текста строки должен быть зеленым - для закрытого (полностью отгруженного) заказа черным - для незакрытого заказа красным - для заказа по которому отгружено больше чем заказано
Цвет текста фона колонки "Картинка" должен быть красным - для неоплаченного заказа желтым - для частично оплаченного заказа зеленым - для полностью оплаченного заказа.
Самое примитивное решение - выполнять запросы по определению состояний отгрузки и оплаты заказов в процедуре "ПриВыводеСтроки" работает чересчур долго ибо в системе тысячи заказов.
Процедура ЖурналДокументовСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) Если ХотимПерсиковый Тогда ОформлениеСтроки.ЦветФона = WebЦвета.Персиковый; КонецЕслИ; КонецПроцедуры
Та это понятно. Я же написал, чтобы определить ХотимПерсиковый или ХотимЖелтый нужно выполнить запрос, а для тысячи строк запрос работает долго - меня менеджеры порежут.
ой...не дочитал доконца вопрос...извеняюсь. ...я так пологаю запрос не упростишь?
В принципе, как вариант, можно создать регистры сведений "СостоянияЗаказаПоОтгрузке" и "СостоянияЗаказаПоОплате", и писать запрос к ним - тогда, конечно, запрос упростишь.
Но, в этом случае нужно перелопатить очень много кода, чтобы правильно и вовремя заполнять эти регистры. Слишком много гемороя ради такой фуфельной задачки.
Та это понятно. Я же написал, чтобы определить ХотимПерсиковый или ХотимЖелтый нужно выполнить запрос, а для тысячи строк запрос работает долго - меня менеджеры порежут.
Уже лучше, но все равно тормозит страшно
ИМХО запросом решить это оптимальный вариант. Обычный перебор займет гораздо больше времени и ресурсов, а с регистрами -геморой.
Если ЗапросСостоянияЗаказа = Неопределено Тогда ЗапросСостоянияЗаказа = Новый Запрос; ЗапросСостоянияЗаказа.Текст = "ВЫБРАТЬ | ЗаказыПокупателейОстатки.ЗаказПокупателя КАК ЗаказПокупателя, | ЗаказыПокупателейОстатки.КоличествоОстаток КАК КоличествоОстаток | ИЗ | РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки | ГДЕ | ЗаказыПокупателейОстатки.ЗаказПокупателя = &ЗаказПокупателя"; КонецЕсли;
ЗапросСостоянияЗаказа.УстановитьПараметр("ЗаказПокупателя", ТекущийЗаказ); РезультатЗапрос = ЗапросСостоянияЗаказа.Выполнить(); ЗаказЗакрыт = Ложь; ЗаказПереОтгружен = Ложь; Если РезультатЗапрос.Пустой() Тогда ЗаказЗакрыт = Истина; Иначе Выборка = РезультатЗапрос.Выбрать(); Выборка.Следующий(); ЗаказПереОтгружен = Выборка.КоличествоОстаток < 0; КонецЕсли; Если ЗаказЗакрыт Тогда ОформлениеСтроки.ЦветТекста = ЦветЗакрытыхЗаказов; ИначеЕсли ЗаказПереОтгружен Тогда ОформлениеСтроки.ЦветТекста = ЦветПереотгруженныхЗаказов; КонецЕсли; КонецЦикла;
КонецПроцедуры
Причина редактирования: Помещайте код в тег "Код 1С"
1. если можно то "&ЗаказПокупателя" засунуть в "РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаКон, куданить сюда)" (получается выбриатеся вся таблица..а потом на нее условие....если туды...то таблица выберится сразу с условием) 2. Дату в условие
Перепиши: 1. Обход строк получение всех заказов 2. Выполнение одного запроса 3. Обход строк и установка значений исходя из данных запроса.
Цитата(zetovich @ 13.08.09, 12:52)
1. если можно то "&ЗаказПокупателя" засунуть в "РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаКон, куданить сюда)" (получается выбриатеся вся таблица..а потом на нее условие....если туды...то таблица выберится сразу с условием) 2. Дату в условие
Спасибо, в таком виде работает ПОЧТИ без тормозов.
ЗапросСостоянияЗаказа.Текст = "ВЫБРАТЬ | ЗаказыПокупателейОстатки.ЗаказПокупателя КАК ЗаказПокупателя, | ЗаказыПокупателейОстатки.КоличествоОстаток КАК КоличествоОстаток |ИЗ | РегистрНакопления.ЗаказыПокупателей.Остатки(, ЗаказПокупателя В (&ЗаказыПокупателя)) КАК ЗаказыПокупателейОстатки";
КонецЕсли;
ВыводимыеЗаказы = Новый Массив; Для Каждого Строка Из ОформленияСтрок Цикл ВыводимыеЗаказы.Добавить(Строка.ДанныеСтроки.Ссылка); КонецЦикла;
ой перепутал, нужно "ОформленияСтрок"... т.е. ЗапросСостоянияЗаказа.УстановитьПараметр("ЗаказыПокупателя", ОформленияСтрок.ВыгрузитьКолнку("Ссылка")); .........а мож в буфер не то скопировал...бывает.
ой перепутал, нужно "ОформленияСтрок"... т.е. ЗапросСостоянияЗаказа.УстановитьПараметр("ЗаказыПокупателя", ОформленияСтрок.ВыгрузитьКолнку("Ссылка")); .........а мож в буфер не то скопировал...бывает.
Было бы здорово, но так оно не работает. У объекта ОформленияСтрок есть только два метода "Получить()" и "Количество()".
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!