Источник: https://infostart.ru/1c/articles/953025/
// Возвращает количество строк динамического списка
//
// Параметры:
// ЭтаФорма - ФормаКлиентскогоПриложения - Форма клиентского приложения
// Список - строка - имя динамического списка
//
// Возвращаемое значение:
// Строка - количество строк в динамическом списке
//
Функция ПосчитатьКоличествоВДинамСписке(ЭтаФорма, Список) Экспорт
Схема = ЭтаФорма.Элементы[Список].ПолучитьИсполняемуюСхемуКомпоновкиДанных();
Настройки = ЭтаФорма.Элементы[Список].ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
Запрос = Новый Запрос;
Запрос.Текст = МакетКомпоновки.НаборыДанных.НаборДанныхДинамическогоСписка.Запрос;
ПозВыбратьНачало = СтрНайти(Запрос.Текст, "ВЫБРАТЬ ", НаправлениеПоиска.СКонца);
Пока НЕ ПозВыбратьНачало = 1
и НЕ Сред(Запрос.Текст, ПозВыбратьНачало - 1, 1) = Символы.ПС Цикл
ПозВыбратьНачало = СтрНайти(Запрос.Текст, "ВЫБРАТЬ ", НаправлениеПоиска.СКонца, ПозВыбратьНачало - 1);
КонецЦикла;
ПозВыбратьКонец = СтрНайти(Запрос.Текст, Символы.ПС,, ПозВыбратьНачало);
СтрокаВЫБРАТЬ = Лев(Запрос.Текст, ПозВыбратьКонец);
СтрокаИз = Сред(Запрос.Текст, СтрНайти(Запрос.Текст, Символы.ПС + "ИЗ" + Символы.ПС,, ПозВыбратьКонец));
Если СтрНайти(СтрокаИз, Символы.ПС + "СГРУППИРОВАТЬ") Тогда
СтрокаИз = Лев(СтрокаИз, СтрНайти(СтрокаИз, Символы.ПС + "СГРУППИРОВАТЬ"));
КонецЕсли;
Запрос.Текст = СтрокаВЫБРАТЬ + "Количество(*) КАК Кол" + СтрокаИз;
Если СтрНайти(Запрос.Текст, Символы.ПС + "УПОРЯДОЧИТЬ ПО",, ПозВыбратьКонец) Тогда
Запрос.Текст = Лев(Запрос.Текст, СтрНайти(Запрос.Текст, Символы.ПС + "УПОРЯДОЧИТЬ ПО",, ПозВыбратьКонец));
КонецЕсли;
Для Каждого парам из МакетКомпоновки.ЗначенияПараметров Цикл
Запрос.УстановитьПараметр(парам.Имя, парам.Значение);
КонецЦикла;
Попытка
Результат = Запрос.Выполнить();
Исключение
ЗаписьЖурналаРегистрации("КоличествоВСписке в Списке " + ЭтаФорма.ИмяФормы, УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
КонецПопытки;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка.Кол;
КонецФункции
Получить выделенные строки списка (с сохранением выделения)
Значение строки поиска динамического списка
Получение данных динамического списка
ОтборДинамическогоСписка (БСП)
СтруктураСвойствДинамическогоСписка (БСП)
НастроитьОтборыДинамическогоСписка (БСП)
УстановитьСвойстваДинамическогоСписка (БСП)