[8.2] Подсистема «Ввод по строке» + видео

30.12.19

Разработка - Механизмы платформы 1С

Данная статья показывает более функциональную и дружелюбную к пользователю реализацию ввода по строке относительно стандартного поведения платформы 8.2.

Скачать файлы

Наименование Файл Версия Размер
PrimerVvodPoStroke82Ver1_2
.dt 75,35Kb
225
.dt 75,35Kb 225 Скачать
Подсистема ввода по строке 8.2 (версия 1.2) artbear
.dt 77,25Kb
69
.dt 77,25Kb 69 Скачать

  Когда выходила платформа 8 удобный ввод по строке позиционировали как одно из главных преимуществ перед 7.7. В версии 8.2 стандартную обработку не изменили, но появилась возможность переопределять поведение при вводе по подстроке, и идею этой публикации получилось реализовать практически «по человечески». Подробнее о вводе по строке для 8.2 можно почитать  в книге Разработка управляемого интерфейса, Ажеронок В.А, Островерх А.В., Радченко М.Г. Хрусталева Е.Ю., Глава 3.19 "Ввод по строке", Стр.564
Публикация является продолжением аналога на 8.1 (реализовал все пожелания для 8.1 в версии 8.2)


Описание: Подсистема позволяет предоставить пользователю более удобный и функциональный ввод по строке, а именно:
  `32; Ввод производится по части строки и может содержаться в любом месте текста в начале, середине, конце где угодно
  `32; Учитываются все данные заданные в конфигураторе (Связи выбора, Реквизиты для которых осущ. ввод по строке и т.д.)
  `32; Можно производить поиск нескольким словам, они должны разделятся пробелом (например: "Русь 3" подходят "Русь 3л", "Русь 103")
  `32; Работает со всем типами данных (Справочники, Документы, Перечисления, ПланыВидовХарактеристик, ПланыВидовРасчета, ПланыСчетов, ПланыВидовРасчета, ПланыОбмена, Задачи, БизнесПроцессы)
  `32; Работает везде, где производится выбор значения в поле, таблице и т.д. и повсюду поведение единообразно
  `32; Для документов, бизнес процессов доступен ввод по строке представления "Платежное поручение 0000001 от 10.10.2010 14:00:00" (удобно когда копируешь)
  `32; Более информативный выбор (представление с кодом, видно пометку на удаление, признак проведенности (для документа), предопределенные элементы, признак группы и др.)
  `32; Более удобная сортировка списка выбора (Помеченные на удаление элементы отображаются в конце списка, Документы по датам в порядке убывания и др.)
  `32; Для быстрого выбора значений используется аналогичный более информативный выбор

  `32; Осуществляется поиск с обратной раскладкой (полезно для случаев когда пользователь вводил запрос на неверной раскладке)

Недостатки:
  `32; Относительная сложность встраивания (нужно прописать в менеджере каждого объекта код... можно копипастом)
  `32; Работает только для реквизитов с типом строка (тип: Число не поддерживается)
  `32; Более ресурсоемкий (насколько это уже другой вопрос… вроде все работает быстро)
  `32; Стандартный ввод по подстроке выводит код только если строка поиска у элементов совпадает здесь же код выводится всегда (кроме случаев когда его длина в конфигураторе задана 0)

Все это наглядно можно увидеть на видео:



Встраивание подсистемы:
1. Нужно перенести все объекты с префиксом «_» 2 модуля и несколько картинок
2. В код менеджера объектов (для которых Ввод будет обрабатываться подсистемой) вставить предопределенную процедуру «ОбработкаПолученияДанныхВыбора» и код аналогичный примеру, можно глянуть для справочника «ТестовыйСправочник»
Внимание!!! Публикую для критики и полезных идей, если кто захочет использовать все вопросы в личку.
Реализацию прорабатывал серьезно, если кто поможет по её улучшению буду очень благодарен. Огромное спасибо тов. artbear.

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    4547    dsdred    53    

72

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    5298    YA_418728146    25    

63

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6412    dsdred    36    

112

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18480    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12094    human_new    27    

74

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8831    YA_418728146    6    

141

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6283    sebekerga    54    

94

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15989    SeiOkami    31    

103
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
100. Evg-Lylyk 4580 01.02.12 15:41 Сейчас в теме
(99) Проверил, у меня все работает... В какой момент... может дело в языке. Проверьте под отладкой что не так.
101. misterAnderson 01.02.12 15:55 Сейчас в теме
Вот так работает:
//Если ИмяПоля = "ХХХХХ" Тогда
// ВызватьИсключение НСтр("ru = 'Ошибка подсистемы ввод по строке... нельзя использовать имя ХХХХХ оно зарезервировано подсистемой'");
//ИначеЕсли Тип(Тип) <> ТипЗнч("Строка") Тогда
// ВызватьИсключение НСтр("ru = 'Ошибка подсистемы ввод по строке... один из реквизитов нестрокового типа'");
//КонецЕсли;
Вот)
103. Evg-Lylyk 4580 01.02.12 16:03 Сейчас в теме
(101), (102) проверки на тот случай если реквизит имеет зарезервированное подсистемой Имя= "ХХХХХ" или не строковой тип.
104. misterAnderson 01.02.12 16:33 Сейчас в теме
(103)
Точка останова показала, что процесс идет через эту ветвь Тип = НайденныйРеквизит.Тип; Но Тип(Тип) не функциклирует. Выдает эту ошибку.
105. Evg-Lylyk 4580 01.02.12 16:40 Сейчас в теме
(104) Не особо помогло... ;) Ошибка непонятна
106. misterAnderson 01.02.12 18:09 Сейчас в теме
(105) Может это связанно с укр. версией 1с? потому как по шифт+ф9 Тип содержит значение Рядок, а такого типа не существует?
108. Evg-Lylyk 4580 01.02.12 18:46 Сейчас в теме
(106)
Evg-Lylyk, Может это связанно с укр. версией 1с
возможно
"Тип содержит значение Рядок, а такого типа не существует?"
Что за рядок?
(107) Сорри, я не знаю что посоветовать вам надо разобраться... Позже попробую в украинской версии
110. misterAnderson 01.02.12 19:06 Сейчас в теме
(108) Нашел решение таким методом:
ИначеЕсли НЕ Тип.СодержитТип(Тип("Строка")) Тогда
Приемлемо? Извини, пожалуйста, что надоедаю, две недели на 1с программирую. Спасибо за терпение)
111. Evg-Lylyk 4580 02.02.12 08:37 Сейчас в теме
(110)
Evg-Lylyk, Нашел решение таким методом:
ИначеЕсли НЕ Тип.СодержитТип(Тип("Строка")) Тогда
Приемлемо? Извини, пожалуйста, что надоедаю, две недели на 1с программирую. Спасибо за терпение)

Чет странно что у вас за тип поля (для ввода по строке)???
102. misterAnderson 01.02.12 15:59 Сейчас в теме
Пробовал в тонком\толстом, в режиме отладки, вываливается та ошибка, указывая на строку - ИначеЕсли Тип(Тип) <> ТипЗнч("Строка") Тогда
Что делает эта проверка? От чего защищает?
107. misterAnderson 01.02.12 18:13 Сейчас в теме
Можно как-то перефразировать проверку?
109. misterAnderson 01.02.12 18:48 Сейчас в теме
В примерах от разработчиков такое
Пример:
Если ТипЗнч(ТекОбъект) = Тип("СправочникСсылка.Номенклатура") Тогда
...
КонецЕсли;
Стало вываливаться исключение)
112. alenakrr 13.02.12 01:26 Сейчас в теме
1) Платформа 15.294 локальный (на серверном не тестировалось) - не работает в толстом клиенте. Пришлось править вызов как для внешней обработки по окончании ввода текста - так заработало + народу удобней видеть код в списке перед наименованием номенклатуры, т.к. он на ценнике.

2) Еще - не срабатывает сообщение платформы про 51 - показывает пустой список.((

3) Из-за всего этого жаль, что в отчетах придется додумывать как править поля отбора.

Но тема реально удобная, потому огромное спасибо за труд)))
113. Evg-Lylyk 4580 13.02.12 08:50 Сейчас в теме
(112) На толстом клиенте даже не пробовал (не интересует т.к. данную фичу "нормально" можно реализовать только на новых возможностях).
114. yuriyscr 18 25.04.12 12:03 Сейчас в теме
1С 8.2.13.219, обычное приложение, режим совместимости с 8.1.

Работает, но с некоторыми особенностями:

- Ищет, только если введено 3 и больше символа.
- Из нескольких похожих строк в списке выбора показывает только одну наиболее подходящую.
Напр.: Иван, тел. = "0632553311"
Николай, тел. = "0671234567, 0632553377"

В поле ввода набираем "063", "0632" или ""063255" - подбирает только Ивана, Николая не находит.
И только при наборе "0632557" или "06325577" - находит Николая.

П.С. Понял - это срабатывает стандартный механизм 1С поиска по строке. А как в таком случае его обходить?
116. Evg-Lylyk 4580 25.04.12 12:58 Сейчас в теме
115. yuriyscr 18 25.04.12 12:05 Сейчас в теме
А так - автору огромное спасибо!

Отдельное спасибо - АртМедведю за адаптацию (сообщения 51 и 77).
Evg-Lylyk; +1 Ответить
117. adhocprog 1139 06.12.12 11:58 Сейчас в теме
118. adhocprog 1139 06.12.12 12:00 Сейчас в теме
Было бы еще полезно сделать ввод документа по цифровой части номера.
119. Evg-Lylyk 4580 06.12.12 12:22 Сейчас в теме
120. adhocprog 1139 06.12.12 12:35 Сейчас в теме
(119) тогда вообще круто )
А сортировка документов по дате (если номер одинаковый)?
121. Walker.pro 7 07.12.12 15:56 Сейчас в теме
Интересно, а как сделать, чтобы работало и по реквизитам с типом Число, ведь при стандартной обработке ищет по числовому коду, какой тогда там запрос используется?
122. Evg-Lylyk 4580 08.02.13 08:57 Сейчас в теме
(121) Walker.pro, с типом число... можно проработать, но нужно подождать 1С реализует/реализовала подобную функциональность в платформе
http://v8.1c.ru/o7/201302ss/
123. oslokot 190 22.06.13 12:20 Сейчас в теме
Вопрос автору, здравствуйте.
Подскажите, я недавно реализовал нечто подобное, но на обычной форме 8.2
Столкнулся с одной неприятностью: после ввода первых символов, список внизу раскрывается и курсор (фокус) уходит с поля ввода на этот список. Дальнейший ввод символов возможен только после установки курсора обратно, на поле ввода.
Очень неудобно. Подскажите, как заставить не "ускользать" фокус с поля ввода?
124. Evg-Lylyk 4580 22.06.13 13:09 Сейчас в теме
(123) Извините нет времени разбираться. Вот посмотрите может не видели похожее на 8.1 формы обычные http://infostart.ru/public/88043/
125. oslokot 190 23.06.13 17:11 Сейчас в теме
(124) Да, видел но не могу скачать, нет абонемента на скачивание с инфостарта. Если Вас не затруднит, скиньте обработку мне на почту oslokot(собака)mail.ru
Спасибо большое заранее.
126. ivdic 31 03.10.13 19:24 Сейчас в теме
В 8.3 проц ОбработкаПолученияДанныхВыбора не работает.. вообще вызов не идет. почему?
127. Evg-Lylyk 4580 03.10.13 19:58 Сейчас в теме
(126) Под платформу 8.3 этот механизм имеет мало смысла там тоже самое уже реализовано
128. Nx6600 20 08.02.17 10:45 Сейчас в теме
Эта реализация работает только для добавленных полей ввода, для подбора через форму "Отбор и сортировка" (стандартная форма отбора в 1С) не работает?

Если это так, то в 8.2 предопределить автоподбор (через стандартную форму 1С) нельзя ?
129. Evg-Lylyk 4580 08.02.17 12:26 Сейчас в теме
Работает во всех случаях, везде. Попробуйте
Оставьте свое сообщение