8.х как правильно сделать вложенный запрос

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

  1. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Пожскажите как правильно сделать вложенный запрос?
    Он нужен для того чтобы по владельцу найти еденицу измерения товара (в шт)
    И получить объект...и затем заполнить реквизит..


    Код:
    Для каждого Строка из Товары цикл
    ИдентификаторXLS  = Строка.ID; 
    ТоварXLS   = Строка.Товар;
    Шт = "шт";
    Запрос = Новый Запрос; 
    Запрос.УстановитьПараметр("ИдентификаторXLS",СокрЛП(ИдентификаторXLS));
    Запрос.УстановитьПараметр("ТоварXLS",СокрЛП(ТоварXLS));
    Запрос.УстановитьПараметр("шт",СокрЛП(шт));
    
    ТекстЗапроса = "ВЫБРАТЬ
    |	Номенклатура.Ссылка КАК НоменклатураПозиция,
    |	Номенклатура.Идентификатор,
    |	Номенклатура.Наименование
    |ИЗ
    |	Справочник.Номенклатура КАК Номенклатура,
    |	(ВЫБРАТЬ
    |		ЕдиницыИзмерения.Ссылка КАК Ссылка,
    |		ЕдиницыИзмерения.Владелец КАК Владелец,
    |		ЕдиницыИзмерения.Наименование КАК Наименование
    |	ИЗ
    |		Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
    |	ГДЕ
    |		ЕдиницыИзмерения.Наименование = &шт) КАК ВложенныйЗапрос
    |ГДЕ
    |	Номенклатура.Идентификатор = &ИдентификаторXLS";
    
    Запрос.Текст      = ТекстЗапроса;
    РезультатЗапроса  = Запрос.Выполнить();
    ТЗ = РезультатЗапроса.Выгрузить();
    //ТЗ.ВыбратьСтроку();
    Выборка = РезультатЗапроса.Выбрать();
    
    КонецЦикла;
    
  2. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Дабы закрыть тему.. )))))
    Код:
    //©lxs
    Для каждого ТекущаяСтрока Из Товары Цикл
    xlsСтрокаID       = ТекущаяСтрока.ID;
    xlsНоменклатура = ТекущаяСтрока.Товар;
    xlsОбъем          = ТекущаяСтрока.Объем;
    Номенклатура      = Справочники.Номенклатура.НайтиПоНаименованию(xlsНоменклатура, Истина,,,);
    Если Номенклатура <> Неопределено И Номенклатура.УникальныйИдентификатор() = xlsСтрокаID Тогда
    ЕдиницаИзмерения        = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт", Истина,, Номенклатура);
    Если ЕдиницаИзмерения <> Неопределено И Не ЗначениеЗаполнено(ЕдиницаИзмерения.Объем) Тогда
    обЕдиницаИзмерения                 = ЕдиницаИзмерения.ПолучитьОбъект();
    обЕдиницаИзмерения.Объем = xlsОбъем;
    обЕдиницаИзмерения.Записать();
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    //©lxs
    
  3. Elvir4ik
    Offline

    Elvir4ik

    Регистрация:
    28 сен 2009
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Добрый вечер! Как одним запросом вытащить все единицы измерения номенклатуры??
  4. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Вообще-то, не помешало бы уточнить, зачем вам это нужно, и какие именно вам нужны единицы измерения номенклатуры:

    1. Все возможные:

    Код:
     "ВЫБРАТЬ
    |    ЕдиницыИзмерения.Ссылка
    |ИЗ
    |    Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения"
    
    
    
    
    
    2. Все использованные в качестве базовых единиц измерения в номенклатуре:

    Код:
    "ВЫБРАТЬ
    |    Номенклатура.БазоваяЕдиницаИзмерения
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура"
    
    
    
    
    
    Может, какие-либо иные "все единицы измерения"? Всё же, запрос сильно зависит от постановки задачи, а ей следует быть предельно чёткой. Советую прочитать "Как правильно задавать вопросы".

    Однако, можно "дарить рыбу", а я вам лучше предложу "удочку". В конфигураторе щёлкаете правой кнопкой в любое свободное место и в контекстном меню выбираете "конструктор запросов". Крайне простой и понятный инструмент для создания запросов: важно только знать, что именно вы хотите получить. К примеру, на каждый из вышестоящих отчётов я потратил, дай бог, чтобы по пять кликов мышкой.
  5. Elvir4ik
    Offline

    Elvir4ik

    Регистрация:
    28 сен 2009
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    нужно всю имеющуюся номенклатуру выгрузить в файл csv, с единицами измерения-шт. в пачке, шт в коробке... и тп.-одной строкой
  6. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    если так.. то лучше вообще обход по спр. единицы измерения тупо сделать и все.. вот вам вся номенклатура...

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

    Важна конечная цель!!

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