|
|||
Eireen_zh97
31.07.19 — 09:04 |
Есть документ — Распределение затрат. В нём табличная часть — список накладных(поля: расходная накладная, товар, себестоимость, сумма распределения). Нужно, чтобы после выбора расходной накладной в табличную часть ещё добавилось столько строк сколько есть в накладной и в эти строки встали все товары из накладной. Хотела на форме вызвать обработку выбора или при изменении и пробежаться циклом по табличной части накладной, но не могу никак, не знаю как написать. |
||
Галахад
1 — 31.07.19 — 09:07 |
Покажите код, который написали. |
||
Индиго
2 — 31.07.19 — 09:18 |
(0)Ересь какая то имхо.
Перед началом добаления новой строки |
||
Eireen_zh97
3 — 31.07.19 — 10:15 |
(1)
Строка = Элементы.СписокНакладных.ТекущиеДанные; Я получила расходную накладную, а потом через shift+f9 смотрела что там в ней, а в неё даже провалиться нельзя. |
||
Eireen_zh97
4 — 31.07.19 — 10:18 |
(0) |
||
Дмитрий
5 — 31.07.19 — 10:21 |
Может по другому сделать? Подбор не поможет? |
||
CHerypga
6 — 31.07.19 — 10:25 |
(0) если бы знать какая конфигурация, было бы конечно проще давать советы, но и так думаю что в Вашей конфе есть обработки заполнения табличной части называющиеся например «добавить по (внутреннему заказу, поступлению и т.д)», подсмотреть как сделано в типовой и сделать так же |
||
Smile 8D
7 — 31.07.19 — 10:35 |
(4) Лучше не устраивать мешанину и сделать отдельную кнопочку «Добавить строки по накладной», по которой открыть окно выбора с привязкой к табличному полю, а у него по событию обработать выбранный документ и заполнить таблицу. |
||
hhhh
8 — 31.07.19 — 10:39 |
(3) вы наверно &НаКлиенте фигачите. А на клиенте действительно не проваливается. Се ля ви. Пробуйте &НаСервере |
||
Eireen_zh97
9 — 31.07.19 — 10:43 |
(8) |
||
hhhh
10 — 31.07.19 — 10:51 |
(9) ну это понятно. Если серверная база, то и не должно входить в отладку. |
||
CHerypga 11 — 31.07.19 — 10:52 |
(9) что-то мне подсказывает что рановато еще решать задачу на спеца, я например до сих пор считаю что недостаточно знаю адинэску и не решаю |
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан
Получить значение реквизита табличной части
Автор Дима Сацкевич, 01 сен 2018, 18:08
0 Пользователей и 1 гость просматривают эту тему.
У меня есть документ в которой есть табличная часть, в свою очередь состоящая из реквизитов
Как получить значение реквизита? Наверное очень простой вопрос, но никак не получается, извиняюсь.
Я еще пытался выгрузить всю табличную часть в таблицу значений и там уже через методы ТЗ получить значение колонок, но выгрузить тоже как-то не получилось.
Сейчас имею вот такой код, с помощью которого получаю имя реквизита, а вот как значение получить?:
Для каждого Инд из ВыборДокумента.ПолучитьОбъект().Метаданные().ТабличныеЧасти Цикл
Для каждого Стр из Инд.Реквизиты цикл
Сообщить(Стр);
КонецЦикла;
КонецЦикла;
ВыборДокумента — это поле выбора, где выбирается любой документ из БД
А так у меня задача стоит выгрузить табличную часть в .txt, вот поэтому нужно значение получить, насколько я понял
Цитата: Дима Сацкевич от 01 сен 2018, 18:08Сейчас имею вот такой код, с помощью которого получаю имя реквизита, а вот как значение получить?:
Для каждого Инд из ВыборДокумента.ПолучитьОбъект().Метаданные().ТабличныеЧасти Цикл
Глупость
Никогда так не делай.
Об = ВыборДокумента.ПолучитьОбъект();
Мт = Об.Метаданные();
Для каждого Инд из Мт.ТабличныеЧасти Цикл
Для каждого Стр из Инд.Реквизиты цикл
ЗнТ = Об[Инд.Имя];
Сообщить(ЗнТ);
Для Каждого СтрокаЗнТ из ЗнТ Цикл
Зн = СтрокаЗнТ[Стр.Имя];
Сообщить(Зн);
КонецЦикла;
КонецЦикла;
КонецЦикла;
Запросом получай ТЧ…
Отправлено с моего Redmi Note 3 через Tapatalk
Теги:
- Форум 1С
-
►
Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 -
►
Пользователям 1С Предприятие 8 -
►
Получить значение реквизита табличной части
Похожие темы (5)
Поиск
Как получить доступ к реквизитам формы?
Если реквизит объекта «вытащен» на форму, то реквизит формы можно получить через объект ЭлементыФормы, который содержит коллекцию элементов формы, сканируя ее в цикле:
ДокСсылка = СсылкаНаДокумент(ТипДокумента, НомерДок); ДокОбъект = ДокСсылка.ПолучитьОбъект(); ФормаОбъекта = ДокОбъект.ПолучитьФорму(); Для Каждого Элемент Из ФормаОбъекта.ЭлементыФормы Цикл Сообщить(Элемент); КонецЦикла;
Этот цикл позволяет просмотреть имена а так же типы всех реквизитов формы, в том числе такие реквизиты как надписи, командные панели и тд.
Реквизиты формы могут быть различных типов. Поставив фильтр в виде типа реквизита мы можем просмотреть реквизиты определенного типа.
Если реквизит формы имеет тип «ТабличноеПоле», то можно такой элемент просканировать во вложенном цикле и узнать имена колонок таблицы:
Для Каждого Элемент Из ФормаОбъекта.ЭлементыФормы Цикл Сообщить(Элемент.Имя); Если Тип(Элемент) = Тип("ТабличноеПоле") Тогда Сообщить(" Это табличное поле! " + Элемент.Имя ); Для Каждого Колонка Из Элемент.Колонки Цикл ИмяКолонки = Колонка.Имя; Сообщить(ИмяКолонки); КонецЦикла; КонецЕсли; КонецЦикла;
Как получить значение отдельного реквизита формы?
Чаще требуется получать не массив реквизитов формы, а значение отдельных конкретных реквизитов формы. Например реквизиты «Шапки» или «Подвала» формы документа.
Пример:
ФормаОбъекта = ДокОбъект.ПолучитьФорму("ФормаДокумента"); Поставщик = ФормаОбъекта.ЭлементыФормы.Поставщик; Поставщик = ФормаОбъекта.ЭлементыФормы.Получатель; Сообщить(ФормаОбъекта.ЭлементыФормы.ТаблПоле.Колонки.Количество());
Реквизиты шапки могут иметь различные типы: Дата, СправочникСсылка, ЧекБокс, элемент раскрывающегося списка и др.
Как получить значение элементов табличной части формы?
Доступ к табличной части формы через объект
Доступ к табличной части формы (например: Товары) можно получить через объект:
ДокОбъект = Док.ПолучитьОбъект(); //здесь Док - ссылка на объект //просканируем построчно таб часть документа Для Каждого Стр из ДокОбъект.Товары Цикл Номенклатура = Стр.Номенклатура; Стр.Коэффициент = 1; КонецЦикла;
Здесь ДокОбъект.Товары — это табличная часть «Товары» объекта. Далее в цикле табличная часть построчно сканируется!
В каждой итерации цикла можно получить доступ к любому полю строки указав через точку имя этого поля:
Номенклатура = Стр.Номенклатура;
Доступ к табличной части формы через ЭлементыФормы
Табличная часть объекта и табличная часть формы объекта — это не одно и то же!
Для того, чтобы код работал правильно, надо чтобы колонка формы табчасти объекта в свойстве данные ссылалась на реквизит табличной части объекта. Этим определяется тип колонки таб части формы.
То есть должна быть установлена связь между реквизитом табчасти объекта и реквизитом табчасти формы. Форм у объекта метаданных может быть много мы знаем. Табличную часть формы объекта можно получить через объект ЭлементыФормы:
Объект ЭлементыФормы используется для доступа к элементам управления, расположенным на форме, в частности к таб части документа.
ДокСсылка = СсылкаНаДокумент(ТипДокумента, НомерДок); ДокОбъект = ДокСсылка.ПолучитьОбъект(); ФормаОбъекта = ДокОбъект.ПолучитьФорму(); Для Каждого Элемент Из ФормаОбъекта.ЭлементыФормы Цикл Если Тип(Элемент) = Тип("ТабличноеПоле") Тогда //элемент формы - табличное поле Если Элемент.Имя = "Товары" Тогда Сообщить("Это табличное поле!! " + Элемент.Имя ); //ТабПоле = ФормаОбъекта.ЭлементыФормы.Товары.Значение; ТабПоле = Элемент.Значение; Колво = ТабПоле.Количество(); Сообщить("Количество строк: " + Колво); Для Каждого ТекущаяСтрока Из ТабПоле Цикл Имя = ТекущаяСтрока.Номенклатура; Сообщить(Имя); КонецЦикла; КонецЕсли; КонецЕсли; КонецЦикла;
Результат для документа Авансовый отчет:
Это табличное поле!! Товары
Количество строк: 4
Женские ботфорты коричневые
Ботинки женские демисезонные
Ботинки женские натуральная кожа
Женские босоножки
Если надо получить значение всех колонок всех строк, то организуем дважды вложенный цикл:
Во внешнем цикле сканируются строки, во внутреннем — колонки:
ДокСсылка = СсылкаНаДокумент(ТипДокумента, НомерДок); ДокОбъект = ДокСсылка.ПолучитьОбъект(); ФормаОбъекта = ДокОбъект.ПолучитьФорму("ФормаДокумента"); Для Каждого Элемент Из ФормаОбъекта.ЭлементыФормы Цикл Если Тип(Элемент) = Тип("ТабличноеПоле") Тогда Если Элемент.Имя = "ВыданныеАвансы" Тогда //таб часть объекта Сообщить(" Это табличное поле!! " + Элемент.Имя ); ТабПоле = Элемент.Значение; Индекс = 0; Для Каждого ТекущаяСтрока Из ТабПоле Цикл Сообщить("======================="); Для Каждого Колонка Из Элемент.Колонки Цикл ИмяКолонки = Строка(Колонка.Имя); Сообщить(ИмяКолонки); Имя = ТекущаяСтрока[ИмяКолонки];//сработает только если есть такое поле таб части объекта Сообщить("=== " + Имя); КонецЦикла; Индекс = Индекс + 1; Если Индекс > 0 Тогда break КонецЕсли; //только первая строка КонецЦикла; КонецЕсли; КонецЕсли; КонецЦикла;
Результат для документа Авансовый отчет:
Это табличное поле!! ВыданныеАвансы
=======================
НомерСтроки 1
ДокументАванса Расходный кассовый ордер ТК000000004 от 15.02.2007 19:24:03
СуммаДокументаАванса 300
ВалютаДокументаАванса USD
Выдано 300
Сумма 174
Такое двойное сканирование удобно использовать для быстрой проверки того, что все колонки таб части формы имеют связь с реквизитами таб части объекта. Если такой связи у какой-либо колонки нет, система сгенерирует ошибку.
0
Как определить какие реквизиты имеются в табличной части документа
ПоступлениеТовара = Метаданные.Документы.ПоступлениеТовара;
Реквизиты = ПоступлениеТовара.ТабличныеЧасти.Товары.Реквизиты;
Для каждого наим из Реквизиты Цикл
Сообщить("Имя реквизита " + наим.Имя +
"; тип реквизита " + наим.Тип);
КонецЦикла;
// Результат:
// Имя реквизита Наименование; тип реквизита Справочник ссылка: Номенклатура
// Имя реквизита Количество; тип реквизита Число
// Имя реквизита Цена; тип реквизита Число
// Имя реквизита Сумма; тип реквизита Число
Granfury 9 / 9 / 5 Регистрация: 22.04.2015 Сообщений: 305 |
||||
1 |
||||
Получить данные из табличной части документа, как?10.05.2016, 10:24. Показов 44178. Ответов 10 Метки нет (Все метки)
Доброго времени суток!
0 |
SpiRUS 11 / 11 / 5 Регистрация: 23.06.2015 Сообщений: 74 |
||||||||
10.05.2016, 10:44 |
2 |
|||||||
Если имеется в виду получить количество позиций в табличной части «Товары», то
А если сообщить значение каждой строки из колонки «количество» то
1 |
Granfury 9 / 9 / 5 Регистрация: 22.04.2015 Сообщений: 305 |
||||
10.05.2016, 11:47 [ТС] |
3 |
|||
Ссылка на документ — как правильно получить?
Товары — это табличная часть бокумента, может я как то не так ссылаюсь на эту таб. часть?
0 |
SpiRUS 11 / 11 / 5 Регистрация: 23.06.2015 Сообщений: 74 |
||||
10.05.2016, 12:01 |
4 |
|||
Ссылка на документ — как правильно получить? Способов то много. Можно запросом, можно на форму вынести поле ввода. Можно просто:
0 |
Granfury 9 / 9 / 5 Регистрация: 22.04.2015 Сообщений: 305 |
||||||||
10.05.2016, 13:51 [ТС] |
5 |
|||||||
нет как мне обратиться к табличной части документа?
так получается.//сделал для проверки.
— не получается!
0 |
GreenkA 3051 / 1998 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
||||
10.05.2016, 14:24 |
6 |
|||
Сообщение было отмечено Granfury как решение РешениеGranfury, Количество — это реквизит табличной части Товары? Надо получать конкретную строку тогда: обходить циклом, по индексу(если заранее знаете количество строк ТЧ):
2 |
Granfury 9 / 9 / 5 Регистрация: 22.04.2015 Сообщений: 305 |
||||
10.05.2016, 15:32 [ТС] |
7 |
|||
GreenkA, Спасибо! Добавлено через 56 минут
Результат:
0 |
GreenkA 3051 / 1998 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
||||||||
10.05.2016, 15:38 |
8 |
|||||||
Granfury, можно конечно обойти табличную часть и
или сразу:
0 |
Granfury 9 / 9 / 5 Регистрация: 22.04.2015 Сообщений: 305 |
||||
10.05.2016, 18:38 [ТС] |
9 |
|||
GreenkA, «Поле обьекта не обнаружено «ПриказНаОтгрузку»»
Что не так?
0 |
3051 / 1998 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
|
10.05.2016, 18:40 |
10 |
Granfury, а что содержится в Ссылка? Вы же уже делали вывод Количества и все было нормально, что изменили?
1 |
9 / 9 / 5 Регистрация: 22.04.2015 Сообщений: 305 |
|
11.05.2016, 13:03 [ТС] |
11 |
пытаюсь разобраться Добавлено через 18 часов 7 минут
0 |
Как получить имя реквизита табличной части?
Как получить имя реквизита табличной части, а именно выбранной колонки.
Задача обойти все элементы табличной части по определенному реквизиту.
UPD #1 — Перефразировал
Как получить ИМЯ реквизита колонки ТЧ находясь в ячейке ТЧ.
-
Вопрос заданболее трёх лет назад
-
2067 просмотров
Пригласить эксперта
Ответ зависит от варианта разрабатываемого интерфейса.
Обычный интерфейс:
Элемент формы связанный с табличной частью «ТаблицаДанных» — ЭлементыФормы.ТаблицаДанных
Текущая колонка — ЭлементыФормы.ТаблицаДанных.ТекущаяКолонка
Имя реквизита формы для колонки — ЭлементыФормы.ТаблицаДанных.ТекущаяКолонка.Имя
Имя реквизита табличной части, который связан с колонкой — ЭлементыФормы.ТаблицаДанных.ТекущаяКолонка.Данные
Управляемый интерфейс
Элемент формы связанный с табличной частью «ТаблицаДанных» — Элементы.ТаблицаДанных
Текущая колонка — Элементы.ТаблицаДанных.ТекущийЭлемент
Имя реквизита формы для колонки — Элементы.ТаблицаДанных.ТекущийЭлемент.Имя
Имя реквизита табличной части, который связан с колонкой — Элементы.ТаблицаДанных.ТекущийЭлемент.ПутьКДанным (доступно только на сервере)
Это можно сделать запросом. Другой вариант — обойти в цикле.
-
Показать ещё
Загружается…
23 мар. 2023, в 00:00
56000 руб./за проект
22 мар. 2023, в 23:50
1000 руб./в час
22 мар. 2023, в 23:49
500 руб./за проект
Минуточку внимания
-
09.06.2019, 15:59
#1
Гость форума
Получение значения реквизита табличной части. 1С:Предприятие 8.3
Здравствуйте! Подскажите, пожалуйста, как получить значение реквизита табличной части (в справочнике)? У меня есть таб.часть «Образование», в ней есть реквизит «ВидОбразования» (ссылается на перечисление видов образования). Как получить значение данного реквизита?
-
06.07.2019, 20:53
#2
Гость форума
Re: Получение значения реквизита табличной части. 1С:Предприятие 8.3
Не силен в 1С, но вижу, что за месяц не ответил никто. Если правильно понял, то:
Получить табличную часть можно так:// Пусть СсылкаНаТЗ это ссылка на владельца ТЧ Образование
ТаблОбразование = СсылкаНаТЗ.Образование.Выг рузить(); // это таблица значений
Для Каждого Обр из ТаблОбразование Цикл
Сообщить(Обр.ВидОбразовани я);
КонецЦикла;// Или
Номер = 0;
Пока Номер < ТаблОбразование.Количеств� �() Цикл
Сообщить(ТаблОбразование[Номер].ВидОбразования);
Номер = Номер + 1;
КонецЦикла;
-
06.07.2019, 20:59
#3
Гость форума
Re: Получение значения реквизита табличной части. 1С:Предприятие 8.3
Какая-то ерунда с сообщением — половина стерлась через несколько минут.
И как отредактировать не понимаю…Не силен в 1С, но вижу, что за месяц не ответил никто. Если правильно понял, то:
Получить табличную часть можно так:// Пусть СсылкаНаТЗ это ссылка на владельца ТЧ Образование
ТаблОбразование = СсылкаНаТЗ.Образование.Выр узить(); // это таблица значений
Для Каждого Обр из ТаблОбразование Цикл
Сообщить(Обр.ВидОбразовани я);
КонецЦикла;// Или
Номер = 0;
Пока Номер < ТаблОбразование.Количеств� �() Цикл
Сообщить(ТаблОбразование[Номер].ВидОбразования);
Номер = Номер + 1;
КонецЦикла;
-
06.07.2019, 21:02
#4
Гость форума
Re: Получение значения реквизита табличной части. 1С:Предприятие 8.3
Попытка 3. Расширенный режим. Почему сообщения так корежит?
Какая-то ерунда с сообщением — половина стерлась через несколько минут.
И как отредактировать не понимаю…Не силен в 1С, но вижу, что за месяц не ответил никто. Если правильно понял, то:
Получить табличную часть можно так:// Пусть СсылкаНаТЗ это ссылка на владельца ТЧ Образование
ТаблОбразование = СсылкаНаТЗ.Образование.Выг рузить(); // это таблица значений
Для Каждого Обр из ТаблОбразование Цикл
Сообщить(Обр.ВидОбразовани я);
КонецЦикла;// Или
Номер = 0;
Пока Номер < ТаблОбразование.Количеств� �() Цикл
Сообщить(ТаблОбразование[Номер].ВидОбразования);
Номер = Номер + 1;
КонецЦикла;
-
06.07.2019, 21:05
#5
Гость форума
Re: Получение значения реквизита табличной части. 1С:Предприятие 8.3
Попробую картинкой
Screenshot_1.jpg
-
09.07.2019, 11:44
#6
Гордость форума PRO
Re: Получение значения реквизита табличной части. 1С:Предприятие 8.3
Сообщение от iLex
Не силен в 1С, но вижу, что за месяц не ответил никто. Если правильно понял, то:
Получить табличную часть можно так:Никто не ответил потому как вопрос дурацкий.
табличная часть она потому и табличная, что в ней (по умолчанию) много в строк и в каждой строке значение данного реквизита возможно разное.
если знаешь номер строки (например первая) то обращение будет Образование[0].ВидОбразования