Как получить число строк таблицы после установки параметров поиска (УФ)
1С 8.3, управляемые формы.
На форме есть таблица (динамический список). При нажатии на кнопку Еще - Расширенный поиск выбираю поле поиска и условие поиска. Таблица при этом обновляется. При этом число её строк уменьшается (срабатывает поиск строк по условию). Как определить число строк этой (уменьшенной) таблицы?
На форме есть таблица (динамический список). При нажатии на кнопку Еще - Расширенный поиск выбираю поле поиска и условие поиска. Таблица при этом обновляется. При этом число её строк уменьшается (срабатывает поиск строк по условию). Как определить число строк этой (уменьшенной) таблицы?
По теме из базы знаний
- Выгрузка-загрузка любых данных (и измененных) между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Многофункциональная компонента для мобильной платформы: широковещательные сообщения (broadcasts), буфер обмена (clipboard), Bluetooth
- Пара советов по поиску работы
- Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов
- Инструкция по установке Postgres для OLTP приложений и 1С. Часть 1. Базовая конфигурация
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Если нужен подсчет количества строк в динамическом списке, то в гугле полно примеров кода. Не вижу смысла сюда их копипастить. Выводить в макет по той же кнопке еще.
При этом число её строк уменьшается (срабатывает поиск строк по условию).
Вот эту уменьшенную таблицу и выводите в макет, сколько строк увидите.
Если нужен подсчет количества строк в динамическом списке, то в гугле полно примеров кода. Не вижу смысла сюда их копипастить. Выводить в макет по той же кнопке еще.
При создании формы у вас всегда есть доступ к динамическому списку по имени этого списка. Там же есть и текст запроса. Его вы можете переопределить и программно установить нужные отборы...
(6)
Текст запроса и выполнить запрос... не понятно что вы все таки хотите.
(6)
Как мне поймать стандартный обработчик применения условий расширенного поиска?
Текст запроса и выполнить запрос... не понятно что вы все таки хотите.
(8) Смотрите скрин.
Есть ДС. Распределены по вкладкам. Возле названия вкладки сделан счетчик (сумма) строк ДС (выделено красным). На вкладке по кнопке "Еще" устанавливается отбор. Выбранная ДС обновляется сама по условию отбора. Как видно из скрина, число строк в обновленной ДС = 6, а счетчик суммы строк показывает старое занчение (=137) до отбора. Мне нужно, чтобы сумма была равна 6, разумеется.
Есть ДС. Распределены по вкладкам. Возле названия вкладки сделан счетчик (сумма) строк ДС (выделено красным). На вкладке по кнопке "Еще" устанавливается отбор. Выбранная ДС обновляется сама по условию отбора. Как видно из скрина, число строк в обновленной ДС = 6, а счетчик суммы строк показывает старое занчение (=137) до отбора. Мне нужно, чтобы сумма была равна 6, разумеется.
Прикрепленные файлы:
(7)Скорее всего событие ПриПолученииДанныхНаСервере()
Можно тут посмотретьhttps://forum.infostart.ru/forum9/topic176615/
Можно тут посмотреть
(15) Никак, но можно записать флаг во временное хранилище и дёргать его каждую секунду на клиенте:
Процедуру ПосчитатьКоличествоВСпискеНаСервере() возьмите вhttps://infostart.ru/public/953025/
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
АдресВХранилище = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("АдресВХранилище", АдресВХранилище);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПроверитьАдресВХранилище();
ЭтаФорма.ПодключитьОбработчикОжидания("ПроверитьАдресВХранилище", 1, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьАдресВХранилище() Экспорт
ДополнительныеСвойства = Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства;
Если ДополнительныеСвойства.Свойство("АдресВХранилище") Тогда
Если ПолучитьИзВременногоХранилища(ДополнительныеСвойства.АдресВХранилище) <> Неопределено Тогда
ПосчитатьКоличествоВСпискеНаСервере();
ПоместитьВоВременноеХранилище(Неопределено, ДополнительныеСвойства.АдресВХранилище);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Если Настройки.ДополнительныеСвойства.Свойство("АдресВХранилище") Тогда
ПоместитьВоВременноеХранилище("", Настройки.ДополнительныеСвойства.АдресВХранилище);
КонецЕсли;
КонецПроцедуры
ПоказатьПроцедуру ПосчитатьКоличествоВСпискеНаСервере() возьмите в
(16)
Это для чего? Установил точку останова в этой процедуре, но у меня туда ничего не приходит!
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
АдресВХранилище = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("АдресВХранилище", АдресВХранилище);
КонецПроцедуры
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
АдресВХранилище = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("АдресВХранилище", АдресВХранилище);
КонецПроцедуры
Это для чего? Установил точку останова в этой процедуре, но у меня туда ничего не приходит!
(17)
Не заходит скорее всего потому что этот код должен быть в событии формы ПриСозданииНаСервере и у вас надо указать эту процедуру для него ручками, если ее нет.
Хотя простукивание временного хранилища на клиенте – операция ничтожная, но вызывает неявный серверный вызов, что не есть гуд.
Я бы по-другому сделал. Вызывал бы ПосчитатьКоличествоВСпискеНаСервере() при создании формы и в событии ДС "ПриОбновленииПользовательскихНастроекНаСервере" а также добавил кнопочку "Пересчитать количество" для ручного вызова по желанию пользователя.
Это для чего?
Чтобы "застолбить" адрес в хранилище, который мы будем использовать для хранения флага. Сохраняем адрес в дополнительных свойствах настроек ДС, так как это единственный способ что-либо передать в событие ПриПолученииДанныхНаСервере.
Не заходит скорее всего потому что этот код должен быть в событии формы ПриСозданииНаСервере и у вас надо указать эту процедуру для него ручками, если ее нет.
Хотя простукивание временного хранилища на клиенте – операция ничтожная, но вызывает неявный серверный вызов, что не есть гуд.
Я бы по-другому сделал. Вызывал бы ПосчитатьКоличествоВСпискеНаСервере() при создании формы и в событии ДС "ПриОбновленииПользовательскихНастроекНаСервере" а также добавил кнопочку "Пересчитать количество" для ручного вызова по желанию пользователя.
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Если Настройки.ДополнительныеСвойства.Свойство("АдресВХранилище") Тогда
ПоместитьВоВременноеХранилище("", Настройки.ДополнительныеСвойства.АдресВХранилище);
КонецЕсли;
КонецПроцедуры
У меня свойство Настройки.ДополнительныеСвойства.Свойство("АдресВХранилище") никак не устанавливается.
Не могу попасть в строку ПоместитьВоВременноеХранилище("", Настройки.ДополнительныеСвойства.АдресВХранилище);
У меня упорно не хочет программа заходить внутрь условия:
То есть считать количество строк ДС не хочет, так как не выполняется ПосчитатьКоличествоВСпискеНаСервере();
Если ДополнительныеСвойства.Свойство("АдресВХранилище") Тогда
Если ПолучитьИзВременногоХранилища(ДополнительныеСвойства.АдресВХранилище) <> Неопределено Тогда
ПосчитатьКоличествоВСпискеНаСервере();
ПоместитьВоВременноеХранилище(Неопределено, ДополнительныеСвойства.АдресВХранилище);
КонецЕсли;
КонецЕсли;
То есть считать количество строк ДС не хочет, так как не выполняется ПосчитатьКоличествоВСпискеНаСервере();
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот