Добрый день, есть форма основная и форма подчинённая и макет, на основной форме присутствует кнопка и поле табличного документа, по нажатию на кнопку происходит переброс на подчинённую форму, на которой есть 3 реквизита и кнопка, я не совсем понимаю, какими командами реализовать добавление с реквизитов ввода в ТД, что после произвести сложение по одной колонке в подвал и добавить это в поле ТД на основную форму
этот код находится на подчинённой форме:

```1c
    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");

    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");

    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
```
---
Не надо их тебе передавать в табличный документ. Тебе их надо передать обратно на первую форму. И уже первая форма с этими данными управляется - добавляет в таблицу значений и переформировывает табличный документ на основе таблицы значений.
1. Почитай метод Закрыть() у управляемой формы. (Это для второй формы)
2. Почитай метод ОткрытьФорму() в части Оповещения - (это для первой формы).
---
Ну и как вы это себе представляете, что код второй формы должен видет ваш табличный документ с первой формы???
Я для кого разжевываю тут все - вы дожны со второй формы передать в первую введенные данные. ТОЧКА. Не надо пытаться лечить насморк через задницу, извините.
Пишу в последний раз:
1. Во второй форме вводятся только новые данные, и возвращаются в первую форму.
2. Первая форма принимает новые данные и кладет их в таблицу значений (накапливает данные в строках).
3. Первая форма формирует табличный документ на основании накопленной таблицы значений.
---
Что такое переброс?
---
по нажатию на кнопку в основной форме, открывается подчинённая форма, далее с неё нужно ввести данные в реквизиты (поля ввода) добавить данные в ТД, в подвал вывести сложенную информацию по 3й колонке в "Строка" и чтобы эти данные вывелись на основной форме в поле табличного документа
---
Я правильно понимаю, что в данной тд, будут в "Строка" - <Фио> вписываться данные с реквизита(Поле ввода) ФИО?

```1c
    ТД = новый Структура;
    ТД.Вставить("ФИО", ФИО);
    ТД.Вставить("Должность", Должность);
    ТД.Вставить("Оклад", Оклад);

    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");

    Для каждого Эл из ТД Цикл
    Если Эл.Ключ = ОбластьСтрока.Параметры.Фио Тогда
    ОбластьСтрока.Параметры.Заполнить(Эл.Значение);
    КонецЕсли;
    КонецЦикла;
```
---
А как же остальные параметры, кроме ФИО?
Правильнее так:
ОбластьСтрока.Параметры.Заполнить(ТД);
---
хотела циклы для каждого создать просто, то-есть цикл правильный, просто нужно изменить уже именно ОбластьСтрока.Параметры.Заполнить(Эл.Значение);?
---
Нет, цикл неправильный хотя бы ровно потому, что он не нужен.
Нет, ваш код тоже не сработает. Заполнение работает по ключам. Если есть в области параметр с ключом" ФИО и в структуре элемент с ключом "ФИО" - то они заполнятся. А вы передаете в заполнение не связку "ФИО - Иванов", а просто "Иванов". Каким образом система должна понять, что "Иванова" надо подставить в параметр "ФИО", а не в параметр "Должность"? Для системы это просто набор букв.
---
Спасибо, сейчас переделаю, 2 формы, потому что по условиям, нужно создать обработку, которая по кнопке будет открывать форму для ввода сотрудника и при нажатии на кнопку будет переносить информацию в поле табличного документа
---
Это абсурд. Переносить надо в табличное поле формы (или в реквизит формы типа таблицы значений не отображаемую на форме). А не в поле табличного документа. А вот уже потом на основании этой таблицы формировать табличный документ.
---
Такой вопрос, нужно из Заголовка строка, получить данные из колонки Оклад(Число) и после в итог суммировать, не совсем понимаю, откуда что берётся вообще, сделать через цикл, так же перебором, а какие данные брать
---
Вы изначально неправильно делаете задачу. У вас отчет - табличного вида, с итогами, значит и исходный материал для этого отчета должен быть в табличном виде. А не в виде струкутры с мифическими реквизитами формы.

Зачем вам вообще две формы??? Заполняйте на основной форме таблицу значений, а по кнопке формируйте печатный документ через макет.
---
Хорошо, допустим у меня есть код, который по нажатию кнопки будет добавлять и считать нужны значения, но как эти данные теперь с 2й формы перенести в поле табличного документа 1й формы?

```1c
    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");

    Таблица = новый ТаблицаЗначений;
    Таблица.Колонки.Добавить("ФИО");
    Таблица.Колонки.Добавить("Должность");
    Таблица.Колонки.Добавить("Оклад");

    ДобавлениеСотрудника = Таблица.Добавить();
    ДобавлениеСотрудника.ФИО = ФИО;
    ДобавлениеСотрудника.Должность = Должность;
    ДобавлениеСотрудника.Оклад = Оклад;

    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");

    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");

    Итого = 0;
    Для каждого ДобавлениеСотрудника из Таблица Цикл
    ТекОклад = ДобавлениеСотрудника.Оклад + ДобавлениеСотрудника.Оклад;
    Итого = Итого + ТекОклад;

    ОбластьПодвал.Параметры.Заполнить(ДобавлениеСотрудника);
    КонецЦикла;
```
---
НУ НЕТ ЖЕ! У вас уже должна быть таблица значений заполненная к моменту формирования табличного документа, не надо её заново заполнять!!! Надо брать готовые строки из уже существующей и выводить в табличный документ!

Вот вы внимательно почитайте свой код. Сколько строк у вас будет в таблице на момент начала цикла?
И второе - почитайте внимательно методы, которые есть у таблицы значений, прежде чем пытаться сформировать итоговый оклад в цикле.

Поймите - это РАЗНЫЕ процессы:
1. Заполнение исходной таблицы.
2. Вывод исходной таблицы в отчет.
---
Если я правильно понимаю, то я могу просто взять готовый макет и просто с ним производить манипуляции, а после вывести уже данные в поле табличного документа?
Каким методом мне вообще передавать данные на это поле табличного документа с 2й формы на 1ю форму? я вот этого в большей части не понимаю, код я перепишу, нужно просто понимание, как мне перенести то эти данные
---
Макет не хранит данные, и не предназначен для манипуляций. Макет является шаблоном для формирования печатной формы, не более того. ничего в нем накапливать не надо.
Каким методом мне вообще передавать данные на это поле табличного документа с 2й формы на 1ю форму? А чего вы решили, что вам надо именно переносить строки в табличный документ? Может стоит посмотреть задачу по другому: при каждом добавлении строки - ЗАНОВО формировать табличный докуемнт по всем накопленным данным?
---
Нужно именно: открывать форму для ввода сотрудника и при нажатии на клавишу переносить информацию в поле табличного документа. то-есть если повторять действия, то можно будет добавить 3,4,5...10го сотрудника и после у подвале увидеть Итоговый оклад всех сотрудников
---
Убейте автора задачи. Или приведите полностью её текст. Вряд ли там есть слова "программно переносить данные прямо в табличный документ". Скорее всего там есть слова типа "отображать вновь введенную информацию в табличном документе".
---
Вот весь текст задачи:
Создать обработку, которая по кнопке будет открывать форму для ввода сотрудника и при нажатии на клавишу переносить информацию в поле табличного документа.
Так же должна выводиться строка итогов после последней записи.
---
Ясно. Ни то ни се. Кароч, я бы сделал через таблицу значений, в которой накапливается информация и каждый раз обновляется табличный документ полностью.
Иначе придется считать итог перебирая ячейки самого табличного документа - таким извращением даже в теоретических целях заниматься не следует.
---
Табличный документ, который я код выше вставила, там место будет только для одного сотрудника, допустим она правильная, я заполняю данные, но как я передаю их то в 1ю форму в поле табличного документа, вот тут у меня понимания нет никакого
---
Не надо их тебе передавать в табличный документ. Тебе их надо передать обратно на первую форму. И уже первая форма с этими данными управляется - добавляет в таблицу значений и переформировывает табличный документ на основе таблицы значений.
1. Почитай метод Закрыть() у управляемой формы. (Это для второй формы)
2. Почитай метод ОткрытьФорму() в части Оповещения - (это для первой формы).
---
спасибо
---
Я правильно понимаю, что при выводе я указываю поле табличного документа с первой формы? Сотрудники - Реквизит который находится на форме (поле табличного документа), потому что у меня выдаёт ошибку 1С, что переменная не определена

```1c
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    Сотрудники.Вывести(ОбластьШапка);
```
---
По-моему вам надо разобраться - что такое табличный документ и что такое поле табличного документа, что такое таблица значение и табличное поле...

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

Так как у вас называется реквизит табличного документа? На какую переменную ругается код?
---
У меня 1С ругается на переменную Сотрудники, которую я вписываю на 2й форме, а находится он на 1 форме, как ТД, и он у меня добавлен на саму форму, я вот просто сейчас не понимаю, что мне нужно сделать, чтобы 2 форма видела мой реквизит с 1 формы и она уже выводила мне готовую ТД в поле, с расчетами, я просто так вывести опять не смогу?
---
Давайте скриншоты реквизитов уже. Спорю на бутылку коньяка, что у вас в реквизитах первой формы нет реквизита с именем Сотрудники.
---
Вот же они
---
Это в первой форме или во второй? И где исполняется код, который выдает ошибку - в первой форме или во второй?
---
Это скриншот первой формы, а код который исполняется с реквизитами ФИО,Должность и Оклад находится во второй форме, там и выдаётся ошибка, а если быть конкретнее, то Переменная не определена(Сотрудники)
---
Ну и как вы это себе представляете, что код второй формы должен видет ваш табличный документ с первой формы???
Я для кого разжевываю тут все - вы дожны со второй формы передать в первую введенные данные. ТОЧКА. Не надо пытаться лечить насморк через задницу, извините.
Пишу в последний раз:
1. Во второй форме вводятся только новые данные, и возвращаются в первую форму.
2. Первая форма принимает новые данные и кладет их в таблицу значений (накапливает данные в строках).
3. Первая форма формирует табличный документ на основании накопленной таблицы значений.
---
спасибо еще раз
---
вот, я сделала открыть форму, но я не понимаю, почему 2 форма не видит мой реквизит с первой формы
---
Вторая форма и не должна вам ничего видеть. Вы ей передали кучу параметров. Теперь вы должны рассказать этой второй форме - а чего с ними ей делать, зачем вы её передали такое счастье? Ваши "ПараметрыОткрытия", которые вы передали из первой формы будут видны во второй форме в обработчике ПриСозданииНаСервере() в свойстве Параметры.

Хотя на самом деле - надо делать все наоборот. Это со второй формы на первую надо передавать данные, которые вы там навводили, и уже первая форма должна их обрабатывать. Вторая форма ничего в первой делать не должна.