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

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"; 
	ЗначениеВДанныеФормы(Т_З,ТаблицаДанных); // после заполнения преобразуем обратно в ДанныеФормыКоллекция
	// Вставить содержимое обработчика.
КонецПроцедуры
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот