Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 17:05

Исключить возможность выбора группы из динамического списка

Автор Sasha1C, 08 янв 2024, 10:06

0 Пользователей и 1 гость просматривают эту тему.

Sasha1C

Afinogen, ДА в запросе лежит произвольный запрос. Основной таблицей для динамического списка был выбран справочник.Номенклатура. И стоит динамическое считывание данных. ниже приведен произвольный запрос для динамического списка.
 ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Ссылка,
    СпрНоменклатура.Код КАК Код,
    СпрНоменклатура.Наименование КАК Наименование,
    СпрНоменклатура.ПометкаУдаления КАК ПометкаУдаления,
    СУММА(ВЫБОР
            КОГДА ОстаткиНоменклатурыОстатки.Склад = &Склад
                ТОГДА ОстаткиНоменклатурыОстатки.КоличествоОстаток
            ИНАЧЕ 0
        КОНЕЦ) КАК ТекущийСклад,
    СУММА(ВЫБОР
            КОГДА ОстаткиНоменклатурыОстатки.Склад = &Основной
                ТОГДА ОстаткиНоменклатурыОстатки.КоличествоОстаток
            ИНАЧЕ 0
        КОНЕЦ) КАК ОсновнойСклад
ИЗ
    РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
        ПО (ОстаткиНоменклатурыОстатки.Номенклатура.Ссылка = ОстаткиНоменклатурыОстатки.Номенклатура)
ГДЕ
    НЕ СпрНоменклатура.ЭтоГруппа

СГРУППИРОВАТЬ ПО
    СпрНоменклатура.Ссылка,
    СпрНоменклатура.Код,
    СпрНоменклатура.Наименование,
    СпрНоменклатура.ПометкаУдаления

LexaK

Sasha1C, (выдалась свободная минутка)
выгрузите свою базу в файл .dt
в конфигураторе меню Администрирование - Выгрузить информационную базу

(перед этим установите режим совместимости не 8.3.22)
и это файл .dt вложите в сообщение, посмотрим, доработаем вашу задачу, будет вам как пример
если помогло нажмите: Спасибо!

Sasha1C

LexaK, Это самописная конфа для изучения основ. Версия 8.3.12. Если будут
замечания и предложения по общему тексту, буду очень рад.

LexaK

Sasha1C, "самописная конфа для изучения основ" - это понятно
"Версия 8.3.12" - приходится уточнять так как здесь кто-то выложил базу версии 8,3,24 даже посмотреть не удалось,

вот ваш пример, в обще все у вас работало как надо, немного подправил, немного комментов добавил.

вам на доработку оставил, при переносе корзины не происходит разделение выбранного по закладкам Товары и Услуги
еще можно/нужно добавить проверку Количества на - 0 т.е. не добавлять такой товар/услугу у которого Количество = 0
если помогло нажмите: Спасибо!

Afinogen

Sasha1C,
у вас в запросе каша
вы делаете запрос к регистру накопления, затем его зачем то соединяете со справочником и еще в Левом соединении непонятно  шо)

Тут надо понимать что если вам нужно видеть все товары независимо от того есть остаток или нет тогда вам следует один запрос делать типа такого

ВЫБРАТЬ
    СпрНоменклатура.СсылкаКАК Ссылка,
    СпрНоменклатура.Код КАК Код,
    СпрНоменклатура.Наименование КАК Наименование,
    СпрНоменклатура.ПометкаУдаления КАК ПометкаУдаления,
    СУММА(ВЫБОР
            КОГДА ЕСТЬNULL(ОстаткиНоменклатурыОстатки.Склад,ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)) = &Склад
                ТОГДА ОстаткиНоменклатурыОстатки.КоличествоОстаток
            ИНАЧЕ 0
        КОНЕЦ) КАК ТекущийСклад,
    СУММА(ВЫБОР
            КОГДА ЕСТЬNULL(ОстаткиНоменклатурыОстатки.Склад,ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)) = &Основной
                ТОГДА ОстаткиНоменклатурыОстатки.КоличествоОстаток
            ИНАЧЕ 0
        КОНЕЦ) КАК ОсновнойСклад
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
    левое соединение
    РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
    по
    СпрНоменклатура.Ссылка = ОстаткиНоменклатурыОстатки.Номенклатура
ГДЕ
    НЕ СпрНоменклатура.ЭтоГруппа

СГРУППИРОВАТЬ ПО
    СпрНоменклатура.Ссылка,
    СпрНоменклатура.Код,
    СпрНоменклатура.Наименование,
    СпрНоменклатура.ПометкаУдаления

Afinogen

если вам нужно видеть только актуальные остатки то тогда вам вообще не нужен справочник

ВЫБРАТЬ
    ОстаткиНоменклатурыОстатки.Номенклатура КАК Ссылка,
    ОстаткиНоменклатурыОстатки.Номенклатура.Код КАК Код,
    ОстаткиНоменклатурыОстатки.Номенклатура.Наименование КАК Наименование,
    ОстаткиНоменклатурыОстатки.Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
    СУММА(ВЫБОР
            КОГДА ОстаткиНоменклатурыОстатки.Склад = &Склад
                ТОГДА ОстаткиНоменклатурыОстатки.КоличествоОстаток
            ИНАЧЕ 0
        КОНЕЦ) КАК ТекущийСклад,
    СУММА(ВЫБОР
            КОГДА ОстаткиНоменклатурыОстатки.Склад = &Основной
                ТОГДА ОстаткиНоменклатурыОстатки.КоличествоОстаток
            ИНАЧЕ 0
        КОНЕЦ) КАК ОсновнойСклад
ИЗ
    РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки

ГДЕ
    НЕ ОстаткиНоменклатурыОстатки.ЭтоГруппа

СГРУППИРОВАТЬ ПО
    ОстаткиНоменклатурыОстатки.Номенклатура,
    ОстаткиНоменклатурыОстатки.Номенклатура.Код,
    ОстаткиНоменклатурыОстатки.Номенклатура.Наименование,
    ОстаткиНоменклатурыОстатки.Номенклатура.ПометкаУдаления

плюс еще бы это условие
ГДЕ
    НЕ ОстаткиНоменклатурыОстатки.ЭтоГруппа
я загнал бы в параметры виртуальной таблицы

Afinogen

 B) и как лайфхак если вам потом надо выбирать только конечные яблоки и груши я бы вообще в запросе вывел поле этоГруппа и проверял при выборе его значение в списке
ВЫБРАТЬ
    ОстаткиНоменклатурыОстатки.Номенклатура КАК Ссылка,
    ОстаткиНоменклатурыОстатки.Номенклатура.Код КАК Код,
    ОстаткиНоменклатурыОстатки.Номенклатура.Наименование КАК Наименование,
    ОстаткиНоменклатурыОстатки.Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
    ОстаткиНоменклатурыОстатки.Номенклатура.ЭтоГруппа,
     
    СУММА(ВЫБОР
            КОГДА ОстаткиНоменклатурыОстатки.Склад = &Склад
                ТОГДА ОстаткиНоменклатурыОстатки.КоличествоОстаток
            ИНАЧЕ 0
        КОНЕЦ) КАК ТекущийСклад,
    СУММА(ВЫБОР
            КОГДА ОстаткиНоменклатурыОстатки.Склад = &Основной
                ТОГДА ОстаткиНоменклатурыОстатки.КоличествоОстаток
            ИНАЧЕ 0
        КОНЕЦ) КАК ОсновнойСклад
ИЗ
    РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки


СГРУППИРОВАТЬ ПО
    ОстаткиНоменклатурыОстатки.Номенклатура,
    ОстаткиНоменклатурыОстатки.Номенклатура.Код,
    ОстаткиНоменклатурыОстатки.Номенклатура.Наименование,
    ОстаткиНоменклатурыОстатки.Номенклатура.ЭтоГруппа,
    ОстаткиНоменклатурыОстатки.Номенклатура.ПометкаУдаления

А в вашей процедуре СписокВыбор (которая на клиенте) я бы в строке проверял сразу это группа или нет и все,  и не нужно было бы обращаться к серверу)

Sasha1C

LexaK, Подскажите пожалуйста, а как вы запретили добавлять название справочника "Номенклатура" в корзину, может быть где-то галочка? Название справочника показано картинке 5. Дополняю комментарий, потому что разобрался. Номенклатура также выбирается, но ей не приписан механизм действий при нажатии.

LexaK

Sasha1C, у элемента формы Корзина, свойство: ИзменятьСоставСтрок - снял галку
мы же туда строчки добавляем программно!
если помогло нажмите: Спасибо!

Sasha1C


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск