8.х Розница 2.1 Подбор товаров, доработка.

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

  1. TopicStarter Overlay
    kisol
    Offline

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

    Регистрация:
    25 июл 2012
    Сообщения:
    386
    Симпатии:
    41
    Баллы:
    54
    В рознице в обработке ПодборТоваров, в динамическом списке ПодборТаблицаНоменклатура, пытаюсь сделать дополнительные колонки Вналичии, Цена.
    Добавил вложенный запрос в нем из регистра сведений достается цена, из регистра накопления достаю Вналичии.

    Проблемка с тем что пропадает значения в колонке код, предполагаю из-за неправильного соединения таблиц. (С кодом разобрался, добавил его вывод в запрос и вытянул в табличку)
    А так же если в остатке 0, то не показывается цена - NULL.

    [​IMG]

    Код:
    ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
        СправочникНоменклатура.Ссылка КАК Номенклатура,
        СправочникНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
        СправочникНоменклатура.ТипНоменклатуры КАК ТипНоменклатуры,
        СУММА(ЕСТЬNULL(ВложенныйЗапрос.КоличествоОстаток, 0)) КАК ВНаличии,
        СправочникНоменклатура.Родитель КАК Родитель,
        СправочникНоменклатура.ВидНоменклатуры.ИспользованиеХарактеристик КАК ИспользованиеХарактеристик,
        СправочникНоменклатура.ЭтоГруппа КАК ЭтоГруппа,
        СправочникНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
        ВЫБОР
            КОГДА СправочникНоменклатура.ЭтоГруппа
                ТОГДА ВЫБОР
                        КОГДА СправочникНоменклатура.ПометкаУдаления
                            ТОГДА 13
                        ИНАЧЕ 12
                    КОНЕЦ
            ИНАЧЕ -1 + ВЫБОР
                    КОГДА СправочникНоменклатура.ПометкаУдаления
                        ТОГДА 1
                    ИНАЧЕ 0
                КОНЕЦ + ВЫБОР
                    КОГДА СправочникНоменклатура.ВидНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыВеденияДополнительныхДанныхПоНоменклатуре.НеИспользовать)
                        ТОГДА 1
                    ИНАЧЕ 3
                КОНЕЦ
        КОНЕЦ КАК ИндексКартинки,
        СУММА(ВложенныйЗапрос.Цена) КАК Цена
    ИЗ
        Справочник.Номенклатура КАК СправочникНоменклатура
            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
                ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстатки.Склад) КАК СкладПредставление,
                ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
                ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура1,
                ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
            ИЗ
                РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладахОстатки
                    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
                    ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
            ГДЕ
                ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦены) КАК ВложенныйЗапрос
            ПО (ВложенныйЗапрос.Номенклатура = СправочникНоменклатура.Ссылка)
    {ГДЕ
        (СправочникНоменклатура.Ссылка В
                (ВЫБРАТЬ
                    Сегменты.Номенклатура
                ИЗ
                    РегистрСведений.НоменклатураСегмента КАК Сегменты
                ГДЕ
                    Сегменты.Сегмент = &СегментНоменклатуры)) КАК Поле2}
    
    СГРУППИРОВАТЬ ПО
        СправочникНоменклатура.ВидНоменклатуры,
        СправочникНоменклатура.ТипНоменклатуры,
        СправочникНоменклатура.Родитель,
        СправочникНоменклатура.ВидНоменклатуры.ИспользованиеХарактеристик,
        СправочникНоменклатура.ЭтоГруппа,
        СправочникНоменклатура.ЕдиницаИзмерения,
        ВЫБОР
            КОГДА СправочникНоменклатура.ЭтоГруппа
                ТОГДА ВЫБОР
                        КОГДА СправочникНоменклатура.ПометкаУдаления
                            ТОГДА 13
                        ИНАЧЕ 12
                    КОНЕЦ
            ИНАЧЕ -1 + ВЫБОР
                    КОГДА СправочникНоменклатура.ПометкаУдаления
                        ТОГДА 1
                    ИНАЧЕ 0
                КОНЕЦ + ВЫБОР
                    КОГДА СправочникНоменклатура.ВидНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыВеденияДополнительныхДанныхПоНоменклатуре.НеИспользовать)
                        ТОГДА 1
                    ИНАЧЕ 3
                КОНЕЦ
        КОНЕЦ,
        СправочникНоменклатура.Ссылка
    [​IMG]
    Последнее редактирование: 20 ноя 2015
  2. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    В консоли запросов отлаживайте свой запрос, потом только внедряйте :)
  3. TopicStarter Overlay
    kisol
    Offline

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

    Регистрация:
    25 июл 2012
    Сообщения:
    386
    Симпатии:
    41
    Баллы:
    54
    Мое решение: разбил на 2 подзапроса
    Код:
    ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
        СправочникНоменклатура.Ссылка КАК Номенклатура,
        СправочникНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
        СправочникНоменклатура.ТипНоменклатуры КАК ТипНоменклатуры,
        СправочникНоменклатура.Родитель КАК Родитель,
        СправочникНоменклатура.ВидНоменклатуры.ИспользованиеХарактеристик КАК ИспользованиеХарактеристик,
        СправочникНоменклатура.ЭтоГруппа КАК ЭтоГруппа,
        СправочникНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
        ВЫБОР
            КОГДА СправочникНоменклатура.ЭтоГруппа
                ТОГДА ВЫБОР
                        КОГДА СправочникНоменклатура.ПометкаУдаления
                            ТОГДА 13
                        ИНАЧЕ 12
                    КОНЕЦ
            ИНАЧЕ -1 + ВЫБОР
                    КОГДА СправочникНоменклатура.ПометкаУдаления
                        ТОГДА 1
                    ИНАЧЕ 0
                КОНЕЦ + ВЫБОР
                    КОГДА СправочникНоменклатура.ВидНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыВеденияДополнительныхДанныхПоНоменклатуре.НеИспользовать)
                        ТОГДА 1
                    ИНАЧЕ 3
                КОНЕЦ
        КОНЕЦ КАК ИндексКартинки,
        СУММА(ВложенныйЗапрос.Цена) КАК Цена,
        СправочникНоменклатура.Код,
        ВложенныйЗапрос1.КоличествоОстаток
    ИЗ
        Справочник.Номенклатура КАК СправочникНоменклатура
            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
                ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
            ИЗ
                РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки) КАК ВложенныйЗапрос1
            ПО СправочникНоменклатура.Ссылка = ВложенныйЗапрос1.Номенклатура
            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура1,
                ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
            ИЗ
                РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
            ГДЕ
                ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦены) КАК ВложенныйЗапрос
            ПО СправочникНоменклатура.Ссылка = ВложенныйЗапрос.Номенклатура1
    {ГДЕ
        (СправочникНоменклатура.Ссылка В
                (ВЫБРАТЬ
                    Сегменты.Номенклатура
                ИЗ
                    РегистрСведений.НоменклатураСегмента КАК Сегменты
                ГДЕ
                    Сегменты.Сегмент = &СегментНоменклатуры)) КАК Поле2}
    
    СГРУППИРОВАТЬ ПО
        СправочникНоменклатура.ВидНоменклатуры,
        СправочникНоменклатура.ТипНоменклатуры,
        СправочникНоменклатура.Родитель,
        СправочникНоменклатура.ВидНоменклатуры.ИспользованиеХарактеристик,
        СправочникНоменклатура.ЭтоГруппа,
        СправочникНоменклатура.ЕдиницаИзмерения,
        ВЫБОР
            КОГДА СправочникНоменклатура.ЭтоГруппа
                ТОГДА ВЫБОР
                        КОГДА СправочникНоменклатура.ПометкаУдаления
                            ТОГДА 13
                        ИНАЧЕ 12
                    КОНЕЦ
            ИНАЧЕ -1 + ВЫБОР
                    КОГДА СправочникНоменклатура.ПометкаУдаления
                        ТОГДА 1
                    ИНАЧЕ 0
                КОНЕЦ + ВЫБОР
                    КОГДА СправочникНоменклатура.ВидНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыВеденияДополнительныхДанныхПоНоменклатуре.НеИспользовать)
                        ТОГДА 1
                    ИНАЧЕ 3
                КОНЕЦ
        КОНЕЦ,
        СправочникНоменклатура.Ссылка,
        СправочникНоменклатура.Код,
        ВложенныйЗапрос1.КоличествоОстаток
  4. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    И как ? Не "тупит" список ?
  5. TopicStarter Overlay
    kisol
    Offline

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

    Регистрация:
    25 июл 2012
    Сообщения:
    386
    Симпатии:
    41
    Баллы:
    54
    :D тупит, тупил и будет тупить!
  6. TerANik
    Offline

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

    Регистрация:
    19 ноя 2014
    Сообщения:
    997
    Симпатии:
    70
    Баллы:
    54
    Блин ребята а у меня к вам вопрос, а что это сверху за кнопочка Остатки?
  7. TopicStarter Overlay
    kisol
    Offline

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

    Регистрация:
    25 июл 2012
    Сообщения:
    386
    Симпатии:
    41
    Баллы:
    54
    При нажатии показываются остатки и цены для выбранной позиции номенклатуры.
    [​IMG]
  8. TerANik
    Offline

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

    Регистрация:
    19 ноя 2014
    Сообщения:
    997
    Симпатии:
    70
    Баллы:
    54
    А чем тебя не устраивает то? нафига костыль городить? Типа там ты будешь видеть по списку позиций?
  9. TopicStarter Overlay
    kisol
    Offline

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

    Регистрация:
    25 июл 2012
    Сообщения:
    386
    Симпатии:
    41
    Баллы:
    54
    Да, все как в 7.7 костыле и Утешке.
  10. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Зачоооот, вы бы еще 10-ку под XP переписали, удобно же было.....

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