January 7
Количество записей с учетом отбора
Бывает так, в современной 1С с помощью удобного механизма поиска-отбора получили нужный список. А сколько в нем записей? Для решения этой простой задачи ожидается какая-нибудь стандартная кнопка, но ее до сих пор нет...
Однажды с интересом наблюдал, как с этой проблемой борется продвинутый аналитик: Еще - Вывести список - Табличный документ, а потом скачем в самый низ, номер последней строки - это и есть искомое число. По дороге к маразму можно конечно уйти далеко. Вместо этого, я во всех своих доработках вставляю кнопку "Количество записей с учетом отбора" с простой командой.
&НаСервере Процедура КоличествоЗаписейНаСервере() Схема = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных(); Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных(); МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); Запрос = Новый Запрос; Запрос.Текст = МакетКомпоновки.НаборыДанных.НаборДанныхДинамическогоСписка.Запрос; Для Каждого Парам из МакетКомпоновки.ЗначенияПараметров Цикл Запрос.УстановитьПараметр(Парам.Имя, Парам.Значение); КонецЦикла; Сообщить(Запрос.Выполнить().Выбрать().Количество()); КонецПроцедуры &НаКлиенте Процедура КоличествоЗаписей(Команда) КоличествоЗаписейНаСервере(); КонецПроцедуры
&НаКлиенте Процедура КоличествоСтрок(Команда) КоличествоСтрок = 0; Для Каждого СтрокаТаблицы Из ТаблицаДанных Цикл ИдентификаторСтроки = СтрокаТаблицы.ПолучитьИдентификатор(); Если Элементы.ТаблицаДанных.ПроверитьСтроку(ИдентификаторСтроки) Тогда КоличествоСтрок = КоличествоСтрок + 1; КонецЕсли; КонецЦикла; Сообщить(КоличествоСтрок); КонецПроцедуры
Помните, любые интерфейсные мелочи нужны и важны, если они повышают удобство для пользователей.