Заполнение списков для отборов в отчетах и обработках

Публикация № 72469

Разработка - Математика и алгоритмы

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

Этот набор состоит из СпискаЗначений на форме для отбора, Кнопок для работы со списком и Процедур вызываемых кнопками, ну и конечно же Отбором в запросе

Список должен иметь имя Выб, (например ВыбНоменклатура, ВыбСырье)

Кнопки:

Добавить с Формулой Добавить("[.]",ФлагМножПодбора=0) (например Добавить("Номенклатура"),Добавить("Сырье.Номенклатура"),Добавить("Сырье.Материалы",1)). Для добавления одной (ФлагМножПодбора=0) или нескольких (ФлагМножПодбора=1) позиций в список.

ИмяОтбора - Имя, используемое для объединения отбора в одну группу для списка, кнопок и переменной в запросе.

ВидСправочника - Используется для выбора значения, когда в отборе могут участвовать значения из разных справочников. Например, Номенклатура и Материалы или Кассы и РасчетныеСчета

Если ВидСправочника не используется, то за ВидСправочника берется само ИмяОтбора

Удалить с именем КнУд (например КнУдНоменклатура,КнУдСырье), с формулой УдалитьСтр("") (например УдалитьСтр("Номенклатура"), УдалитьСтр("Сырье"))

Удалить всё с именем КнУдВсе , с формулой Выб.УдалитьВсе();Форма.КнУдВсе.Доступность(0);Форма.КнУд.Доступность(0)

(прим. формулу тоже можно конечно реализовать в виде процедуры, но не заморачивало никогда, потому как все просто, причем если не заморачиваться с доступностью, то формула вообще упрощается до Выб.УдалитьВсе())

 

Для доп отборов соответственно нужно Добавить ещё комплект Список и Кнопки.

 

В Модуль формы отчета/обработки нужно добавить:

Перем ИмяПодбора;

//******************************************************************************
Процедура Добавить(Тип="Номенклатура",Реж=0)
    Перем ФормаПодбора;
    МестоРазделителя=Найти(Тип,".");
    ИмяПодбора=?(МестоРазделителя=0,Тип,Лев(Тип,МестоРазделителя-1));
    Тип_=?(МестоРазделителя=0,Тип,Сред(Тип,МестоРазделителя+1));
    ОткрытьПодбор("Справочник."+Тип_,"ФромаСписка",ФормаПодбора,Реж);
    ФормаПодбора.ВыборГруппы(1)
КонецПроцедуры

//******************************************************************************
Процедура ОбработкаПодбора(Эл)
    Перем Спис,КнУдВсе,КнУд;
    Стр=Шаблон("[глПрисвоить(Спис,Выб"+ИмяПодбора+")]");
    Стр=Шаблон("[глПрисвоить(КнУдВсе,Форма.КнУдВсе"+ИмяПодбора+")]");
    Стр=Шаблон("[глПрисвоить(КнУд,Форма.КнУд"+ИмяПодбора+")]");
    Спис.Установить(?(Эл.ЭтоГруппа()=0,"","*Группа*-")+СокрЛП(Эл.Наименование)+" (Код-"+СокрЛП(Эл.Код)+")",Эл.ТекущийЭлемент());
    КнУдВсе.Доступность(1);
    КнУд.Доступность(1)
КонецПроцедуры

//******************************************************************************
Процедура УдалитьСтр(Тип="Номенклатура")
    Перем Спис,КнУдВсе,КнУд;
    Стр=Шаблон("[глПрисвоить(Спис,Выб"+Тип+")]");
    Стр=Шаблон("[глПрисвоить(КнУдВсе,Форма.КнУдВсе"+Тип+")]");
    Стр=Шаблон("[глПрисвоить(КнУд,Форма.КнУд"+Тип+")]");
 
    РСпис=Спис.РазмерСписка();
    НСтр=Спис.ТекущаяСтрока();
    Ф=0;
    Если Число(НСтр)>0 Тогда
        Спис.УдалитьЗначение(НСтр);
        Ф=1
    КонецЕсли;
    Если (РСпис>1) И (Ф=1) Тогда
        Спис.ТекущаяСтрока(?(НСтр<>РСпис,НСтр,НСтр-1))
    КонецЕсли;
    Если (РСпис=1) И (Ф=1) Тогда
        КнУдВсе.Доступность(0);
        КнУд.Доступность(0)
    КонецЕсли
КонецПроцедуры

К запросу естественно добавляю эти отборы простым способом

Если Выб.РазмерСписка()>0 Тогда
    ТекстЗапроса=ТекстЗапроса+"Условие(Выб.Принадлежит()=1);"
КонецЕсли;

Например так:

Если ВыбНоменклатура.РазмерСписка()>0 Тогда
    ТЗЗ=ТЗЗ+"Условие(ВыбНоменклатура.Принадлежит(Продукция)=1);"
КонецЕсли;
Если ВыбСырье.РазмерСписка()>0 Тогда
    ТЗЗ=ТЗЗ+"Условие(ВыбСырье.Принадлежит(Затрата)=1);"
КонецЕсли;

Ну и ещё у меня в ГМ находится функция (везде сразу вставляю, нравится)

//******************************************************************************
Функция глПрисвоить(Чему,Что) Экспорт
 // Этой фукцией можно присваивать Чему значение Что
 // Шаблон("[глПрисвоить("+("НазвРекв"+Н)+","+(ЗначРекв)+")]");
     Чему = Что;
     Возврат ""
КонецФункции

 

Но если её не ставить в ГМ, то нужно её тоже добавить в модуль формы отчета/обработки

 

В конечном итоге, создание нового такого отчета у меня начинается с копипасты списка, кнопок и куска модуля с какого-то уже готового такого вот простого отчета, если нужно (бывает все теже наборы фильтров) переименовываю список, имя отбора, Вид справочника и кнопки удаления и начинаю уже воять отчет, потому как работа с созданием отбора уже закончена. Т.о. на создание одного набора отбора уходит около пары минут с перекурами Cool

4

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. ne_en 49 01.07.10 11:16 Сейчас в теме
В качестве развития темы есть мысли, но нет особого желания сделать возможность добавления одной кнопкой, типа: Добавить("Сырье(Материалы,Номенклатура)",1), чтоб при нажатии кнопки выпадал списочек (например в виде меню) для выбора вида справочника. Причем получится выбор одного справочника без списка не исключается (Добавить("Сырье(Материалы)",1))
2. ne_en 49 01.07.10 11:22 Сейчас в теме
Эх... Хорошо бы чтоб на сайте была кнопочка для автоматической расцветки модулей... Хотя бы в режиме создания темы
3. Арчибальд 2708 01.07.10 11:28 Сейчас в теме
4. Ёпрст 1036 01.07.10 19:21 Сейчас в теме
Ээх.. кто бы нормальный поиск сделал:
http://infostart.ru/public/14653/

А по теме - универсальней МФ во всех отчетах типовых еще ничего нет, в лучшем случае, Класс.МножественныйФильтр и его аналоги...

И нафига такой "велосипед" ? Неудобно.
1 список- туды-сюда, а если их будет штук 10 ??
А доп условия на список ? Входит в список/не входит/все кроме и т.д...

Так,что смотрите типовые отчеты, МФ оттуда прикручивается за 2 сек в любой свой отчет.


5. ne_en 49 02.07.10 04:35 Сейчас в теме
(4) Ну когда чё понавороченее, так и делаю, а когда за 30 минут навоять отчетик с парой тройкой отборов, тогда вот так вот.
6. Ёпрст 1036 02.07.10 08:44 Сейчас в теме
(5) неудобно. Даже иметь 2 списка значений на форме - не комильфо.
7. ne_en 49 07.07.10 03:42 Сейчас в теме
(6) А в МФ типа один список :)
Оставьте свое сообщение

См. также

.NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия 51

Статья Программист Нет файла v7.7 v8 Windows Бесплатно (free) Разработка внешних компонент Математика и алгоритмы

Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия, а так же генерация модулей на C# и 1С для подключения к событиям. Использование DynamicMethod и ILGenerator. Представлены примеры для использовании событий System.IO.FileSystemWatcher (Ожидает уведомления файловой системы об изменениях и инициирует события при изменениях каталога или файла в каталоге.) и SerialPort (обработка сканера штрих кода подключенного к COM порту). Обертка позволяет использовать классы .Net только на языке 1С. Реализация 1C Messenger описанного здесь http://infostart.ru/public/434771/

12.11.2015    41602    Serginio    35       

Ликбез 7.7: Инициализация переменных во внешнем отчете. 3

Статья Программист Нет файла v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free) Математика и алгоритмы

Хотя апологеты самодокументированных программ категорически не рекомендовали передавать в процедуры параметры-ссылки, все же иногда хочется.

25.06.2010    13737    Арчибальд    18       

УРБД, типы миграции (Буферные документы, буферные элементы) 7

Статья Программист Нет файла v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free) Распределенная БД (УРИБ, УРБД) Математика и алгоритмы

Часто при использовании стандартного механизма УРБД в 1С:Предприятии 7.7 нехватает типа миграции "центр и место назначения". Данная статейка излагает лишь возможный принцип решения данной проблемы.

08.06.2009    9022    Bosma    4       

Как определить путь к Информационной Базе? 7

Статья Бухгалтер Нет файла v7.7 1cv7.md Россия Windows Бесплатно (free) Математика и алгоритмы

Мне приходится общаться с бухгалтерами, которые работают не в соседней комнате, а в соседней области. Бухгалтера часто слабо разбираются в нюансах работы с файловой системой, поэтому вопрос о том, в каком каталоге находится база данных 1С, ставит бухгалтеров в тупик.

13.03.2009    72025    anempadest    26       

OLE в 1С-Предприятии 45

Статья Программист Нет файла v7.7 1cv7.md Windows Бесплатно (free) Математика и алгоритмы 1С7.7<->1C7.7

Небольшая инструкция с примерами - как работать с OLE

09.08.2008    28441    Minotavrik    8       

1С:Конвертация данных: Способ переноса дерева элементов справочников между разнородными конфигурациями. 6

Статья Программист Нет файла v7.7 1cv7.md КД Windows Бесплатно (free) Математика и алгоритмы Обмен через XML 1С7.7<->1C7.7

Данная задача возникает когда необходимо перенести справочники между конфигурациями у которых различается количество уровней. Например, количество уровней в справочнике "Номенклатура" в конфигурации "Торговля и Склад" - 5, а в конфигурации "Бухгалтерия" - 4. Самое простое решение - отбросить реквизит "Родитель" элементов справочника при выгрузке, но есть способ элегантнее. В данном случае мы не обсуждаем возможность изменения структуры справочника в базе-приемнике конфигурации "1С:Бухгалтерия".

23.06.2008    11351    api.vl    2       

Много общих журналов + гибкие закладки 13

Статья Программист Нет файла v7.7 1cv7.md Windows Бесплатно (free) Обработка документов Математика и алгоритмы Работа с интерфейсом

Общий журнал в ТиС имеет удобный механизм отбора, однако, жальба, что из меню можно открыть только один его экземпляр. Исправляем... А также добавляем "гибкие" закладки.

21.10.2007    14066    Shaman100M    20       

Что такое ТА - точка актуальности итогов 38

Статья Программист Нет файла v77::ОУ 1С7:ТиС Россия Бесплатно (free) Математика и алгоритмы

Статья посвящена точке актуальности итогов - одному из важнейших понятий компоненты "Оперативный учет".

04.05.2007    41396    adv73    31       

Продвинутая технология внешних печатных форм 60

Статья Программист Нет файла v7.7 1cv7.md Windows Бесплатно (free) Универсальные печатные формы Математика и алгоритмы

Технология позволяет создавать внешние печатные формы на основе существующих встроенных с минимальными изменениями кода и макета таблицы. Ввод в печатные формы и запоминание в базе любой дополнительной информации без проблем с обновлением конфигурации.

18.02.2007    25150    clappa    10       

Печатные формы для 1С:Бухгалтерии (примеры к статье "Продвинутая технология внешних форм") 88

Инструменты и обработки Программист Внешняя обработка (ert,epf) v7.7 1cv7.md Windows Бесплатно (free) Универсальные печатные формы Математика и алгоритмы

Технология позволяет создавать внешние печатные формы на основе существующих встроенных с минимальными изменениями кода и макета таблицы. Ввод в печатные формы и запоминание в базе любой дополнительной информации без проблем с обновлением конфигурации.

18.02.2007    17890    975    clappa    16       

Методическое пособие "Основные объекты" 93

Статья Программист Нет файла v7.7 1cv7.md Россия Бесплатно (free) Математика и алгоритмы

Методические пособие для начинающих программистов в среде 1С:Предприятие 7.7.

09.10.2006    14351    GROOVY    29       

Учет материалов по принципу LIFO/FIFO в типовой бухгалтерии 7.7 ред. 4.5 5

Статья Программист Нет файла v7.7 1С7:ТиС 1С7:ПУБ Россия БУ УУ Учет ТМЦ Бесплатно (free) Математика и алгоритмы

Описание идеи реализации учета материалов по принципу FIFO/LIFO в типовой бухгалтерии без внесения изменений в конфигурацию посредством пересчета данных внешней обработкой и формирования корректирующих проводок

24.05.2006    12089    Timesoft    4