Быстрый отбор в справочнике по первой букве

12.06.10

Задачи пользователя - Адаптация типовых решений

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

Скачать файлы

Наименование Файл Версия Размер
СписокСотрудников.epf
.epf 7,10Kb
143
.epf 7,10Kb 143 Скачать
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ  

&НаКлиенте
Процедура УстановитьПометку(Команда)

	Для Каждого Кнопка Из Элементы.ПанельСБуквами.ПодчиненныеЭлементы Цикл
		Кнопка.Пометка = (Команда.Имя = Кнопка.Имя);
	КонецЦикла;

КонецПроцедуры // УстановитьПометку()

&НаСервере
Процедура ПодготовитьДинамическийСписок()

	Список.ПроизвольныйЗапрос = Истина;
	ТекстЗапроса =
	"ВЫБРАТЬ *
	|ИЗ
	|	%ИмяТаблицы% КАК Т
	|{ГДЕ
	|	(ПОДСТРОКА(Т.Наименование, 1, 1) В (&СписокБукв))}";
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%ИмяТаблицы%", Список.ОсновнаяТаблица);
	Список.ТекстЗапроса = ТекстЗапроса;

КонецПроцедуры // ПодготовитьДинамическийСписок()

&НаСервере
Процедура СоздатьПанельСБуквами()

	ПанельСБуквами = Элементы.Вставить("ПанельСБуквами", Тип("ГруппаФормы"), ЭтаФорма, Элементы.Список);
	ПанельСБуквами.Вид = ВидГруппыФормы.КоманднаяПанель;
	
	// кнопка "Все"
	КомандаФормы = Команды.Добавить("Все");
	КомандаФормы.Действие = "УдалитьФильтрПоПервойБукве";
	
	КнопкаФормы = Элементы.Добавить("Все", Тип("КнопкаФормы"), ПанельСБуквами);
	КнопкаФормы.ИмяКоманды = "Все";
	КнопкаФормы.Пометка = Истина;
	
	// кнопки А...Я
	Для Сч = КодСимвола("А") По КодСимвола("Я") Цикл
		
		ИмяКоманды = Символ(Сч);
		Если Найти("Ё,Й,Ъ,Ь", ИмяКоманды) > 0 Тогда
			Продолжить;
		КонецЕсли;
		
		КомандаФормы = Команды.Добавить(ИмяКоманды);
		КомандаФормы.Действие = "УстановитьФильтрПоПервойБукве";
		
		КнопкаФормы = Элементы.Добавить(ИмяКоманды, Тип("КнопкаФормы"), ПанельСБуквами);
		КнопкаФормы.ИмяКоманды = ИмяКоманды;
		
	КонецЦикла;

КонецПроцедуры // СоздатьПанельСКнопками()

////////////////////////////////////////////////////////////////////////////////
// КОМАНДЫ МОДУЛЯ 

&НаКлиенте
Процедура УстановитьФильтрПоПервойБукве(Команда)
	
	Буква = Команда.Имя;
	
	СписокБукв = Новый Массив;
	СписокБукв.Добавить(Буква);
	СписокБукв.Добавить(НРег(Буква));
	
	Если Буква = "Е" Тогда
		СписокБукв.Добавить("Ё");
		СписокБукв.Добавить("ё");
	КонецЕсли;
	
	Если Буква = "И" Тогда
		СписокБукв.Добавить("Й");
		СписокБукв.Добавить("й");
	КонецЕсли;
	
	Список.Параметры.УстановитьЗначениеПараметра("СписокБукв", СписокБукв);
	
	УстановитьПометку(Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура УдалитьФильтрПоПервойБукве(Команда)
	
	ПараметрКомпоновкиДанных = Новый ПараметрКомпоновкиДанных("СписокБукв");
	ЗначениеПараметраКомпоновкиДанных = Список.Параметры.НайтиЗначениеПараметра(ПараметрКомпоновкиДанных);
	Если ЗначениеПараметраКомпоновкиДанных = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ЗначениеПараметраКомпоновкиДанных.Использование = Ложь;
	
	УстановитьПометку(Команда);
	
КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ 

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ПодготовитьДинамическийСписок();
	СоздатьПанельСБуквами();
	
КонецПроцедуры // ПриСозданииНаСервере()

Данный текст необходимо вставить в модуль формы списка справочника.

Процедуру "ПриСозданииНаСервере" вручную назначить обработчиком одноименного события формы.
События формы

Если данному событию уже назначен обработчик, то необходимо дополнить его строками процедуры "ПриСозданииНаСервере" из листинга.

Реквизита формы "Список" не должен содержать произвольного запроса. Если список формируется произвольным запросом, то в запрос необходимо дописать условие компоновки:
 {ГДЕ (ПОДСТРОКА(ИмяТаблицы.Наименование, 1, 1) В (&СписокБукв))}
и удалить процедуру "ПодготовитьДинамическийСписок" и все ее вызовы.

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4453    9    4    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    2956    4    0    

19

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

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

01.03.2024    1282    dimanich70    6    

13

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Доработка типового отчета "Связанные документы" позволяет просто и быстро расширять состав объектов для построения структуры подчиненности документов, используя объекты основной конфигурации и любых расширений.

1 стартмани

27.10.2023    1996    13    avmartynov    10    

43

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2072    21    progmaster    7    

3
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Evg-Lylyk 4559 12.06.10 12:26 Сейчас в теме
Интересная идея. Еще можно в запрос динамического списка добавить поле ПОДСТРОКА(Наименование,1,1) КАК ПерваяБукваФИО и по нему делать группировку получится как то так... подругому
Прикрепленные файлы:
Поручик; DoctorRoza; +2 Ответить
6. Alav 13 13.06.10 01:52 Сейчас в теме
(1) Типовая БП. Рабочая места кадровика. Все сотрудники тоже сгруппированы по первым буквам алфавита
2. Душелов 4013 12.06.10 13:58 Сейчас в теме
3. DoctorRoza 12.06.10 15:16 Сейчас в теме
Отличная идея! Мне понравилась .. возьму на вооружение! :idea:
4. Re:аниматор 338 12.06.10 17:06 Сейчас в теме
(3) данная идея уже существует в рарусовских конфах еще на 7.7 с 2003 года 100%.
также "Все" и буквы ... через закладки страниц

увы, но идея старая

Алфавит = "АБВ ГДЕ ЁЖЗ ИЙК ЛМН ОПР СТУ ФХЦ ЧШЩ ЪЫЬ ЭЮЯ";

Форма.ИспользоватьЗакладки(1);
Форма.Закладки.ДобавитьЗначение("Все");
ИерархическийСписок(1);
Для К = 1 ПО 43 Цикл
Форма.Закладки.ДобавитьЗначение(Сред(Алфавит,К,3));
К = К + 3;
КонецЦикла;

...
5. Armando 1399 12.06.10 21:56 Сейчас в теме
(4) хм, надо же какое совпадение. Из рарусовских видел только УАТ на восьмерке. Там этого точно нет. Такая штука была у нас в старой корпоративной базе на MS Access. Вот пользователи и запросили, чтоб как раньше. Не хотел я плагиатить, чесслово.
7. Re:аниматор 338 13.06.10 06:28 Сейчас в теме
(5) решение отличное, без вопросов, а вот тем кто про идею, это уже старое решение :) лично я использую в своих конфах с 2003 года, на 7.7, 8.0, 8.1, 8.2 ... (надеюсь)

8. Rodegast 14.06.10 11:07 Сейчас в теме
Почему цифр нет? У меня справочник с контрагентами где есть какая то 1С. :D
А так +1
9. Armando 1399 14.06.10 13:03 Сейчас в теме
(8) Потому что это всего лишь пример ;) . А ведь можно еще и латиницу прикрутить или вообще вот так:
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ПОДСТРОКА(Т.Наименование, 1, 1) КАК ПерваяБукваНаименования
ИЗ
	%ИмяТаблицы% КАК Т

УПОРЯДОЧИТЬ ПО
	ПерваяБукваНаименования
Поручик; kivals; +2 Ответить
12. kivals 5 16.06.10 14:35 Сейчас в теме
(9) Такая же мысль в голову пришла :)
Можно еще чтобы не нарушать алфавит добавить обязательные буквы алфавита (как у автора: без Ё,Й,Ъ,Ь), и сделать ПОЛНОЕ СОЕДИНЕНИЕ с запросом.
Тогда быквы, не найденные в справочнике, можно будет сделать недоступными и кроме того быть уверенным, что попадут все первые буквы названий
10. detec 136 15.06.10 10:37 Сейчас в теме
Супер! Удобный, без проблем встраиваемый код!
11. homutke 48 16.06.10 11:28 Сейчас в теме
Интересно как это будет работать на китайском языке :o
13. RailMen 823 17.06.10 01:01 Сейчас в теме
Armando, привет!
Идея стара, но ее реализация академична.
Меня больше свего впечатляет как ты оформил публикацию.
Напиши отдельную статью как красиво оформить публикацию: как вставлять куски кода с прокруткой, как вставлять картинки и прочее. Или ссылку если такие уже есть. Буду безмерно признателен.
14. Armando 1399 28.06.10 22:28 Сейчас в теме
(13) Привет!
Сам не понял откуда там прокрутка взялась. С первого раза даже не разобрался как от нее избавиться)))
16. Арчибальд 2706 18.09.10 12:51 Сейчас в теме
15. helenchekc 18.09.10 12:17 Сейчас в теме
Здравствуйте, я решила установить даный модуль в список Контактные лица, после чего с начала исчезли все колонки в списке кроме ФИО, помучавшись над возвращением колонок, я решила вернуть так как было... и теперь вообще когда выибираешь справочник Контактные лица - программа вылетает ((((( :?:
17. Поручик 4670 19.09.10 01:30 Сейчас в теме
(15) Ужасть просто. Извините, а вы руки вы.., то есть я хотел сказать, делали всё по инструкции?
18. helenchekc 20.09.10 12:16 Сейчас в теме
Да, если выше перечисленный текст - это инструкция.... Хотя не могу назвать себя профи )), но этого момента начего подобного не случалось и при том справочник Контрагенты - работает нормально... Хотя я из него тоже после установки, удалила эту обработку
Оставьте свое сообщение