Всем привет!
Пишу процедуру для выгрузки в EXCEL Сверки с контрагентом, и есть у меня условие, если за текущий день нет сверки по контрагенту, то создать новую сверку.
Создать сам документ это совсем не сложно, но вот как заставить документ заполниться данными по взаиморасчетам.... НЕПОНИМАЮ....

Зашел в модуль посмотрел что там есть.
нашел:
  Документы.СверкаВзаиморасчетов.ЗаполнитьДанныеПоРасчетам(ДокументОбъект);
Но не отрабатывает...
---
Ну вот и ошибка

```1c
    Документ.Записать(РежимЗаписиДокумента.Запись);//Зачем записывать документ перед заполнением?
    //Документ уже и есть объект и его получать не нужно
    Документы.СверкаВзаиморасчетов.ЗаполнитьДанныеПоРасчетам(Документ);//Так правильно
    Документ.Записать(РежимЗаписиДокумента.Проведение);
```
---
А до этого Вы получали по ссылке новый объект
То есть
Документ - это объект1
Документ.Ссылка.ПолучитьОбъект() - вы получаете второй экземпляр объекта по ссылке, который записан в базу данных объект2
Заполняете объект2, после чего записываете объект1, который был не заполнен.
Все отрабатывается, но вызывается и записывается не корректно.
---
В модуль чего? Формы или документа?
В зависимости от конфигурации, процедуры могут располагаться в модуле формы документа, в модуле объекта (в модуле формы будет вызов модуля объекта) и в общих модулях (вызов так же будет в модуле формы).
Вообщем открывайте конфигуратор и на форме смотрите кнопку заполнения документа.
---
Я выше написал вот это:

```1c
    Документы.СверкаВзаиморасчетов.ЗаполнитьДанныеПоРасчетам(ДокументОбъект);
```

Это отрабатывает если пишу во внешней обработке, и выбираю уже созданный документ...
Но в процедуре создания документа, почему-то не отрабатывает....
Не могу понять почему....
---
Тогда стоит сделать отладку.
Что за процедура создания документа? пример кода в студию.
Принципиальной разницы где выполняется код не важен (имею виду форму, модуль документа или общий модуль и прочее), главное как вызывается процедура заполнения.
---
```1c
    Документ = Документы.СверкаВзаиморасчетов.СоздатьДокумент();
    Документ.Дата = ТекущаяДата();
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | КонтрагентыКонтактнаяИнформация.Ссылка КАК Контрагент
    |ИЗ
    | Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
    |ГДЕ
    | КонтрагентыКонтактнаяИнформация.НомерТелефона = &НомерТелефона";

    Запрос.УстановитьПараметр("НомерТелефона", СтрЗаменить(НомерТелефона.НастройкаПользователя1,"+","));
    РезультатЗап = Запрос.Выполнить();
    Выборка = РезультатЗап.Выбрать();
    Если Выборка.Следующий() тогда
    Документ.Контрагент = Выборка.Контрагент;
    КонецЕсли;
    Документ.Организация = Справочники.Организации.НайтиПоНаименованию("Металл-Сервис", ИСТИНА);
    Документ.НачалоПериода = НачалоГода(ТекущаяДата());
    Документ.КонецПериода = ТекущаяДата();
    Документ.Статус = Перечисления.СтатусыСверокВзаиморасчетов.Создана;
    Документ.ОтветственноеЛицо = Пользователи.ТекущийПользователь();

    Документ.Записать(РежимЗаписиДокумента.Запись);
    Документы.СверкаВзаиморасчетов.ЗаполнитьДанныеПоРасчетам(Документ.Ссылка.ПолучитьОбъект());
    Документ.Записать(РежимЗаписиДокумента.Проведение);
```

Я думаю, что т.к. все отработало в обработке заполнения СУЩЕСТВУЮЩЕГО документа, проблема у меня именно с получением объекта...
---
как советовали выше,
 Документ.Записать(РежимЗаписиДокумента.Запись);
переносите ниже

```1c
    Документы.СверкаВзаиморасчетов.ЗаполнитьДанныеПоРасчетам(Документ.Ссылка.ПолучитьОбъект());
```

только вместо этого
```1c
    Документ.Ссылка.ПолучитьОбъект()
```
 передавайте Документ, у это и есть документобъект, Вы же его создаете
---
Ну вот и ошибка

```1c
    Документ.Записать(РежимЗаписиДокумента.Запись);//Зачем записывать документ перед заполнением?
    //Документ уже и есть объект и его получать не нужно
    Документы.СверкаВзаиморасчетов.ЗаполнитьДанныеПоРасчетам(Документ);//Так правильно
    Документ.Записать(РежимЗаписиДокумента.Проведение);
```
---
А до этого Вы получали по ссылке новый объект
То есть
Документ - это объект1
Документ.Ссылка.ПолучитьОбъект() - вы получаете второй экземпляр объекта по ссылке, который записан в базу данных объект2
Заполняете объект2, после чего записываете объект1, который был не заполнен.
Все отрабатывается, но вызывается и записывается не корректно.
---
да, видать уже мозг припотел....
Огромное спасибо!