1. ovadia 14.02.20 12:38 Сейчас в теме

Как получить число строк таблицы после установки параметров поиска (УФ)

1С 8.3, управляемые формы.

На форме есть таблица (динамический список). При нажатии на кнопку Еще - Расширенный поиск выбираю поле поиска и условие поиска. Таблица при этом обновляется. При этом число её строк уменьшается (срабатывает поиск строк по условию). Как определить число строк этой (уменьшенной) таблицы?
Ответы
Избранное Подписка Сортировка: Древо
5. lefthander 14.02.20 12:50 Сейчас в теме
(1)
При этом число её строк уменьшается (срабатывает поиск строк по условию).
Вот эту уменьшенную таблицу и выводите в макет, сколько строк увидите.
Если нужен подсчет количества строк в динамическом списке, то в гугле полно примеров кода. Не вижу смысла сюда их копипастить. Выводить в макет по той же кнопке еще.
2. lefthander 14.02.20 12:39 Сейчас в теме
Вывести в макет и посчитать
3. ovadia 14.02.20 12:42 Сейчас в теме
(2) Что выводить в макет? Для этого очевидно нужно получить данные таблицы! Как программно добраться до этой (уменьшенной) таблицы?
6. ovadia 14.02.20 13:01 Сейчас в теме
Если я не хочу это делать по отдельной кнопке. Как мне поймать стандартный обработчик применения условий расширенного поиска?
8. lefthander 14.02.20 13:36 Сейчас в теме
При создании формы у вас всегда есть доступ к динамическому списку по имени этого списка. Там же есть и текст запроса. Его вы можете переопределить и программно установить нужные отборы...

(6)
Как мне поймать стандартный обработчик применения условий расширенного поиска?

Текст запроса и выполнить запрос... не понятно что вы все таки хотите.
10. ovadia 14.02.20 13:47 Сейчас в теме
(8) Смотрите скрин.

Есть ДС. Распределены по вкладкам. Возле названия вкладки сделан счетчик (сумма) строк ДС (выделено красным). На вкладке по кнопке "Еще" устанавливается отбор. Выбранная ДС обновляется сама по условию отбора. Как видно из скрина, число строк в обновленной ДС = 6, а счетчик суммы строк показывает старое занчение (=137) до отбора. Мне нужно, чтобы сумма была равна 6, разумеется.
Прикрепленные файлы:
11. lefthander 14.02.20 13:53 Сейчас в теме
(10)наверно надо использовать оповещение. после отбора вызвать обработкуоповещения() назначить имя и прописать передачу количества строк в списке в имя вкладки...
12. ovadia 14.02.20 14:00 Сейчас в теме
(11)
после отбора

Как поймать отбор/поиск?
7. ovadia 14.02.20 13:19 Сейчас в теме
Как обработать обновление списка?
9. starik-2005 2012 14.02.20 13:39 Сейчас в теме
(7) У ДС есть событие "ПриОбновленииПользовательскихНастроекНаСервере" - юзайте.
13. lefthander 14.02.20 14:11 Сейчас в теме
(7)Скорее всего событие ПриПолученииДанныхНаСервере()
Можно тут посмотреть https://forum.infostart.ru/forum9/topic176615/
14. ovadia 14.02.20 14:21 Сейчас в теме
(13)
Скорее всего событие ПриПолученииДанныхНаСервере()


На первый взгляд это то, что надо. Спасибо! Сейчас проверю подробнее.
15. ovadia 14.02.20 15:03 Сейчас в теме
Счетчик у меня находится на форме. А ПриПолученииДанныхНаСервере() эта процедура &НаСервереБезКонтекста.
Как передать из неё параметры в счетчик на форме?
16. SlavaKron 14.02.20 15:34 Сейчас в теме
(15) Никак, но можно записать флаг во временное хранилище и дёргать его каждую секунду на клиенте:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	АдресВХранилище = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
	Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("АдресВХранилище", АдресВХранилище);
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ПроверитьАдресВХранилище();
	ЭтаФорма.ПодключитьОбработчикОжидания("ПроверитьАдресВХранилище", 1, Ложь);
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьАдресВХранилище() Экспорт
	ДополнительныеСвойства = Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства;
	Если ДополнительныеСвойства.Свойство("АдресВХранилище") Тогда
		Если ПолучитьИзВременногоХранилища(ДополнительныеСвойства.АдресВХранилище) <> Неопределено Тогда
			ПосчитатьКоличествоВСпискеНаСервере();
			ПоместитьВоВременноеХранилище(Неопределено, ДополнительныеСвойства.АдресВХранилище);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

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

Процедуру ПосчитатьКоличествоВСпискеНаСервере() возьмите в https://infostart.ru/public/953025/
17. ovadia 14.02.20 16:50 Сейчас в теме
(16)
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
АдресВХранилище = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("АдресВХранилище", АдресВХранилище);
КонецПроцедуры


Это для чего? Установил точку останова в этой процедуре, но у меня туда ничего не приходит!
18. antz 14.02.20 16:59 Сейчас в теме
(17) В свойствах формы в событии эта процедура выбрана?
22. SlavaKron 15.02.20 10:04 Сейчас в теме
(17)
Это для чего?
Чтобы "застолбить" адрес в хранилище, который мы будем использовать для хранения флага. Сохраняем адрес в дополнительных свойствах настроек ДС, так как это единственный способ что-либо передать в событие ПриПолученииДанныхНаСервере.

Не заходит скорее всего потому что этот код должен быть в событии формы ПриСозданииНаСервере и у вас надо указать эту процедуру для него ручками, если ее нет.
Хотя простукивание временного хранилища на клиенте – операция ничтожная, но вызывает неявный серверный вызов, что не есть гуд.
Я бы по-другому сделал. Вызывал бы ПосчитатьКоличествоВСпискеНаСервере() при создании формы и в событии ДС "ПриОбновленииПользовательскихНастроекНаСервере" а также добавил кнопочку "Пересчитать количество" для ручного вызова по желанию пользователя.
19. ovadia 14.02.20 17:15 Сейчас в теме
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
    Если Настройки.ДополнительныеСвойства.Свойство("АдресВХранилище") Тогда
        ПоместитьВоВременноеХранилище("", Настройки.ДополнительныеСвойства.АдресВХранилище);    
    КонецЕсли;
КонецПроцедуры


У меня свойство Настройки.ДополнительныеСвойства.Свойство("АдресВХранилище") никак не устанавливается.

Не могу попасть в строку ПоместитьВоВременноеХранилище("", Настройки.ДополнительныеСвойства.АдресВХранилище);
20. antz 14.02.20 17:27 Сейчас в теме
(19) В свойствах списка на форме в событии эта процедура выбрана?
21. ovadia 14.02.20 17:38 Сейчас в теме
У меня упорно не хочет программа заходить внутрь условия:

Если ДополнительныеСвойства.Свойство("АдресВХранилище") Тогда
        Если ПолучитьИзВременногоХранилища(ДополнительныеСвойства.АдресВХранилище) <> Неопределено Тогда
            ПосчитатьКоличествоВСпискеНаСервере();
            ПоместитьВоВременноеХранилище(Неопределено, ДополнительныеСвойства.АдресВХранилище);
        КонецЕсли;
    КонецЕсли;


То есть считать количество строк ДС не хочет, так как не выполняется ПосчитатьКоличествоВСпискеНаСервере();
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Екатеринбург
зарплата от 90 000 руб. до 150 000 руб.
Полный день

Архитектор 1С
Нижний Новгород
зарплата от 180 000 руб.
Полный день

Программист 1С
Балашиха
зарплата от 80 000 руб.
Полный день

Программист 1С
Челябинск
зарплата от 100 000 руб.
Полный день

Разработчик 1С
Нижний Новгород
зарплата до 90 000 руб.
Полный день