6 / 6 / 2
Регистрация: 24.04.2014
Сообщений: 107
1

Фильтр для печати по значению в выпадающем списке

30.10.2016, 20:48. Показов 978. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пожалуйста, помогите новичку! Суть задания в том, что нужно создать выпадающий список, в котором необходимо выбрать продолжительность, например, мы выберем продолжительность равную 5. Затем выделим элементы, например выделим все элементы, и нажмём кнопку "Печать". И в печати должны быть только те ВЫДЕЛЕННЫЕ элементы, у которых продолжительность равна 5 (в нашем случае, это только один элемент). Как это сделать?
Миниатюры
Фильтр для печати по значению в выпадающем списке   Фильтр для печати по значению в выпадающем списке  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2016, 20:48
Ответы с готовыми решениями:

Фильтр в выпадающем списке мастера подстановок
Есть две таблицы. Первая: Работники(код работника, ФИО, должность, номер телефона, адрес) Вторая:...

Фильтр в выпадающем списке (combo box)
Здравствуйте! Подскажите пожалуйста как сделать следующее: У меня есть например 10 цехов. В каждом...

Чекбоксы для строк в выпадающем списке ComboBox
Собственно есть ли компонент или как его сделать, чтоб в выпадающем списке были чекбоксы?

JComboBox: кнопка в выпадающем списке для выбора элемента
Доброго времени суток. Пытаюсь сделать следующее: имеется экземпляр JComboBox. При нажатии на...

12
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
30.10.2016, 22:08 2
Nick96, одногруппники? Отбор записей динамического списка по выбранному значению отбора в виде выпадающего списка
1
6 / 6 / 2
Регистрация: 24.04.2014
Сообщений: 107
31.10.2016, 13:20  [ТС] 3
Да
Помоги, пожалуйста)
0
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
31.10.2016, 13:43 4
Nick96, читайте тему по ссылке, там то же задание подробно описано
1
6 / 6 / 2
Регистрация: 24.04.2014
Сообщений: 107
31.10.2016, 14:19  [ТС] 5
Оно не такое
0
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
31.10.2016, 17:17 6
Nick96, акция: найди 5 отличий, и я напишу это задание за тебя!

Только объективных.
У вас даже в данных заполнения ФИО одного преподавателя, видимо тот самый...
1
6 / 6 / 2
Регистрация: 24.04.2014
Сообщений: 107
31.10.2016, 19:35  [ТС] 7

Да дело не в оформлении. Дело в функционале
1. Записи не должны фильтроваться (то есть, оставаться только те, которые мы выбрали, а остальные убираться). Они должны быть всегда на своих местах.
2. Выделяться должны любые записи, даже те, продолжительность которых не равна требуемой.
3. Нажимая на "Печать" переносятся только те записи, продолжительность которых равна требуемой.
4. При нажатии на "Печать" записи, продолжительность которых не равна требуемой, НЕ переносятся в печать, а остаются.
5. Записи в печати должны быть в виде таблицы.
Как-то так
0
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
31.10.2016, 21:42 8
Nick96, ну понятно, вариации...
Тогда создание и заполнение значений в списке выбора "Продолжительности" и правда можете посмотреть в той теме, только делать отбор динамического списка при изменении значения не надо.
Создадим "Конструктором печати" стандартную процедуру печати и переделаем макет в таблицу и процедуры печати, слегка)
Фильтр для печати по значению в выпадающем списке


Откроем обработчик созданной команды Печати:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
    ТабДок = Новый ТабличныйДокумент;
    
//если вызвать печать из формы элемента, где нет доп. поля Продолжительность - перейдем в Исключение
    Попытка
        Продолжительность = ПараметрыВыполненияКоманды.Источник.Продолжительность;  
    Исключение
        Продолжительность = Неопределено;  
    КонецПопытки;
    
    Печать(ТабДок, ПараметрКоманды, Продолжительность);
 
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Ложь;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();
    //}}
КонецПроцедуры
 
&НаСервере
Процедура Печать(ТабДок, ПараметрКоманды, Продолжительность)
    Справочники.Курсы.Печать(ТабДок, ПараметрКоманды, Продолжительность);
КонецПроцедуры
И в модуле менеджера справочника Курсы:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Процедура Печать(ТабДок, Ссылка, Продолжительность) Экспорт
    //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
    Макет = Справочники.Курсы.ПолучитьМакет("Печать");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   Курсы.ДатаНачала,
    |   Курсы.Код,
    |   Курсы.Наименование,
    |   Курсы.Преподаватель,
    |   Курсы.Продолжительность,
    |   Курсы.Стоимость
    |ИЗ
    |   Справочник.Курсы КАК Курсы
    |ГДЕ
    |   Курсы.Ссылка В (&Ссылка)" + ?(Продолжительность<>Неопределено, " И Курсы.Продолжительность = &Продолжительность", "");
    Запрос.Параметры.Вставить("Ссылка", Ссылка);
    Запрос.Параметры.Вставить("Продолжительность", Продолжительность);
 
    Выборка = Запрос.Выполнить().Выбрать();
 
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ВставлятьРазделительСтраниц = Ложь;
    
    Пока Выборка.Следующий() Цикл
        Если ВставлятьРазделительСтраниц Тогда
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
 
        ОбластьСтрока.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(ОбластьСтрока, Выборка.Уровень());
        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
    //}}
КонецПроцедуры
0
6 / 6 / 2
Регистрация: 24.04.2014
Сообщений: 107
04.11.2016, 18:33  [ТС] 9
Можно скрин, где находится обработчик созданной команды Печати?
0
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
04.11.2016, 18:40 10
Nick96,
Миниатюры
Фильтр для печати по значению в выпадающем списке  
1
6 / 6 / 2
Регистрация: 24.04.2014
Сообщений: 107
04.11.2016, 19:48  [ТС] 11
Добавлено через 1 час 8 минут
Цитата Сообщение от GreenkA Посмотреть сообщение
только делать отбор динамического списка при изменении значения не надо
Я так понимаю, что-то надо тут поменять. Но просто убрать цикл - недостаточно

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
&НаКлиенте
Процедура Продолжительность1НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ДанныеВыбора = ПолучитьЗначенияНаСервере();
КонецПроцедуры
 
//ПриИзменении устанавливаем отбор по выбранному значению для записей динамического Списка
&НаКлиенте
Процедура Продолжительность1ПриИзменении(Элемент)
    Список.Отбор.Элементы.Очистить();
    Если Продолжительность <> 0 Тогда //отбор будем устанавливать только, если значение выбрано
        ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Продолжительность");
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбора.Использование = Истина;
        ЭлементОтбора.ПравоеЗначение = Продолжительность;
    КонецЕсли;
КонецПроцедуры
 
//эта функция вернет нам в список выбора все существующие варианты Производительности из справочника
&НаСервере
Функция ПолучитьЗначенияНаСервере()
    ДанныеВыбора = Новый СписокЗначений;
    Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ
                          | Курсы.Продолжительность КАК Продолжительность
                          |ИЗ
                          | Справочник.Курсы КАК Курсы
                          |
                          |УПОРЯДОЧИТЬ ПО
                          | Продолжительность");
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        ДанныеВыбора.Добавить(Выборка.Продолжительность);
    КонецЦикла;
    Возврат ДанныеВыбора;
КонецФункции
0
6 / 6 / 2
Регистрация: 24.04.2014
Сообщений: 107
04.11.2016, 20:25  [ТС] 12
Если не выставлять продолжительность, а просто выделить записи, то они не переносятся на печать
Миниатюры
Фильтр для печати по значению в выпадающем списке   Фильтр для печати по значению в выпадающем списке  
0
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
06.11.2016, 22:46 13
Nick96, неа, фишка не в том. А в том, что переносится продолжительность равная 0, таких значений у выбранных элементов видимо нет, потому и пусто в табличном документе...
Так вышло потому что у реквизита формы Продолжительность тип Число, и здесь надо сделать оговорку значение 0 - это значение выбранной продолжительности или это "значение не выбрано, учитываем все".
Варианты выхода из ситуации: посмотреть у товарища по ссылке выше, как реализовано через тип Продолжительности Строка, со значением "Все". Или условно принять 0 как "Все". Тогда можно в запросе изменить:
1C
1
2
3
4
5
6
7
8
9
10
11
12
Запрос.Текст =
    "ВЫБРАТЬ
    |   Курсы.ДатаНачала,
    |   Курсы.Код,
    |   Курсы.Наименование,
    |   Курсы.Преподаватель,
    |   Курсы.Продолжительность,
    |   Курсы.Стоимость
    |ИЗ
    |   Справочник.Курсы КАК Курсы
    |ГДЕ
    |   Курсы.Ссылка В (&Ссылка)" + ?(Продолжительность<>Неопределено И Продолжительность<>0, " И Курсы.Продолжительность = &Продолжительность", "");
1
06.11.2016, 22:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2016, 22:46
Помогаю со студенческими работами здесь

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

Удобочитаемые значения отображения для enum-а в выпадающем списке
У меня есть enum, я хочу из него делать сразу выпадающий список, но названия нужны русские как это...

В выпадающем списке подсказок для Canvas нет метода TextOut
В выпадающем списке методов и свойств канвы нет метода TextOut. Что нужно сделать, чтобы он...

Значение в выпадающем списке
Добрый день. Есть калькулятор. Там есть поля для ввода цифр обычные, и есть один выпадающий...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru