Вход | Регистрация

1С:Предприятие ::

Метки: 

Альфа Авто 4: Кнопка Ввод штрих-кода

Я
   Flomik
 
07.01.13 - 00:04
Необходимо на форму Чек добавить кнопку ввода строк ТЧ по номеру штрих-кода.
Написал процедуру, но поиск номенклатуры не отрабатывает.
Уже всю бошку сломал, не могу найти причину.

Процедура КоманднаяПанельТоварыШтрихКод(Кнопка)
ШК="";
ШК = ВвестиСтроку(ШК,"Введите штрих код!",15);
новЗапрос=Новый Запрос;
новЗапрос.Текст=
"ВЫБРАТЬ
|    Штрихкоды.Объект КАК Артикул
|ИЗ
|    РегистрСведений.ШтрихКоды КАК Штрихкоды
|ГДЕ
|    Штрихкоды.ШтрихКод = &Ссылка
|    И Штрихкоды.Объект ССЫЛКА Справочник.Номенклатура"; 
новзапрос.УстановитьПараметр("Ссылка",ШК);
Результат=новЗапрос.Выполнить();
Выборка=Результат.Выбрать();
Артикул =  Выборка.Артикул;
ТЧ = ЭтотОбъект.Товары;
Строчка=ТЧ.Добавить();
Строчка.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Артикул);

 //Строчка.Номенклатура=Выборка.Имя;
 
    
КонецПроцедуры
 
 
   vs7719
 
1 - 07.01.13 - 00:08
После "...Выборка=Результат.Выбрать();.."
добавить строку: Выборка.Следующий();...
   zladenuw
 
2 - 07.01.13 - 00:08
та да. но лучше Если Выбора.Следующий()
   Flomik
 
3 - 07.01.13 - 00:10
(1)(2) - Не помогло
   vs7719
 
4 - 07.01.13 - 00:12
Конечно! См. внимательнее стр.: Штрихкоды.Объект КАК Артикул
и
Строчка.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Артикул);
   Flomik
 
5 - 07.01.13 - 00:19
В выборке пусто, хотя я точно знаю, что в регистре есть элемент с искомым значением
   vs7719
 
6 - 07.01.13 - 00:23
Может, где-то строка дополняется пробелами справа или искомое значение - Объект, не Номенклатура?
   szhukov
 
7 - 07.01.13 - 00:30
(0)Бредняк какой-то...
Судя по запросу Артикул - это элемент справочника номенклатура, тогда эта строка:
Строчка.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Артикул);
- какая-то лажа.

Что-то не то в запросе написано.

что даст запрос если убрать условие на проверку объекта:
//|    И Штрихкоды.Объект ССЫЛКА Справочник.Номенклатура
?
   szhukov
 
8 - 07.01.13 - 00:46
(0) Ошибка здесь:
ШК = ВвестиСтроку(ШК,"Введите штрих код!",15);

потому что после ввода ШК = Истина

ШК_Введен=Ложь;
ШК="";

ШК_Введен = ВвестиСтроку(ШК, "Введите штрих код!",15);
   szhukov
 
9 - 07.01.13 - 00:51
+(8) тогда как-то так:

"ВЫБРАТЬ
|    Штрихкоды.Объект КАК ЭлНоменклатуры
|ИЗ
|    РегистрСведений.ШтрихКоды КАК Штрихкоды
|ГДЕ
|    Штрихкоды.ШтрихКод = &Ссылка
|    И Штрихкоды.Объект ССЫЛКА Справочник.Номенклатура"; 

новзапрос.УстановитьПараметр("Ссылка",ШК);
Результат=новЗапрос.Выполнить();
Если Результат.Пустой() Тогда

   Предупреждение("А нет такого");
   Возврат;

КонецЕсли;

Выборка=Результат.Выбрать();

Выборка.Следующий();

ТЧ = ЭтотОбъект.Товары;
Строчка=ТЧ.Добавить();
Строчка.Номенклатура = Выборка.ЭлНоменклатуры;
   Mashinist
 
10 - 07.01.13 - 01:17
а если так 
новзапрос.УстановитьПараметр("Ссылка",СокрЛП(ШК));
 
 Рекламное место пустует
   szhukov
 
11 - 07.01.13 - 01:22
(10) ошибка в другой строке, см. (8)
   Mashinist
 
12 - 07.01.13 - 01:36
(11) угу. точно не то вводится
   Flomik
 
13 - 07.01.13 - 02:43
Спасибо! Разобрался:
Процедура КоманднаяПанельТоварыШтрихКод(Кнопка)
Текст = "";
Подсказка = "Введите Штрих-код";
Если ВвестиСтроку(Текст, Подсказка, 0, ЛОЖЬ) Тогда 


новЗапрос=Новый Запрос;
новЗапрос.Текст=
        "ВЫБРАТЬ
        |    Штрихкоды.Объект КАК ЭлНоменклатуры
        |ИЗ
        |    РегистрСведений.ШтрихКоды КАК Штрихкоды
        |ГДЕ
        |    Штрихкоды.ШтрихКод = &Ссылка
        |    И Штрихкоды.Объект ССЫЛКА Справочник.Номенклатура"; 

новзапрос.УстановитьПараметр("Ссылка",Текст);
Результат=новЗапрос.Выполнить();
Если Результат.Пустой() Тогда

   Предупреждение("Нет штрих-кода, найдите товар вручную");
   Возврат;

КонецЕсли;

Выборка=Результат.Выбрать();

Выборка.Следующий();
ТЧ = ЭтотОбъект.Товары;
Строчка=ТЧ.Добавить();
Строчка.Номенклатура = Выборка.ЭлНоменклатуры;
КонецЕсли;

Теперь вопрос - как заполнить созданную строку реквизитами поумолчанию - цена, НДС и т.д.
   Mashinist
 
14 - 07.01.13 - 03:02
так посмотри в коде добавления товара интерактивное
Из модуля объекта вызвать ОбработкаРеквизита(...)
примерно так было когда-то
ОбработкаРеквизита("Товары.Номенклатура",ТЧ.ТекущаяСтрока);
   Flomik
 
15 - 07.01.13 - 04:30
(14) Это я знаю, но как фокус новой строчке передать?

Выборка.Следующий();
ТЧ = ЭтотОбъект.Товары;
Строчка=ТЧ.Добавить();
Строчка.Номенклатура = Выборка.ЭлНоменклатуры;
ОбработкаРеквизита("Товары.Номенклатура",ЭлементыФормы.Товары.ТекущаяСтрока,ЭтаФорма);
КонецЕсли;
   МимохожийОднако
 
16 - 07.01.13 - 09:13
(0)Где хранятся штрихкоды в этой конфигурации?
   Mashinist
 
17 - 07.01.13 - 13:10
(15) процедура ОбработкаРеквизита может форму и не принимать
ей нужно что пересчитывать "Товары.Номенклатура" и где т.е. строку ТЧ. у тебя это Строчка
попробуй вызов ОбработкаРеквизита("Товары.Номенклатура",Строчка);


Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует