Подсчёт и отображение количества строк в динамическом списке

28.10.21

Разработка - Работа с интерфейсом

Зачастую пользователи хотят видеть, сколько же строк содержится в форме списка, например, товаров. Да ещё и с учётом отборов, полнотекстового или "обычного" поиска, чтобы это работало в многих формах списка конфигурации, да ещё и не тормозило.

Скачать файл

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

Наименование Бесплатно
Подсчёт и отображение количества строк в динамическом списке:
.cf 79,96Kb
85
85 Скачать бесплатно

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

(Обновил публикацию, теперь процедура более универсальна и работает с виртуальными таблицами в запросе динамического списка)

Получение данных динамического списка

Отображать на форме счетчик решил кнопкой командной панели. Так универсальнее и занимает меньше места. Количество строк лучше считать по необходимости, т.е. когда пользователь нажимает кнопку. Но можно и при обновлении списка.

Чтобы было удобно обновлять конфигурацию и добавлять в другие формы списков, решил кнопку создавать программно. В стандартную процедуру ПриСозданииНаСервере добавляется вызов процедуры программного создания элементов и команды:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	этСозданиеЭлементов();

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

 

Процедура этСозданиеЭлементов()
    
    /////   РЕКВИЗИТЫ   //////////
	
    /////   КОМАНДЫ   //////////
	Команда = Команды.Добавить("этПосчитатьКоличествоВручную");
	Команда.Действие = "этПосчитатьКоличествоВСписке";
	//Команда.Картинка = БиблиотекаКартинок.Сумма; // можно добавить свою картинку
	//Команда.Отображение = ОтображениеКнопки.КартинкаИТекст; // и отобразить её с количеством строк

	
	/////   ЭЛЕМЕНТЫ   //////////
	НовыйЭлемент = Этаформа.Элементы.Вставить("этПосчитатьКоличествоВручную", Тип("КнопкаФормы"), Элементы.ФормаКоманднаяПанель,);
    НовыйЭлемент.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
	НовыйЭлемент.ИмяКоманды = "этПосчитатьКоличествоВручную";
	НовыйЭлемент.Заголовок = "?";
	НовыйЭлемент.Ширина = 3;
	
КонецПроцедуры

&НаКлиенте
Процедура этПосчитатьКоличествоВСписке()
	
	Элементы.Список.Обновить();
	этПосчитатьКоличествоВСпискеНаСервере();
	
КонецПроцедуры

Процедура подсчета подменяет в тексте запроса динамического списка выбираемые поля на Количество(*), выполняет запрос и отображает результат в заголовке кнопки:

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

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

Код можно использовать в расширениях конфигурации, можно вынести процедуры в общий модуль, а в модулях форм добавлять только вызов процедуры из общего модуля в ПриСозданииНаСервере

Динамический список подсчет строк программное добавление кнопок

См. также

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    62986    44    59    

82

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    18855    26    6    

41

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

Редактор графов в 1С - внешний отчет, который формирует графы на основе таблицы значений, используя рисунки табличного документа. Есть возможность добавления, редактирования объектов графа и выгрузки результата в таблицу значений.

1500 руб.

06.10.2020    10227    7    7    

10

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    16813    mrXoxot    43    

121

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    7359    smielka    37    

100

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    14790    913    elcoan    47    

117

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    11915    162    acces969    31    

124
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. lefthander 28.11.18 15:48 Сейчас в теме
(0)Проще всего вывести список и там уже будет количество строк с учетом отборов. в самом списке это не имеет смысла
3. sano 71 28.11.18 16:18 Сейчас в теме
(1),(2) Да, так сначала делал сам и рекомендовал пользователям. Но потом попробовал посчитать количество строк в списке на несколько тысяч записей. Провёл эксперимент. Список из 130 тысяч выводим в список только Код и ждём 10 сек. Моим способом - 1 сек. Теперь считаем количество нажатий на различные кнопки: 6 против 1. Мои пользователи довольны маленькой кнопочкой в командной панели.
Никого не принуждаю, "Вывести список..." - пожалуйста. Хотите попробовать внедрить к себе этот функционал - даже скачивать не нужно, копируйте код в форму списка, пользуйтесь, получайте удовольствие. Надоело - можно удалить :)
user1857640; soft_wind; +2 Ответить
2. Xershi 1555 28.11.18 15:51 Сейчас в теме
Добавлю еще что есть такая замечательная кнопка вывести список. Вот там и будет ваш номер!
Разработчики сознательно не выводили номер строки, т.к. это основа тормозов!
4. sano 71 28.11.18 16:22 Сейчас в теме
(2) Именно поэтому процедура подсчета вызывается по кнопке и считает только тогда, когда это необходимо пользователю. В 1 клик.
Windsor77; Irwin; +2 Ответить
5. Xershi 1555 28.11.18 16:34 Сейчас в теме
(4) согласен что если это нужно это удобно, но это доработка. А потом на кой черт знать количество, что пользователь таким методом анализирует, мне кажется нужно логику пользователю поменять.
6. sano 71 28.11.18 16:56 Сейчас в теме
(5) Например, количество невыполненных задач с множеством отборов или специфически отобранных товаров. Фантазия пользователя безгранична. Да и в самописных конфигурациях использую, потому что удобно. Пример из самописной: считаю, сколько элементов на данный момент загружено в справочник в то время, когда работает фоновый загрузчик.
CratosX; gorvin; +2 Ответить
7. Xershi 1555 28.11.18 17:06 Сейчас в теме
(6) такую задачу нужно отчетами решать. Это же статистика. Это как использовать справочник вместо документа, можно но не нужно=))
8. sano 71 28.11.18 17:16 Сейчас в теме
(7)ага, пользователи так замучали меня своими одноразовыми отчетами, что решил предоставить им возможность быстрого подсчета. Просьбы как рукой сняло. На отчеты жаловались, что долго настраивать отборы по второму кругу (в списке-то уже настроили один раз)
9. Xershi 1555 28.11.18 17:27 Сейчас в теме
(8) похоже еще не научили пользователей использовать сохранение настроек в отчетах)))
10. sano 71 28.11.18 17:40 Сейчас в теме
(9)пользователи образованные, всё умеют. И время ценят.
Думаю, каждый сам решит, использовать функционал или нет.
CratosX; GoR1313; +2 Ответить
12. Ndochp 103 29.11.18 18:19 Сейчас в теме
(2)Каждый дин список выполняется в режиме "Упорядочить" + "Первые" + "Где номер строки > ХХХХ" иначе просто невозможно отработать стрелку вниз/пейдждаун в конце списка. Так что, все выведенные строки уже посчитаны, вы лукавите.

Рассказывать, что дополнительный запрос на общее количество строк не может быть оптимизирован так, чтобы не напрягать ни пользователей ни сервер - тоже лукавство. Но чуть меньшее.
native-api; +1 Ответить
13. Xershi 1555 29.11.18 18:30 Сейчас в теме
(12) если речь про план запроса, то это совсем другое.
Я написал про без доработок, а вы пилить решили.
15. Ndochp 103 30.11.18 09:25 Сейчас в теме
(13)Вот это "Разработчики сознательно не выводили номер строки, т.к. это основа тормозов! " - ИМХО не правда, так как строки уже проиндексированы и посчитаны. Или вы не про разработчиков платформы, а про разработчиков типовых?
native-api; +1 Ответить
11. yarsort 141 29.11.18 17:32 Сейчас в теме
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДокументыЗаказыПокупателя);
Выборка = Построитель.Результат.Выгрузить();
		
СуммаДокумента = Выборка.Итог("СуммаДокумента");
КоличествоДокументов = Выборка.Количество();
Henistaromin; +1 Ответить
14. sano 71 29.11.18 20:45 Сейчас в теме
16. yarsort 141 30.11.18 09:39 Сейчас в теме
// Где "ДокументыЗаказыПокупателя" - динамический список на форме.

Я такой схемой получения данных на обычных формах пользуюсь. Может и на управляемые можно перенести этот метод.
17. sano 71 30.11.18 13:14 Сейчас в теме
(16) Тут вижу 3 проблемы:
1. тормоза, т.к. Выгрузить()
2. не учитываются отборы и поиски
3. не универсально
Но тут и задача другая, считаете Сумму. С такими требованиями в своей практике пока не сталкивался
В запросе динамического списка можно заменить "Количество(*) КАК Кол" на сумму по конкретной колонке. Суммировать запросом будет быстрее, чем выгружать и использовать Итог. Попробуйте преобразовать мой метод.
18. igor-pn 73 04.07.19 14:33 Сейчас в теме
Спасибо, можно немножко убыстрить еще , использовать метод количество для выборки, и проверять пустую выборку тоже. Тогда не нужно редактировать текст запроса.

 
        Результат = Запрос.Выполнить();
	
	Выборка = Результат.Выбрать();
	
	КоличествоЗаписей =  Выборка.Количество() 
native-api; DERL; +2 Ответить
19. SlavaKron 04.07.19 15:09 Сейчас в теме
(18) Но ведь тогда будут считываться все данные полей (пусть и на стороне sql). Хотя, ваш способ универсальнее.
20. sano 71 04.07.19 21:30 Сейчас в теме
(18) Пробовал этот вариант в самом начале. SlavaKron прав. В результате в выборке получите столько записей, сколько в динамическом списке. В моём методе выбирается лишь одна запись с количеством строк. Можно даже не проводить эксперимент, чтобы понять, какой код отработает быстрее ;)
native-api; +1 Ответить
21. igor-pn 73 05.07.19 18:37 Сейчас в теме
(20) Вы правы, не внимательно посмотрел, Спасибо!
native-api; +1 Ответить
22. qazaz2 17 19.07.19 12:25 Сейчас в теме
Автору спасибо, отличная идея, использовал правда для другой цели.

Понятно что каждый данную задачу решит по-своему (каждый др***т как он хочет).

Крутизна ИМХО в том что бы в понять как устроен мир (1С это как раз мир, не нами придуманный. но данный нам)) и использовать это понимание для решения своих задач. Мне и в голову не приходило изнасиловать запрос макета компоновки)
AndrewVVS; Windsor77; +2 Ответить
23. acanta 14.02.20 12:51 Сейчас в теме
И почему запрос динамического списка не может быть использован для получения итогов..
24. lefthander 14.02.20 12:53 Сейчас в теме
(23)Птому что для этого есть запросы не динамического списка. Динамический список придуман для отбора и вывода чем проще запрос тем быстрее список отработает
25. gorshkov.an 10.07.20 18:20 Сейчас в теме
Если запрос с группировками, то неправильно посчитает. Да, запрос с группировками в динамическом списке плохо, но бывает.
Можно обернуть запрос списка запросом количества, но придётся РАЗРЕШЕННЫЕ на верхний уровень выносить.
26. e-9 60 16.09.21 13:28 Сейчас в теме
Вот что значит копипастить код из инетов....Стоило юзеру сделать сортировку по колонке - хана всему)
Все-таки Выборка.Количество(), без изменения текста запроса, как в (18) - надежнее
27. sano 71 16.09.21 21:12 Сейчас в теме
(26) надёжнее, спору нет, но контраргументы приведены.
Кстати, недавно столкнулся с проблемой, что в новых версиях платформы можно использовать временные таблицы в запросах динамических списков. Вышеприведенный алгоритм неправильно срабатывает. Но я уже переписал его на новый лад в своей конфе, осталось оформить и скорректировать статью.
Тогда можно будет снова копипастить ;)
Student1C; +1 Ответить
28. Student1C 58 22.10.21 16:30 Сейчас в теме
(27) ну скинь хотя бы для читающих комментарии )
29. sano 71 28.10.21 12:23 Сейчас в теме
(28) По просьбам трудящихся!
Кстати, старая процедура исправно работала, пока я вдруг не добавил в запрос динамического списка временную таблицу. Думаю, таких извращенцев не много.
Ну, и заодно добавил демо конфу, чтобы можно было пощупать.
Student1C; +1 Ответить
31. user635629_exter 37 07.04.22 10:17 Сейчас в теме
(29) Добрый день. Я периодически делаю ВТ в запросе динсписка - когда остатки надо собрать, например, сначала предвыборка для фильтра остатков, потом остатки, а потом остатки с левым соединением к основной таблице, ну и учесть, что отборы динсписка применяются к первой таблице запроса - где-то читал, что это так, поэтому в последнем запросе надо еще с первого запроса фильтр применить.
30. user635629_exter 37 07.04.22 10:06 Сейчас в теме
Добрый день.
{Задача.бпсЗадача.Форма.ФормаСписка.Форма(37,57)}: Переменная не определена (НаправлениеПоиска)
ПозВыбратьНачало = СтрНайти(Запрос.Текст, "ВЫБРАТЬ ", <<?>>НаправлениеПоиска.СКонца); (Проверка: Сервер)
Хотя в синтакс-помощнике написано, что доступно на сервере "НаправлениеПоиска".
Куда копать не пойму. УПП1,3 Платформа 8,3,20,1674

Возможно дело в том, что УПП не совсем УФ, но данная форма списка-УФ. Но даже если так, то "НаправлениеПоиска" не имеет отношения к УФ - это просто часть функции "СтрНайти". Мистика.
Прикрепленные файлы:
32. FilippovRI 74 17.04.22 22:07 Сейчас в теме
(30) режим совместимости у упп ниже, чем появилось Направления поиска, убери его, либо напиши аналог направления поиска с конца
33. user635629_exter 37 18.04.22 08:09 Сейчас в теме
(32) спасибо, понятно.
переписал форму на не УФ и в таблицу значений всё запихал - всё работает. не динсписок, ну и ладно.
34. by_1Cnik 238 06.06.22 12:12 Сейчас в теме
&НаСервере
Процедура ПолучитьКоличествоСтрокВдинамическомСписке()

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

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

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

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

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

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

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

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

Возврат ТЗ;

КонецФункции
35. Serg2000mr 670 22.08.22 06:05 Сейчас в теме
Сделал так:

&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
	
	КоличествоСтрок = Строки.Количество();
 
	ХранилищеСистемныхНастроек.Сохранить("ДокументЗаказ.ФормаСписка", "КоличествоСтрокДинамическогоСписка", КоличествоСтрок);	
		
КонецПроцедуры

&НаКлиенте
Функция ПолучитьКоличествоСтрокДинамическогоСписка()
	
	КоличествоСтрокДинамическогоСписка = ВосстановитьЗначениеСервер("ДокументЗаказ.ФормаСписка", "КоличествоСтрокДинамическогоСписка");	
	
	Возврат КоличествоСтрокДинамическогоСписка; 

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

&НаСервереБезКонтекста
Функция ВосстановитьЗначениеСервер(КлючОбъекта, КлючНастроек = Неопределено) 
	
	Возврат ХранилищеСистемныхНастроек.Загрузить(КлючОбъекта, КлючНастроек);	
	
КонецФункции
Показать
36. Denic_01 48 24.08.22 11:01 Сейчас в теме
(35)
Сделал так:


интересная идея, замечу, что значение проще хранить в доп настройках списка, как то так

Настройки.ДополнительныеСвойства.Вставить("КоличествоСтрок", Строки.Количество());
37. Serg2000mr 670 25.08.22 00:53 Сейчас в теме
Этот код не будет работать во процедурах &НаСервереБезКонтекста, но так тоже можно, да.
41. isu13156 25.04.24 14:11 Сейчас в теме
(35)
&НаКлиенте
Функция ПолучитьКоличествоСтрокДинамическогоСписка()

КоличествоСтрокДинамическогоСписка = ВосстановитьЗначениеСервер("ДокументЗаказ.ФормаСписка", "КоличествоСтрокДинамическогоСписка");

Возврат КоличествоСтрокДинамическогоСписка;

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

&НаСервереБезКонтекста
Функция ВосстановитьЗначениеСервер(КлючОбъекта, КлючНастроек = Неопределено)

Возврат ХранилищеСистемныхНастроек.Загрузить(КлючОбъекта, КлючНастроек);

КонецФункции
Показать


спасибо
(35)

Спасибо помогло, супер
38. balhomes 6 04.05.23 23:30 Сейчас в теме
Это не работает если в тексте запроса списка есть объединение
39. sano 71 05.05.23 11:57 Сейчас в теме
(38) Приведите ошибку, пожалуйста, которую выдаёт и, по-возможности, текст запроса. Можно в личку. Попробовал на простом объединении - работает (без временных таблиц и прочего).
40. Sher_Han 28.03.24 14:51 Сейчас в теме
43. sano 71 31.05.24 20:17 Сейчас в теме
(40) Отлично! Рад, что помог
42. user775472 31.05.24 16:50 Сейчас в теме
Встретил Ваш код в нашей разработке. Исправьте, пожалуйста, обращение к "Результат" после попытки
44. prosto_username 25.07.24 17:19 Сейчас в теме
У меня динамический список сформированный запросом с левым соединением и группировкой. При подсчете количества этим кодом эти штуки удаляются и количество считается как х3 - по количеству полей подходящих по условию связи из второй таблицы. Пока не придумал как решить. А пока соединения не было с другой таблицей - отлично работало. Спасибо.

&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)


Попробовал, видимо в нашем режиме совместимости не работает, не попадает в этот метод никогда.
45. prosto_username 25.07.24 19:09 Сейчас в теме
&НаСервере
Процедура ПосчитатьКоличествоВСпискеНаСервере(ИмяКоманды, ЗаголовокКоманды)
	Схема = ЭтаФорма.Элементы.<Имя таблицы ДС>.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
	Настройки = ЭтаФорма.Элементы.<Имя таблицы ДС>.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
	МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	Количество = Результат.Количество();
КонецПроцедуры
Показать


Вот так в итоге решил
Rafael-87; Enziger; +2 Ответить
Оставьте свое сообщение