Заполнить реквизит ДанныеФормыКоллекция

1. Az18011993 24.03.23 00:58 Сейчас в теме
Добрый вечер,уважаемые форумчане.
Встала задача заполнить данными реквизит с типом ДанныеФормыКоллекция, который размещен на форме (УФ).
Вот код:
&НаСервереБезКонтекста
Функция ner_СписокСтандартныйПоискНоменклатураПриАктивизацииСтрокиПо­слеНаСервере(Номенклатура)
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	СвободныеОстаткиОстатки.Номенклатура КАК Номенклатура,
	|	СвободныеОстаткиОстатки.Характеристика КАК Характеристика,
	|	СвободныеОстаткиОстатки.Склад КАК Склад,
	|	СвободныеОстаткиОстатки.ВРезервеСоСкладаОстаток КАК РезервНаСкладе,
	|	СвободныеОстаткиОстатки.ВРезервеПодЗаказОстаток КАК РезервПодЗаказ
	|ИЗ
	|	РегистрНакопления.СвободныеОстатки.Остатки(, Номенклатура = &Номенклатура) КАК СвободныеОстаткиОстатки";
	
	Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
	
	РезультатЗапроса = Запрос.Выполнить().Выгрузить();  
	
	Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(РезультатЗапроса);	
	
КонецФункции

&НаКлиенте
&После("ПодборТаблицаНоменклатураПриАктивизацииСтроки")
Процедура ner_ПодборТаблицаНоменклатураПриАктивизацииСтроки(Элемент)  
	
	ner_СписокСтандартныйПоискНоменклатураПриАктивизацииСтрокиПо­слеНаСервере(Элемент.ТекущиеДанные.Номенклатура);
	
КонецПроцедуры
Показать


У меня есть реквизит "ТоварыВРезерве" с типом ДанныеФормыКоллекция. Я бы мог его конечно заполнить на сервере, если сделал бы контекстный вызов,но всю форму тянуть не хочется. Не подскажите как возможно это реализовать? Метод загрузить на клиенте насколько я знаю не работает:)

Скриншот ревизита на форме, который нужно заполнить, приложил
Прикрепленные файлы:
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 24.03.23 05:09 Сейчас в теме
(1) можно на клиенте в цикле заполнять построчно. Но если данных много то все же контекстный вызов и заполнение на сервере будет предпочтительнее.

PS. Делать серверный вызов (пусть и без контекста) напрямую на событие ПриАктивизацииСтроки... не желательно. Хотя бы через ПодключитьОбработчикОжидания.
3. Az18011993 24.03.23 06:43 Сейчас в теме
(2)Понял, хотелось бы узнать у более опытного, а почему нежелательно?
5. spacecraft 24.03.23 07:04 Сейчас в теме
(3) подумайте, что будет, когда пользователь начнет по таблице с номенклатурой стрелкой вниз/вверх передвигаться...
7. Az18011993 24.03.23 07:29 Сейчас в теме
(5)Думаю будет не очень хорошо, куча вызовов:)
9. Kilka_v_Kepke 24.03.23 08:08 Сейчас в теме
(7) да ладно не в этом беда, вот если у вас ошибка на сервере, отладчик начнет прыгать из клиента на сервер бесконечно
ONLYTILT; +1 Ответить
4. Az18011993 24.03.23 06:52 Сейчас в теме
(2)Да и у меня события "ПриАктивизацииСтроки", а насколько я знаю, там нет контекстного серверного вызова, сделать конечно можно, но поведение платформы оставит желать лучшего...
6. spacecraft 24.03.23 07:08 Сейчас в теме
(4) расшифруйте "там нет контекстного серверного вызова".
8. Az18011993 24.03.23 07:31 Сейчас в теме
(6)При попытки создать событие ПриАктивизацииСтроки платформа сама предлагает создать методы с директивами &НаКлиенте и &НаСервереБезКонтекста. А метод с директивой &НаСервере недоступен.
10. Kilka_v_Kepke 24.03.23 08:08 Сейчас в теме
(8) что значит недоступен? платформе не предлагает его создать или не дает?
11. user1863362 24.03.23 09:33 Сейчас в теме
(10)
что значит недоступен?
Это значит, что конструктор, который боготворят новички, не дает выбрать в своём интерфейсе вариант "на сервере" для этого события.

И правильно, в общем-то делает.
14. Kilka_v_Kepke 24.03.23 10:26 Сейчас в теме
(11) На сервере без контекста тоже может беда произойти, или без контекста он с ошибкой не будет прыгать бесконечно с клиента на сервер?
15. user1863362 24.03.23 11:03 Сейчас в теме
(14) Без контекста только тормоза будут. А с контекстом - ещё и повторная активация события, переполнение стека, кровькишкираспидорасило.

В общем, вопрос только в том, как именно ты хочешь пользователя замучить. Если сразу в клякушку порвать вместе с приложением - тогда контекстный вызов. Если выбесить тормозным интерфейсом - тогда неконтекстный.

А если про феншую, то откладываешь неконтектстный вызов как можно дальше через подключение обработки ожидания. Как пользователь выдохнется на кнопки жать, так на сервер и сбегаешь. Причем уже вне активизации строки ячейки что там.
16. Kilka_v_Kepke 24.03.23 11:10 Сейчас в теме
(15) да и переполнения стека можно обойти при ошибки
17. user1863362 24.03.23 11:16 Сейчас в теме
(16) Зачем? Если можно вообще не попадать в ситуацию, когда это возникает?

Не, ну у нас свободная страна, любитесь там, конечно, как вам приятно.
18. Kilka_v_Kepke 24.03.23 11:19 Сейчас в теме
(17) зачем ходить по лужам, если можно всю жизнь сидеть дома
19. Kilka_v_Kepke 24.03.23 11:21 Сейчас в теме
(17) как работает обработчик ожидания? каждые 2 секунды срабатывает?
20. user1863362 24.03.23 11:57 Сейчас в теме
(19)
каждые 2 секунды срабатывает?
А вы, однако, знаете толк в смелых и раскрепощенных экспериментах. Только с классикой вот у вас плоховато... Посмотрите типовые, что-ли, СП на досуге полистайте. Вам понравится, я уверен!
21. Kilka_v_Kepke 24.03.23 12:04 Сейчас в теме
22. user1863362 24.03.23 12:18 Сейчас в теме
(21) Попробуйте с другим составом участников?
23. Kilka_v_Kepke 24.03.23 12:26 Сейчас в теме
(22) а вы на троих смотрите?
24. user1863362 24.03.23 12:31 Сейчас в теме
(23) Тут дело не в количестве, а в качестве. Вы вот на эту оценку "троих" как вышли - вам уже мало или еще много?
25. Kilka_v_Kepke 24.03.23 12:35 Сейчас в теме
(24) у вас же целый состав участников, я решил что два для состава мало да и больше трех в монитор не влезите. В одном зале умещаетесь?
26. user1863362 24.03.23 15:11 Сейчас в теме
(25) Значит, на количестве у тебя фиксации, так... По конференциям о каких-нибудь эффективностях управления и финансовых инструментах ходить не пробовал? Там таких любят!
27. Kilka_v_Kepke 24.03.23 15:30 Сейчас в теме
(26) у тебя большое желание что-то умное написать, но больше похоже на непонятный бред
28. user1863362 24.03.23 15:32 Сейчас в теме
(27) Ну ты первый начал, я стараюсь на твоём языке с тобой общаться. А ты на другом что-ли понимаешь, да?
29. Kilka_v_Kepke 24.03.23 15:33 Сейчас в теме
(28) объясни где что я бредового написал
31. Kilka_v_Kepke 24.03.23 19:08 Сейчас в теме
(30) лол, понты порезал и в лужу сел, я отказываюсь дальше вести диалог с тобой
32. user1863362 24.03.23 19:18 Сейчас в теме
(31)
я отказываюсь
Хнык-хнык
35. webester 26 27.03.23 09:38 Сейчас в теме
(15)
Без контекста только тормоза будут

По какой причине будут тормоза без контекста?
36. user1863362 27.03.23 09:40 Сейчас в теме
(35) Акцент был на слове "только"
34. webester 26 27.03.23 09:37 Сейчас в теме
(11) "Не дает выбрать" и "недоступен вызов" это одно и то же? Почему вы решили что кто-то его боготоворит?
12. Az18011993 24.03.23 10:11 Сейчас в теме
(10)
Прикрепленные файлы:
13. Sashares 34 24.03.23 10:23 Сейчас в теме
(1)Если у вас таблица резерва перезаполняется при активизации каждой строки - сделайте эту таблицу динамическим списком.
Передавайте параметр - номенклатура в динамический список в обработчике ожидания, который вызывается из ПриАктивизацииСтроки.
volkov-mv; +1 Ответить
33. vadim1011985 99 25.03.23 02:03 Сейчас в теме
(1) Поддержу выше сказанное что не желательно такое делать при активизации строки, но в принципе реализуемо, но повторюсь, делать такое не стоит

Например

&НаКлиенте
Процедура ТаблицаДанныхПриАктивизацииСтроки(Элемент) 
	МояТаблица  = ЭтаФорма.ТаблицаДанных;  // Таблица на форме с типом ДанныеФормыКоллекция
	ТаблицаДанныхПриАктивизацииСтрокиНаСервере(МояТаблица); // Передаем в качестве параметра в безконтекстный вызов 
	// где таблица будет заполнена
        КопироватьДанныеФормы(МояТаблица,ЭтаФорма.ТаблицаДанных); // переносим изменения 
КонецПроцедуры


&НаСервереБезКонтекста
Процедура ТаблицаДанныхПриАктивизацииСтрокиНаСервере(ТаблицаДанных)
	
	Т_З = ДанныеФормыВЗначение(ТаблицаДанных,тип("ТаблицаЗначений")); // преобразуем данные формы в ТаблицуЗначений 
        // тут работают уже все методы ТаблицыЗначений в.ч. Выгрузить(), Загрузить() и прочие
	СтрокаТЗ = Т_З.Добавить();
	СтрокаТЗ.Товар = "Товар";
	СтрокаТЗ.Количество = "КолВо";
	СтрокаТЗ.Сумма ="1000"; 
	ЗначениеВДанныеФормы(Т_З,ТаблицаДанных); // после заполнения преобразуем обратно в ДанныеФормыКоллекция
	// Вставить содержимое обработчика.
КонецПроцедуры
Показать
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

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

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день