Имя: Пароль:
1C
 
Фильтрация форма списка номенклатуры на выводимые строки
0 Tolstiy Beremenniy
 
20.12.17
14:07
Доброго времени суток! Подскажите пожалуйста по следующему вопросу.
Какие есть на него варианты решения из доступных?
Конфигурация Ут 10.3. Справочник Номенклатура, ФормаСписка.
При открытии из меню интерфейса и из документов открывается эта
доработанная форма списка, на которой располагается Список,
СправочникСписок.Номенклатура. В этом списке выводятся строки
по полям с различной информацией по остаткам.

Как можно отфильтровать вывод данных в этот список, то есть, не выводить строки у которых ни в одном из числовых полей нет числовых
данных. Информации по остаткам и прочей имеющейся для отображения.
Что бы это было оптимально по производительности. Без лишней
задержки.
Сам справочник содержит большое множество элементов для
отображения.
1 Tolstiy Beremenniy
 
20.12.17
14:47
Никто не подскажет? Возможно ли так фильтровать вывод строк в списке справочника?
2 nordbox
 
20.12.17
14:50
Ну?
что сам делал? как пробовал?
3 nordbox
 
20.12.17
14:53
(0)>>Что бы это было оптимально по производительности. Без лишней задержки.
фильтрация(отбор) уже сама по себе математика и для ее вычисления  нужно время
4 nordbox
 
20.12.17
14:54
Отборы смотри
5 Tolstiy Beremenniy
 
20.12.17
14:54
(2) У списка есть событие ПриВыводеСтроки
и процедура Процедура СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

Как то ОформлениеСтроки нужно оперировать?

Данные выводятся через неё

ОформлениеСтроки.Ячейки.СвободныйОстаток.Текст = Формат(СтрокаОстатков.Свободный,"ЧЦ=10; ЧДЦ=3");
6 nordbox
 
20.12.17
14:59
7 Lexey_
 
20.12.17
15:01
(1) по списку ссылок только, если колонки вычисляемые
8 nordbox
 
20.12.17
15:03
(5) Причем тут фильтр и оформление строки?
9 Михаил Козлов
 
20.12.17
15:03
(5) В ПриВыводеСтроки (или ПриПолученииДанных) - данные уже есть и отказаться от их вывода нельзя.
Можно было бы накладывать фильтры, но штатно только с видом сравнения ВСписке (или НЕ ВСписке) - и это может тормозить.
Как-то, чтобы не выводились позиции без остатка делал через РЛС. Тормозов не замечено, но приходилось регламентным заданием формировать признак отсутствия остатков.
10 Tolstiy Beremenniy
 
21.12.17
06:41
Как все же это начать уверенно делать?
11 mehfk
 
21.12.17
06:53
Я так понимаю хочется в форме списка справочника делать отбор по полям, не являющимся реквизитом справочника?
12 h-sp
 
21.12.17
06:56
(10) ну посмотрите как там сделано в подборе, там это всё сделано в кнопке подбор. Скопируйте кусок, то что касается остатков, к себе. Радуйтесь.

Зачем изобретать велосипеды, если всё давно уже сделано до нас?
13 igorPetrov
 
21.12.17
07:05
(10) Просто начать и сделать.
14 Tolstiy Beremenniy
 
21.12.17
07:45
(11) Да эти поля являются полями ввода на форме.
Данные в них выводятся, как

ОформлениеСтроки.Ячейки.СвободныйОстаток.Текст = Формат(СтрокаОстатков.Свободный,"ЧЦ=10; ЧДЦ=3");
15 Tolstiy Beremenniy
 
21.12.17
07:46
(12) В какой процедуре? Вы про форму списка справочника номенклатура УТ 10.3? Именно хочется использовать известное правильное решение.
16 Tolstiy Beremenniy
 
21.12.17
07:53
(12) Документ ЗаказПокупателя, кнопка подбор, вы про этот кусок? Что от сюда можно взять?


Процедура ДействиеПодбор(ТабличнаяЧасть)

    Перем Команда, Валюта;

    ЕстьЦена        = мМожноМенятьЦенуВДокументе;
    ЕстьСерия       = ТабличнаяЧасть = Товары
        И ЗначениеЗаполнено(ДоговорКонтрагента)
        И ДоговорКонтрагента.ОбособленныйУчетТоваровПоЗаказамПокупателей
        И мРезервироватьПоСериям
        И (ЗначениеЗаполнено(СкладГруппа) и ТипЗнч(СкладГруппа)=Тип("СправочникСсылка.Склады"));
    СкрыватьХарактеристику = Ложь;
    Валюта          = ВалютаДокумента;
    ПодбиратьУслуги = Ложь;

    Если ТабличнаяЧасть = Товары Тогда

        Команда           = "ПодборВТабличнуюЧастьТовары";
        ИмяТабличнойЧасти = "Товары";

    ИначеЕсли ТабличнаяЧасть = Услуги Тогда
        
        Команда                = "ПодборВТабличнуюЧастьУслуги";
        ИмяТабличнойЧасти      = "Услуги";
        СкрыватьХарактеристику = Истина;
        ПодбиратьУслуги        = Истина;
        
    ИначеЕсли ТабличнаяЧасть = ВозвратнаяТара Тогда

        Команда           = "ПодборВТабличнуюЧастьВозвратнаяТара";
        ИмяТабличнойЧасти = "Тара";

    КонецЕсли;

    СписокВидовПодбора = СформироватьСписокЗапросовДляПодбора(ТабличнаяЧасть);
    ПредставлениеДок   = Метаданные().Представление();

    СтруктураПараметровПодбора = Новый Структура();
    СтруктураПараметровПодбора.Вставить("Команда"            , Команда);
    СтруктураПараметровПодбора.Вставить("СписокВидовПодбора" , СписокВидовПодбора);

    // Параметры запросов.
    ВременнаяДатаРасчетов = ?(НачалоДня(Дата) = НачалоДня(ТекущаяДата()), Неопределено, Дата);
    СтруктураПараметровПодбора.Вставить("ДатаРасчетов"                 , ВременнаяДатаРасчетов);
    СтруктураПараметровПодбора.Вставить("Склад"                        , СкладГруппа);
    СтруктураПараметровПодбора.Вставить("ТипЦен"                       , ТипЦен);
    СтруктураПараметровПодбора.Вставить("ДоговорКонтрагента"           , ДоговорКонтрагента);
    СтруктураПараметровПодбора.Вставить("Контрагент"                   , Контрагент);
    СтруктураПараметровПодбора.Вставить("Организация"                  , Организация);
    СтруктураПараметровПодбора.Вставить("ПодбиратьУслуги"              , ПодбиратьУслуги);
    СтруктураПараметровПодбора.Вставить("СпособЗаполненияЦен"          , Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры);
    СтруктураПараметровПодбора.Вставить("ЕстьЦена"                     , ЕстьЦена);
    СтруктураПараметровПодбора.Вставить("ЕстьСерия"                    , ЕстьСерия);
    СтруктураПараметровПодбора.Вставить("ИспользоватьГруппуДоступности", Истина);
    СтруктураПараметровПодбора.Вставить("ВалютаДокумента"              , Валюта);
    СтруктураПараметровПодбора.Вставить("СкрыватьХарактеристику"       , СкрыватьХарактеристику);
    СтруктураПараметровПодбора.Вставить("Заголовок", "Подбор номенклатуры в документ " +
                                        ПредставлениеДок + " № " + Номер + " (" + ИмяТабличнойЧасти + ")");
    СтруктураПараметровПодбора.Вставить("УсловиеПродаж"                , УсловиеПродаж);


    РаботаСДиалогами.ОткрытьПодборНоменклатуры(ЭтаФорма, СтруктураПараметровПодбора, Метаданные());

КонецПроцедуры // ДействиеПодбор()
17 mehfk
 
21.12.17
07:58
У вас каша в голове.
18 Tolstiy Beremenniy
 
21.12.17
08:38
(12) есть сопутствующая информация по поводу подбора?
19 Lexey_
 
21.12.17
08:39
(18) да, в (7)
20 Tolstiy Beremenniy
 
21.12.17
08:43
(19) К сожелению мне это не знакомо (((
Можно где то посмотреть пример подобного решения?
Задача распространенная.
21 Tolstiy Beremenniy
 
21.12.17
08:56
Подскажите пожалуйста как продвинуться в решении?
22 Tolstiy Beremenniy
 
21.12.17
09:13
никто не подскажет как сделать отбор при открытии формы?
23 igorPetrov
 
21.12.17
09:15
(22) Смотреть примеры в типовых и читать документацию не пробовали?
24 Tolstiy Beremenniy
 
22.12.17
10:45
Можете подсказать как начать делать, или где пример посомтреть?
25 Fish
 
22.12.17
10:50
(24) По ссылке в (6) всё написано.
26 Tolstiy Beremenniy
 
22.12.17
11:30
(25) Мне под обычные формы нужно.
27 Tolstiy Beremenniy
 
22.12.17
11:37
(25) Поможете информацией?
28 Tolstiy Beremenniy
 
22.12.17
11:45
В какой процедуре делать отбор, как?
29 Tolstiy Beremenniy
 
22.12.17
11:48
подскажите пожалуйста, как оттолкнуться, начать доработку?
30 igorPetrov
 
22.12.17
11:51
За два дня кучу документации можно было прочитать, а не форуме висеть.
31 igorPetrov
 
22.12.17
11:51
(29) Отталкивайся ногами от стены в направлении рабочего стола и работать!
32 Fish
 
22.12.17
11:57
33 igorPetrov
 
22.12.17
12:01
(32) Что ты так жестоко )))
34 Tolstiy Beremenniy
 
22.12.17
12:42
форма открывается, на форме список справочника
там каталоги, в какой процедуре следует задавать отбор?
35 Tolstiy Beremenniy
 
22.12.17
12:51
просмотрел сейчас эту процедуру

Процедура СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)


так при открытии почему то там шли одни каталоги, а элеметов не было вообще. То есть прошел перебор каталогов и все.
36 Tolstiy Beremenniy
 
22.12.17
12:52
(35) При открытии группы справочника, появляются элементы.

Подскажите в какой процедуре нужно делать отбор?
37 Михаил Козлов
 
22.12.17
13:01
(36) В ПриОткрытии или в ПередОткрытием. Отбор для табличного поля. что справа (где элементы, а не группы).
Только тормозить будет (придется сформировать список артикулов, по которым нет остатков). По-моему, не стоит так делать.
Вы напишите, зачем это нужно.
38 Tolstiy Beremenniy
 
22.12.17
13:05
(37) Задачу поставил так работодатель.
Видимо много номенклатуры. И по которой нет данных не
хочется видеть её.
39 catena
 
22.12.17
13:09
В данном случае быстрее и производительнее нарисовать собственную форму для выбора с динамическим списком и прочими танцовщицами.
40 hhhh
 
22.12.17
13:14
(38) ну перенесите неиспользуемые в группу Неиспользуемые. И забудьте про них. Или в номенклатуре сделайте реквизит Актуальная и отбирайте по этому реквизиту.
41 hhhh
 
22.12.17
13:17
(38) и объясните работодателю, что если товар закончился, его не нужно убирать с экрана, а наоборот нужно выделить жирным красным цветом.
42 Tolstiy Beremenniy
 
22.12.17
16:39
(39) Форма эта не типовая, а доработанная, и вся переписанная под нужды организации.

(40) Как понять не используемую? По ней нет данных только
как я понимаю, остатков там всяких. Нет сегодня может появится завтра. Много номенклатуры там, вот в чем дело.
И нужно не показывать не актуальную.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.