8.х Обработка по выводу номенклатуры, что не так?

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем СтаниславС, 23 янв 2017.

  1. TopicStarter Overlay
    СтаниславС
    Offline

    СтаниславС

    Регистрация:
    5 янв 2017
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Добрый день!
    Подскажите пожалуйста, что я в запросе делаю не так.
    Спасибо!


    Код:
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |   АналогиНоменклатуры.Аналог.Наименование,
    |   АналогиНоменклатуры.Номенклатура.Наименование,
    |   АналогиНоменклатуры.Номенклатура.ВидНоменклатуры
    |ИЗ
    |   РегистрСведений.АналогиНоменклатуры КАК АналогиНоменклатуры
    |ГДЕ
    |
    |    АналогиНоменклатуры.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры
    | 
    | 
    |";
    Запрос.УстановитьПараметр("ВидНоменклатуры",    Справочники.ВидыНоменклатуры.НайтиПоКоду("000000020") );    //Вид номенклатуры
    ВЫборка = Запрос.Выполнить().ВЫбрать();
    Макет = ПолучитьМакет("Макет");
    ТабДок = Новый ТабличныйДокумент;
    СтрокаОбласть = Макет.ПолучитьОбласть("Строка");
    Пока Выборка.Следующий() Цикл
       Если Найти(СтрокаТаблицы, "Заготовка") = Неопределено И Найти(СтрокаТаблицы, "заготовка") = Неопределено
         СтрокаОбласть.Параметры.Наименование = Выборка.Наименование;
         ТабДОк.Вывести(СтрокаОбласть);
       КонецЕсли;
    КонецЦикла;
    
    ТабДок.Показать();
    Последнее редактирование модератором: 23 янв 2017
  2. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    8.123
    Симпатии:
    550
    Баллы:
    204
    Конкретно в запросе обращение в условие через ".". План запросов все равно возьмет еще одну таблицу левым соединением. А в самом коде много чего не так. Область получаете вне цикла, а заполняете в цикле. У вас всегда одна строка будет.
    В чем конкретно ваш вопрос?
  3. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.271
    Симпатии:
    106
    Баллы:
    104
    Вот и скажите, что не так? =)

    Сам часто так делаю. Понятно, что возьмет еще одну таблицу, но что вы предлагаете? Самому ее взять?
    Пусть (в данном случае) сам достроит и возьмет, что надо. В 1с-ке меньше кода будет! =)

    А про область не понял: всегда получал область ДО цикла. Если у нас выводится документ из 16000 позиций получение области в цикле отнимет время.
    Область заполняется и выводится в цикле - она каждый раз будет разная..
  4. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    8.123
    Симпатии:
    550
    Баллы:
    204
    Про область это я прошляпил. Не увидел вывод.
    А по запросу. Может быть будет лучше использовать временные таблицы. Разница во времени вряд ли будет заметна. В принципе в коде все норм. Остается вопрос к автору. Так что же все таки не устраивает?
  5. TopicStarter Overlay
    СтаниславС
    Offline

    СтаниславС

    Регистрация:
    5 янв 2017
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Что-то не работает у меня. Хочу чтобы при помощи обработки выходил список номенклатуры регистра сведений(аналоги номенклатуры) отвечающий условиям: вид номенклатуры( сборочная ед.) и записи со словом "заготовка" не попадали в этот список.
  6. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    8.123
    Симпатии:
    550
    Баллы:
    204
    А так?
    Код:
    Пока Выборка.Следующий() Цикл
    Если НЕ ВРЕГ(Выборка.Наименование) = ВРЕГ("Заготовка") Тогда
    СтрокаОбласть.Параметры.Наименование = Выборка.Наименование;
    ТабДОк.Вывести(СтрокаОбласть);
    КонецЕсли;
    КонецЦикла;
  7. TopicStarter Overlay
    СтаниславС
    Offline

    СтаниславС

    Регистрация:
    5 янв 2017
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Смогу проверить только завтра, т.к доступа к компу сейчас не имеется. Спасибо за помощь!
  8. Yuriy_Alexandrovich
    Offline

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

    Регистрация:
    15 сен 2011
    Сообщения:
    1.371
    Симпатии:
    88
    Баллы:
    54
    Доброго,
    как вариант, в режиме отладки, проверьте, получается ли найти значение по "Справочники.ВидыНоменклатуры.НайтиПоКоду("000000020")"