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