Универсальный 1С++ класс Faval для организации часто используемых элементов справочников и быстрого интерактивного доступ к ним

29.12.12

Разработка - Работа с интерфейсом

Чтобы организовать быстрый доступ в формах списков или отчетах к часто используемым элементам справочников конфигурации достаточно при начале работы создать экземпляр класса, указав ему какие справочники мониторить.
В формах списках достаточно разместить кнопку, по которой будет выполнятся переход к выбранному пользователем элементу из списка часто используемых.
В отчетах можно связать кнопку со списком часто используемых элементов с реквизитом формы.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Класс Faval
.ert 53,50Kb
15
15 Скачать (1 SM) Купить за 1 850 руб.
Пример внешнего отчета
.ert 49,50Kb
6
6 Скачать (1 SM) Купить за 1 850 руб.
Faval.ert.binocular.jpg
.jpg 0,46Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.
Faval.ert.star.jpg
.jpg 0,46Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.

Установка

  1. Требуется зарегистрированная 1C++ и Miracle (если необходимо создавать кнопки на панелях форм справочника).
  2. Универсальная обработка поиска и отбора http://www.1cpp.ru/forum/YaBB.pl?num=1211491690, если есть желаение ее прикрутить ко всем справочникам.
  3. Регистрируем класс Faval в defcls.prm.
  4. Файлы картинок должны лежать в одной папке с классом.

Подключаем нужные справочники

Создаем экземляр класса Faval. Указываем какие справочники нужно мониторить:

Настройки = СоздатьОбъект("УправлениеНастройками"); 

Попытка

Настройки.Включить("ПерехватитьСобытияГК");

oFavalГМ = СоздатьОбъект("Faval");

oFavalГМ.ИмяФайлаPoiskErt = КаталогИБ() + "\ExtForms\Служебные\Poisk.ert"; // Если есть необходимость вынести на панель еще и кнопку быстрого поиска

oFavalГМ.ДобавитьФэйворитДля("Справочник.Номенклатура", 1); //второй параметр указывает на необходимость создания кнопок на панели инструментов формы списка кнопок после ее открытияя

oFavalГМ.ДобавитьФэйворитДля("Справочник.Контрагенты");

oFavalГМ.ДобавитьФэйворитДля("Справочник.ТорговыеТочки");

oFavalГМ.ДобавитьФэйворитДля("Справочник.Отделы");

oFavalГМ.ДобавитьФэйворитДля("Справочник.ТоварныеГруппы");

// Вместо регистрации каждого справочника выборочно можно сделать это для всех справочников конфигурации одним методом вместо пердыдущих строк

// oFavalГМ.ДобавитьФэйворитДляВсехСправочников(Знач аДобавитьКнопкиНаСтандартнуюПанель)

Перехватчик = СоздатьОбъект("Перехватчик");

Перехватчик.ПерехватитьСобытияГлобальногоМодуля(oFavalГМ);

Перехватчик.ВключитьРазбиениеДлинныхСтрокДляМетодаСообщить(); //Ликвидация проблем с длинными строками

Исключение

Перехватчик = "";

Сообщить("Не удалось инициализировать классы Перехватчик и Faval!", "!");

КонецПопытки;

Если в конфигурации уже есть ПерехватитьСобытияГлобальногоМодуля, то можно попробовать пронаследовать ваш класс обработчик от Faval и обеспечить вызов его метода СобытиеГМ_СозданиеКонтекста(), если он перекрыт.

Выбор элемента из часто используемых в форме списка справоника

Располагаем на форме кнопку с именем кнФэйворит, по нажатию на которую пользователь получит список часто используемых элеметов этого справочника. После выбра произойдет позиционирование на выбранном элементе.

В код формы добавляем:

Перем oFaval;

Процедура ПослеОткрытия()

oFaval = СоздатьОбъект("Faval");

oFaval.СвязатьКнопкуФэйворитСРеквизитом(Контекст, "кнФэйворит",, "oFaval", "[Значение], Артикул:[Значение.Артикул]");

КонецПроцедуры // ПослеОткрытия

Последним параметром в метод СвязатьКнопкуФэйворитСРеквизитом опционально можно передать строку шаблон, которая будет применена для каждого элемента в списке часто используемых. Переменная значение содержит сам элемент.

Выбор элемента из часто используемых в реквизит формы отчета/обработки

Располагаем на форме кнопки с именем кнФНоменклатура и кнФКонтрагент, по нажатию на которые пользователь получит списоки часто используемых элеметов соответвющих справочников Номенклатура и Контрагенты. После выбра из списка произойдет подстановка выбранного в соответсвующий реквизит.

Перем oFaval;

Процедура ПослеОткрытия()

oFaval = СоздатьОбъект("Faval"); 

oFaval.СвязатьКнопкуФэйворитСРеквизитом(Контекст, "кнФНоменклатура", "поНоменклатура", "oFaval");

oFaval.СвязатьКнопкуФэйворитСРеквизитом(Контекст, "кнФКонтрагент", "поКонтрагент", "oFaval");

КонецПроцедуры // ПослеОткрытия

Использование класса напрямую

  1. Поле МаксДлинаСписка. Количество элементов в списке часто используемых для выбора пользователем. 
  2. Метод ВыбратьЗначение(Знач аФэйворитСписокИД, Знач аШаблонСтрВыбораВМеню = ""). Показывает меню с выбором часто используемых элементов справочника переданного в аФэйворитСписокИД. аШаблонСтрВыбораВМеню опеределяет шаблон каждой строки списка. См. выше.

История версий

2012-12-12
+ Возможность добавления кнопки выбора из списка часто используемых на стандартную панель формы списка справочника без
изменения кода формы справочника. Нужна зарегистрированная ВК Miracle.
+ Возможность добавления кнопки открытия обработки универсального поиска (http://www.1cpp.ru/forum/YaBB.pl?num=1211491690)
и отбора на стандартную панель формы списка справочника без изменения кода формы справочника. Нужна зарегистрированная ВК Miracle.
После создания классу нужно указать, где расположен .ert обработка
oFaval.ИмяФайлаPoiskErt = КаталогИБ() + "\ExtForms\Служебные\Poisk.ert";
+ Метод .ДобавитьФэйворитДляВсехСправочников(Знач аДобавитьКнопкиНаСтандартнуюПанель) регистрации всех имеющих справочников.
Параметр оперделяет добавлять ли на панели форм списоков кнопки доступа. Иначе будет только формироваться списки часто
используемых элементов.

 

2012-12-06

+ В меню быстрого выбора вынесен отдельно последний использованный элемент.

2012-12-05

+ Возможность включения и отключения отбора в форме списка справочника по часто используемым элементам.
* Если в списке всего один элемент пользователю все равно предоставляется выбор из меню. Раньше происходил выбор элемента.

См. также

Работа с интерфейсом Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Создание и использование на формах в среде 1С 7.7 прогрессбара, индикатора, как в 1С 8.Х для контроля над длительными процессами. Реализовано средствами языка программирования 1С 7.7.

1 стартмани

06.06.2024    712    1    user1416274    17    

2

Работа с интерфейсом Логистика, склад и ТМЦ Системный администратор Программист Пользователь Платформа 1С v7.7 1С:Торговля и склад 7.7 Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Решение для разработчика и конечного пользователя для работы с фотографиями номенклатуры: систематизация, хранение, отображение, а также выгрузка на Яндекс-Диск и FTP (кроме версии лайт). Поддерживаются графические форматы: bmp, jpg, gif, tiff, а также png - не поддерживаемый штатными средствами 1С. Выполнено без использования внешних компонент (кроме функции выгрузки на FTP). Поставляется как в виде пустой конфигурации с набором объектов и модулей для работы с фото, так и в виде обновления к 1С:Торговля и склад 7.7. Выполнено в двух версиях: "полная" и "лайт".

5000 руб.

18.10.2022    5849    1    45    

4

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v7.7 Абонемент ($m)

Обработка с фрагментами кода для программного использования набора цветов из коллекции WebЦвета 1с версии 8+ в 1с версии 77. Требуется предварительное подключение сторонней библиотеки FormEх. Будет полезно программистам 1с 77, 1с 8. Да и вообще при программировании на любом языке при потребности использовать коллекцию цветов WebЦвета.

1 стартмани

30.03.2022    4977    2    igor7777    4    

6

Работа с интерфейсом Программист Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Публикация имеет цель обратить внимание на возможность улучшения интерфейса.

15.12.2021    4849    72    Cерый    13    

7

Работа с интерфейсом Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Простая и удобная внешняя обработка для выбора цвета без применения внешних компонент.

1 стартмани

09.06.2020    7424    4    vap_pig    5    

4

Учет рабочего времени Работа с интерфейсом Программист Бухгалтер Пользователь Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Обработка производственного календаря с возможностью импорта и экспорта xls для 1С 7.7 (7.70.027) без изменения конфигурации.

1 стартмани

18.09.2019    13010    6    Jill    8    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Ёпрст 1065 28.11.12 10:26 Сейчас в теме
сам список где хоть хранится ?
2. sournk 27 28.11.12 10:40 Сейчас в теме
Использую ВосстановитьЗначение() при необходимости показать список и СохранитьЗначение() при каждом его изменении. В классе есть ограничение на его максимальную длину. Сейчас 500 элементов, поэтому не думаю, что будут какие-то тормоза из-за такого.
3. Romarius 16 28.11.12 17:24 Сейчас в теме
Подобный функционал http://infostart.ru/public/104122/
Кстати, очень удобно, когда нужно выбирать тот же элемент несколько раз в документах или отчетах
4. alyuev 204 05.12.12 16:44 Сейчас в теме
Интереснее будет другая реализация.

При выборе значения реквизита запоминать этот выбор. А при следующем выборе реквизита такого же вида делать выбор с нажатой, допустим, Ctrl. И вываливать список из последних, к примеру, 15-и выбранных.
5. sournk 27 06.12.12 08:44 Сейчас в теме
Такой сложный выбор последнего будет не очевиден для пользователя. Лучше вставлю в меню выбора еще один отдельный пункт с последним значением этого вида.
6. alyuev 204 06.12.12 15:38 Сейчас в теме
У тебя кнопка "Часто используемая номенклатура". У нас вместо неё маленькая с картинкой 15 и стрелкой вниз. Т.е. типа "Последние 15". Но помимо этого возможно сделать просто выбор элемента с нажатой Ctrl и тогда пользователю показывается этот список. Т.к. это работает через перехватчик - то и нет необходимости лепить везде кнопки "15", хотя, конечно, согласен - первоначально это удобно. Для тех, кто не знает еще про Ctrl.
7. rdv 27.12.12 11:22 Сейчас в теме
Объяни почему твой пример не работает, выскакивает сообщение что справочник пуст, да еще и это

oFaval.СлужебныйВыбор = oFaval.ВыбратьЗначение("Справочник.Контрагенты", " "); Если ПустоеЗначение(oFaval.СлужебныйВыбор) = 0 Тогда поКА <<?>>= oFaval.СлужебныйВыбор КонецЕсли;
Ожидается логическое выражение


Сколько раз надо выбрать елемент для того что бы он стал часто выбирающимся
8. sournk 27 29.12.12 11:03 Сейчас в теме
(7) Исправил обработку примера. Нельзя давать имена для реквизитов формы служебными словами! Было "поКА", что воспринималось как начало цикла. Неожиданный эффект.

> Сколько раз надо выбрать елемент для того что бы он стал часто выбирающимся
Каждому элементу считается количество раз его выбора. А в списке показывается их TOP. По дефолту 50. Можно изменить через поле класса МаксДлинаСписка.
9. rdv 14.01.13 05:11 Сейчас в теме
(8) Что то ты намутил с классом, похоже придется отладчиком воспользоваться, пока кроме что справочник пуст ничего, даже при изменении МаксДлинаСписка (, хотел в фабрику событий встроить, ладно будем ковыряться, если желание не отпадет.

Итак, с вышенаписанным разобрались, теперь попробуем дальше.
Оставьте свое сообщение