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

12.06.10

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

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

Скачать файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

29400 руб.

29.06.2023    5037    11    5    

20

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

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

7200 руб.

02.08.2023    3404    7    0    

26

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

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    4620    dimanich70    15    

20

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

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

01.03.2024    3055    dimanich70    8    

15

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

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

1 стартмани

27.10.2023    2421    20    avmartynov    14    

44

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

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

2 стартмани

22.08.2023    2698    40    progmaster    8    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Evg-Lylyk 4726 12.06.10 12:26 Сейчас в теме
Интересная идея. Еще можно в запрос динамического списка добавить поле ПОДСТРОКА(Наименование,1,1) КАК ПерваяБукваФИО и по нему делать группировку получится как то так... подругому
Прикрепленные файлы:
Поручик; DoctorRoza; +2 Ответить
6. Alav 13 13.06.10 01:52 Сейчас в теме
(1) Типовая БП. Рабочая места кадровика. Все сотрудники тоже сгруппированы по первым буквам алфавита
2. Душелов 4018 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 1400 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 1400 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 824 17.06.10 01:01 Сейчас в теме
Armando, привет!
Идея стара, но ее реализация академична.
Меня больше свего впечатляет как ты оформил публикацию.
Напиши отдельную статью как красиво оформить публикацию: как вставлять куски кода с прокруткой, как вставлять картинки и прочее. Или ссылку если такие уже есть. Буду безмерно признателен.
14. Armando 1400 28.06.10 22:28 Сейчас в теме
(13) Привет!
Сам не понял откуда там прокрутка взялась. С первого раза даже не разобрался как от нее избавиться)))
16. Арчибальд 2707 18.09.10 12:51 Сейчас в теме
15. helenchekc 18.09.10 12:17 Сейчас в теме
Здравствуйте, я решила установить даный модуль в список Контактные лица, после чего с начала исчезли все колонки в списке кроме ФИО, помучавшись над возвращением колонок, я решила вернуть так как было... и теперь вообще когда выибираешь справочник Контактные лица - программа вылетает ((((( :?:
17. Поручик 4683 19.09.10 01:30 Сейчас в теме
(15) Ужасть просто. Извините, а вы руки вы.., то есть я хотел сказать, делали всё по инструкции?
18. helenchekc 20.09.10 12:16 Сейчас в теме
Да, если выше перечисленный текст - это инструкция.... Хотя не могу назвать себя профи )), но этого момента начего подобного не случалось и при том справочник Контрагенты - работает нормально... Хотя я из него тоже после установки, удалила эту обработку
Оставьте свое сообщение