Обход табличных частей документов.

1. 14.09.21 10:57 Сейчас в теме
Доброе время суток, уважаемые.

Задача, ставшая проблемой.

Необходимо обойти табличные части РАЗЛИЧНЫХ (перечень не определен изначально) документов и, в зависимости наличия (существования) определенных реквизитов, проделать с ними определенные действия.
Например, перебирая табличные части документа из выборки документов разных типов проверить существование реквизита Договор, и, если он существует, присвоить ему ссылку на определенный объект из справочника Договоры.

Прошу совета.
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. ZergKRSK 128 14.09.21 11:04 Сейчас в теме
(1) в чем сложность?
Для Каждого ТЧ из мойДок.Метаданные().ТабличныеЧасти Цикл
28. user950703 14.09.21 17:47 Сейчас в теме
(1) Переформулирую вопрос. Возможно ли перебрать в табличной части документа строки, задавая имя табличной части в переменной?
29. nomad_irk 57 14.09.21 19:37 Сейчас в теме
(28)да.

Для Каждого Строка Из Документ["ИмяТабличнойЧасти"] Цикл

КонецЦикла;
3. dmt 62 14.09.21 11:04 Сейчас в теме
Проблема в обходе?

Для каждого Док Из Метаданные.Документы Цикл
		Сообщить("" + Док.Имя);
		Для каждого ТЧ Из Док.ТабличныеЧасти Цикл
			Сообщить(" " + ТЧ.Имя);
			Для каждого Рек Из ТЧ.Реквизиты Цикл
				Сообщить("   " + Рек.Имя);	
			КонецЦикла; 
		КонецЦикла; 
	КонецЦикла;
Показать
4. user950703 14.09.21 11:17 Сейчас в теме
(3)Проблема пока в том, чтобы перебрать строки этой табличной части и присвоить значение реквизиту.
5. dmt 62 14.09.21 11:21 Сейчас в теме
(4) Это уже надо работать с данными.
Выбрать документы по нужному типу, у которого есть в ТЧ нужный реквизит.
Потом пробежаться по выборке и поменять нужные данные.
6. user950703 14.09.21 11:23 Сейчас в теме
(5)А непосредственно, находясь внутри табличной части, никак?
7. dmt 62 14.09.21 11:24 Сейчас в теме
8. user950703 14.09.21 11:27 Сейчас в теме
(7)Выбрали табличную часть, выбрали список реквизитов, следующее действие внутри табличной части - перебрать ее строки?
9. user950703 14.09.21 11:31 Сейчас в теме
(7)Или, имея строку табличной части, найти список ее метаданных?
10. ZergKRSK 128 14.09.21 11:32 Сейчас в теме
(9) мне кажется вам сначала надо изучить теорию прежде чем пытаться что-то программировать.
user5300; DJ_Codebase; nomad_irk; +3 Ответить
13. user950703 14.09.21 11:53 Сейчас в теме
(10)Непременно учту Ваше замечание
11. dmt 62 14.09.21 11:34 Сейчас в теме
Так вон же в (1) написали...
Немного допилить.

Для Каждого Рек из МойДок.Метаданные().ТабличныеЧасти.МояТЧ.Реквизиты Цикл
12. user950703 14.09.21 11:46 Сейчас в теме
(11)Боюсь, я неправильно выразился. Допустим, мы нашли что существует требуемый реквизит Договор в текущей табличной части. Как этому реквизиту присвоить ссылку на конкретный объект справочника Договоры?
14. ZergKRSK 128 14.09.21 11:54 Сейчас в теме
15. user950703 14.09.21 11:55 Сейчас в теме
16. ZergKRSK 128 14.09.21 11:56 Сейчас в теме
(15) какой вопрос такой ответ. Присвоить можно через "равно".
17. user950703 14.09.21 12:00 Сейчас в теме
(16)Имени реквизита присвоить данные ссылочного типа?
18. ZergKRSK 128 14.09.21 12:02 Сейчас в теме
(17) а где говорилось про ИМЯ реквизита? Вопросы был "Как этому реквизиту присвоить ссылку..."
19. user950703 14.09.21 12:03 Сейчас в теме
(18)Извиняюсь, неточно выразился Реквизиту присвоить ссылку.
20. ZergKRSK 128 14.09.21 12:04 Сейчас в теме
(19) строкаТЧ["ИмяМоегоРеквизита"] = ... ;
21. user950703 14.09.21 12:07 Сейчас в теме
(20)Извините, где строкаТЧ это ?
22. ZergKRSK 128 14.09.21 12:07 Сейчас в теме
(21) текущая строка некой табличной части некого документа
23. user950703 14.09.21 12:15 Сейчас в теме
(22) Извините, опять неверно сформулировал. Можно перебирать табличные части и реквизиты в них только из метаданных документа. Допустим, нашли, что в текущей табличной части существует данный реквизит. Как, перебирая строки этой табличной части, присвоить данному реквизиту ссылочное значение? Ведь мы по прежнему находимся внутри дерева метаданных и строки там не определены?
24. nomad_irk 57 14.09.21 12:19 Сейчас в теме
(23)Так у вас к этому моменту УЖЕ должна быть ссылка на сам документ и сам Документобъект, полученный по ссылке, а так же позиционирование на нужной ТЧ для работы с ней.

или вас этому нужно учить?

Найти строки ТЧ - ТЧ.НайтиСтроки().

Обойти полученный результат циклом с присвоением нового значения в нужную колонку, имя которой вы определите по метаданным.
26. user950703 14.09.21 12:28 Сейчас в теме
(24) В этом как раз и вопрос. Как спозиционировать строку табличной части в документе - объекте, находясь в данной табличной части метаданных. Ведь состав реквизитов в разных ТЧ - разный.
27. nomad_irk 57 14.09.21 13:02 Сейчас в теме
(26)Да начните вы уже делать, а не разглагольствовать - там все и поймете.
К тому моменту, как вы поймете, какой именно реквизит ТЧ вам нужен, вы уже должны понимать, с каким объемом данных вам необходимо работать, следовательно у вас будет либо уже готовый запрос с выборкой нужных строк нужной ТЧ нужных документов, либо получаете каждый документ и обрабатываете только его ТЧ и строки в них.
25. ZergKRSK 128 14.09.21 12:24 Сейчас в теме
(23) если вы перебираете строки ТЧ то всё уже определено!
30. FatPanzer 14 14.09.21 20:07 Сейчас в теме
Как тут у вас интересно...
Оставьте свое сообщение
Вопросы с вознаграждением
Вакансии
Программист 1С
Москва
зарплата от 150 000 руб.
Полный день

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

Программист 1С: ЗУП
Чита
зарплата от 110 000 руб. до 150 000 руб.
Полный день

Разработчик 1C: ERP (Блоки: Снабжение, закупки, склад; Финансы и казначейство)
Чита
зарплата от 110 000 руб. до 150 000 руб.
Полный день

Консультант 1С
Нижний Новгород
зарплата от 55 000 руб. до 100 000 руб.
Полный день