@Amarg0
student

Как обратиться к табличной части обработки?

Добрый день.
Нужна помощь начинающему в области 1с предприятие.
Есть документ А, есть документ Б.
Нужно создать внутреннюю обработку, в которой будет табличная часть где можно добавлять ссылки на эти документы, рядом с каждым будет соответствующий чекбокс. Создать кнопку "записать" при нажатии на которую нужно будет создавать пары документов и затем заносить их в регистр сведений.

-проблема-
когда создаю запрос, который обращается к данным табличной части, он не может найти мою табличную часть то есть "не удалось найти таблицу и указывает на кусок кода с "ИЗ Обработка.Связь.Таблица". Как только путь к таблице не указывал уже.

-вопрос-
В чём собственно заключается ошибка в пути или просто неправильном подходе реализации кнопки?

Спасибо.
  • Вопрос задан
  • 16641 просмотр
Решения вопроса 2
@thepry
Ruby on rails, 1С разработчик
когда создаю запрос, который обращается к данным табличной части, он не может найти мою табличную часть то есть "не удалось найти таблицу и указывает на кусок кода с "ИЗ Обработка.Связь.Таблица". Как только путь к таблице не указывал уже.


Дело в том, что запрос обращается к базе данных. Обработки не имеют таблиц в БД и ничего там не хранят., во-вторых вы эту таблицу заполняете интерактивно, даже, если бы у вас была табличная часть документа, или справочника, то все изменения, которые вы внесли в открытой форме были бы еще не записаны в БД.

Собственно, что можно сделать: запросом получать данные из таблицы значений, которая передается параметром.
Код будет вида
Запрос.Текст = "Выбрать ...бла-бла-бла... Из &ТаблицаЗначений;"
Запрос.УстановитьПараметр("ТаблицаЗначений", Объект.МояТабличнаяЧасть.Выгрузить());


А вообще, если вам нужна только пара документов, то запрос не нужен - ссылки уже находятся в таблице и достаточно ее обойти в цикле.
Ответ написан
@Dementor
программист, архитектор, аналитик
Ваша ошибка заключается в недопонимании различий между метаданными. Обработки в отличии от справочников, документов и так далее не описывают хранимую в базе данных информацию - это набор алгоритмов по обработке данных и описание графического/программного интерфейса взаимодействия с пользователем.

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

В вашем примере существует обработка под названием "Связь", в которой есть табличная часть "Таблица". Запросы языка 1С указанным вами способом (путь по метаданным) могут получать выборки лишь из данных, которые сохранены в СУБД базы. Т.е. у вас ничего не выйдет. Но язык запросов позволяет делать запросы еще и к структурам в памяти, если их передавать в качестве параметров. Вы можете поступить следующим образом:

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Таблица", Таблица);
Запрос.Текст = 
"ВЫБРАТЬ Т.Документ, Т.Клиент, Т.Сумма
|ПОМЕСТИТЬ втТаблица
|ИЗ &Таблица КАК Т;
|
|ВЫБРАТЬ Клиент, СУММА(втТаблица.Сумма)
|ИЗ втТаблица
|СГРУППИРОВАТЬ ПО Клиент";
Итоги = Запрос.Выполнить().Выгрузить();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Pallid
//Наверное так надо обратится к таблице
Запись = Объект.ИмяТвоейТаблицы.Добавить();
Запись.РеквизитТаблицы1 = "ТоЧтоХочешьЗаисать";
Запись.РеквизитТаблицы2 = "ТоЧтоХочешьЗаисатьЕще";

выложи код, проще тебя понять будет
или кинь обработку
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы