8.х Поиск строки с определенным наименованием

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Vladius, 22 апр 2011.

  1. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    Есть код


    Код:
    Товар = Элементы.Товары.ТекущиеДанные;
    Если Товар.Номенклатура=ПолучитьКонстанту() Тогда
    
    Сообщить("Бонусный товар уже начислен!");
    Возврат;
    
    КонецЕсли;
    
    В этом коде я ищу строку допустим с названием "Телевизор JVC" если такая строка присутствует выполняю определенной действие.

    Так вот, с помощью этого метода я получаю инфу только о 1 строке, то есть у меня есть вторая строка "Телевизор JVC" но он её не находит так как считывает инфу только с первой строки.
    Каким способ сделать что бы система нашла строку именно с названием "Телевизор JVC" ?
  2. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    Так же пробовал такой способ


    Код:
    Отбор = Новый Структура;
    Отбор.Вставить("Номенклатура",ПолучитьКонстанту());
    ПоискСтроки	= Объект.Товары.НайтиСтроки(Отбор);
    
    Если ПоискСтроки Тогда
    Сообщить("Строка найдена!");
    КонецЕсли;
    
    Пишет, Преобразование значения к типу Булево не может быть выполнено.
  3. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    А если попобовать использовать метод "Найти()"???
    Код:
    НайденнаяСтрока = Объект.Товары.Найти(Справочники.Номенклатура.НайтиПоНаименованию("Телевизор JVC"), "Номенклатура");
    Если НайденнаяСтрока <> Неопределено Тогда
    //Нашли!!! Что-нибудь делаем...
    КонецЕсли;
    
    
  4. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    Метода Найти нет, Только НайтиСтроки и НайтиПоИдентификатору
  5. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Вы, видимо, в модуле формы пишите...Если писать в модуле объекта (Товары.Найти()), метод есть.
    В модуле формы можно использовать "НайтиСтроки()", как Вы пытались...Только немного подправьте:

    Код:
    Отбор = Новый Структура;
    Отбор.Вставить("Номенклатура", Справочники.Номенклатура.НайтиПоНаименованию("Телевизор JVC"));
    НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
    Если НайденныеСтроки.Количество() > 0 Тогда
    Сообщить("Строка найдена!");
    КонецЕсли;
    
    
  6. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    Спасибо! Получилось! А можно объяснить зачем мы пишем ".Количество > 0" что оно дает?
  7. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Потому что метод НайтиСтроки() возвращает МАССИВ, в который входят найденные строки. Вот мы и проверяем, сколько там в этом массиве элементов. Точнее если их больше нуля, это означает, что в массиве что-то есть (т.е. какие-то строки нашлись).

    Вот из синтаксис-помощника

Поделиться этой страницей