Привет инфостарцы.

В общий модуль передается табличная часть документа

```1c
    ОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
```

Можно как то в этом общем модуле определить владельца табличной части?
Будет достаточно определить тип документа.
---
Так не получится. В процедуру передается только коллекция формы. Тип документа там не определить. Нужны другие решения.
---
ОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);

Объект?
---
Откуда в общем модуле объект?
---
Объект.Ссылка
---
Нужно что-то из "шапки" документа?
я делал так:

```1c
    Процедура ОбработатьТЧ(ТЧ, СтруктураДействий, КэшированныеЗначения, аДополнительныеПараметры = неопределено)
```

Туда структуру с необходимыми данными.

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

переопределить структуру действий, чтобы не править каждую форму.
---
Любая ТЧ представляет собой отдельную таблицу в базе данных. Эти таблицы соединяются с таблицами документов (шапка) по реквизиту "Ссылка". Тип этого реквизита и нужно анализировать.
---
В данном случае это не табличная часть, а данные формы коллекция - нет реквизита "Ссылка".
---
Данные формы коллекция - копия табличной части на клиенте. Куда ссылка делась из копии? Нужно проставить в форме флажок "Использовать всегда" и ссылка появится. Может, и ещё каких-то данных нет в этой коллекции по сравнению с табличной частью? Посмотрите в сторону изменения постановки задачи.
---
Подскажите, где на форме "Использовать всегда"? Я в свойствах элемента формы не нашла такого...мере, в УТ 11.4, в документе реализации.
Приложила скрин в файле.
---
На вашем же скриншоте)
---
Точно)) я смотрела на свойства формы)) но у меня все равно нет ссылки, если в отладке проверять.
---
https://its.1c.ru/db/metod8dev/content/4270/hdoc Смотрите в свойствах реквизита. Перезапустите, что у Вас там, обработку или конфигурацию после установки этого свойства.
---
Спасибо, полезная информация!
---
В то место, откуда вызывается процедура общего модуля, в структуру действий добавьте поле "ТипДокумента".
СтруктураДействий.Вставить("ТипДокумента", ВашТипДокументаОткудаОнПередеаётся");

В общем модуле процедуры:

```1c
    Если СтруктураДействий.Свойство("ТипДокумента") = Тип("МойТипДокумента") Тогда
    //ваша доработка
    КонецЕсли;
```

Еще проще добавить Булево.
В то место, откуда вызывается процедура, в структуру действий добавьте поле "ЭтоНужныйМнеТипДокумента".

```1c
    СтруктураДействий.Вставить("ЭтоНужныйМнеТипДокумента", Истина");
```

В общем модуле:

```1c
    Если СтруктураДействий.Свойство("ЭтоНужныйМнеТипДокумента") = Истина Тогда
    //ваша доработка
    КонецЕсли;
```

Для других документов свойство не будет найдено и код не будет срабатывать
---
Не хотелось бы редактировать то место, откуда я вызываю процедуру