Расширение таблицы формы для динамического списка.ПриПолученииДанныхНаСервере

События · OnGetDataAtServer

Обработчик события вызывается на сервере после получения данных динамическим списком, только если была получена как минимум одна строка. При этом элемент формы, с которым связано событие, не передается в обработчик. Обработчик вызывается в режиме совместимости конфигурации Версия8_3_8 и выше. Если в данном обработчике события изменяются данные строк, то рекомендуется исключать поля, в которых изменяются данные, из списков полей, используемых для группировки, упорядочивания и отбора. Если этого не сделать, группировка, упорядочивание и отбор (включая все виды поиска) будет работать неожиданно для пользователя. Для установки ограничения на использование поля в той или иной операции предназначены методы динамического списка УстановитьОграниченияИспользованияВГруппировке, УстановитьОграниченияИспользованияВПорядке и УстановитьОграниченияИспользованияВОтборе.

Синтаксис

ПриПолученииДанныхНаСервере(<ИмяЭлемента>, <Настройки>, <Строки>)
Полное описание, параметры и ограничения

Расширение таблицы формы для динамического списка.ПриПолученииДанныхНаСервере (Form table extension for dynamic list.OnGetDataAtServer)

Расширение таблицы формы для динамического списка (Form table extension for dynamic list)

ПриПолученииДанныхНаСервере (OnGetDataAtServer)

Доступен, начиная с версии 8.3.10.

Синтаксис:
ПриПолученииДанныхНаСервере(<ИмяЭлемента>, <Настройки>, <Строки>)
Параметры:

<ИмяЭлемента>
Тип: Строка.
Содержит имя таблицы формы, из которой вызван обработчик события.

<Настройки>
Тип: НастройкиКомпоновкиДанных.
Содержит копию полных настроек динамического списка.

<Строки>
Тип: СтрокиДинамическогоСписка.
Коллекция содержит данные и оформление всех строк, получаемых в списке, кроме строк группировок.
Описание:

Обработчик события вызывается на сервере после получения данных динамическим списком, только если была получена как минимум одна строка. При этом элемент формы, с которым связано событие, не передается в обработчик.
Обработчик вызывается в режиме совместимости конфигурации Версия8_3_8 и выше.
Если в данном обработчике события изменяются данные строк, то рекомендуется исключать поля, в которых изменяются данные, из списков полей, используемых для группировки, упорядочивания и отбора. Если этого не сделать, группировка, упорядочивание и отбор (включая все виды поиска) будет работать неожиданно для пользователя. Для установки ограничения на использование поля в той или иной операции предназначены методы динамического списка УстановитьОграниченияИспользованияВГруппировке, УстановитьОграниченияИспользованияВПорядке и УстановитьОграниченияИспользованияВОтборе.

Доступность:

Сервер.

Примечание:
Обработчик данного события должен иметь директиву &НаСервереБезКонтекста.
Отбор (а также поиск), сортировка, группировка и условное оформление будут применяться к значениям до изменения их обработчиком.
Использование в версии:

Доступен, начиная с версии 8.3.10.

Методическая информация

Практические примеры

Прочитать фактические строки текущей порции собственного списка

Источник строк и событий задан собственной формой, точными метаданными или явным константным запросом. Параметры callback приходят от платформы после настоящего действия.

Где и как запускать

Событие ПриПолученииДанныхНаСервере таблицы, &НаСервереБезКонтекста.

Подготовка

  1. В своей учебной конфигурации создайте справочник УчебныеКарточки: код Строка 10, наименование 100, реквизит Количество Число 10.0. Вручную создайте УЧЕБ-КНИГ / Учебная книга / 3 и УЧЕБ-ТЕТР / Учебная тетрадь / 5.

  2. В своей управляемой форме добавьте ДинамическийСписок СписокКниг, основная таблица Справочник.УчебныеКарточки. Связанная таблица СписокКниг, колонки Ссылка, Наименование и Количество; реквизит Статус Строка 200.

  3. События назначайте таблице СписокКниг редактором. Имена и параметры обработчиков должны совпадать с редактором. Читаются только свои карточки.

  4. У обработчика строго &НаСервереБезКонтекста. В нём нет параметра Элемент и нет обращения к реквизиту формы Статус. Данные строк и поля сортировки / отбора пример не меняет.

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

Разбор по шагам

  1. Подготовьте свой список, колонки и конкретные строки.

  2. Назначьте обработчик точному событию таблицы и нужной стороне клиента / сервера.

  3. Выполните действие загрузки, выбора, настройки или получения ссылки и сравните фактический результат.

Как проверить результат

  1. При получении своих двух строк сумма данной порции равна 8. При отборе только книги — 3, только тетради — 5.

  2. Динамический список получает данные порциями: это не достоверный общий итог всего списка. Строки не сохраняются для обращения после выхода из обработчика.

Ожидаемый результат

Разобран конкретный callback / динамический доступ с действительным источником и без подмены типов.

На что обратить внимание

  1. Данные порции динамического списка не являются всеми данными базы; её строки не хранятся после выхода из серверного callback.

  2. Имена динамических свойств происходят из подготовленных колонок / путей ключа, а не создаются getter-обёрткой.

  3. Код 1С здесь не запускался; рабочие базы и пользовательские настройки других форм не изменялись.

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

Не хотите разбираться сами?

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

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.