Текущая строка в динамическом списке

О причинах неработоспособности сайта Вы можете уточнить у администрации – хостинг-провайдер .masterhost, отвечающий за его поддержку, предоставляет управление услугами и доменами их владельцам.

Здесь можно ознакомиться с актуальными акциями и выгодными предложениями от .masterhost

личный блог

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

Наблюдается очень неприятная особенность платформы — событие ПриАктивизацииСтроки() не вызывается, при поиске в Динамическом списке. То есть при осуществлении поиска, текущая строка меняется программно самой платформой, а события ПриАктивизацииСтроки() не возникает. Соответственно данные во второй таблице не обновляются.

Решение было найдена не без помощи добрых людей. Помогли на инфостарте.

Итак первым делом нужно на форме, завести реквизит ТекСтрока с типом строка.

Далее при открытии подбора, в момент первичной реализации события ПриАктивизацииСтроки(), мы сохраняем текущую активированную строку в наш созданный реквизит ТекСтрока. Делается это для того, чтоб потом мы могли сравнить изменилась ли фактическая текущая строка с течением времени.

Определяем процедуру которую будем вызывать через обработчик ожидания. У меня процедура будет следующая.

Ну и дальше в событии формы ПриОткрытии() и инициализируем обработчик ожидания ПодключитьОбработчикОжидания. Отметим, что интервал ожидания события, нужно выставить более 1 секунды, чтоб мы могли ожидать событие многократно. Если интервал будет меньше 1, то событие выполнится однократно.

На этом собственно все. При обновлении текущей строки динамического списка и соответственно при смене текущей строки, будет вызываться наша процедура обновления 2-ой таблицы.

Читайте также:  Net framework офлайн установщик

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

Следует отметить, что свойство ТекущиеДанные содержит коллекцию значений текущей строки, соответствующую коллекции колонок отображаемого динамического списка, при этом если нужного поля нет в текущих данных, то его можно добавить в коллекцию полей списка используя метод Добавить() коллекции колонок списка.

Свойство ТекущиеДанные предназначено для получения значений колонок текущей строки, а свойство ТекущаяСтрока для получения и установки текущей строки табличного поля.

Следует понимать, что для объектных данных (Справочник, Документ и т.д.) в качестве значения свойства ТекущаяСтрока используется ссылка на объект базы данных. Соответственно при обращении к свойствам этого значения будет выполняться считывание объекта базы данных.

Типичной ошибкой является обращение к данным строки с использованием свойства ТекущаяСтрока . В этом случае будет выполняться считывание данных объекта из базы данных, что может существенно снизить производительность работы табличного поля. Например, приведенный ниже фрагмент текста программы является неэффективным:

Рекомендуется для обращения к данным объекта использовать свойство ТекущиеДанные . Правильный фрагмент приведен ниже:

Если есть идентификатор текущей строки (т.е. свойство ТекущаяСтрока ), можно получить ТекущиеДанные . И наоборот: