Снегопат

Обсуждение Снегопата
Текущее время: 21 ноя 2024, 20:25

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
СообщениеДобавлено: 02 июл 2012, 16:13 
Не в сети

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

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 июл 2012, 16:20 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 июл 2012, 17:09 
Не в сети

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

_________________
В реальності все не так, як насправді


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 июл 2012, 20:09 
Не в сети

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июл 2012, 08:14 
Не в сети

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июл 2012, 10:04 
Не в сети

Зарегистрирован: 04 июн 2012, 09:28
Сообщения: 343
Могу предложить попробовать записывать набранный текст в реквизит, связанный с полем поиска. При этом он, по крайней мере, должен остаться.

_________________
В реальності все не так, як насправді


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 июл 2012, 12:39 
Не в сети

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

_________________
В реальності все не так, як насправді


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 июл 2012, 13:06 
Не в сети

Зарегистрирован: 24 авг 2011, 15:32
Сообщения: 722
нет, не получилось - также текст становится выделенным и соответственно после продолжения набора все старое стирается. Пока отложил эту задачу, навалились более приземленные и менее интересные.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB