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

12.06.10

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

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

Скачать файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

Адаптация типовых решений Программист Пользователь Платформа 1С v8.3 Россия Бесплатно (free)

Что делать, если Ваш клиент не смог выйти из каменного века и вместо вменяемой часто модифицируемой под нужды современного мира конфигурации, у него неподъемный мамонт, который пережил несколько ледниковых эпох, такой неуклюжий, умирающий, но близкий к бизнесу и родной сердцу? Проблемы начинаются тогда, когда у этого мамонта отваливаются зубья, или его обладатель поглядывает на современные конфигурации и начинает желать новшеств в виде весоподъемности и скорости самолета. Да вообще и чтобы все, что должно работать, работало в конце концов, как, например, внезапно умерший сервис 1С:Контрагент! А у некоторых мамонтов, он, совершенно точно, провонял и усох. И вот как положить этот артефакт в микроволновку времени и вернуть к работоспособному состоянию.

12.05.2020    6764    0    G.Shatrov    8    

12

Адаптация типовых решений Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Часто требуется оповестить пользователя о работе с документом и, система взаимодействия для этого очень сильно подходит. В данной статье я приведу пример организации вывода оповещения автору документа. Легенда: Пользователь делает Запрос в отдел закупок специальным нетиповым документом. Отдел закупок отвечает, и у пользователя в правом нижнем углу всплывает ответ, и далее пользователи могут переписываться в чате документа, или пользователь, получив ответ, оперативно двигается дальше

09.04.2020    4153    Sangre1999    3    

17

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

Создание "предопределенных" элементов в собственном справочнике, созданном в расширении. Представлена как шаблон на конкретном примере.

1 стартмани

09.04.2020    18481    3    ivnik    8    

12

Адаптация типовых решений Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Была поставлена задача сделать ввод на основании в пакетном режиме. В списке документов пользователь выделяет несколько документов и нажимает кнопочку Ввести на основании. После этого создаются документы на основании выделенных документов.

16.03.2020    5059    John_d    9    

28

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

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

04.02.2020    7408    shiaju    6    

16
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Evg-Lylyk 4765 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. Арчибальд 2708 18.09.10 12:51 Сейчас в теме
15. helenchekc 18.09.10 12:17 Сейчас в теме
Здравствуйте, я решила установить даный модуль в список Контактные лица, после чего с начала исчезли все колонки в списке кроме ФИО, помучавшись над возвращением колонок, я решила вернуть так как было... и теперь вообще когда выибираешь справочник Контактные лица - программа вылетает ((((( :?:
17. Поручик 4684 19.09.10 01:30 Сейчас в теме
(15) Ужасть просто. Извините, а вы руки вы.., то есть я хотел сказать, делали всё по инструкции?
18. helenchekc 20.09.10 12:16 Сейчас в теме
Да, если выше перечисленный текст - это инструкция.... Хотя не могу назвать себя профи )), но этого момента начего подобного не случалось и при том справочник Контрагенты - работает нормально... Хотя я из него тоже после установки, удалила эту обработку
Оставьте свое сообщение