Как выгрузить данные из списка формы документа, который ещё не записан? 1Cv8.3

1. Ozobochen 15.10.23 17:56 Сейчас в теме
Есть документ, у него форма(не форма списка), которая содержит в себе таблицу.

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

Искал на форумах, пробовал разные способы, но так и не нашёл реализацию.

Надеюсь тут есть добрые и знающие люди)
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Torin 848 15.10.23 18:01 Сейчас в теме
(1)
данные из списка формы документа, который ещё не записан

"Где искать и как добыть То-Чаво-Не-Может-Быть? Ведь его ж на свете нету, Сколько землю не копыть!" (с)
3. Ozobochen 15.10.23 18:03 Сейчас в теме
(2)Тобиж никак?

Это нужно записать(не провести) документ, а потом уже брать данные?
4. Torin 848 15.10.23 20:31 Сейчас в теме
6. karamazoff 124 15.10.23 21:40 Сейчас в теме
(1)
Есть документ, у него общая форма

не бывает у объекта общей формы, у общей формы может быть объект, в любом разе данные получать через объект, обрабатывать и выплевывать обратно
9. Ozobochen 16.10.23 12:50 Сейчас в теме
(6)извиняюсь, оговорился. Просто
форма документа
7. schweigen 16.10.23 04:27 Сейчас в теме
(1) У формы же есть событие "ПередЗаписью". Почему не сделать это там? Или я че-то не понял вопроса.
13. Ozobochen 16.10.23 13:17 Сейчас в теме
(7)вызываю процедуру НаКлиенте нажатием кнопки -> она вызывает процедуру На Сервере -> выгружал данные из таблицы -> проверяю, а данных нет
8. nomad_irk 81 16.10.23 07:48 Сейчас в теме
(1)и что именно вы пробовали?
ТЗ = ТаблицаФормы.Выгрузить() 

не работает?
11. Ozobochen 16.10.23 13:05 Сейчас в теме
(8)
-напрямую к таблице обратиться не получается
-через объект пробовал, в котором сама таблица(список)
-через ЭлементыФормы пробовал
-и без Эта Форма не обошлось

Допустим следующий код отрабатывает, но данных не находит:

ТЗПродукция = ЭтаФорма.Объект.Продукция.Выгрузить();

-тут пусто

Количество = ЭтаФорма.Объект.Продукция.Количество();

-тут 0
14. nomad_irk 81 16.10.23 14:08 Сейчас в теме
(11)так нужно понять, что это за список и каким образом он формируется.
А то может быть, что это какой-нибудь динамический список.
16. Ozobochen 16.10.23 20:43 Сейчас в теме
(14)Тип: ДокументТабличнаяЧасть.ПланПроизводства.Продукция
15. karamazoff 124 16.10.23 20:14 Сейчас в теме
(11)
ТЗПродукция = ЭтаФорма.Объект.Продукция.Выгрузить();


надо так
ТЗПродукция = Объект.Продукция.Выгрузить();
Количество = Объект.Продукция.Итог("Количество");
17. Ozobochen 16.10.23 20:48 Сейчас в теме
(15)В первой строке я пробовал так же, как и у вас, но пусто
Во второй я хотел найти количество строк в Таблице, но всегда 0 выдаёт
18. karamazoff 124 16.10.23 20:56 Сейчас в теме
(15)Если на форме размещена табличная часть ОБЪЕКТА а не формы, то такого быть не может, если таблица создана в реквизитах формы, то все то-же самое, только без объекта, просто Продукция.Выгрузить();
19. Ozobochen 16.10.23 21:22 Сейчас в теме
(18) Но вот у меня почему-то так, я не знаю об какую подводную булыгу я долбанулся, но оч больно
20. Ozobochen 16.10.23 21:26 Сейчас в теме
(18)Самое главное не сказал! У Записанного объекта всё работает, а вот у незаписанного нет(
22. Vinzor 112 16.10.23 21:28 Сейчас в теме
(20) Вы разницу в способах исполнения различаете?
Если ваша обработка - внешняя, да, нужная запись.
Если "расширение" - не нужно.
25. Ozobochen 16.10.23 22:09 Сейчас в теме
(22)Допонение
Прикрепленные файлы:
28. karamazoff 124 18.10.23 00:52 Сейчас в теме
(25)ну дык табличная часть-то пустая куда записывать будем?
30. Ozobochen 20.10.23 19:28 Сейчас в теме
(28)Это дополнение, табличная часть там есть, да и в объекте список присутствует
23. karamazoff 124 16.10.23 21:37 Сейчас в теме
(20)Это косвенно говорит о том, что данные получаются через ссылку (а у не записанного ссылки нет). Покажите пример кода в процедуре формы ПередЗаписью
26. nomad_irk 81 17.10.23 05:59 Сейчас в теме
(20) На форме это что за таблица?
5. Vinzor 112 15.10.23 20:52 Сейчас в теме
Вообще-то я писал обработки, которые получают "ФормуКлиентскогоПриложения", работают с ней, в том числе "режут строки", и в итоге НЕ ЗАПИСАННОМ документе остается меньшее число строк.
Мол, устраивает - записывай, или выходи из документа, не сохраняя, и его вообще в базе не будет.

Через расширение делал. Инициация разная, но в основном программно созданная команда проверки в модуле формы документа. При её инициации "ЭтаФорма" имеет тип "ФормаКлиентскогоПриложения"

С вариантом внешней обработки - не занимался, не интересно было, там сразу "объект" требуется записать, а можно ли "отключить" это или обойти, не хотел разбираться.

В этом запросе упоминается "общая форма", смущает, с таким я не работал....
12. Ozobochen 16.10.23 13:13 Сейчас в теме
(5)вот мне так же нужно сделать с формой документа, свернуть в таблице строки похожих товаров в одну без записи, чтобы потом пользователю не пришлось удалять документ в случае чего
21. Vinzor 112 16.10.23 21:27 Сейчас в теме
(12) ну я же и говорю, надо в модуле формы добавлять свою команду. Через "расширение" напишите.
В процедуре команды забираете табличную часть "ЭтаФорма.бла-бла" (через F9 на отладке в конфигураторе найдёте путь) и далее делайте с ней что надо.
24. Ozobochen 16.10.23 22:03 Сейчас в теме
27. Vinzor 112 17.10.23 21:57 Сейчас в теме
(24) Ну вот, привожу кусок кода исполняемой процедуры
Это - процедура. Процедура работает после закрытия другой формы, где пользователь должен кое-что выбрать. Эта "другая" форма стартует от нажатия моей программно созданной кнопки.

Внимание на строку ТЧ = ЭтаФорма.Объект.Начисления; здесь я получаю эдакую сведённую табличную часть документа "Начисление зарплаты и взносов" в ЗУПе, тип - ФормаКлиентскогоПриложения.
Есть у документа ссылка или нет - не имеет значение. Всё отрабатывает как надо.
Ваше право потом записать это или выйти не сохраняя уже существующий или вновь созданный документ


&НаКлиенте
Процедура ПродолжитьДалее(Значение, ключ) Экспорт;
   	ФразаФинала = Истина;
	ЭтоПремия = АЭтоПремия(Значение);
	ТЧ = ЭтаФорма.Объект.Начисления;
	Период =  ЭтаФорма.Объект.МесяцНачисления;		
	Отклонённые = ПолучитьОтклонённых(ТЧ, Период, Значение, ключ);            

	Если Отклонённые.Количество() > 0 Тогда 
 			
	    НаПечать = Новый Массив;   
    			
	    //	Изменяем в ТЧ Начисления
		ВыбранныеСтроки = Новый Массив;
		Для каждого Стр из Отклонённые Цикл
			Попытка
// здесь я ищу строку в табличной части 
			Строка = ЭтаФорма.Объект.Начисления.НайтиСтроки(Новый Структура("НомерСтроки, Сотрудник, Начисление", Стр.НомерСтроки, Стр.Сотрудник, Значение))[0];
Показать

и далее работаю с ней, и так далее.


ЗЫ. Для понимания, какие "инструменты" вам доступны, читайте какие вообще МЕТОДЫ есть у "ФормаКлиентскогоПриложения"
29. Ozobochen 20.10.23 19:26 Сейчас в теме
(27)ЭтаФорма.Объект.Продукция выдаёт следующее
Прикрепленные файлы:
31. karamazoff 124 20.10.23 19:34 Сейчас в теме
(29)да что же вы все форму - то терзаете? обращайтесь к данным напрямую, поставьте точку останова в любом месте работы с таблицей и посмотрите там через объект что доступно
32. Ozobochen 20.10.23 19:35 Сейчас в теме
33. Ozobochen 20.10.23 19:36 Сейчас в теме
(31)Я бы не обращался ко всем вам, если бы всё было так просто
34. Ozobochen 20.10.23 19:42 Сейчас в теме
(31)
&НаКлиенте
Процедура СНВПП_СвернутьПосле(Команда)
	ТЗ =  ЭтаФорма.Объект.Продукция;
КонецПроцедуры
Прикрепленные файлы:
35. karamazoff 124 20.10.23 20:01 Сейчас в теме
(34)ну вот на строчке ТЗ = поставить точку останова и когда остановится, посмотреть в конфигураторе что там доступно в объекте и в форме
37. Ozobochen 20.10.23 22:15 Сейчас в теме
(35)Я прикрепил файл, на котором показано, что там
36. Vinzor 112 20.10.23 21:34 Сейчас в теме
(34) Делайте так

&НаКлиенте
Процедура СНВПП_СвернутьПосле(Команда)
ааа = 1;
КонецПроцедуры

В "ааа" точка останова. Запускаете. И в этом месте через F9 в консоли делаете:
ЭтаФорма - и смотрите все, что там есть. Можно также вызвать и посмотреть "ЭтотОбъект"
Находите там то, что надо и путь выкладываете в код

А сейчас вы вслепую пытаетесь угадать путь к таблице.
38. Ozobochen 20.10.23 22:19 Сейчас в теме
(36)Тобиж (Ctrl + Пробел), это слепое угадывание?
39. Vinzor 112 20.10.23 22:23 Сейчас в теме
(38) Прошу, не придирайтесь. Вам оказана хорошая помощь, следующая итерация помощи, пожалуй, уже написать вам весь код )))
не представляю, как ещё удаленно советами помочь
41. Ozobochen 20.10.23 22:26 Сейчас в теме
(39)Я не придираюсь, просто вы тыкнули пальцем туда, куда не знали, я об этом сказал, и проблему сию вы не поняли.
42. Ozobochen 20.10.23 22:28 Сейчас в теме
(39)Через останова я сделал, как вы и говорили, получился тот же не работающих как нужно код
43. Ozobochen 20.10.23 22:29 Сейчас в теме
(42)Такой же, вплоть до каждой буквы(
44. Vinzor 112 20.10.23 22:48 Сейчас в теме
(43) Я сам сейчас обработку (внешнюю) пишу, с формой.

В общем, в модуле формы делаю F9
Набираю "ЭтаФорма" - получаю "ФормаКлиентскогоПриложения".
Раскрываю, нахожу там "Объект" (Тип - ДанныеФормыСтруктура).
Раскрываю "Объект",
в нем "Список" (это моя ТЧ). Тип - ДанныеФормыКоллекция.
Команда "Показать значения в отдельном окне" - выводит все содержимое "Списка".
Ссылки у меня нет, потому что не документ, а обработка.

Но я пишу в ЗУПе. Может, у вас в БП что-то не так ? я не ведаю
45. Ozobochen 21.10.23 15:04 Сейчас в теме
(44) Мне тоже кажется, что что-то не так, ибо не может у других работать исправно, а у меня нет. Может быть дело в том, что я через дополнение всё делаю, если я правильно выразился?
40. Ozobochen 20.10.23 22:24 Сейчас в теме
(36)Путь к таблице объекта я знаю, я говорю, что всё пусто, иначе бы ошибку выдавало.
Если документ записан, то всё работает, а если не записан, то всё пусто.
10. Ozobochen 16.10.23 12:56 Сейчас в теме
(5)там не общая форма, оговорился, уже исправил, чтобы не смущать)
46. Ozobochen 31.10.23 18:09 Сейчас в теме
Ребят, прошу прощения, там было две таблицы похожие с разными именами. Я просто обращался не к той. Данные можно спокойно вытащить было используя простой код:
ТаблицаЗначений = ЭтаФорма.РеквизитТаблицы.Выгрузить();
Оставьте свое сообщение

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