8.х Можно ли сделать реквизит номенклатуры массивом

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

  1. TopicStarter Overlay
    Sunbear
    Offline

    Sunbear Опытный в 1С

    Регистрация:
    11 фев 2010
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    Можно ли сделать реквизит номенклатуры массивом, для каждого элемента ном-ры записать по одному или несколько значений, а потом осуществить поиск элемента ном-ры по одному из значений массива.
    Например есть реквизит индекс продавца. допустим для элемента ном-ры "сумка Continent" массив индекс продавца= "n00054","i4543","p23457". Я и хочу найти из всей номенклатуры элемент у которого в массиве индекс продавца присутствует значение "i4543.

    Как такое сделать? Тут нужно использовать язык запросов?

    Когда индекс продавца просто строка то я использовал такой код:

    Код:
    найдном= Справочники.Номенклатура.НайтиПоРеквизиту("ИндексПродавца", НоваяСтрока.ИндексПродавца);
    
    
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Заведите не реквизит справочника номенклатура, а табличную часть справочника. В эту табличную часть уже добавляете реквизит нужного типа, и в реквизит этой табличной части уже заносите индексы, ну а потом ищите в этой табличной части.
  3. TopicStarter Overlay
    Sunbear
    Offline

    Sunbear Опытный в 1С

    Регистрация:
    11 фев 2010
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    Спасибо :) Я уже пытаюсь сделать через запрос.

    запрос.Текст= "ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура
    |ИЗ Справочник.Номенклатура КАК Номенклатура
    |ГДЕ найти(Номенклатура.ИндексПродавца, &ИндексП)>0";

    А что в запросе строковые функции не работают? у меня ругается на найти :(
  4. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Не работают. Запрос пишется на языке запросов 1с. Такой Функции "найти" там нет.
  5. Diego
    Offline

    Diego Любитель 1С Команда форума

    Регистрация:
    3 апр 2009
    Сообщения:
    966
    Симпатии:
    2
    Баллы:
    29
    А не проще использовать стандартные Характеристики номенклатуры?
    Добавляете характеристику с наименование свойства - Индекс продавца.
    В значения свойства Ваши : "n00054","i4543","p23457"
    Одна номенклатура может иметь несколько таких характеристик.
    Разные номенклатуры могут иметь одинаковый набор свойств, т.е. например Индекс продавца будет общим и для "сумки Континент" и для "сумки Материк"....
  6. TopicStarter Overlay
    Sunbear
    Offline

    Sunbear Опытный в 1С

    Регистрация:
    11 фев 2010
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    А как искать в этой табличной части? Подскажите пожалуйста.
    ниче кроме
    Справочники.Номенклатура.ПолучитьСсылку().ТабличнаяЧастьИП.Найти(НоваяСтрока.ИндексПродавца)
    пока не придумал.

    Надо же сначала получить объект номенклатуры а потом искать в его табличной части. Это что запросом делать?
  7. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Есть у нас справочник Номенклатура. Есть у него табличная часть ТабличнаяЧастьИП. В табличной части есть одна колонка "ИндексПродавца" тип - строка.

    Запрос на поиск номенклатур у которых в табличной части есть нужная строка:
    Код:
     
    Запрос.Текст = "ВЫБРАТЬ
    |Ном.Ссылка КАК Номенклатура
    |ИЗ
    |Справочник.Номенклатура.ТабличнаяЧастьИП КАК Ном
    |ГДЕ
    |Ном.ИндексПродавца = &МояСтрокаПоиска";
    Запрос.УстановитьПараметр("МояСтрокаПоиска","GF123456iN");
    
    
    Запрос на поиск номенклатур по части строки:
    Код:
     
    Запрос.Текст = "ВЫБРАТЬ
    |Ном.Ссылка КАК Номенклатура
    |ИЗ
    |Справочник.Номенклатура.ТабличнаяЧастьИП КАК Ном
    |ГДЕ
    | Ном.ИндексПродавца ПОДОБНО &МояСтрокаПоиска";
    Запрос.УстановитьПараметр("МояСтрокаПоиска","%"+"2345"+"%");
    
    
    (не проверял)

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