Имя: Пароль:
1C
 
Как в форме списка документов быстро отобразить статус дока?
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;
       КонецЕсли;
   КонецЦикла;
   

КонецПроцедуры
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший