Имя: Пароль:
1C
1С v8
Как добавить отбор по типу документа?
0 nouscode
 
18.07.14
14:16
Добрый день, коллеги!

В обработке есть табличная часть, в табличной части есть колонка (тип значений: строка), содержащая имя типа документа, например, "ПоступлениеТоваровУслуг" и т.п.

Если кто сталкивался, подскажите пожалуйста, как в форму добавить отбор строк по значениям данной колонки. Так как тип значения строка, то в вид сравнения в отборе можно выбрать только "Содержит", а нужно, чтобы можно было установить вид отбора "В списке".
1 mistеr
 
18.07.14
15:06
(0) Заменить строку на перечисление
2 nouscode
 
18.07.14
15:23
(1) - Всмысле в конфигурацию добавить перечисление, значения которых будут соответствовать наименованиям всех типов документов?
3 nouscode
 
18.07.14
15:27
Как сделал:

1. Установил у реквизита табличной части типа строка, содержащего текстовое наименование типа документа, фиксированную длину, превашающую длину любого наименования существующего в конфигурации типа документа.
2. Добавил реквизит формы "ТипыДокументов" типа список значений.
3. В конце процедуры, в которой заполняется табличная часть обработки, прописал заполнение списка типов документов:

[CODE]
    ТаблицаТиповДокументов = ТаблицаПоДокументам.Скопировать(, "ТипДокументаАСБНУ");
    ТаблицаТиповДокументов.Свернуть("ТипДокументаАСБНУ");
    
    ТипыДокументов.Очистить();
    
    Для Каждого ТипДокумента Из ТаблицаТиповДокументов Цикл
        ТипыДокументов.Добавить(ТипДокумента.ТипДокументаАСБНУ, Метаданные.Документы[ТипДокумента.ТипДокументаАСБНУ].Представление());
    КонецЦикла;
    
    ТипыДокументов.СортироватьПоПредставлению();
[/CODE]

4. В командную панель табличной части добавил кнопку "Установить отбор по типу документов", в действии которой описал установку отбора:

[CODE]
    ТипыДокументов.ОтметитьЭлементы("Типы документов");
    
    ОтмеченныеТипыДокументов = Новый СписокЗначений;
    
    Для Каждого ТипДокумента Из ТипыДокументов Цикл
        Если ТипДокумента.Пометка Тогда
            ОтмеченныеТипыДокументов.Добавить(ТипДокумента.Значение);
        КонецЕсли;
    КонецЦикла;
    
    Если ОтмеченныеТипыДокументов.Количество() > 0 Тогда
        ЭлементыФормы.ТаблицаКонтроля.ОтборСтрок.ТипДокументаАСБНУ.ВидСравнения = ВидСравнения.ВСписке;
        ЭлементыФормы.ТаблицаКонтроля.ОтборСтрок.ТипДокументаАСБНУ.Значение = ОтмеченныеТипыДокументов;
        ЭлементыФормы.ТаблицаКонтроля.ОтборСтрок.ТипДокументаАСБНУ.Использование = Истина;        
    Иначе
        ЭлементыФормы.ТаблицаКонтроля.ОтборСтрок.ТипДокументаАСБНУ.Использование = Ложь;
    КонецЕсли;
[/CODE]

При нажатии на данную кнопку открывается заполненные ранее список типов документов для отметки, после чего в табличной части устанавливается отбор согласно выбранным типам документов.
4 mistеr
 
18.07.14
21:49
(2) Да. Вам ведь не нужны ВСЕ типы.
Программист всегда исправляет последнюю ошибку.