Создаю программно документ Отчет о розничных продажах и пытаюсь добавить данные в таблицу возвратов.

Делаю так: создаю отчет, добавляю продажи, добавляю возвраты, записываю с проведением.

Если дата возврата товара та же, что дата отчета (т.е. его купили и вернули в тот же день). При проведении возникает ошибка:

Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ОбработкаПроведения': {ОбщийМодуль.НалоговыйУчетУСН.Модуль(13168)}: Ошибка при вызове метода контекста (Заблокировать): Неверный тип значения: РегистрНакопления.РасходыПриУСН.Партия

В сообщениях:

Документом "Отчет о розничных продажах 0000-000247 от 09.09.2018 23:00:00" было реализовано "Какой-то товар" на "1" ед. меньше, чем возвращается.

Пробовал иначе: добавлял продажи, проводил, добавлял возвраты, проводил. Окно сообщений уже не появлялось, но ошибка вознила та же. Докумет создан и проведен, но без возвратов.

При возврате товара проданного в предыдущей день возникает ошибка:

Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ОбработкаПроведения': {ОбщийМодуль.НалоговыйУчетУСН.Модуль(1044)}: Значение не является значением объектного типа (Метаданные)

При создании документа вручную все проходит нормально. Как решить проблему?

1С:Предприятие 8.3 (8.3.11.3034)
Бухгалтерия предприятия (базовая), редакция 3.0 (3.0.64.54)
---
Получил ответ от техподдержки 1С: "Это проявление ошибки 10197456."
---
Нужен код Вашей обработки
---
сразу оговорюсь, я сделала проще у меня возвраты в табличной части отчета о розничных, именно по причине возврата день в день (обычно такая номенклатура просто выпадает из отчета о розничных) так как вручную создавая документы я так и не смога сделать нормальную цепочку продали - вернули.

по вашему вопросу, в докумнте очень много скрытых полей, сравните заполнение документа созданного вручную и созданного вами программно.
---
```1c
    &НаСервере
    Функция ЗагрузитьОтчетРП(УзелXML)
    КодОрганизации = "00-000001";
    КодСклада = "00-000001";
    КодСтатьиДДС = "00-000008";
    КодСчетаКассы = "50.01";
    КодСчетаУчета = "41.01";
    КодСчетаДоходов = "90.01.1";
    КодСчетаРасходов = "90.02.1";

    Попытка
    // проверка загрузки
    ДатаДокумента = Дата(УзелXML.ПолучитьАтрибут("date"));
    Если(НайтиОтчетРП(ДатаДокумента)) Тогда
    Лог("Отчет за этот день уже загружен " + ДатаДокумента);
    Возврат Ложь;
    КонецЕсли;

    // Получить Организацию
    Организация = Справочники.Организации.НайтиПоКоду(КодОрганизации);
    Если Организация.Пустая() Тогда
    Лог("Организация не найдена " + КодОрганизации);
    Возврат Ложь;
    КонецЕсли;
    // Получить склад
    Склад = Справочники.Склады.НайтиПоКоду(КодСклада);
    Если Склад.Пустая() Тогда
    Лог("Склад не найден " + КодСклада);
    Возврат Ложь;
    КонецЕсли;
    // Получить статья ДДС
    СтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоКоду(КодСтатьиДДС);
    Если СтатьяДДС.Пустая() Тогда
    Лог("Статья ДДС не найдена " + КодСтатьиДДС);
    Возврат Ложь;
    КонецЕсли;

    // Получить счет кассы
    СчетКассы = ПланыСчетов.Хозрасчетный.НайтиПоКоду(КодСчетаКассы);
    Если СчетКассы.Пустая() Тогда
    Лог("Счет кассы не найден " + КодСчетаКассы);
    Возврат Ложь;
    КонецЕсли;
    // Получить счет учета
    СчетУчета = ПланыСчетов.Хозрасчетный.НайтиПоКоду(КодСчетаУчета);
    Если СчетУчета.Пустая() Тогда
    Сообщить("СчетУчета не найден " + КодСчетаУчета);
    Возврат Ложь;
    КонецЕсли;
    // Получить счет доходов
    СчетДоходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду(КодСчетаДоходов);
    Если СчетДоходов.Пустая() Тогда
    Лог("СчетДоходов не найден " + КодСчетаДоходов);
    Возврат Ложь;
    КонецЕсли;
    // Получить счет расходов
    СчетРасходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду(КодСчетаРасходов);
    Если СчетРасходов.Пустая() Тогда
    Лог("СчетРасходов не найден " + КодСчетаРасходов);
    Возврат Ложь;
    КонецЕсли;

    // Получить вид оплаты
    ВидОплаты = Справочники.ВидыОплатОрганизаций.НайтиПоНаименованию("Карта");
    Если ВидОплаты.Пустая() Тогда
    Лог("ВидОплаты не найден 'Карта'");
    Возврат Ложь;
    КонецЕсли;

    // -------------------- загрузка ----------------
    ОтчетРП = СоздатьОтчетРП(Организация, ДатаДокумента, Склад, СтатьяДДС, СчетКассы);
    // продажи
    Для Каждого УзелСтрокаДокумента из УзелXML.ДочерниеУзлы Цикл
    Если УзелСтрокаДокумента.ИмяУзла = "item" Тогда
    КодТовара = УзелСтрокаДокумента.ПолучитьАтрибут("code");
    КоличествоТовара = УзелСтрокаДокумента.ПолучитьАтрибут("count");
    ЦенаТовара = УзелСтрокаДокумента.ПолучитьАтрибут("price");
    ДобавитьСтрокуВОтчетРП(ОтчетРП, КодТовара, КоличествоТовара, ЦенаТовара, СчетУчета, СчетРасходов, СчетДоходов);
    ИначеЕсли УзелСтрокаДокумента.ИмяУзла = "pay" Тогда
    СуммаОплатыКартой = УзелСтрокаДокумента.ПолучитьАтрибут("sum");
    ДобавитьОплатуВОтчетРП(ОтчетРП, ВидОплаты, СуммаОплатыКартой);
    //ИначеЕсли УзелСтрокаДокумента.ИмяУзла = "return" Тогда
    // КодТовара = УзелСтрокаДокумента.ПолучитьАтрибут("code");
    // КоличествоТовара = УзелСтрокаДокумента.ПолучитьАтрибут("count");
    // ЦенаТовара = УзелСтрокаДокумента.ПолучитьАтрибут("price");
    // ДатаРеализации = Дата(УзелXML.ПолучитьАтрибут("date"));
    // ДобавитьСтрокуВозвратаВОтчетРП(ОтчетРП, КодТовара, КоличествоТовара, ЦенаТовара, ДатаРеализации, СчетУчета, СчетРасходов, СчетДоходов);
    //ИначеЕсли УзелСтрокаДокумента.ИмяУзла = "returnpay" Тогда
    // СуммаВозвратаКартой = УзелСтрокаДокумента.ПолучитьАтрибут("sum");
    // ДобавитьОплатуВОтчетРП(ОтчетРП, ВидОплаты, СуммаВозвратаКартой);
    КонецЕсли;
    КонецЦикла;

    ОтчетРП.Записать(РежимЗаписиДокумента.Проведение);

    // возвраты
    Для Каждого УзелСтрокаДокумента из УзелXML.ДочерниеУзлы Цикл
    Если УзелСтрокаДокумента.ИмяУзла = "return" Тогда
    КодТовара = УзелСтрокаДокумента.ПолучитьАтрибут("code");
    КоличествоТовара = УзелСтрокаДокумента.ПолучитьАтрибут("count");
    ЦенаТовара = УзелСтрокаДокумента.ПолучитьАтрибут("price");
    ДатаРеализации = Дата(УзелXML.ПолучитьАтрибут("date"));
    ДобавитьСтрокуВозвратаВОтчетРП(ОтчетРП, КодТовара, КоличествоТовара, ЦенаТовара, ДатаРеализации, СчетУчета, СчетРасходов, СчетДоходов);
    ИначеЕсли УзелСтрокаДокумента.ИмяУзла = "returnpay" Тогда
    СуммаВозвратаКартой = УзелСтрокаДокумента.ПолучитьАтрибут("sum");
    ДобавитьОплатуВОтчетРП(ОтчетРП, ВидОплаты, СуммаВозвратаКартой);
    КонецЕсли;
    КонецЦикла;
    ОтчетРП.Записать(РежимЗаписиДокумента.Проведение);
    Исключение
    Лог(ОписаниеОшибки());
    Возврат Ложь;
    КонецПопытки;
    КонецФункции

    &НаСервере
    Функция СоздатьОтчетРП(Организация, Дата, Склад, СтатьяДДС, СчетКассы)

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

    &НаСервере
    Функция ДобавитьСтрокуВОтчетРП(ОтчетРП, КодТовара, Количество, ЦенаТовара, СчетУчета, СчетРасходов, СчетДоходов)
    Номенклатура = Справочники.Номенклатура.НайтиПоКоду(КодТовара);
    Если Номенклатура.Пустая() Тогда
    Лог("Не удалось найти товар " + КодТовара);
    Возврат Ложь;
    КонецЕсли;
    Товар = ОтчетРП.Товары.Добавить();
    Товар.Номенклатура = Номенклатура;
    Товар.Количество = Количество;
    Товар.Цена = ЦенаТовара;
    Товар.Сумма = ЦенаТовара * Количество;
    Товар.СчетУчета = СчетУчета;
    Товар.СчетРасходов = СчетРасходов;
    Товар.СчетДоходов = СчетДоходов;
    Товар.Субконто = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Основная номенклатурная группа");
    Товар.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
    // ОтчетРП.Записать(РежимЗаписиДокумента.Запись);
    КонецФункции

    &НаСервере
    Функция ДобавитьОплатуВОтчетРП(ОтчетРП, ВидОплаты, СуммаОплатыКартой)
    Оплата = ОтчетРП.Оплата.Добавить();
    Оплата.ВидОплаты = ВидОплаты;
    Оплата.СуммаОплаты = СуммаОплатыКартой;
    // ОтчетРП.Записать(РежимЗаписиДокумента.Запись);
    КонецФункции

    &НаСервере
    Функция ДобавитьСтрокуВозвратаВОтчетРП(ОтчетРП, КодТовара, Количество, ЦенаТовара, ДатаРеализации, СчетУчета, СчетРасходов, СчетДоходов)
    Номенклатура = Справочники.Номенклатура.НайтиПоКоду(КодТовара);
    Если Номенклатура.Пустая() Тогда
    Лог("Не удалось найти товар " + КодТовара);
    Возврат Ложь;
    КонецЕсли;
    ВозвратТовара = ОтчетРП.Возвраты.Добавить();
    ВозвратТовара.Номенклатура = Номенклатура;
    ВозвратТовара.Количество = Количество;
    ВозвратТовара.Цена = ЦенаТовара;
    ВозвратТовара.Сумма = ЦенаТовара * Количество;
    ВозвратТовара.СчетУчета = СчетУчета;
    ВозвратТовара.СчетРасходов = СчетРасходов;
    ВозвратТовара.СчетДоходов = СчетДоходов;
    ВозвратТовара.Субконто = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Основная номенклатурная группа");
    ВозвратТовара.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
    ВозвратТовара.ДатаРеализации = ДатаРеализации;

    // ОтчетРП.Записать(РежимЗаписиДокумента.Запись);
    КонецФункции

    &НаСервере
    Функция ДобавитьОплатуВозвратаВОтчетРП(ОтчетРП, ВидОплаты, СуммаВозвратаКартой)
    ВозвратОплата = ОтчетРП.Оплата.Добавить();
    ВозвратОплата.ВидОплаты = ВидОплаты;
    ВозвратОплата.СуммаОплаты = СуммаВозвратаКартой;
    // ОтчетРП.Записать(РежимЗаписиДокумента.Запись);
    КонецФункции

    &НаСервере
    Функция НайтиОтчетРП(ДатаДокумента)
```
---
Ой блин с какого релиза эта новая таблица значений
---
Как выяснилось вручную происходить то же самое. Просто до этого я пробывал в уже проведенном документе добавлял.

Если создаешь новый отчет, добавляешь товар и возврат - ошибка. Если вручную добавить в отчет продажу товара и сохранить. А потом открыть добавить возврат. То проводиться. Программно повторить это не получилось.

(5) Ой блин с какого релиза эта новая таблица значений
На прошлой неделе заметил.
---
Получил ответ от техподдержки 1С: "Это проявление ошибки 10197456."
---
Добрый день.
Чем ваша история с возвратами завершилась?
Столкнулся с аналогичной проблемой.
---
Отбой. Сам ошибся.