8.х Запрос с видами цен

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Flash-Dance, 10 май 2014.

  1. TopicStarter Overlay
    Flash-Dance
    Offline

    Flash-Dance Профессионал в 1С

    Регистрация:
    20 май 2012
    Сообщения:
    365
    Симпатии:
    42
    Баллы:
    54
    Всем привет. Необходимо составить запрос с выводом таблицы со следующими полями:
    * Номенклатура (Справочник.Номенклатура)
    * ВидЦены_1 (Значение РегистаСведений.ЦеныНоменклатуры для указанной номенклатуры с ВидомЦены_1 из Справочника.ВидыЦен)
    * ВидЦены_2 (Значение для указанной номенклатуры с ВидомЦены_2)
    * .....................
    * ВидЦены_N (Значение для указанной номенклатуры с ВидомЦены_N)

    Подскажите, как составить для каждой записи справочника "ЦеныНоменклатуры" отдельное поле?
  2. LordMaverick
    Online

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

    Регистрация:
    17 мар 2014
    Сообщения:
    3.443
    Симпатии:
    376
    Баллы:
    104
    запросом к РС ЦеныНомекоатуры
    если нужны последние, если типа для прайса - через СрезПоследних
    upload_2014-5-10_16-43-23.png
    --- Объединение сообщений, 10 май 2014 ---
    в самом простом случае - так (получено через консоль запросов)
    Код:
    "ВЫБРАТЬ
    |    ЦеныНоменклатурыСрезПоследних.Номенклатура,
    |    ЦеныНоменклатурыСрезПоследних.ВидЦены,
    |    ЦеныНоменклатурыСрезПоследних.Цена
    |ИЗ
    |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних"
    
    в консоли вид полей такой:
    номенклатура, вид цены, значение цены
  3. TopicStarter Overlay
    Flash-Dance
    Offline

    Flash-Dance Профессионал в 1С

    Регистрация:
    20 май 2012
    Сообщения:
    365
    Симпатии:
    42
    Баллы:
    54
    Мне надо, чтобы для каждого вида цены было свое отдельное поле!
    Например, есть виды цен "Розничная", "Оптовая" и "Закупочная". Надо, чтобы для каждого из них был отдельный столбец со значениями, а не названия цен в один столбик и значения в соседний.
    Примерно так:
    Номенклатура | Розничная | Оптовая | Закупочная
    ___Пылесос___ | __ 3200___ | __2400__ | ___2000____
  4. LordMaverick
    Online

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

    Регистрация:
    17 мар 2014
    Сообщения:
    3.443
    Симпатии:
    376
    Баллы:
    104
    ну так запросом данные вы получили, как надо так и выводите
  5. TopicStarter Overlay
    Flash-Dance
    Offline

    Flash-Dance Профессионал в 1С

    Регистрация:
    20 май 2012
    Сообщения:
    365
    Симпатии:
    42
    Баллы:
    54
    Вопрос в том и заключается - как вывести, используя язык запросов (если это вообще возможно)!
  6. Thelearning
    Offline

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

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    Что Вы имеете в виду под ?
    Куда нужно вывести сие чудо? Если в отчет, то используйте компоновку данных (в настройках макета компоновки в строках указывайте номенклатуру, а в колонках тип цен), а если просто в печатную форму (без использования СКД), тогда рисуйте свой макет и в него выводите (при этом в запросе получив итоги по номенклатуре).
  7. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Делайте на СКД, создайте там таблицу. Делов на 15 минут :) по вашему запросу. Тип цен - в колонку.
  8. TopicStarter Overlay
    Flash-Dance
    Offline

    Flash-Dance Профессионал в 1С

    Регистрация:
    20 май 2012
    Сообщения:
    365
    Симпатии:
    42
    Баллы:
    54
    Способов есть много. Но мне надо именно через запрос. Так возможно или нет - создавать поля в запросе через обход коллекции значений? Если да, то как?
  9. Briz
    Offline

    Briz Новичок в 1С

    Регистрация:
    9 апр 2013
    Сообщения:
    36
    Симпатии:
    3
    Баллы:
    4
    (8)циклом по виду цен формируй текст запроса
    используй объединение
    Flash-Dance нравится это.
  10. KrivosheevEV
    Offline

    KrivosheevEV Новичок в 1С

    Регистрация:
    3 мар 2014
    Сообщения:
    35
    Симпатии:
    2
    Баллы:
    4
    Да, возможно.
    Код:
    Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    ВЫБОР
                       |        КОГДА ВидыЦен.Идентификатор = ""ОптоваяЦена""
                       |            ТОГДА ВидыЦен.Ссылка
                       |    КОНЕЦ КАК ОптоваяЦена,
                       |    ВЫБОР
                       |        КОГДА ВидыЦен.Идентификатор = ""РозничнаяЦена""
                       |            ТОГДА ВидыЦен.Ссылка
                       |    КОНЕЦ КАК РозничнаяЦена
                       |ПОМЕСТИТЬ СписокВидовЦен
                       |ИЗ
                       |    Справочник.ВидыЦен КАК ВидыЦен
                       |ГДЕ
                       |    НЕ ВидыЦен.ПометкаУдаления
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    Номенклатура.Ссылка
                       |ПОМЕСТИТЬ СписокНоменклатур
                       |ИЗ
                       |    Справочник.Номенклатура КАК Номенклатура
                       |ГДЕ
                       |    НЕ Номенклатура.ЭтоГруппа
                       |    И НЕ Номенклатура.ПометкаУдаления
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ЦеныНоменклатурыСрезПоследних.Номенклатура,
                       |    ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаОптовая
                       |ПОМЕСТИТЬ ЦеныОптовые
                       |ИЗ
                       |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
                       |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ СписокНоменклатур КАК СписокНоменклатур
                       |        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = СписокНоменклатур.Ссылка
                       |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ СписокВидовЦен КАК СписокВидовЦен
                       |        ПО ЦеныНоменклатурыСрезПоследних.ВидЦены = СписокВидовЦен.ОптоваяЦена
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ЦеныНоменклатурыСрезПоследних.Номенклатура,
                       |    ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаРозничная
                       |ПОМЕСТИТЬ ЦеныРозничные
                       |ИЗ
                       |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
                       |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ СписокНоменклатур КАК СписокНоменклатур
                       |        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = СписокНоменклатур.Ссылка
                       |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ СписокВидовЦен КАК СписокВидовЦен
                       |        ПО ЦеныНоменклатурыСрезПоследних.ВидЦены = СписокВидовЦен.РозничнаяЦена
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    СписокНоменклатур.Ссылка,
                       |    ЦеныРозничные.ЦенаРозничная,
                       |    ЦеныОптовые.ЦенаОптовая
                       |ИЗ
                       |    СписокНоменклатур КАК СписокНоменклатур
                       |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЦеныОптовые КАК ЦеныОптовые
                       |        ПО СписокНоменклатур.Ссылка = ЦеныОптовые.Номенклатура
                       |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЦеныРозничные КАК ЦеныРозничные
                       |        ПО СписокНоменклатур.Ссылка = ЦеныРозничные.Номенклатура";
        Запрос.Параметры.Вставить("ДатаНачала", ТекущаяДата());
        Запрос.Выполнить().Выгрузить();
    Flash-Dance нравится это.
  11. TopicStarter Overlay
    Flash-Dance
    Offline

    Flash-Dance Профессионал в 1С

    Регистрация:
    20 май 2012
    Сообщения:
    365
    Симпатии:
    42
    Баллы:
    54
    Вот это уже ближе к истине: используя цикл (9) формировать текст для запроса (10).
    Briz +1 за мысль.
    KrivosheevEV +1 за метод.
  12. KrivosheevEV
    Offline

    KrivosheevEV Новичок в 1С

    Регистрация:
    3 мар 2014
    Сообщения:
    35
    Симпатии:
    2
    Баллы:
    4
    Кстати, да. Механизмы СКД позволяют это делать без топорных циклов с запросами.

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