8.х Поиск данных

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Nau, 1 ноя 2007.

  1. TopicStarter Overlay
    Nau
    Offline

    Nau

    Регистрация:
    1 ноя 2007
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток.
    Есть необходимость программно закачать из файла Excel заявку покупателя (Форма из стандартной конфигурации "Заявка покупателя"). Для определения цены из Регистра сведений "Цены номенклатуры" необходимо определить Характеристику номенклатуры из справочника "Характериста номенклатуры" (Номенклатура к этому времени уже определена (найдена)) тут и возникла проблема. Потому что считанное мною из файла наименование характеристики в этом справочнике повторяется многократно для разной номенклатуры т.е. "НайтиПоИмени" я не могу, реквизит с кодом, который бы мне помог однозначно определить запись, в этом справочнике отсутствует т.е. "НайтиПоКоду" я тоже немогу. В этом объекте ("Характериста номенклатуры") есть реквизит "Владелец" доступ к которому при создании ссылки на этот справочник тоже нет т.е. "НайтиПоРеквизиту("Владелец", СсылкаНаНоменклатуру)" я тоже не могу.
    Стаж программирования в 1С - без году неделя. :unsure:
    Поэтому прошу помощи у умных людей как зная номенклатуру и характеристику найти конкретный элемент справочника "Характериста номенклатуры".
    Заранее спасибо.
  2. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    нет под рукой 8-ки
    в 7,7 эт выглядело так
    спр=создатьобъект("Спраочник.Характериста_номенклатуры");
    .......
    спр.ИспользоватьВладельца(Номенклатура)
    если спр.выбратьЭлементы()=1 тогда
    Пока спр.ПолучитьЭлемент() = 1 Цикл
    ............
    КонецЦикла;
    КонецЕсли;




    по моему в 8-ке ничего не изменилось :unsure:
  3. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Не используй объектную модель - примени запрос и будет тебе счастье!
  4. TopicStarter Overlay
    Nau
    Offline

    Nau

    Регистрация:
    1 ноя 2007
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Спасибо за ответы.
    На счет запроса у меня была такая мысль и запрос уже создал. Единственно я не знаю как результат запроса присвоить реквизиту "ХарактеристикаНоменклатуры" если можно напишите не большой пример.
    Спасибо.
  5. TopicStarter Overlay
    Nau
    Offline

    Nau

    Регистрация:
    1 ноя 2007
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    На счет ничего не изменилось я не знаю в 7.7 я не работал, но ничего похожего на "ИспользоватьВладельца" в 8 я не нашел при создании объекта справочника. Если будет у вас возможность проверить это на 8ке и сообщить буду очень благодарен.
    Спасибо.
  6. TopicStarter Overlay
    Nau
    Offline

    Nau

    Регистрация:
    1 ноя 2007
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Всем спасибо! Разобрался.
    Воспользовался советом BabySG:
    применил запрос и счастье тут как тут! :unsure:
  7. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Нормально все работает и без запросов. Хотя конечно каждый случай надо отдельно расматривать.

    В 8.0 есть метод
    НайтиПоНаименованию(<Наименование>, <Точное соответствие>, <Родитель>, <Владелец>)

    Хоть убейте - не понимаю, чем он вам не подошел.
    1. Номенклатура определена
    2. Наименование характеристики не повторяется для одной номенклатуры? Ведь так. Вы пишете, что наименование может быть одинаковым, но для разных элементов Номенклатуры.

    Используйте:
    НайтиПоНаименованию(НаименованиеХарактеристики, Истина, , ОпределеннаяНоменклатура)

    Лично у меня всегда работало, могу сказать пример:
    Делал поиск характеристики при загрузке из экселя заказа, для номенклатуры определены свойства размер, когда грузишь какие нибудь куртки - у них там у всех позиций есть характеристики S, M, L, XL, XXL, XXXL - наименования одинаковые, но с поиском проблем не возникало.
  8. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Разница будет в том, что таким методом возвращается ВЕСЬ объект, а по запросу - только ссылка на него.
    В данном случае весь объект не нужен.

    АПДЕЙТ: Не помню точно, но запрос-то точно на сервере выполняться будет...
  9. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Таким образом возвращается ССЫЛКА!
    Запрос выполнится на сервере если ему об этом рассказать, разницы нет.

    Все методы поиска возвращают ссылку на объект, а не сам объект, для получения объекта нужно воспользоваться дополнительно методом: ПолучитьОбъект().

    Другое дело, что для выбора методики нужно узнать всю задачу, возможно она вся решается гораздо проще.
  10. TopicStarter Overlay
    Nau
    Offline

    Nau

    Регистрация:
    1 ноя 2007
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    За этот конкретный ответ огромное спасибо. Я просто не обратил внимание на то, что в методе НайтиПоНаименованию есть такая конструкция параметров и думал что данный метод ищет только по наименованию.
    Теперь будем знать. Спасибо.
    Хотя вариант с запросом тоже симпатичен. :unsure:
  11. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    [offtop]
    2 Эмин:

    Хм... Значиться, о чём то я о другом думал в момент написания :) Предполагаю, что о представлении...

    Лучше применять получение данных запросом, ибо неизвестно, какие в дальнейшем условия придётся накрутить. В случае применения запроса - расширение задач требует минимальных усилий, в случаем объектной модели - может возникнуть необходимость изменения всей логики работы.
    [/offtop]
  12. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    [offtop]
    В случае изменения структур данных встроенные методы продолжают работать (правда были такие ситуации как функция Тип и ТипЗнч при смене релиза платформы), но запрос, в случае серьезных изменений отказывается работать и часто это тяжело диагностировать. Для решения простых локальных задачек если требуется вызов одной-двух стандартных функций - лучше использовать их (по опыту), когда больше - лучше уже запрос.
    [/offtop]

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