Выполняю запрос, получаю результат в виде таблицы значений. На форме есть реквизит штрих код, из него беру значение и создаю структуру отбора для поиска строк в полученной таблице значений. Результат все время ноль, хотя заранее я знаю что должен быть не ноль. ПОМОГИТЕ РАЗОБРАТЬСЯ !!!!!! Вот код:
Процедура ПолеШКПриИзменении(Элемент)// Вставить содержимое обработчика.
ТаблицаЗнач = Новый ТаблицаЗначений();
ТаблицаЗнач = НайтиТовПоШк();
Отбор = Новый Структура();
Отбор.Вставить("ШтрихКод",ЭлементыФормы.ПолеШК);
Если ТаблицаЗнач = 0Тогда
Сообщить(" Товар с данным штрих кодом "+Элемент.Значение+" не найден !");
Иначе
Строки = ТаблицаЗнач.НайтиСтроки(Отбор);
ТабличноеПоле1 = ТаблицаЗнач;
Сообщить(" "+Строки.Количество());
КонецЕсли;
КонецПроцедуры
Код может и херня, но если учесть что я вообще первый раз пишу что-то в 1с то может и еще нормальный код. Задача вообще такая: приходовать товар по штрих коду с помощью сканера штрих кода(USB) и продавать также по штрих коду. Может кто, чего то подскажет ?????????
Функция НайтиТовПоШк() выдает либо 1-ну строку из справочника номенклатура по заданному штрих коду, либо вообще ничего не выдает. Результата типа таблицазначений. Затем я ищу в реквизите формы строку с таким же штрих кодом, если она есть то я увеличиваю колонку количество, если такой строки нет значит добавляю. при закрытии этой обработки данные переносятся в документ приходования товара.
Про1С-ник
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0
Цитата(Zink @ 24.03.12, 16:07)
может и еще нормальный код
Так он не работает этот код. Вы же даже не удосужились в синтаксис-помошник зайти и посмотреть какие методы у таблицы значений есть.
Цитата(Zink @ 24.03.12, 16:07)
Может кто, чего то подскажет ?????????
Это слишком большой вопрос. Особенно если знаний нет, дать ответ на него невозможно. Задавайте конкретные вопросы, только сначала ознакомьтесь хотя бы с каким-то минимумом по работе с 1С, иначе все объяснения можно будет отправить в топку.
Цитата(Zink @ 24.03.12, 16:12)
Функция НайтиТовПоШк() выдает либо 1-ну строку из справочника номенклатура по заданному штрих коду, либо вообще ничего не выдает. Результата типа таблицазначений. Затем я ищу в реквизите формы строку с таким же штрих кодом, если она есть то я увеличиваю колонку количество, если такой строки нет значит добавляю. при закрытии этой обработки данные переносятся в документ приходования товара.
Из этого вообще ничего не понятно. По правильному процесс заполнения ТЧ товаров происходит так - при считывании ШК ищется товар в справочнике, если находится то проверяется ТЧ на наличие такого же, если найден то добавляется количество, если нет то добавляется новая строка с товаром.
Личные бесплатные консультации не даю, для этого есть форум!
logist А почему именно через ТЧ, через таблицузначений нельзя это сделать ? Кинуть на форму реквизит типа "таблицазначений" и в него добавлять найденый новый товар или увеличивать количество уже имеющегося, я пытался так сделать. Остановился на том что у меня неработал метод НайтиСтроки(), с помощью кот-го я хотел узнавать есть ли уже товар с таким штрих кодом или нет.
Живет на форуме
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0
Значит а) НайтиТовПоШк() никогда ничего не выдаёт. б) отсутствует колонка "ШтрихКод" в) колонка "ШтрихКод" всегда пустая г) колонка "ШтрихКод" не того типа. д) ЭлементыФормы.ПолеШК не того типа е) ЭлементыФормы.ПолеШК пустое в этот момент
Сижу уже около с 10 утра завис над этим вопросом : метод НайтиСтроки() выдает 0 строк в таблицезначений, хотя заранее знаю что строка с искомым штрих кодом есть. Вот весь мой код:
Функция НайтиТовПоШк()
Запрос = Новый Запрос ("Выбрать
|Код,НаименованиеПолное, ШтрихКод
|ИЗ
|Справочник.Номенклатура
|ГДЕ
|ШтрихКод = &ПолеШК");
Запрос.УстановитьПараметр("ПолеШК",ЭлементыФормы.ПолеШК.Значение);
Результат = Запрос.Выполнить();
Рез = Результат.Выгрузить();
Если Рез.Количество()= 0ТогдаВозврат0;
ИначеВозврат Рез;
КонецЕсли;
КонецФункцииПроцедура ПолеШКПриИзменении(Элемент)
РезультатПоиска = НайтиТовПоШк();
Отбор = Новый Структура();
Отбор.Вставить("ШтрихКод",ЭлементыФормы.ПолеШК.Значение);
Если РезультатПоиска = 0Тогда
Сообщить(" Товар с данным штрих кодом "+Элемент.Значение+" не найден !");
Иначе
Строки = РезультатПоиска.НайтиСтроки(Отбор);
Сообщить(""+Строки.Количество());
КонецЕсли;
КонецПроцедуры
Что не так не могу понять, все вроде проверил: Ardi а) НайтиТовПоШк() никогда ничего не выдаёт. б) отсутствует колонка "ШтрихКод" в) колонка "ШтрихКод" всегда пустая г) колонка "ШтрихКод" не того типа. д) ЭлементыФормы.ПолеШК не того типа е) ЭлементыФормы.ПолеШК пустое в этот момент
Может всетаки использовать ТЧ как писал logist. Тогда вопрос как её на форме отображать, если режим запуска обычное приложение или это не влияет ?
logist До изучения отладчика еще не дашел !!! Видно именно сейчас и прийдется посмотреть как им пользоваться.
Кажись нашёл, в окне отладчика видно что поле Штрих Код содержит какие то левые пробелы, откуда они взялись непонятно !!!!! Спасибо logist за то что толкнули меня на отладчик !!!! Буду думать как это исправить.
С поиском разобрался, все работает всем спасибо. Обработку "поиск товара по штрих коду" я написал, а как тепер при ее закрытии передать весь найденный товар в документ оприходования товара вот в чем вопрос !? Кто чем может подскажите !!!! Заранее спасибо.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!