Имя: Пароль:
1C
1C 7.7
v7: Не получается сделать множественную выборку
0 maxxxl-ms
 
27.09.12
13:50
Добрых суток. Пишу обработку по выводу документов реализации и сделал по образцу множественную выборку, в результате не происходит никакой выборки:

// инициализация переменных множественного фильтра
ТипМФ.УдалитьВсе();
ТипМФ.ДобавитьЗначение("одно из");
ТипМФ.ДобавитьЗначение("все кроме");

ТаблицаМФ.УдалитьСтроки();
Пока ТаблицаМФ.КоличествоКолонок()>0 Цикл
   ТаблицаМФ.УдалитьКолонку(1);
КонецЦикла;  


Скриншот: http://upwap.ru/d/2851039/ee6968631dfaa88e8dc03e0050642162/33.JPG

ТаблицаМФ.НоваяКолонка("Тип");
ТаблицаМФ.НоваяКолонка("Вид");
ТаблицаМФ.НоваяКолонка("ИмяПеременной");
ТаблицаМФ.НоваяКолонка("СписокЭлементов"); // список элементов, по которым производим фильтрацию
ТаблицаМФ.НоваяКолонка("ТипМФ"); // текущая строка списка ТипМФ
ТаблицаМФ.НоваяКолонка("ФлВкл","Число",1,,"Вкл",5,,); // фильтр включен ("1" или "0")
ТаблицаМФ.НоваяКолонка("Представление",,,,"Вид фильтра:");
ТаблицаМФ.ВыводитьПиктограммы("ФлВкл");
                                                                               
ТекСтрокаВТаблице="";
1 mikecool
 
27.09.12
13:55
да, я тоже вижу, что никакой выборки не происходит
2 DenLaDen
 
27.09.12
13:58
(0) я вообще ничего у тебя не вижу
3 miki
 
27.09.12
14:02
зачетно:

ТаблицаМФ.УдалитьСтроки();
Пока ТаблицаМФ.КоличествоКолонок()>0 Цикл
   ТаблицаМФ.УдалитьКолонку(1);
КонецЦикла;
4 Изучаю1С8
 
27.09.12
14:04
(0) Кури типовые отчеты ТИСа.
5 maxxxl-ms
 
27.09.12
14:10
Не курю) Но идею делать это забросил, за неимением готового примера.
6 maxxxl-ms
 
27.09.12
14:18
Вот моё условие на фильтр:

Функция ПроверкаУсловияПоТаблицеМФ(ИмяПерем, ТаблицаМФ="", ИмяПоляМФ="", ПолеЕФ, ВидСправочникаСвойства="")
   Перем Результат;
   Перем Условие;
   
   Перем ПолеМФ, ТипМФ;
   Перем ПолеМФСвойств, ИмяПоляМФСвойств, ТипМФСвойств;
   Перем ТЗ;

   Результат = 1;  // априори полагаем, что условие выполняется
       
   Если ПустоеЗначение(ПолеЕФ) = 0 Тогда    // есть простой фильтр по позициям справочника
       Если ПолеЕФ.ЭтоГруппа() = 1 Тогда
           Результат = ИмяПерем.ПринадлежитГруппе(ПолеЕФ); // если выбрана группа в фильтре
       Иначе
           Если ИмяПерем = ПолеЕФ тогда
               Результат = 1;
           Иначе
               Результат = 0;
           КонецЕсли;
       КонецЕсли;
   Иначе
       ТЗ = СоздатьОбъект("ТаблицаЗначений");
       ТаблицаМФ.ВыбратьСтроки();
       Пока ТаблицаМФ.ПолучитьСтроку()=1 Цикл
           Если (ТаблицаМФ.СписокЭлементов.РазмерСписка()>0) и
                (ТаблицаМФ.ИмяПеременной=ИмяПоляМФ) и
                (ТаблицаМФ.ФлВкл=2) Тогда

               Если (ТаблицаМФ.Вид<>"ЗначенияСвойств") Тогда

                   ТипМФ = ТаблицаМФ.ТипМФ;
                   Условие = ТаблицаМФ.СписокЭлементов;

                   Если ТипМФ=1 Тогда // принадлежит списку
                       Результат = Условие.Принадлежит(ИмяПерем);
                   Иначе
                       Результат = (Условие.Принадлежит(ИмяПерем)-1)*(-1); // не принадлежит списку
                   КонецЕсли;

               Иначе // по свойствам

                   ЕстьМФ = 0;
                   ПолеМФ = ТаблицаМФ.СписокЭлементов;
                   ТипМФ  = ТаблицаМФ.ТипМФ;
                   
                   Если ТипЗначенияСтр(ПолеМФ)="СписокЗначений" Тогда
                       Если (ПолеМФ.РазмерСписка()>0) Тогда
                           ЕстьМФ = 1;
                       КонецЕсли;
                   КонецЕсли;

                   Если ЕстьМФ = 0 Тогда
                       Результат = 1;
                   Иначе
                       // теперь отбираем позиции по списку свойств
                       ТекстЗапросаСвойств = "
                           |Обрабатывать НеПомеченныеНаУдаление;
                           |КатегорияПозиции  = Справочник."+ВидСправочникаСвойства+".ТекущийЭлемент;
                           |Позиция           = Справочник."+ВидСправочникаСвойства+".Владелец;
                           |СвойствоПоз       = Справочник."+ВидСправочникаСвойства+".ЗначениеСвойства;
                           |Группировка Позиция Без Групп;";
                       Если ТипМФ=3 Тогда
                           ТекстЗапросаСвойств =ТекстЗапросаСвойств + "Группировка СвойствоПоз Без Групп;";
                       КонецЕсли;
                       ТекстЗапросаСвойств = ТекстЗапросаСвойств + "Условие (СвойствоПоз в ПолеМФ);";
                       ТекстЗапросаСвойств = ТекстЗапросаСвойств + "Условие (Позиция = ИмяПерем);";

                       // выполняем запрос
                       Запрос = СоздатьОбъект("Запрос");
                       Если Запрос.Выполнить(ТекстЗапросаСвойств)=0 Тогда
                           Результат = 0;
                       Иначе
                           Запрос.Выгрузить(ТЗ,0);
                           
                           Если (ТЗ.КоличествоСтрок() = 0) и ((ТипМФ=1)или(ТипМФ=3)) Тогда
                                 // если запрос ничего не принес и тип фильтра = "входит в список"
                               Результат = 0;
                           Иначе
                               НомерСтроки = 0;
                               Если (ТипМФ=1) или (ТипМФ=3) Тогда // принадлежит списку или одновременно все
                                   Результат = ТЗ.НайтиЗначение(ИмяПерем, НомерСтроки, "Позиция");
                               Иначе
                                   Результат = (ТЗ.НайтиЗначение(ИмяПерем, НомерСтроки, "Позиция")-1)*(-1); // не принадлежит списку
                               КонецЕсли;
                           КонецЕсли;
                       КонецЕсли;
                   КонецЕсли;
               КонецЕсли;
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;
   
   Возврат Результат;
КонецФункции    // ПроверкаУсловияПоТаблицеМФ
7 Злопчинский
 
27.09.12
19:02