Снегопат
https://snegopat.ru/forum/

Навигатор по метаданным в предприятии
https://snegopat.ru/forum/viewtopic.php?f=6&t=212
Страница 1 из 1

Автор:  JohnyDeath [ 02 июл 2012, 16:13 ]
Заголовок сообщения:  Навигатор по метаданным в предприятии

Вот хотел сделать САБЖ в предприятии. Но что-то несрастается.
В приоткрытии подключил обработчик на 1 сек. Вот код обработчика:
Код:
&НаКлиенте
Процедура Фильтрокать()
   стрПоиска="";
   нс = 0; нк = 0; кс = 0; кк = 0;
   Элементы.ТекстФильтра.ПолучитьГраницыВыделения(нс, нк, кс, кк);
   Элементы.ТекстФильтра.УстановитьГраницыВыделения(1, 1, 1, 10000);
   стрПоиска = Элементы.ТекстФильтра.ВыделенныйТекст;
   Элементы.ТекстФильтра.УстановитьГраницыВыделения(нс, нк, кс, кк);
   стрПоиска = СокрЛП(НРег(стрПоиска));
   //Сообщить(стрПоиска);
   ОтфильтроватьТЗ(стрПоиска);   
КонецПроцедуры

Код:
&НаКлиенте
Процедура ОтфильтроватьТЗ(Знач стрПоиска)
   Если СтароеЗначениеФильтра = стрПоиска Тогда //уже искали
      Возврат;
   ИначеЕсли ПустаяСтрока(стрПоиска) Тогда
      ТаблицаОтфильтрованная.Очистить();
      Возврат;   
   КонецЕсли;   
   
   ТаблицаОтфильтрованная.Очистить();   
   СтароеЗначениеФильтра = СокрЛП(НРег(стрПоиска));
      
   //стрПоиска = СтрЗаменить(стрПоиска, " ", Символы.ПС);
   //КолСтрокФильтра = СтрЧислоСтрок(стрПоиска);   
   //
   //Для каждого СтрокаТЗ Из ТаблицаМетаданных Цикл
   //   КолСовпадений = 0;
   //   
   //   Для й = 1 По КолСтрокФильтра Цикл
   //      Если Найти(СтрокаТЗ.ИмяДляПоиска, СтрПолучитьСтроку(стрПоиска, й)) = 0 Тогда
   //         Прервать;
   //      Иначе
   //         КолСовпадений = КолСовпадений + 1;
   //      КонецЕсли;
   //   КонецЦикла;//по строкам фильтра
   //   
   //   Если КолСовпадений = КолСтрокФильтра Тогда
   //      НоваяСтрока = ТаблицаОтфильтрованная.Добавить();
   //      ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЗ);
   //   КонецЕсли;
   //КонецЦикла;
КонецПроцедуры

Если оставить так как есть, то происходит следующее: при обновлении обработчиком стирается все то, что вводил в текстовом поле-фильтре.
Если закомментировать строку:
Код:
СтароеЗначениеФильтра = СокрЛП(НРег(стрПоиска));

то ничего не очищается, но и ес-но нужного мне результата не дает.

Объясните, пжлст, в чем подвох.

Автор:  artbear [ 02 июл 2012, 16:20 ]
Заголовок сообщения:  Re: Навигатор по метаданным в предприятии

Не читал, но осуждаю (с) :)
Неужели готовый код взять нельзя? например, есть Интерфейсная панель (входит в ИР инструменты разработчика), есть отдельно на ИС

Автор:  Magister [ 02 июл 2012, 17:09 ]
Заголовок сообщения:  Re: Навигатор по метаданным в предприятии

JohnyDeath, а СтароеЗначениеФильтра - это реквизит формы?
Попробуй поменять на переменную в модуле формы :)
Судя по всему нельзя менять реквизиты формы в момент, пока ввод в поле не закончен. Наверное, можно в 1С слать баг :roll:

Автор:  JohnyDeath [ 02 июл 2012, 20:09 ]
Заголовок сообщения:  Re: Навигатор по метаданным в предприятии

artbear писал(а):
Не читал, но осуждаю (с) :)
Неужели готовый код взять нельзя? например, есть Интерфейсная панель (входит в ИР инструменты разработчика), есть отдельно на ИС

На инфостарте по "интерфейсной панели" нашел две обработки. Первая - только под толстый клиент, как я понял она же входит в состав ИР. Вторая сделана на её основе под УФ. Соответственно и та и другая осуществляет поиск, заполнение и прочие операции не так как бы хотелось мне. А мне очень понравилось как это сделал Саша Орефков для снегопата. Да, в предприятии придется довольствоваться встроенным обработчиком формы с его недостатками, но это лучше чем "ПриИзменении" в "интерфейсных панелях". Да и дерево там, как мне кажется, совсем ни к чему. В общем, как обычно захотелось сделать свой велосипедик. Здесь вроде б и кода не сильно много.

Цитата:
СтароеЗначениеФильтра - это реквизит формы

Да, реквизит формы, но на саму форму он не выведен. Похоже что именно в нем и беда. Спасибо.

Автор:  JohnyDeath [ 03 июл 2012, 08:14 ]
Заголовок сообщения:  Re: Навигатор по метаданным в предприятии

Еще один затык.
Т.к. в обработчике ожидания идет заполнение ТЗ на форме
Код:
Если КолСовпадений = КолСтрокФильтра Тогда
         НоваяСтрока = ТаблицаОтфильтрованная.Добавить();
         ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЗ);
      КонецЕсли;

то возникает аналогичная проблема.
Неужели в предприятии не получиться сделать также красиво?

Автор:  Magister [ 03 июл 2012, 10:04 ]
Заголовок сообщения:  Re: Навигатор по метаданным в предприятии

Могу предложить попробовать записывать набранный текст в реквизит, связанный с полем поиска. При этом он, по крайней мере, должен остаться.

Автор:  Magister [ 10 июл 2012, 12:39 ]
Заголовок сообщения:  Re: Навигатор по метаданным в предприятии

Сам столкнулся с похожей задачей - отфильтровать ТЗ на форме.
Чтобы текст не пропадал сделать получилось, но он при этом становится выделенным.
JohnyDeath, получилось решить?

Автор:  JohnyDeath [ 10 июл 2012, 13:06 ]
Заголовок сообщения:  Re: Навигатор по метаданным в предприятии

нет, не получилось - также текст становится выделенным и соответственно после продолжения набора все старое стирается. Пока отложил эту задачу, навалились более приземленные и менее интересные.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/