Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: 1С для программиста

  Все выпуски  

RFpro.ru: 1С для программиста


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Тимошенко Дмитрий
Статус: Студент
Рейтинг: 390
∙ повысить рейтинг »
Владимир Лазурко
Статус: Профессионал
Рейтинг: 383
∙ повысить рейтинг »
М.Денис
Статус: 9-й класс
Рейтинг: 291
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / 1С для программиста

Номер выпуска:1071
Дата выхода:18.08.2009, 16:35
Администратор рассылки:Владимир Лазурко, Профессионал
Подписчиков / экспертов:529 / 122
Вопросов / ответов:1 / 2

Вопрос № 171311: Здравствуйте. Подскажите идею. Как в 1С 7.7 организовать поиск по первым введенным символам (как в любом поисковике в инете) если поле где будут вводится символы имеет тип "Строка". Чтобы отсортиваный по этим символам результат отображался...



Вопрос № 171311:

Здравствуйте. Подскажите идею. Как в 1С 7.7 организовать поиск по первым введенным символам (как в любом поисковике в инете) если поле где будут вводится символы имеет тип "Строка". Чтобы отсортиваный по этим символам результат отображался в виде списка из которого можно будет выбрать нужное наименование. Тип "Строка" потому, что один важный пользователь так хочет, для остальных польз-й это поле ввода будет типа Справочник.

Отправлен: 13.08.2009, 16:31
Вопрос задал: ДАС Алекс, Посетитель
Всего ответов: 2
Страница вопроса »


Отвечает Anton Devitsin, Профессионал :
Здравствуйте, ДАС Алекс!
Непонял. Это выбрать из справочника надо? Так в режиме выбора в справочнике и так поиск такой есть.

Если из таблицы - только перебором и проверкой строк. Выгружая те которые подходят в табличную часть. Единственное что обновляться будет только при окончании ввода а не при добавлении букв - тк 7я платформа не позволяет отслеживать такие события.

Ответ отправил: Anton Devitsin, Профессионал
Ответ отправлен: 13.08.2009, 17:37

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 253198 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Владимир Лазурко, Профессионал :
    Здравствуйте, ДАС Алекс.

    Штатными средствами седьмой платформы такую задачу не решить. Изначально платформа создавалась как движок к базам данных и не предусматривала подобных вещей.
    Для этого Вам понадобится компонента FormEx, которая расширяет фунциональность формы, в т.ч. перехват нажатий клавиш и движения мыши, объект Сервис:

    © Цитата:
    ЗагрузитьВнешнююКомпоненту("FormEX.DLL");
    Сервис = СоздатьОбъект("Сервис");
    Сервис.ПерехватОтрисовкиСписков(0);
    Сервис.ПерехватМыши(0);
    Сервис.ПерехватКлавиатуры(1);

    А также обработчик событий ПриНажатииКнопкиКлавиатуры
    © Цитата: Синтакс-помощник компоненты 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 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.7 от 15.08.2009

    В избранное