Вопрос № 171311: Здравствуйте. Подскажите идею. Как в 1С 7.7 организовать поиск по первым введенным символам (как в любом поисковике в инете) если поле где будут вводится символы имеет тип "Строка". Чтобы отсортиваный по этим символам результат отображался...
Вопрос № 171311:
Здравствуйте. Подскажите идею. Как в 1С 7.7 организовать поиск по первым введенным символам (как в любом поисковике в инете) если поле где будут вводится символы имеет тип "Строка". Чтобы отсортиваный по этим символам результат отображался в виде списка из которого можно будет выбрать нужное наименование. Тип "Строка" потому, что один важный пользователь так хочет, для остальных польз-й это поле ввода будет типа Справочник.
Отвечает Anton Devitsin, Профессионал :
Здравствуйте, ДАС Алекс! Непонял. Это выбрать из справочника надо? Так в режиме выбора в справочнике и так поиск такой есть.
Если из таблицы - только перебором и проверкой строк. Выгружая те которые подходят в табличную часть. Единственное что обновляться будет только при окончании ввода а не при добавлении букв - тк 7я платформа не позволяет отслеживать такие события.
Ответ отправил: Anton Devitsin, Профессионал
Ответ отправлен: 13.08.2009, 17:37
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 253198
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает Владимир Лазурко, Профессионал :
Здравствуйте, ДАС Алекс.
Штатными средствами седьмой платформы такую задачу не решить. Изначально платформа создавалась как движок к базам данных и не предусматривала подобных вещей. Для этого Вам понадобится компонента FormEx, которая расширяет фунциональность формы, в т.ч. перехват нажатий клавиш и движения мыши, объект Сервис:
Процедура ПриНажатииКнопкиКлавиатуры(<?>,,,,,,) КонецПроцедуры Синтаксис: Процедура ПриНажатииКнопкиКлавиатуры(<Контекст>,<КодКлавиши>,<Alt>,<Shift>,<Ctrl>,<Символ>,<ФСО>) КонецПроцедуры Назначение: Предопределенная процедура при нажатии
кнопки клавиатуры. Пареметры: <Контекст> - контекст формы <КодКлавиши> - код нажатой кнопки клавиатуры. <Alt> - флаг нажатия кнопки <Alt>. <Shift> - флаг нажатия кнопки <Shift>. <Ctrl> - флаг нажатия кнопки <Ctrl>. <Символ> - символ нажатой кнопки в формате ASCII. <ФСО> - флаг стандартной обработки. Изначально равен 1. Если в теле процедуры сбросить значение в 0, то стандартная обра
ботка события не вызывается. Пример: Процедура ПриНажатииКнопкиКлавиатуры(конт, код, _а, _ш, _к) Предупреждение(Нажата кнопка клавиатуры.); КонецПроцедуры
Ввод элемента справочника по первым буквам наименования
Для реквизита ТестСправочник я назначил тип: Справочник.Номенклатура. Активизировав этот реквизит, интуитивно хочется начать вводить название товара. Поэтому, в наш обработчик нажатия клавиши мы добавим генерацию события (без события трюк почему-то не работает): Если стрА="ТестСпра
вочник" Тогда Если (ПустоеЗначение(прм_Символ)=0) Тогда Сервис.ВнешнееСобытие("FormEx","ВводСимвола",прм_Символ) КонецЕсли; КонецЕсли;
А в обработчик события – ветвь условия: ИначеЕсли прм_Событие="ВводСимвола" Тогда Если стрА="ТестСправочник" Тогда Если ПустаяСтрока(прм_Данные)=0 Тогда wsh=СоздатьОбъект("WScript.Shell");
wsh.SendKeys("{F4}");//Имитируем нажатие F4 wsh.SendKeys("{TAB}");//Имитируем нажатие TAB wsh.SendKeys(прм_Данные);//Имитируем нажатие буквы КонецЕсли; КонецЕсли;
Мы назвали событие «ВводСимвола», чтобы отличить его от предыдущего примера, и передать значение клавиши вместо ее кода. Обработчик события имитирует (средствами объекта WScript.Shell ) нажатия клавиши F4, T
ab (чтобы сразу перескочить на поле Наименование справочника) и нажатие введенной буквы. Пользователю сразу откроется справочник с активиз
ированной первой буквой наименования товара (не надо вручную жать F4). Предположим, что я набрал букву К. На эту букву у меня есть несколько товаров. Предположим, мне надо выбрать товар Кофе «Арабика». Поэтому я продолжаю набирать первые буквы названия товара – «коф». После выбора нужной позиции я нажимаю Enter. Таким образом, уставшая мышь может немного отдохнуть, а пользователь – быстрее и удобнее ввести нужные сведения в документ.
Еще можно об этом почитать здесь. Скачать внешнюю компоненту FormEx можно с сайта автора "Кладовочка Альфа". Там же, на главной странице найдете ссылку на компоненту, а в разделе "Скачать" и ALS документацию к этой компоненте. Вот еще альтернатиная страница, откуда можно скачать компоненту FormeE
x (версия 1.6.0.0).
Успехов! С уважением, Владимир.
Приложение:
----- И как хотите, чтобы с вами поступали люди, так и вы поступайте с ними. (Евангелие от Луки, 6:31, совр. перевод)
Ответ отправил: Владимир Лазурко, Профессионал
Ответ отправлен: 17.08.2009, 22:36
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 253327
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.