Имя: Пароль:
1C
1С v8
Выбор записи справочника на форме
0 trialex3
 
28.06.21
13:15
Добрый день. Есть на форме поле справочника. В этом поле соответственно указывают запись справочника. Есть заипсь за наименованием "1" и запись за наименованием "10". Как сделать так, что бы если человек набрал "1" то поле сразу заполнилось нужной записью а не предложило на выбор 2 записи - "1" и "10".
1 acht
 
28.06.21
14:03
Гм. А как человек тогда вообще введет "10"?
А так - см. обработчик АвтоПодбор и формируй список значений из одного элемента
2 acanta
 
28.06.21
14:10
можно поставить условие на минимальное количество символов, тогда в справочнике придется делать наименование фиксированной длины (01,10,11 или " 1"). Если наименование это точно число(например, артикул), форматировать туда и обратно грустно..
3 trialex3
 
29.06.21
08:59
(1) Число водится сканированием штрихкода. После сканирования сканер сам вставляет энтер.
4 Мимохожий Однако
 
29.06.21
09:03
(3) Так человек набрал или сканер?
5 butterbean
 
29.06.21
09:04
(0) в модуле менеджера справочника ОбработкаПолученияДанныхВыбора
6 Мимохожий Однако
 
29.06.21
09:04
Странный штрихкод
7 acht
 
29.06.21
09:29
(0) > Как сделать так, что бы если человек набрал
(3) > Число водится сканированием штрихкода

Яркая такая демонстрация, почему новичков не любят и не хотят отвечать на их вопросы.
8 ДенисЧ
 
29.06.21
09:33
(7) А что, ШК не человек сканирует?
9 acht
 
29.06.21
09:35
(8) после слова "человек" идет слово "набрал"
10 ДенисЧ
 
29.06.21
09:36
(9) А на заборе "дрова" написано...
11 acht
 
29.06.21
09:37
(10) Заглядывал?
12 ДенисЧ
 
29.06.21
09:43
(11) Ага. Там борщевик и ржавая копейка...
13 trialex3
 
29.06.21
09:47
(5) Благодарю. Буду пробовать.
14 trialex3
 
29.06.21
13:40
(5) Странно как то работает у меня. написал вот так -


Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
    // Если это рекурсивный вызов – ничего не делать.

Если НЕ Параметры.Свойство("Рекурсия") Тогда

СтандартнаяОбработка = Ложь;



// Получить стандартный список выбора.

Параметры.Вставить("Рекурсия");
    СтандартнаяОбработка = Ложь;
    СтандартныйСписок = ПолучитьДанныеВыбора(Параметры);
    СтандартныйСписок.Очистить();
    ДополнительныйЭлемент = Справочники.АГ_НомераИсполнителей.НайтиПоНаименованию(Параметры.СтрокаПоиска);
    СтандартныйСписок.Добавить(ДополнительныйЭлемент);    
    ДанныеВыбора = СтандартныйСписок;
    КонецЕсли;
КонецПроцедуры

Но если сканером ввожу "9" то получаю в поле уже "999" хотя в Данных выбора передается одна ссылка "9"
15 trialex3
 
29.06.21
14:01
При этом "1" и "10" вводятся корректно, а "9" и "999" нет
16 trialex3
 
29.06.21
14:36
Все номера вводятся нормально, кроме 9 и 999
Мистика
17 RomaH
 
naïve
29.06.21
15:30
(14) странный способ объявить список значений
чем простой Новый СписокЗначений не устроил?
18 RomaH
 
naïve
29.06.21
15:30
СтандартныйСписок = ПолучитьДанныеВыбора(Параметры);
    СтандартныйСписок.Очистить();

вот это что?
19 RomaH
 
naïve
29.06.21
15:34
НайтиПоНаименованию - там дальше второй и третий параметры есть?
20 trialex3
 
29.06.21
15:43
(17) Переделал - не помогает

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
    // Если это рекурсивный вызов – ничего не делать.

Если НЕ Параметры.Свойство("Рекурсия") Тогда

СтандартнаяОбработка = Ложь;



// Получить стандартный список выбора.

Параметры.Вставить("Рекурсия");
    СтандартнаяОбработка = Ложь;
    СтандартныйСписок = Новый СписокЗначений;
    //СтандартныйСписок.Очистить();
    ДополнительныйЭлемент = Справочники.АГ_НомераИсполнителей.НайтиПоНаименованию(Параметры.СтрокаПоиска);
    СтандартныйСписок.Добавить(ДополнительныйЭлемент);    
    ДанныеВыбора = СтандартныйСписок;
    КонецЕсли;
КонецПроцедуры
21 trialex3
 
29.06.21
15:44
(19) Так найти по наименованию все нормально находит - запись "9"
22 ДедМорроз
 
29.06.21
21:52
Так событие окончание ввода текста же.
И таи ищем по тому,что ввели,причем,сработает,если нажали enter.
23 trialex3
 
30.06.21
09:52
(22) Пробовал уже так - не работает. Всеравно предлагает список:

&НаКлиенте
Процедура СборщикОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
Сборщик = Справочники.АГ_НомераИсполнителей.НайтиПоНаименованию(Текст);    
ЭтаФорма.ТекущийЭлемент = ЭтаФорма.Элементы.ОК;
КонецПроцедуры
24 trialex3
 
30.06.21
09:57
А вот так тоже не работает с "9"-

&НаКлиенте
Процедура СборщикОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
НайденныйСборщик = Справочники.АГ_НомераИсполнителей.НайтиПоНаименованию(Текст);
СЗ = Новый СписокЗначений;
СЗ.Добавить(НайденныйСборщик);
ДанныеВыбора = СЗ;
ЭтаФорма.ТекущийЭлемент = ЭтаФорма.Элементы.ОК;
КонецПроцедуры
Программист всегда исправляет последнюю ошибку.