Заполнить реквизит ДанныеФормыКоллекция
Добрый вечер,уважаемые форумчане.
Встала задача заполнить данными реквизит с типом ДанныеФормыКоллекция, который размещен на форме (УФ).
Вот код:
У меня есть реквизит "ТоварыВРезерве" с типом ДанныеФормыКоллекция. Я бы мог его конечно заполнить на сервере, если сделал бы контекстный вызов,но всю форму тянуть не хочется. Не подскажите как возможно это реализовать? Метод загрузить на клиенте насколько я знаю не работает:)
Скриншот ревизита на форме, который нужно заполнить, приложил
Встала задача заполнить данными реквизит с типом ДанныеФормыКоллекция, который размещен на форме (УФ).
Вот код:
&НаСервереБезКонтекста
Функция ner_СписокСтандартныйПоискНоменклатураПриАктивизацииСтрокиПо слеНаСервере(Номенклатура)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СвободныеОстаткиОстатки.Номенклатура КАК Номенклатура,
| СвободныеОстаткиОстатки.Характеристика КАК Характеристика,
| СвободныеОстаткиОстатки.Склад КАК Склад,
| СвободныеОстаткиОстатки.ВРезервеСоСкладаОстаток КАК РезервНаСкладе,
| СвободныеОстаткиОстатки.ВРезервеПодЗаказОстаток КАК РезервПодЗаказ
|ИЗ
| РегистрНакопления.СвободныеОстатки.Остатки(, Номенклатура = &Номенклатура) КАК СвободныеОстаткиОстатки";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(РезультатЗапроса);
КонецФункции
&НаКлиенте
&После("ПодборТаблицаНоменклатураПриАктивизацииСтроки")
Процедура ner_ПодборТаблицаНоменклатураПриАктивизацииСтроки(Элемент)
ner_СписокСтандартныйПоискНоменклатураПриАктивизацииСтрокиПо слеНаСервере(Элемент.ТекущиеДанные.Номенклатура);
КонецПроцедуры
ПоказатьУ меня есть реквизит "ТоварыВРезерве" с типом ДанныеФормыКоллекция. Я бы мог его конечно заполнить на сервере, если сделал бы контекстный вызов,но всю форму тянуть не хочется. Не подскажите как возможно это реализовать? Метод загрузить на клиенте насколько я знаю не работает:)
Скриншот ревизита на форме, который нужно заполнить, приложил
Прикрепленные файлы:
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(1) можно на клиенте в цикле заполнять построчно. Но если данных много то все же контекстный вызов и заполнение на сервере будет предпочтительнее.
PS. Делать серверный вызов (пусть и без контекста) напрямую на событие ПриАктивизацииСтроки... не желательно. Хотя бы через ПодключитьОбработчикОжидания.
PS. Делать серверный вызов (пусть и без контекста) напрямую на событие ПриАктивизацииСтроки... не желательно. Хотя бы через ПодключитьОбработчикОжидания.
(14) Без контекста только тормоза будут. А с контекстом - ещё и повторная активация события, переполнение стека, кровькишкираспидорасило.
В общем, вопрос только в том, как именно ты хочешь пользователя замучить. Если сразу в клякушку порвать вместе с приложением - тогда контекстный вызов. Если выбесить тормозным интерфейсом - тогда неконтекстный.
А если про феншую, то откладываешь неконтектстный вызов как можно дальше через подключение обработки ожидания. Как пользователь выдохнется на кнопки жать, так на сервер и сбегаешь. Причем уже вне активизации строки ячейки что там.
В общем, вопрос только в том, как именно ты хочешь пользователя замучить. Если сразу в клякушку порвать вместе с приложением - тогда контекстный вызов. Если выбесить тормозным интерфейсом - тогда неконтекстный.
А если про феншую, то откладываешь неконтектстный вызов как можно дальше через подключение обработки ожидания. Как пользователь выдохнется на кнопки жать, так на сервер и сбегаешь. Причем уже вне активизации строки ячейки что там.
(1) Поддержу выше сказанное что не желательно такое делать при активизации строки, но в принципе реализуемо, но повторюсь, делать такое не стоит
Например
Например
&НаКлиенте
Процедура ТаблицаДанныхПриАктивизацииСтроки(Элемент)
МояТаблица = ЭтаФорма.ТаблицаДанных; // Таблица на форме с типом ДанныеФормыКоллекция
ТаблицаДанныхПриАктивизацииСтрокиНаСервере(МояТаблица); // Передаем в качестве параметра в безконтекстный вызов
// где таблица будет заполнена
КопироватьДанныеФормы(МояТаблица,ЭтаФорма.ТаблицаДанных); // переносим изменения
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ТаблицаДанныхПриАктивизацииСтрокиНаСервере(ТаблицаДанных)
Т_З = ДанныеФормыВЗначение(ТаблицаДанных,тип("ТаблицаЗначений")); // преобразуем данные формы в ТаблицуЗначений
// тут работают уже все методы ТаблицыЗначений в.ч. Выгрузить(), Загрузить() и прочие
СтрокаТЗ = Т_З.Добавить();
СтрокаТЗ.Товар = "Товар";
СтрокаТЗ.Количество = "КолВо";
СтрокаТЗ.Сумма ="1000";
ЗначениеВДанныеФормы(Т_З,ТаблицаДанных); // после заполнения преобразуем обратно в ДанныеФормыКоллекция
// Вставить содержимое обработчика.
КонецПроцедуры
Показать