В большинстве российских типовых конфигураций для 1Сv7.7 (ТиС, ПУБ, Комплекс и др.) в отчетах используется множественный фильтр (МФ), такой как показан на 1 скрине. Впервые он появился, более 10 лет назад, еще в ТиС 8.7, придя на смену МФ ТиС 8.6 (скрин 2). С тех пор, аж до сего дня (24.03.2013) типовый механизм МФ содержит глюк связанный с восстановлением сохраненных настроек, хотя разработчики поют нам об обратном (скрин 3).
Переодически, на форумах посвященных 1С, поднимался вопрос: как полечить МФ?
Практически во всех этих ветках засветился один человек, выступавший под никами Tomba, Злопчинский, Чучундер. После его предложения, добавить в процедуру ВводНового() строчку:глПриСменеСтрокиТаблицыМФ( 1, 0, Контекст);
вопрос сразу снимался.
Чтобы не постить постоянно, это «длинную» рекомендацию, CheBurator оформил ее в виде статьи, за которую ему плюсанули на данный момент 43 благодарных пользователя у которых все заработало.
К сожалению, у меня не заработало и я озаботившись проблемой, родил рекомендацию, как решить проблему востановления настроек МФ. В процесе тестирования работы МФ я обнаружил, что не всегда выбранные значения сохраняются в настройке. Подлечил и эту фичу.
Результаты лечения, были мной опубликованы 14.01.2007 на инфостарте в статье «ТиС: Не восстанавливается МФ в отчете — что делать? Часть 2».
Недавно обнаружил, что ещё один человек изобрел лисапед на эту тему, который опубликовал в виде разработки. Так как моей статьи уже на портале нет, то я накрапал эту «статью», как ответ на вопрос andrewks: «куда-уж проще-то?» в комментарий №2.
Вкратце, не вдаваясь в подробности «от чего, и почему», повторю свои рекомендации.
Исправления вносятся на примере отчета «ОстаткиТМЦ» из типовой конфигурации «Торговля и Склад», редакция 9.2, релиз 74.
Итак:
1. Чтобы сохраненные настройки МФ всегда востанавливались, необходимо в процедуру ВводНового() добавить строчку:ТекСтрокаВТаблице = "";
2. Чтобы выбранные в МФ значения всегда сохранялись:
2.1. Добавляем в процедуру ОбработкаПодбора() после строки:ТаблицаМФ.ФлВкл = 2;
строку:глПриСменеСтрокиТаблицыМФ(1,ТекСтрокаВТаблице,Контекст);
(Внимание!!! Так как в ТиС 974 в конце процедуры ОбработкаПодбора() есть строка:СписокЭлементовМФ.Выгрузить(ТаблицаМФ.СписокЭлементов);
то пункт 2.1 можно пропустить)
2.2. В процедуре ВыбратьПоФильтру() в самом конце, строку: ОткрытьФорму("Обработка.ПодборОбъектов#",СписокПараметров);
заменяем на 2 строки:ОткрытьФормуМодально("Обработка.ПодборОбъектов#",СписокПараметров
);
глПриСменеСтрокиТаблицыМФ(1,ТекСтрокаВТаблице,Контекст);
2.3. В кнопки «Удалить» и «УдалитьВсе» (см. скрин №4), в поле формула, после вызова процедуры глРаботаСТаблицейМФ();
добавить глПриСменеСтрокиТаблицыМФ(1,ТекСтрокаВТаблице,Контекст);
(Внимание!!! Для несведущих в конфигурировании. Эти две функции должны быть обязательно разделены знаком «;» — точка с запятой)
Итого в результате 4 простых правок мы имеем рабочий МФ в отчете «ОстаткиТМЦ», который можно скачать (хотя и необязательно) в прилагаемом к статье файле. Файл также содержит мою первоначальную статью «ТиС: Не восстанавливается МФ в отчете — что делать? Часть 2» в которой подробно расписано почему нужно вносить те или иные изменения. Также, чтобы интересующиеся могли сравнить мои рекомендации с «куда-уж проще-то?» рекомендациями andrewks //infostart.ru/community/profile/114356/, я включил и его текстовый файл.
зы: Прошу заметить, что мы изменяем только отчет (который может быть сохранен как внешний), и не затрагиваем другие объекты конфигурации, что упрощает процес обновления последней.
Благодарю за внимание.
(0) Оно уже мало кому надо. Лет шесть назад, когда я ещё работал с ТиС, было актуально.
(1) если Вы персонально не работаете в ТиС, то это еще не значит, что это не актуально.
фирма 1С поддерживает конфиги, пользователи на них еще работают.
А фирмы переходят на «УТ», в том числе и из-за этого глюка, который «Нуралиев С.Г. и Ко» не удосужились исправить за лет этак 13.
При открытии подбора модально — как будут вызываться и отображаться другие окна, вызываемые из модального подбора?
(3) я использовал обработку «ПодборОбъектов» для отбора по значениям реквизитов. Эти значения имели простой тип.
Потому на фичу с подбором из модального режима не наступал.
Действительно мой совет № 2.2. лучше не делать.
тогда предлагаю самый «ленивый» вариант лечения МФ:
1. В процедуру ВводНового() добавить обязательно
ТекСтрокаВТаблице = «»;
без этого никак.
2. В процедуру ПриВыбореЗакладки(Номер,Значение) добавить
_Панель = ?(Номер=1,Форма.ПанельИнструментов(1),Форма.ПанельИнструментов(0));
сохранение будет возможно только с закладки «Основная».
зы: если форма отчета максимизирована, то будет наблюдаться еще один визуальный глюк: в виде дырки между нижним краем отчета и панелью состояния, размером с пропавшую панель инструментов. Но это некритично. Легко забороть.
Кстати проблему сохранения/восстановления настроек типовых отчетов, в которых используется для расшифровки таблиц, список значений, решает также обработка Мелёшина Дмитрия aka md«Мастер отчетов» (Выставьте кодировку Юникод в броузере, что бы не было кракозябров)
Обработка позволяет аккумулировать часто используемые конфигурации отчетов в одном списке значений, тем более, что туда можно добавить все отчеты, имеющие кнопку «обновить».
Внедрение: два чиха в глобальном модуле типовой конфигурации.
зы: обработку можно немного переделать и тогда тот кому по службе положено, сможет пользоваться не только своими настройками, но и настройками других пользователей. А это стандартными средствами невозможно.
Очень интересное решение. Рекомендую.
в дополнение к (4)
есть измененная обработка«ПодборОбъектов» . Подборы будут в ней работать и в модальном режиме.
Спасибо, работает! Давно пользователи домогали с этим вопросом, но руки, как обычно, не доходили, были дела по-серьезнее. На счет актуальности — народу на 7-ке уйма работает, и говорить, что все съехали на 8.x преждевременно. У многих просто ресурсов не хватает на миграцию самописного специфического функционала на восьмерочные решения. Респект за открытость решения, человек Вы, как видно, не жадный до $m 🙂