Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Отбор "В списке" в отчете СКД          
Constantus Подменю пользователя
сообщение 08.06.18, 14:08
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

В отчете СКД имеется отбор по виду договоров. Вид договоров в Перечислениях.

На форму отчета СКД повесил поле выбора и при открытии заполнил его:

    ЭлементыФормы.ВыборЗначения.СписокВыбора.Очистить();
     ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(0, "Равно");
     ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(1, "В списке");
     ЭлементыФормы.ВыборЗначения.Значение = 0;


Далее, при выборе "Равно", всё срабатывает, но если выбираю "В списке", то выдает ошибку

Код при изменении:

Процедура ВидДоговораПриИзменении(Элемент)
    // Вставить содержимое обработчика.
    
    Если ВыборЗначения = 0 Тогда
        Выборы = ВидСравненияКомпоновкиДанных.Равно;
    ИначеЕсли ВыборЗначения = 0 Тогда
        Выборы = ВидСравненияКомпоновкиДанных.ВСписке;
    КонецЕсли;    
    
    Для каждого Эл Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
        Если Эл.Представление = Элемент.Имя Тогда
            Эл.Использование     = ЗначениеЗаполнено(ВидДоговора);
            Эл.ВидСравнения        = Выборы;//ВидСравненияКомпоновкиДанных.Равно;
            Эл.ПравоеЗначение    = ВидДоговора;
        КонецЕсли;
    КонецЦикла;

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


Ошибка:
Ошибка при установке значения атрибута контекста (ВидСравнения)
            Эл.ВидСравнения        = Выборы;//ВидСравненияКомпоновкиДанных.Равно;
по причине:
Несоответствие типов



Как правильно в СКД поставить отбор по списку (перечислению нескольких значений)?

alex1c Подменю пользователя
сообщение 08.06.18, 14:35
Сообщение #2

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 235
Спасибо сказали: 45 раз
Рейтинг: 40

Цитата(Constantus @ 08.06.18, 14:08) *
    Если ВыборЗначения = 0 Тогда
        Выборы = ВидСравненияКомпоновкиДанных.Равно;
    ИначеЕсли ВыборЗначения = 0 Тогда
        Выборы = ВидСравненияКомпоновкиДанных.ВСписке;
    КонецЕсли;

В обоих вариантах ВыборЗначения = 0. Внимательнее....

Constantus Подменю пользователя
сообщение 08.06.18, 14:42
Сообщение #3

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

alex1c @ Сегодня, 17:35 * ,

Спасибо, исправил, но это не помогло, все равно производится отбор по одному значению, требуется, чтобы появилось окно с подбором и кнопкой "Подбор", чтобы список сформировать, как это делается в стандартных отчетах при выборе "В списке"

Как этого добится?

sava1 Подменю пользователя
сообщение 08.06.18, 14:47
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

создаем форму, выносим на форму табличное поле, данные - компоновщик.Отбор

Constantus Подменю пользователя
сообщение 08.06.18, 16:14
Сообщение #5

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Дал полю "ВидДоговора" тип "СписокЗначений"

Теперь выбор "В списке" сработал.

Но если выбираю значение "Равно", то выдает ошибку исполнения.

Я так понимаю, что при выборе "Равно", нужно изменить тип значений с "СписокЗначений" на Ссылку на нужный справочник справочник.

Как можно программно изменять тип значений?

Сделал такие махинации:

Процедура ВидДоговораПриИзменении(Элемент)

    
    Если ВыборЗначения = 1 Тогда
        Выборы = ВидСравненияКомпоновкиДанных.ВСписке;
    ИначеЕсли ВыборЗначения = 0 Тогда
        Выборы = ВидСравненияКомпоновкиДанных.Равно;
    КонецЕсли;    
    
    Для каждого Эл Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
        Если Эл.Представление = Элемент.Имя Тогда
            //Эл.Использование     = ЗначениеЗаполнено(ВидДоговора);
            Эл.ВидСравнения        = Выборы;//ВидСравненияКомпоновкиДанных.ВСписке;
            Эл.ПравоеЗначение    = ВидДоговора;
        КонецЕсли;
    КонецЦикла;

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


Процедура ВыборЗначенияПриИзменении(Элемент)
    // Вставить содержимое обработчика.
    
    Если ВыборЗначения = 1 Тогда
        Выборы = ВидСравненияКомпоновкиДанных.ВСписке;
        ТипК = Новый ОписаниеТипов("СписокЗначений");
        ЭлементыФормы.ВидДоговора.Значение = ТипК.ПривестиЗначение(Элемент);
    ИначеЕсли ВыборЗначения = 0 Тогда
        Выборы = ВидСравненияКомпоновкиДанных.Равно;
        ТипК = Новый ОписаниеТипов("СправочникСсылка.ВидыДоговоровПоГК");
        ЭлементыФормы.ВидДоговора.Значение = ТипК.ПривестиЗначение(Элемент);
    КонецЕсли;    

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


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


В результате, если выбираешь "Равно", то отчет срабатывает. Если открываешь в списке, то окно подбора по списку открывается, но пустое, т.е. без возможности выбора.
Что-то я не дотягиваю, но что?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.04.24, 8:40
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!