Здравствуйте! УТП 8.3(Обычные формы)

Есть документ "Реализация товаров и услуг", в нём ТЧ.Расшифровка(куда вписаны Исполнители(Контрагенты) и задачи, которые они сделали).
Далее на основании Реализации создаю "Поступление товаров и услуг", где есть такая же ТЧ.Расшифровка. Но одно не могу понять: как сделать, чтобы для Каждого исполнителя из ТЧ.Расшифровка(из Реализации) создавалась отдельное Поступление и туда попадали только его Задачи. Прошу помочь
---
1) Создать кнопку ( создать Поступление товаров и услуг)
2) далее прописываем:

```1c
    ТЧИсполнитель= Док.Расшифровка.Свернуть("Исполнитель");
    Для Каждого стр из ТЧИсполнительЦикл
    ДокПтиУ = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    ДокПтиУ.ДополнительныеСвойства.Вставить("Исполнитель", стр.Исполнитель );
    ДокПтиУ.Заполнить(ссылка);
    Док.ПолучитьФорму().Открыть();
    КонецЦикла;
```

3) В модуле документа Постпления ищем процедуру "ОбработкаЗаполнения"

в ней находим где у нас заполняется ТЧ Расшифровка и дальше делаем что-то типа:

```1c
    Если ДополнительныеСвойства.Свойство("Исполнитель") И ЗначениеЗаполнено(ДополнительныеСвойства.Исполнитель) Тогда
    //Тут пишем заполнения по сотруднику, можно в лоб перебрать все строки из документа основания и проверить совпадает ли у нас исполнитель с тем что находится в ДополнительныеСвойства.Исполнитель
    Иначе
    //а тут оставляем типовое заполнение ТЧ Расшифровки
    КонецЕсли;
```

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

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

Расшифровка
Исполнитель1 | Задача1 | 10 часов
Исполнитель1 | Задача2 | 5 часов
Исполнитель2 | Задача3 | 15 часов

Создаются 2 Поступления:
- в одном Контрагент = Исполнитель1
Услуги = Услуга | 15 часов
Расшифровка =
Задача1 | 10 часов
Задача2 | 5 часов

-второе поступление Контрагент = Исполнитель2
Услуги = Услуга | 15 часов
Расшифровка =
Задача3 | 15 часов
---
то есть, нужно бы делить по поступлениям Задачи каждого Исполнителя из Расшифровок
---
Далее на основании Реализации создаю "Поступление товаров и услуг" Вручную создаете? Или хотите, чтобы эти два (или больше) документа создавались автоматически?

В первом случае заполнение ТЧ.Расшифровка должно делаться в документе Поступление после выбора Исполнителя - надо в цикле заполнения ТЧ.Расшифровка вставить проверку на равенство Исполнителя в строках ТЧ и выбранного в Поступлении, несовпадающих - пропускать.

Вот втором варианте надо делать отдельную обработку или дописывать функционал в документ Реализация - например, создавать кнопку с соответствующим кодом.
---
Вам бы для начала хоть литературу почитать по программированию. Здесь-то за вас многое могут сделать, но вечно на чужом горбу не получится кататься) Задачка-то элементарная и буквально на 5 минут, если иметь хотя бы начальный уровень программирования
---
возможно вы правы
---
1) Создать кнопку ( создать Поступление товаров и услуг)
2) далее прописываем:

```1c
    ТЧИсполнитель= Док.Расшифровка.Свернуть("Исполнитель");
    Для Каждого стр из ТЧИсполнительЦикл
    ДокПтиУ = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    ДокПтиУ.ДополнительныеСвойства.Вставить("Исполнитель", стр.Исполнитель );
    ДокПтиУ.Заполнить(ссылка);
    Док.ПолучитьФорму().Открыть();
    КонецЦикла;
```

3) В модуле документа Постпления ищем процедуру "ОбработкаЗаполнения"

в ней находим где у нас заполняется ТЧ Расшифровка и дальше делаем что-то типа:

```1c
    Если ДополнительныеСвойства.Свойство("Исполнитель") И ЗначениеЗаполнено(ДополнительныеСвойства.Исполнитель) Тогда
    //Тут пишем заполнения по сотруднику, можно в лоб перебрать все строки из документа основания и проверить совпадает ли у нас исполнитель с тем что находится в ДополнительныеСвойства.Исполнитель
    Иначе
    //а тут оставляем типовое заполнение ТЧ Расшифровки
    КонецЕсли;
```

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

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

 ТЧИсполнитель= ЭтотОбъект.Расшифровка.Свернуть("Исполнитель");
    Для Каждого стр из ТЧИсполнитель Цикл
        ДокПтиУ = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
        ДокПтиУ.ДополнительныеСвойства.Вставить("Исполнитель", стр.Исполнитель );
        ДокПтиУ.Заполнить(ссылка);
        ЭтотОбъект.ПолучитьФорму().Открыть();
 КонецЦикла;

КонецПроцедуры
---
Пропустил я строчку, надо так:

```1c
    ТЧИсполнитель= ЭтотОбъект.Расшифровка.Выгрузить(,"Исполнитель");
    ТЧИсполнитель.Свернуть("Исполнитель");
```
---
Отладчиком посмотрел, вроде на этом моменте всё верно, но документы не создаются/не открываются
---
ЭтотОбъект.ПолучитьФорму().Открыть();
Меняем на
ДокПтиУ.ПолучитьФорму().Открыть();

Но не прописав ничего в модуле поступления вы получите столько документов, сколько у вас Исполнителей в расшифровке и они будут все одинаковые.
---
оооо, так получилось. Буду теперь думать, как правильно описать заполнение по Исполнителях