Здравствуйте. УТ 10.3. В справочнике номенклатуры код товара в формате 00000000 без префиксов. Нужно подбирать товар в документы ручным вводом кода товара. Но 1С ищет любое вхождение введенного значения. Теряется весь смысл затеи. Т.е. если я ищу код 22, будет найдено 122, 1221, 12200 и т.д. Как сделать что бы был поиск по точному соответствию? Автоподбор не нужен.
Готов обсудить решение задачи на платной основе.
(4) Если начал вводить цифру 2, то и найтись должна номенклатура ч кодом 000000002. Продолжаю набирать 21, найдена 000000021. Автопоиск это идеальный вариан. Понимаю, что это лишняя нагрузка, поэтому вполне устроит просто поиск, набирать код и жать Enter.
(17) Если мне нужно найти товар с кодом 0000000055, то и вводить придется этот код полностью с условием отбора "Равно". Если набрать 55, то ничего не найдет. А если условие поставить "Содержит", то получим несколько десятков результатов. Меня же интересует именно обработка подбора номенклатуры в документ. Что бы введя 55 я получил в результатах только 0000000055. Вводить длинный ряд нолей - ну очень не удобно.
(21) Сначала я обрадовался: "И правда, что я к этим лидирующим нолям привязался. Удалю ка я их из кода номенклатуры!" Но через пару секунд возникла мысль: "Если сортировать номенклатуру с кодами 1, 3, 11, 21 по возрастанию, то вероятно получу 1, 11, 21, 3". Как-то неправильно получается.
(18) Ваша задача в типовой УТ 10 решена типовым методом. А желание найти по точному соответствию кода не желая его вводить точно не имеет решения. Тип данных код справочника номенклатура - строка.
Получается, что имеем следующие вводные:
код номенклатуры - это строка вида 00000000000 длинной 11 символов;
Поиск введенного значения в обработке подбора происходит по любому вхождению в код.
Тему правильнее было бы назвать "Поиск по правой части кода...", по точному - это 1С хочет.
Значит нужно введенное пользователем для поиска значение программно дополнить лидирующими нулями до 11 знаков и полученное значение использовать для поиска.
Дополнить нолями, вероятно, получится так:
Строка = СтроковыеФункцииКлиентСервер.ДополнитьСтроку(ВведенноеПользователемЗначение, 11, "0", "Слева");
Если мои соображения верны, то где эту структуру использовать?
(24) Согласен, работает. И с товарами у которых коды пятизначные вообще все хорошо, но короткие приходится добивать нолями что бы результирующий список получился короче. В справочнике несколько десятков тысяч позиций и будет найдено 0022, 10022, 20022, 30022, 40022. Хотелось максимально облегчить работу оператору, вообще лишив его мук выбора.
(25) Переделай Код в число, и не трахай людям мозг.
Или перепиши событие полнотекстового поиска для данного справочника (не забудь использовать платформу посвежее, чтобы в запросах использовать новые строковые функции).
(25) Для этого есть артикул, наименование... а код это порядковый номер в справочнике и если эти коды пишут как угодно то и поиск получается как угодно. И я ветку читал с начала. и браться за эту фигню в справочнике не буду.
Сам разобрался. Потребовалось аж три строки кода. Если набираю в подборе по коду, например 11, то находится номенклатура именно 00000000011 и никаких вариантов вхождения. И если есть префикс, то он не мешает. Всем спасибо. Некоторым трендёжникам особенно. Если бы не ваши вдохновляющие комменты ...
А времени твоего драгоценного, которое ты призывал нас не тратить, у тебя на это сколько ушло? Больше или меньше того, которое ты здесь провел, сотрясая воздух?