7.7 Проблема с множественным фильтром

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем cplusmax, 30 янв 2013.

  1. TopicStarter Overlay
    cplusmax
    Offline

    cplusmax Опытный в 1С

    Регистрация:
    7 сен 2010
    Сообщения:
    154
    Симпатии:
    2
    Баллы:
    29
    Здравствуйте. Проблема в следующем:
    Хочу в своем отчете использовать механизм множественного фильтра (конфигурация ТИС)
    Скопировал из стандартного отчета слой МФ со всем его содержимым...
    Скопировал и немного подправил код (он выполняется до открытия формы):
    Код:
    // добавим закладки
    Форма.ИспользоватьЗакладки(1);
    Форма.Закладки.ДобавитьЗначение("Основной","Основная");
    Форма.Закладки.ДобавитьЗначение("МФ","Множественный фильтр");
    Форма.Закладки.ТекущаяСтрока(1);  
    // инициализация переменных множественного фильтра
    ТипМФ.УдалитьВсе();
    ТипМФ.ДобавитьЗначение("одно из");
    ТипМФ.ДобавитьЗначение("все кроме");
    ТаблицаМФ.УдалитьСтроки();
    Пока ТаблицаМФ.КоличествоКолонок()>0 Цикл
    ТаблицаМФ.УдалитьКолонку(1);
    КонецЦикла;
    ТаблицаМФ.НоваяКолонка("Тип");
    ТаблицаМФ.НоваяКолонка("Вид");
    ТаблицаМФ.НоваяКолонка("ИмяПеременной");
    ТаблицаМФ.НоваяКолонка("СписокЭлементов"); // список элементов, по которым производим фильтрацию
    ТаблицаМФ.НоваяКолонка("ТипМФ"); // текущая строка списка ТипМФ
    ТаблицаМФ.НоваяКолонка("ФлВкл","Число",1,,"Вкл",5,,); // фильтр включен ("1" или "0")
    ТаблицаМФ.НоваяКолонка("Представление",,,,"Вид фильтра:");
    ТаблицаМФ.ВыводитьПиктограммы("ФлВкл");
    
    //								 тип		  вид		   переменная  название
    глДобавитьВТаблицуМФ(ТаблицаМФ,"Справочник","Номенклатура", "Номенклатура",  "По номенклатуре");
    
    ТекСтрокаВТаблице="";
    А вот после него в процедуре ПриОткрытии() выполняется след. код:
    Код:
    Процедура ПриОткрытии()
    // установка видимости колонок ТЗ множественного фильтра
    ТаблицаМФ.ВидимостьКолонки("Тип",0);
    ТаблицаМФ.ВидимостьКолонки("Вид",0);
    ТаблицаМФ.ВидимостьКолонки("СписокЭлементов",0);		
    ТаблицаМФ.ВидимостьКолонки("ТипМФ",0);
    ТаблицаМФ.ВидимостьКолонки("ИмяПеременной",0);
    ТаблицаМФ.ВыводитьПиктограммы("ФлВкл");
    
    УправлениеДиалогом();
    ПерерисовкаНазванийЗакладок();
    КонецПроцедуры
    При выполнении происходит ошибка "ТаблицаМФ.ВыводитьПиктограммы("ФлВкл"); Неверный идентификатор колонки!" Глянул в отладчике когда начинает выполняться код в процедуре ПриОткрытии() ТаблицаМФ не имеет вообще колонок.. хотя ведь перед этой процедурой колонки создаются... Никак не могу понять почему при входе в процедуру ПриОткрытии() их уже нет..
    Подскажите в чем может быть причина?
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    смотрите в самый конец модуля типового отчета. После процедур есть еще строки.
    Они выполняются ДО процедуры ПриОткрытии(). Их то вам и не хватает
  3. TopicStarter Overlay
    cplusmax
    Offline

    cplusmax Опытный в 1С

    Регистрация:
    7 сен 2010
    Сообщения:
    154
    Симпатии:
    2
    Баллы:
    29
    Так я их добавил (я про это выше написал) Вот они эти строки (в них как раз и создаются колонки в тз ТаблицаМФ)
    Вот он код который я добавил:
    Код:
    // добавим закладки
    Форма.ИспользоватьЗакладки(1);
    Форма.Закладки.ДобавитьЗначение("Основной","Основная");
    Форма.Закладки.ДобавитьЗначение("МФ","Множественный фильтр");
    Форма.Закладки.ТекущаяСтрока(1);
    // инициализация переменных множественного фильтра
    ТипМФ.УдалитьВсе();
    ТипМФ.ДобавитьЗначение("одно из");
    ТипМФ.ДобавитьЗначение("все кроме");
    ТаблицаМФ.УдалитьСтроки();
    Пока ТаблицаМФ.КоличествоКолонок()>0 Цикл
    ТаблицаМФ.УдалитьКолонку(1);
    КонецЦикла;
    ТаблицаМФ.НоваяКолонка("Тип");
    ТаблицаМФ.НоваяКолонка("Вид");
    ТаблицаМФ.НоваяКолонка("ИмяПеременной");
    ТаблицаМФ.НоваяКолонка("СписокЭлементов"); // список элементов, по которым производим фильтрацию
    ТаблицаМФ.НоваяКолонка("ТипМФ"); // текущая строка списка ТипМФ
    ТаблицаМФ.НоваяКолонка("ФлВкл","Число",1,,"Вкл",5,,); // фильтр включен ("1" или "0")
    ТаблицаМФ.НоваяКолонка("Представление",,,,"Вид фильтра:");
    ТаблицаМФ.ВыводитьПиктограммы("ФлВкл");
    
    //		 тип	вид	 переменная  название
    глДобавитьВТаблицуМФ(ТаблицаМФ,"Справочник","Номенклатура", "Номенклатура",  "По номенклатуре");
    ТекСтрокаВТаблице="";
    Проверяю отладчиком... в этом фрагменте кода колонки в тз ТаблицаМФ действительно есть... а вот когда начинает выполняться ПриОткрытии() их уже нету :(
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    глДобавитьВТаблицуМФ(ТаблицаМФ,"Справочник","Номенклатура", "Номенклатура",  "По номенклатуре");
    
    вот это что и зачем?
  5. TopicStarter Overlay
    cplusmax
    Offline

    cplusmax Опытный в 1С

    Регистрация:
    7 сен 2010
    Сообщения:
    154
    Симпатии:
    2
    Баллы:
    29
    Это процедура глобального модуля.. добавляет возможность отбора в множественный фильтр (в моем случае по номенклатуре)
    вот описание процедуры:
    Код:
    // глДобавитьВТаблицуМФ(ТаблицаМФ,Тип, Вид, ИмяПеременной, Представление) Экспорт
    //
    // Параметры:				  
    //  ТаблицаМФ - ссылка на таблицу МФ
    //  Тип - текстовая строка, тип значения
    //  Вид - текстовая строка, вид значения
    //  Имя переменной - имя переменной запроса, к которой должен быть приложен фильтр
    //  Представление - текстовая строка - описание фильтра для пользователя
    //
    // Возвращаемое значение:
    //  Нет
    //
    // Описание:
    //  Добавляет в таблицу МФ 1 строку, если там еще нет аналогичной.
    //  Используется для инициализации таблицы МФ
  6. GlukAl
    Offline

    GlukAl Опытный в 1С

    Регистрация:
    4 окт 2012
    Сообщения:
    187
    Симпатии:
    7
    Баллы:
    29
    заинтриговал
    можешь выложить *.ert??
  7. TopicStarter Overlay
    cplusmax
    Offline

    cplusmax Опытный в 1С

    Регистрация:
    7 сен 2010
    Сообщения:
    154
    Симпатии:
    2
    Баллы:
    29
    Пожалуйста :)

    Вложения:

  8. GlukAl
    Offline

    GlukAl Опытный в 1С

    Регистрация:
    4 окт 2012
    Сообщения:
    187
    Симпатии:
    7
    Баллы:
    29
    странно, у меня флажок есть
    Торговля+Склад, редакция 9.2
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    уберите......
  10. TopicStarter Overlay
    cplusmax
    Offline

    cplusmax Опытный в 1С

    Регистрация:
    7 сен 2010
    Сообщения:
    154
    Симпатии:
    2
    Баллы:
    29
    Переименовал файл обработки, и у меня тоже ошибка исчезла... :blush:

    Если убираю данную строку, то у меня исчезает возможность отбора по номенклатуре из множественного фильтра..
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    перенесите вызов процедуры глДобавитьВТаблицуМФ в процедуру ПриОткрытии.
    Тук вас еще куча косяков... Один из них - нет процедуры ОбработкаПодбора
  12. TopicStarter Overlay
    cplusmax
    Offline

    cplusmax Опытный в 1С

    Регистрация:
    7 сен 2010
    Сообщения:
    154
    Симпатии:
    2
    Баллы:
    29
    Да да, тот вариант который я вчера выкладывал имеет кучу косяков, сегодня я уже их поправил, множественный фильтр работает.
    Большое всем спасибо.

Поделиться этой страницей