1С 8.3 Получить количество строк динамического списка - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Получить количество строк динамического списка

Данные > Примеры кода 1С > 1С 8.3 Динамический список
Вариант 1. Программно получить количество строк динамического списка в 1С 8.3:
&НаСервере
Процедура ПолучитьКоличествоСтрокВдинамическомСписке()

   
ТЗ_ДС = СписокВТЗ();
   
КолСтрокДС =ТЗ_ДС.Количество();
   
Сообщить("Количество строк динамического списка = "+КолСтрокДС);

КонецПроцедуры

&НаСервере
Функция СписокВТЗ()

   
//Получаем СКД с текстом запроса
   
СКД_запрос = Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();

   
//Получаем настройки пользователя (отборы, сортировки и т.п.)
   
Настройки = Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();

   
//Переводим динамический список в таблицу значений
   
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
   
МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД_запрос, Настройки, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

   
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);

   
ПроцессорВыводаРезультата = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
   
ТЗ = ПроцессорВыводаРезультата.Вывести(ПроцессорКомпоновкиДанных);// Таблица значений

   
Возврат ТЗ;

КонецФункции
Вариант 2. Программно получить количество строк динамического списка в 1С 8.3:
// Возвращает количество строк динамического списка
//
// Параметры:
//  ЭтаФорма - ФормаКлиентскогоПриложения - Форма клиентского приложения
//  Список     - строка - имя динамического списка
//
// Возвращаемое значение:
//  Строка - количество строк в динамическом списке
//
Функция ПолучитьКоличествоВДинамСписке(ЭтаФорма, Список) Экспорт

   //Получаем СКД с текстом запроса:
   СКД_запрос = ЭтаФорма.Элементы[Список].ПолучитьИсполняемуюСхемуКомпоновкиДанных();
   //Получаем настройки пользователя (отборы, сортировки и т.п.):
   Настройки = ЭтаФорма.Элементы[Список].ПолучитьИсполняемыеНастройкиКомпоновкиДанных();

   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД_запрос, Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

   Запрос = Новый Запрос;
   Запрос.Текст = МакетКомпоновки.НаборыДанных.НаборДанныхДинамическогоСписка.Запрос;

   ПозВыбратьНачало = СтрНайти(Запрос.Текст, "ВЫБРАТЬ ", НаправлениеПоиска.СКонца);
   Пока НЕ ПозВыбратьНачало = 1
       и НЕ Сред(Запрос.Текст, ПозВыбратьНачало - 1, 1) = Символы.ПС Цикл
       ПозВыбратьНачало = СтрНайти(Запрос.Текст, "ВЫБРАТЬ ", НаправлениеПоиска.СКонца, ПозВыбратьНачало - 1);
   КонецЦикла;
   ПозВыбратьКонец = СтрНайти(Запрос.Текст, Символы.ПС,, ПозВыбратьНачало);

   СтрокаВЫБРАТЬ = Лев(Запрос.Текст, ПозВыбратьКонец);
   СтрокаИз = Сред(Запрос.Текст, СтрНайти(Запрос.Текст, Символы.ПС + "ИЗ" + Символы.ПС,, ПозВыбратьКонец));

   Если СтрНайти(СтрокаИз, Символы.ПС + "СГРУППИРОВАТЬ") Тогда
       СтрокаИз = Лев(СтрокаИз, СтрНайти(СтрокаИз, Символы.ПС + "СГРУППИРОВАТЬ"));
   КонецЕсли;

   Запрос.Текст = СтрокаВЫБРАТЬ + "Количество(*) КАК Кол" + СтрокаИз;
   Если СтрНайти(Запрос.Текст, Символы.ПС + "УПОРЯДОЧИТЬ ПО",, ПозВыбратьКонец) Тогда
       Запрос.Текст = Лев(Запрос.Текст, СтрНайти(Запрос.Текст, Символы.ПС + "УПОРЯДОЧИТЬ ПО",, ПозВыбратьКонец));
   КонецЕсли;

   Для Каждого парам Из МакетКомпоновки.ЗначенияПараметров Цикл
       Запрос.УстановитьПараметр(парам.Имя, парам.Значение);
   КонецЦикла;

   Попытка
       Результат = Запрос.Выполнить();
   Исключение
       ЗаписьЖурналаРегистрации("КоличествоВСписке в Списке " + ЭтаФорма.ИмяФормы, УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
   КонецПопытки;

   Выборка = Результат.Выбрать();
   Выборка.Следующий();

   Возврат Выборка.Кол;

КонецФункции
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 25.02.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому