Товарищи! Прошу вас помочь.
Передо мной стоит задача: Требуется сделать обработку, которая будет создавать ПКО\РКО из файла Excel.

Конфигурация: Бухгалтерия предприятия, редакция 3.0 (3.0.63.15)
Платформа: (8.3.12.1616)

При создании РКО не получается заполнить реквизит "Договор" программно. Документ создается с пустым реквизитом "Договор".
При попытке добавить договор вручную в режиме предприятия(в документ, который был создан моим кодом), договор появляется в списке выбора, но когда я его выбираю, ничего не происходит(в поле договор ничего не подставляется). При этом заметил что отчищается поле "Статья расходов", если оно заполнено.
Если создать точно такой же документ вручную, то проблем с заполнением договора не будет.
Если создать новый документ копированием документа, сданного моим кодом, то поле договор не будет заполняться(Проблема останется).

Вот код функции создания РКО:

```1c
    Функция СоздатьРКО(МассивДанных,НомерСтроки)

    РКО = Документы.РасходныйКассовыйОрдер.СоздатьДокумент();
    РКО.Дата = ТекущаяДата();

    Если МассивДанных[1] = "Выдача займа контрагенту" тогда
    РКО.ВидОперации = Перечисления.ВидыОперацийРКО.ВыдачаЗаймаКонтрагенту;
    ИначеЕсли МассивДанных[1] = "Оплата от покупателя" тогда
    РКО.ВидОперации = Перечисления.ВидыОперацийРКО.ОплатаПоставщику;
    Иначе
    Сообщить("ПКО не создан не корректно указан вид операции Строка№" + НомерСтроки);
    КонецЕсли;

    РКО.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(МассивДанных[2]);
    РКО.СуммаДокумента = МассивДанных[3];
    РКО.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(МассивДанных[4]);
    РКО.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоНаименованию(МассивДанных[5]);
    РКО.Ответственный = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
    РКО.Комментарий = "Создан автоматически";

    Попытка
    ПКО.Записать(РежимЗаписиДокумента.Запись);
    Исключение
    Сообщить(ОписаниеОшибки());
    КонецПопытки;

    КонецФункции
```

Я думаю, что нужно заполнить какой-то не явный реквизит, который не отображается на форме, но понять какой, у меня не получается...
Прошу вас помочь мне разобраться с проблемой. Заранее благодарен всем за ответы!!!
---
Надо заполнять договор и другие реквизиты в ТЧ РасшифровкаПлатежа.

```1c
    РКО.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(МассивДанных[4]);
    СтрокаРасшифровки = РКО.РасшифровкаПлатежа.Добавить();
    СтрокаРасшифровки.ДоговорКонтрагента = РКО.ДоговорКонтрагента;
```

И в конце стоит ПКО.Записать вместо РКО.
---
Нужно тогда делать так

```1c
    РКО.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(МассивДанных[2]);
    РКО.СуммаДокумента = МассивДанных[3];
    Если ЗначениеЗаполнено(РКО.Контрагент) Тогда
    ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(МассивДанных[4], , , РКО.Контрагент);
    РКО.ДоговорКонтрагента = ДоговорКонтрагента ;
    СтрокаРасшифровки = РКО.РасшифровкаПлатежа.Добавить();
    СтрокаРасшифровки.ДоговорКонтрагента = РКО.ДоговорКонтрагента;
    КонецЕсли;
```
---
Надо заполнять договор и другие реквизиты в ТЧ РасшифровкаПлатежа.

```1c
    РКО.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(МассивДанных[4]);
    СтрокаРасшифровки = РКО.РасшифровкаПлатежа.Добавить();
    СтрокаРасшифровки.ДоговорКонтрагента = РКО.ДоговорКонтрагента;
```

И в конце стоит ПКО.Записать вместо РКО.
---
```1c
    РКО.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(МассивДанных[2]);
    РКО.СуммаДокумента = МассивДанных[3];
    РКО.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(МассивДанных[4]);
```

Ага, и таким кодом мы легко подцепим договор другого контрагента... делайте хотя бы так:

```1c
    РКО.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(МассивДанных[2]);
    РКО.СуммаДокумента = МассивДанных[3];
    Если ЗначениеЗаполнено(РКО.Контрагент) Тогда
    РКО.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(МассивДанных[4], , , РКО.Контрагент);
    КонецЕсли;
```
---
Нужно тогда делать так

```1c
    РКО.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(МассивДанных[2]);
    РКО.СуммаДокумента = МассивДанных[3];
    Если ЗначениеЗаполнено(РКО.Контрагент) Тогда
    ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(МассивДанных[4], , , РКО.Контрагент);
    РКО.ДоговорКонтрагента = ДоговорКонтрагента ;
    СтрокаРасшифровки = РКО.РасшифровкаПлатежа.Добавить();
    СтрокаРасшифровки.ДоговорКонтрагента = РКО.ДоговорКонтрагента;
    КонецЕсли;
```
---
Вы сами посмотрите как заполняется РКО и ПКО типовым методом при вводе на основании, там все и увидите. Это процедура находиться в модуле объекта ПКО или РКО "ОбработкаЗаполнения".
---
Помогло =)

```1c
    РКО.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(МассивДанных[2]);
    РКО.СуммаДокумента = МассивДанных[3];
    Если ЗначениеЗаполнено(РКО.Контрагент) Тогда
    ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(МассивДанных[4], , , РКО.Контрагент);
    РКО.ДоговорКонтрагента = ДоговорКонтрагента ;
    СтрокаРасшифровки = РКО.РасшифровкаПлатежа.Добавить();
    СтрокаРасшифровки.ДоговорКонтрагента = РКО.ДоговорКонтрагента;
    КонецЕсли;
```

Всем большое спасибо, научили!!