Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Почему не ищет поиск в таблице значений !          
Zink Подменю пользователя
сообщение 24.03.12, 15:42
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 23
Спасибо сказали: 0 раз
Рейтинг: 0

Выполняю запрос, получаю результат в виде таблицы значений. На форме есть реквизит штрих код, из него беру значение и создаю структуру отбора для поиска строк в полученной таблице значений. Результат все время ноль, хотя заранее я знаю что должен быть не ноль. ПОМОГИТЕ РАЗОБРАТЬСЯ !!!!!!
Вот код:

Процедура ПолеШКПриИзменении(Элемент)
    // Вставить содержимое обработчика.
    ТаблицаЗнач = Новый ТаблицаЗначений();
    ТаблицаЗнач = НайтиТовПоШк();
    Отбор = Новый Структура();
    Отбор.Вставить("ШтрихКод",ЭлементыФормы.ПолеШК);
    Если ТаблицаЗнач = 0 Тогда
        Сообщить(" Товар с данным штрих кодом "+Элемент.Значение+" не найден !");
    Иначе
        Строки = ТаблицаЗнач.НайтиСтроки(Отбор);
        ТабличноеПоле1 = ТаблицаЗнач;
        Сообщить(" "+Строки.Количество());
    КонецЕсли;
    КонецПроцедуры



 i 

Ознакомьтесь с правилами!
 


Сообщение отредактировал logist - 24.03.12, 15:58

Ardi Подменю пользователя
сообщение 24.03.12, 15:49
Сообщение #2

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Цитата(Zink @ 24.03.12, 16:42) *
ТаблицаЗнач = НайтиТовПоШк();

Что есть это?


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Zink Подменю пользователя
сообщение 24.03.12, 15:57
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 23
Спасибо сказали: 0 раз
Рейтинг: 0

НайтиТовПоШк(); - функ-ия возвращает таблицу значений после запроса

Возможен ли поиск в реквизите формы если он имеет тип ТаблицаЗначений ?

logist Подменю пользователя
сообщение 24.03.12, 16:04
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Херня какая-то а не код. Надо сразу в НайтиТовПоШк(); получить только нужные записи и всё.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Zink Подменю пользователя
сообщение 24.03.12, 16:12
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 23
Спасибо сказали: 0 раз
Рейтинг: 0

Код может и херня, но если учесть что я вообще первый раз пишу что-то в 1с то может и еще нормальный код. Задача вообще такая: приходовать товар по штрих коду с помощью сканера штрих кода(USB) и продавать также по штрих коду. Может кто, чего то подскажет ?????????

Функция НайтиТовПоШк() выдает либо 1-ну строку из справочника номенклатура по заданному штрих коду, либо вообще ничего не выдает. Результата типа таблицазначений. Затем я ищу в реквизите формы строку с таким же штрих кодом, если она есть то я увеличиваю колонку количество, если такой строки нет значит добавляю. при закрытии этой обработки данные переносятся в документ приходования товара.

logist Подменю пользователя
сообщение 24.03.12, 16:28
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Zink @ 24.03.12, 16:07) *
может и еще нормальный код

Так он не работает этот код. Вы же даже не удосужились в синтаксис-помошник зайти и посмотреть какие методы у таблицы значений есть.

Цитата(Zink @ 24.03.12, 16:07) *
Может кто, чего то подскажет ?????????

Это слишком большой вопрос. Особенно если знаний нет, дать ответ на него невозможно.
Задавайте конкретные вопросы, только сначала ознакомьтесь хотя бы с каким-то минимумом по работе с 1С, иначе все объяснения можно будет отправить в топку.

Цитата(Zink @ 24.03.12, 16:12) *
Функция НайтиТовПоШк() выдает либо 1-ну строку из справочника номенклатура по заданному штрих коду, либо вообще ничего не выдает. Результата типа таблицазначений. Затем я ищу в реквизите формы строку с таким же штрих кодом, если она есть то я увеличиваю колонку количество, если такой строки нет значит добавляю. при закрытии этой обработки данные переносятся в документ приходования товара.

Из этого вообще ничего не понятно.
По правильному процесс заполнения ТЧ товаров происходит так - при считывании ШК ищется товар в справочнике, если находится то проверяется ТЧ на наличие такого же, если найден то добавляется количество, если нет то добавляется новая строка с товаром.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Zink Подменю пользователя
сообщение 24.03.12, 16:58
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 23
Спасибо сказали: 0 раз
Рейтинг: 0

logist
А почему именно через ТЧ, через таблицузначений нельзя это сделать ? Кинуть на форму реквизит типа "таблицазначений" и в него добавлять найденый новый товар или увеличивать количество уже имеющегося, я пытался так сделать. Остановился на том что у меня неработал метод НайтиСтроки(), с помощью кот-го я хотел узнавать есть ли уже товар с таким штрих кодом или нет.

logist Подменю пользователя
сообщение 24.03.12, 17:00
Сообщение #8

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Общий алгоритм действий должен быть где-то такой. Это не готовый код, я просто набросал как можно обойтись одной процедурой.
Процедура КнопкаПоискПоШК(Элемент)
    Если ПустаяСтрока(ПолеВводаШК) Тогда Возврат КонецЕсли;
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ШК",ПолеВводаШК);
    Запрос.Текст = "ВЫБРАТЬ
                   |    Номенклатура.Ссылка
                   |ИЗ
                   |    Справочник.Номенклатура КАК Номенклатура
                   |ГДЕ
                   |    Номенклатура.Штрихкод = &ШК";
    Результат = Запрос.Выполнить().Выгрузить();
    
    Если Результат.Количество() Тогда
        Если Результат.Количество() > 1 Тогда
            Товар = Результат.ВыбратьСтроку("Найдено несколько товаров, уточните..");
        Иначе
            Товар = Результат[0];
        КонецЕсли;
        дКоличетсво = 0;
        Если ВвестиЧисло(дКоличетсво,"Введите количество") Тогда
            нСтрока = ТЧТовары.Найти(Товар.Ссылка);
            Если нСтрока <> Неопределено Тогда
                нСтрока.Количество = нСтрока.Количество + дКоличетсво;
            Иначе
                нСтрока = ТЧТовары.Добавить();
                нСтрока.Номенклатура = Товар.Ссылка;
                нСтрока.Количетсов = дКоличетсво;
            КонецЕсли;
        КонецЕсли;
    Иначе
        Сообщить("Товара с таким кодом нет в базе");
    КонецЕсли;        
    
КонецПроцедуры


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Ardi Подменю пользователя
сообщение 24.03.12, 17:01
Сообщение #9

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Значит
а) НайтиТовПоШк() никогда ничего не выдаёт.
б) отсутствует колонка "ШтрихКод"
в) колонка "ШтрихКод" всегда пустая
г) колонка "ШтрихКод" не того типа.
д) ЭлементыФормы.ПолеШК не того типа
е) ЭлементыФормы.ПолеШК пустое в этот момент


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

logist Подменю пользователя
сообщение 24.03.12, 17:02
Сообщение #10

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Zink @ 24.03.12, 16:58) *
А почему именно через ТЧ,

Не обращайте внимание (это профессиональное от управляемого интерфейса), конечно же в обычном интерфейсе это таблица значений.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Zink Подменю пользователя
сообщение 24.03.12, 17:41
Сообщение #11

Общительный
**
Группа: Пользователи
Сообщений: 23
Спасибо сказали: 0 раз
Рейтинг: 0

Сижу уже около с 10 утра завис над этим вопросом : метод НайтиСтроки() выдает 0 строк в таблицезначений, хотя заранее знаю что строка с искомым штрих кодом есть. Вот весь мой код:

Функция НайтиТовПоШк()
    Запрос = Новый Запрос ("Выбрать
        |Код,НаименованиеПолное, ШтрихКод
        |ИЗ
        |Справочник.Номенклатура
        |ГДЕ
        |ШтрихКод = &ПолеШК");
    Запрос.УстановитьПараметр("ПолеШК",ЭлементыФормы.ПолеШК.Значение);
    Результат = Запрос.Выполнить();
    Рез = Результат.Выгрузить();
    Если Рез.Количество()= 0 Тогда
        Возврат 0;
    Иначе
        Возврат Рез;
    КонецЕсли;
КонецФункции

Процедура ПолеШКПриИзменении(Элемент)
    РезультатПоиска = НайтиТовПоШк();
    Отбор = Новый Структура();
    Отбор.Вставить("ШтрихКод",ЭлементыФормы.ПолеШК.Значение);
    Если РезультатПоиска = 0 Тогда
        Сообщить(" Товар с данным штрих кодом "+Элемент.Значение+" не найден !");
    Иначе
        Строки = РезультатПоиска.НайтиСтроки(Отбор);
        Сообщить(""+Строки.Количество());
    КонецЕсли;
КонецПроцедуры

Что не так не могу понять, все вроде проверил:
Ardi
а) НайтиТовПоШк() никогда ничего не выдаёт.
б) отсутствует колонка "ШтрихКод"
в) колонка "ШтрихКод" всегда пустая
г) колонка "ШтрихКод" не того типа.
д) ЭлементыФормы.ПолеШК не того типа
е) ЭлементыФормы.ПолеШК пустое в этот момент



Может всетаки использовать ТЧ как писал logist. Тогда вопрос как её на форме отображать, если режим запуска обычное приложение или это не влияет ?

logist Подменю пользователя
сообщение 24.03.12, 17:56
Сообщение #12

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Zink @ 24.03.12, 17:41) *
Может всетаки использовать ТЧ как писал logist.

Я Вам написал выше, что ошибся, и имел ввиду ТЗ.

Цитата(Zink @ 24.03.12, 17:41) *
Что не так не могу понять

Отладчик в руки и вперед, смотрите где что не так.

Но опять же, вы неверно работаете с ТЗ.
Нельзя так:
Если РезультатПоиска = 0 Тогда

Верните из функции ТЗ, а потом уже проверяйте пустая она или нет. Я ж написал выше пример.

+ зачем объявлять переменные если они могут не использоваться...

уберите это
    Отбор = Новый Структура();
    Отбор.Вставить("ШтрихКод",ЭлементыФормы.ПолеШК.Значение);


и вставьте сюда:
   Иначе
        Строки = РезультатПоиска.НайтиСтроки(Новый Структура ("ШтрихКод",ЭлементыФормы.ПолеШК.Значение));


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Zink,

Zink Подменю пользователя
сообщение 24.03.12, 18:21
Сообщение #13

Общительный
**
Группа: Пользователи
Сообщений: 23
Спасибо сказали: 0 раз
Рейтинг: 0

logist
До изучения отладчика еще не дашел !!! Видно именно сейчас и прийдется посмотреть как им пользоваться.

Кажись нашёл, в окне отладчика видно что поле Штрих Код содержит какие то левые пробелы, откуда они взялись непонятно !!!!!
Спасибо logist за то что толкнули меня на отладчик !!!! Буду думать как это исправить.

Batchir Подменю пользователя
сообщение 24.03.12, 21:53
Сообщение #14

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1434 раз
Рейтинг: 0

СокрЛП(ЭлементыФормы.ПолеШК.Значение)

Zink Подменю пользователя
сообщение 25.03.12, 4:14
Сообщение #15

Общительный
**
Группа: Пользователи
Сообщений: 23
Спасибо сказали: 0 раз
Рейтинг: 0

С поиском разобрался, все работает всем спасибо. Обработку "поиск товара по штрих коду" я написал, а как тепер при ее закрытии передать весь найденный товар в документ оприходования товара вот в чем вопрос !? Кто чем может подскажите !!!! Заранее спасибо.


 ! 

Правила, п.6. Тема закрыта.
 


Сообщение отредактировал logist - 25.03.12, 9:42

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Тема закрыта Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.09.24, 16:22
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!