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

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

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

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

Sasha1C

Добрый день, есть процедура в форме документа которая реализует функцию подбора.
В форме подбора есть 2 реквизита: Список- СписокЗначений, Корзина- Таблица значений. С помощью процедуры описанной ниже мы корректируем количество в "корзине", но помимо номенклатуры туда могут попасть группы номенклатуры. Подскажите пожалуйста как исключить выбор групп, а оставить возможность выбора только книги или другой вариант решения данный проблемы.

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;
НайденныеСтроки = Корзина.НайтиСтроки(Новый Структура("НазваниеКниги", ВыбраннаяСтрока));

Если НайденныеСтроки.Количество()> 0 Тогда
НайденныеСтроки[0].КоличествоКниг = НайденныеСтроки[0].КоличествоКниг +1;
Иначе
НоваяСтрока = Корзина.Добавить();
НоваяСтрока.НазваниеКниги = ВыбраннаяСтрока;
НоваяСтрока.КоличествоКниг = 1;
КонецЕсли;


КонецПроцедуры

3rd.png
НА картинке показаны реквизиты формы.
Заранее спасибо.

Afinogen

 B) а что  мешает установить отбор, чтобы на форме в динамическом списке не отображалась группа?

Afinogen

ну или тип такого что то сделать,  я ж так понимаю конфига самописная
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
   
    СтандартнаяОбработка = Ложь;
    НайденныеСтроки = Корзина.НайтиСтроки(Новый Структура("НазваниеКниги", ВыбраннаяСтрока));

    Если ПроверитьЭтоГруппа(ВыбраннаяСтрока) Тогда
     
        ПоказатьПредупреждение(,,"Нельзя добавлять  группу книг);
   
    Иначе
   
    Если НайденныеСтроки.Количество()> 0 Тогда
        НайденныеСтроки[0].КоличествоКниг = НайденныеСтроки[0].КоличествоКниг +1;
    Иначе
        НоваяСтрока = Корзина.Добавить();
        НоваяСтрока.НазваниеКниги = ВыбраннаяСтрока;
        НоваяСтрока.КоличествоКниг = 1;
    КонецЕсли;

    КонецЕсли;
   

КонецПроцедуры

&НаСервереБезКонтекста

Функция ПроверитьЭтоГруппа(Ссылка)

  Возврат Ссылка.ЭтоГруппа;

КонецФункции

Каримдат

В реквизитах объекта в свойствах Выбор групп и элементов - Группы.
Или так не получается?

Sasha1C

Afinogen, А можно ли таким способом проверить на родителя, просто выдает ошибку при отладке "преобразование к типу булево не может быть выполнено" при выполнении условия на проверку  "группы родителя".
 
&НаСервереБезКонтекста
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
   
    СтандартнаяОбработка = Ложь;
    НайденныеСтроки = Корзина.НайтиСтроки(Новый Структура("Номенклатура", ВыбраннаяСтрока));
   
    Если ПроверитьНаГруппу(ВыбраннаяСтрока) Тогда
    ПоказатьПредупреждение(,"Нельзя выбрать группу")
ИначеЕсли
        ПроверитьНаРодителя(ВыбраннаяСтрока) Тогда
        ПоказатьПредупреждение(,"Нельзя выбрать родителя")

       
    Иначе
        Если НайденныеСтроки.Количество()>0 Тогда
            НайденныеСтроки[0].Количество = НайденныеСтроки[0].Количество + 1;
        Иначе
            НоваяСтрока = Корзина.Добавить();
            НоваяСтрока.Номенклатура = ВыбраннаяСтрока;
            НоваяСтрока.Количество = 1;
        КонецЕсли;
    КонецЕсли;
   
Конецпроцедуры


Функция ПроверитьНаРодителя(Ссылка)
   
    Возврат Ссылка.Родитель;   
   
КонецФункции

Sasha1C

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

Afinogen

Sasha1CB) конечно  вам будет выдавать такую ошибку,  вы невнимательно  перенесли мой код

у вас процедура

СписокВыбор

указана как на серверебезконтекста, а надо ее на клиенте а функцию насервере


antoneus

ПроверитьНаРодителя возвращает ссылку на справочник, а не булево.

Sasha1C

antoneus, Вопрос в другом, если убрать отбор по родителю все идеально работает, а если добавить мою функцию про родителя и условие, то на отладке программа отлетает при прохождении условия с родителем. И я не понимаю почему. Может со стандартным реквизитом "Родитель" так просто не работает? :dfbsdfbsdf: &НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
   
    СтандартнаяОбработка = Ложь;
    НайденныеСтроки = Корзина.НайтиСтроки(Новый Структура("Номенклатура", ВыбраннаяСтрока));
   
    Если ПроверитьНаГруппу(ВыбраннаяСтрока) Тогда
    ПоказатьПредупреждение(,"Нельзя выбрать группу")
ИначеЕсли
        ПроверитьНаРодителя(ВыбраннаяСтрока) Тогда
        ПоказатьПредупреждение(,"Нельзя выбрать родителя")

       
    Иначе
        Если НайденныеСтроки.Количество()>0 Тогда
            НайденныеСтроки[0].Количество = НайденныеСтроки[0].Количество + 1;
        Иначе
            НоваяСтрока = Корзина.Добавить();
            НоваяСтрока.Номенклатура = ВыбраннаяСтрока;
            НоваяСтрока.Количество = 1;
        КонецЕсли;
    КонецЕсли;
   
Конецпроцедуры

&НаСервереБезКонтекста
Функция ПроверитьНаГруппу(Ссылка)
   
    Возврат Ссылка.ЭтоГруппа;   
   
КонецФункции

&НаСервереБезКонтекста
Функция ПроверитьНаРодителя(Ссылка)
   
    Возврат Ссылка.Родитель;   
   
КонецФункции


antoneus

Конечно, с родителем конструкция Если - КонецЕсли работать не будет, потому что тут нужно булево (Истина или ложь), а функция возвращает ссылку на справочник. В чем смысл функции ПроверитьНаРодителя? Что она проверяет?

Теги:

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

Рейтинг@Mail.ru

Поиск