![]() |
![]() |
![]() |
|
Как в форме списка документов быстро отобразить статус дока? | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
13.06.07
✎
12:39
|
Суть - закза покупателя, надо отображать состояние заказа
Отобран в реализацию/выгружен ответ. База файловая Можно конечно писать флаг статуса в сам документ, но на сегодняшний момент считаю что это не очень правильный ваиант и предполагаю читать состояние документа поиском ссылок на него в реализации или/и в РС хранящем данные о выгрузках ответов на заказ. Встал вопрос как в динамическом списке получать и использовать такие данные |
|||
1
ТелепатБот
гуру
13.06.07
✎
12:39
|
||||
2
Лефмихалыч
13.06.07
✎
12:40
|
(0) плохая идея
|
|||
3
yalex
13.06.07
✎
12:41
|
(0) Галочка в списке нужна?
|
|||
4
Asterixus
13.06.07
✎
12:47
|
Соственно в чем вопрос?
обрабатываешь событие "При выводе строки" и рисуешь статус документа.... единственно тормозить будет со страшной силой... так что "писать флаг статуса в сам документ" лучшее решение...... |
|||
5
Господин ПЖ
13.06.07
✎
12:48
|
(0) Сделай отчет нормальный...
|
|||
6
Asterixus
13.06.07
✎
12:50
|
(0) например так....
Процедура СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) если ОтоброжатьАктивность тогда ТекОтбор=Новый Структура("ЗаказПокупателя",ДанныеСтроки.Ссылка); Тз=РегистрыНакопления.ЗаказыПокупателей.Остатки(,Текотбор,"ЗаказПокупателя","Количество"); если Тз.Количество()<>0 тогда ОформлениеСтроки.Ячейки.Активный.УстановитьКартинку(БиблиотекаКартинок.Отклонить); конецесли; конецесли; КонецПроцедуры |
|||
7
RomaH
naïve
13.06.07
✎
12:51
|
(2) какая именно?
(3) какртинка нужна в спискедоков (4) тормоза я уже заметил - пробовал через критерий отбора - 1 док 1 секунда (5) нужен именно димамический список документов |
|||
8
Лефмихалыч
13.06.07
✎
12:53
|
(0) почему не хочешь статусы в регистр сведений (периодический) писать? Это и быстрее намного и история будет. А ежели добавить реквизит "Пользователь", то можно на основании движений этого регистра раздавать потом слонов и пряников...
|
|||
9
RomaH
naïve
13.06.07
✎
12:54
|
(6) суть в том что надо в какой-то момент получить статусы всего списка документов одним запросом (потом выгружу его в сосответствие)
вопрос в какой момент? и нужен ли весь список документов, ведь список динамческий и в ТП отображается только малая его часть |
|||
10
Широкий
13.06.07
✎
12:55
|
(9) Посмотри "ПриПолученииДанных" - всегда его юзаю
|
|||
11
GenV
13.06.07
✎
12:57
|
(7) Можно использовать периодический рег. сведений и заполнять данные ПриПолученииДанных, но все равно будут тормоза при прокрутке.
Как вариант можно открывать не список документов а форму среза поледнего для регистра сведений с состоянием заказа, тогда тормозов не будет |
|||
12
IronDemon
13.06.07
✎
12:57
|
Я делал ПриПолученииДанных и данные из ЗначенияСвойствОбъектов
Текст дать? |
|||
13
RomaH
naïve
13.06.07
✎
13:00
|
(8) статус в РС пишется только "выгружен ответ"
а вот упоминание заказа в проведенной реализации - тут с обработкой отмены проведения не хочу бороться |
|||
14
RomaH
naïve
13.06.07
✎
13:01
|
(12) давай
|
|||
15
IronDemon
13.06.07
✎
13:03
|
Процедура СформироватьТекстЗапроса()
СтруктураРеквизитов = Новый ТаблицаЗначений; СтруктураРеквизитов.Колонки.Добавить("ПутьКДанным"); СтруктураРеквизитов.Колонки.Добавить("ИмяРеквизита"); Док=Метаданные.Документы.НалоговаяНакладная; НовСтр = СтруктураРеквизитов.Добавить(); НовСтр.ПутьКДанным = Док.Имя; НовСтр.ИмяРеквизита = Док.Реквизиты.ДокументОснование.Имя; Док=Метаданные.Документы.ПриходныйКассовыйОрдер; НовСтр = СтруктураРеквизитов.Добавить(); НовСтр.ПутьКДанным = Док.Имя; НовСтр.ИмяРеквизита = Док.Реквизиты.ДокументОснование.Имя; ТекстЗапроса = ""; Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл ТекстЗапроса = ТекстЗапроса + " |Выбрать " + ?(ТекстЗапроса="", "РАЗРЕШЕННЫЕ ", "") + "Ссылка, Проведен, ПометкаУдаления, """+ КлючИЗначение.ПутьКДанным +""" КАК ВидДокумента ИЗ Документ."+КлючИЗначение.ПутьКДанным+" |ГДЕ "+КлючИЗначение.ИмяРеквизита+"=&ДокументОснование |ОБЪЕДИНИТЬ ВСЕ |"; КонецЦикла; ТекстЗапроса = Лев (ТекстЗапроса, СтрДлина(ТекстЗапроса)-15); ЗапросПодчиненные = Новый Запрос(ТекстЗапроса); ЗапросДанные = Новый Запрос; ЗапросДанные.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | РеализацияТоваровУслуг.Ссылка, | РеализацияТоваровУслуг.ЕстьАлкоголь, | ЕСТЬNULL(СвойствоРаспечатан.Значение, ЛОЖЬ) КАК Распечатан, | ЕСТЬNULL(СвойствоРаспечатанТТН.Значение, ЛОЖЬ) КАК РаспечатанТТН, | НалоговаяНакладная.Ссылка КАК ННСсылка, | НалоговаяНакладная.Проведен КАК ННПроведен, | НалоговаяНакладная.ПометкаУдаления КАК ННПометкаУдаления, | ПриходныйКассовыйОрдер.Ссылка КАК ПКОСсылка, | ПриходныйКассовыйОрдер.Проведен КАК ПКОПроведен, | ПриходныйКассовыйОрдер.ПометкаУдаления КАК ПКОПометкаУдаления |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг | ЛЕВОЕ СОЕДИНЕНИЕ Документ.НалоговаяНакладная КАК НалоговаяНакладная | ПО РеализацияТоваровУслуг.Ссылка = НалоговаяНакладная.ДокументОснование | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер | ПО РеализацияТоваровУслуг.Ссылка = ПриходныйКассовыйОрдер.ДокументОснование | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК СвойствоРаспечатан | ПО РеализацияТоваровУслуг.Ссылка = СвойствоРаспечатан.Объект | И (СвойствоРаспечатан.Свойство = &СвойствоРаспечатан) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК СвойствоРаспечатанТТН | ПО РеализацияТоваровУслуг.Ссылка = СвойствоРаспечатанТТН.Объект | И (СвойствоРаспечатанТТН.Свойство = &СвойствоРаспечатанТТН) |ГДЕ | РеализацияТоваровУслуг.Ссылка В(&СсылкиМассив)"; ЗапросДанные.УстановитьПараметр("СвойствоРаспечатан", ПланыВидовХарактеристик.СвойстваОбъектов.Распечатан); ЗапросДанные.УстановитьПараметр("СвойствоРаспечатанТТН", ПланыВидовХарактеристик.СвойстваОбъектов.РаспечатанТТН); КонецПроцедуры Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок) Если ПервыйЗапуск Тогда // при открытии вызывается 2 раза ПервыйЗапуск=Ложь; Возврат; КонецЕсли; // Соответствие создается для заполнения остатков в строках табличного поля СоответствиеСсылок = Новый Соответствие; // Заполнение параметра - массива значений ссылками на отображаемые строки табличного поля СсылкиМассив = Новый Массив; Для каждого ОформлениеСтроки из ОформленияСтрок Цикл Если ОформлениеСтроки.ДанныеСтроки.Ссылка = Документы.РеализацияТоваровУслуг.ПустаяСсылка() Тогда Продолжить; КонецЕсли; СсылкиМассив.Добавить(ОформлениеСтроки.ДанныеСтроки.Ссылка); СоответствиеСсылок.Вставить(ОформлениеСтроки.ДанныеСтроки.Ссылка, ОформлениеСтроки); КонецЦикла; мНалоговаяВидимость = мКолонкиСписка.Налоговая.Видимость; мПКОВидимость = мКолонкиСписка.ПКО.Видимость; мРаспечатанТТНВидимость = мКолонкиСписка.РаспечатанТТН.Видимость; мРаспечатанВидимость = мКолонкиСписка.Распечатан.Видимость; мЕстьАлкогольВидимость = мКолонкиСписка.ЕстьАлкоголь.Видимость; ЗапросДанные.УстановитьПараметр("СсылкиМассив", СсылкиМассив); Результат = ЗапросДанные.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл ОформлениеСтроки=СоответствиеСсылок.Получить(Выборка.Ссылка); ИндексНалоговой=3; ИндексПКО=3; Если мНалоговаяВидимость Тогда Если ТипЗнч(Выборка.ННСсылка) = Тип("ДокументСсылка.НалоговаяНакладная") Тогда Если Выборка.ННПроведен Тогда ИндексНалоговой=0; ИначеЕсли Выборка.ННПометкаУдаления Тогда ИндексНалоговой=1; Иначе ИндексНалоговой=2; КонецЕсли; КонецЕсли; Если ИндексНалоговой=3 Тогда ОформлениеСтроки.Ячейки.Налоговая.ОтображатьКартинку = Ложь; Иначе ОформлениеСтроки.Ячейки.Налоговая.ОтображатьКартинку = Истина; ОформлениеСтроки.Ячейки.Налоговая.ИндексКартинки=ИндексНалоговой; КонецЕсли; КонецЕсли; Если мПКОВидимость Тогда Если ТипЗнч(Выборка.ПКОСсылка ) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер") Тогда Если Выборка.ПКОПроведен Тогда ИндексПКО=0; ИначеЕсли Выборка.ПКОПометкаУдаления Тогда ИндексПКО=1; Иначе ИндексПКО=2; КонецЕсли; КонецЕсли; Если ИндексПКО=3 Тогда ОформлениеСтроки.Ячейки.ПКО.ОтображатьКартинку = Ложь; Иначе ОформлениеСтроки.Ячейки.ПКО.ОтображатьКартинку = Истина; ОформлениеСтроки.Ячейки.ПКО.ИндексКартинки=ИндексПКО; КонецЕсли; КонецЕсли; Если мРаспечатанВидимость Тогда //ОформлениеСтроки.Ячейки.Распечатан.УстановитьФлажок(Выборка.Распечатан); ОформлениеСтроки.Ячейки.Распечатан.ОтображатьКартинку = Выборка.Распечатан; ОформлениеСтроки.Ячейки.Распечатан.ИндексКартинки=0; КонецЕсли; Если мРаспечатанТТНВидимость Тогда //ОформлениеСтроки.Ячейки.РаспечатанТТН.УстановитьФлажок(Выборка.РаспечатанТТН); ОформлениеСтроки.Ячейки.РаспечатанТТН.ОтображатьКартинку = Выборка.РаспечатанТТН; ОформлениеСтроки.Ячейки.РаспечатанТТН.ИндексКартинки=0; КонецЕсли; Если мЕстьАлкогольВидимость Тогда ОформлениеСтроки.Ячейки.ЕстьАлкоголь.ОтображатьКартинку = Выборка.ЕстьАлкоголь; ОформлениеСтроки.Ячейки.ЕстьАлкоголь.ИндексКартинки=0; КонецЕсли; КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |