Добрый день!
Подскажите в ошибке в коде обработки. Хочу сформировать ОперациюБух с проводками Дт91.02 Кт 10.01(данные берутся из запроса). У меня сейчас формируется пустой документ. Что нужно поправить в коде? Подскажите, пожалуйста!
Подскажите в ошибке в коде обработки. Хочу сформировать ОперациюБух с проводками Дт91.02 Кт 10.01(данные берутся из запроса). У меня сейчас формируется пустой документ. Что нужно поправить в коде? Подскажите, пожалуйста!
Дата='20181231235959';
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
| ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
| ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Склад,
| ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток КАК Сумма,
| ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК Количество
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Дата1, &Дата2, , , Счет.Родитель = &Счет, , ) КАК ХозрасчетныйОстаткиИОбороты
|ГДЕ
| ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток < &Сумма
| И ХозрасчетныйОстаткиИОбороты.Субконто2 = &Склад
|
|УПОРЯДОЧИТЬ ПО
| Склад
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("Дата1", Дата);
Запрос.УстановитьПараметр("Дата2", КонецДня(Дата));
Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоКоду("00-000014"));
Запрос.УстановитьПараметр("Сумма", "50");
Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.Материалы);
БухСпр = Документы.ОперацияБух.СоздатьДокумент();
БухСпр.Дата = Дата;
БухСпр.Организация=Справочники.Организации.НайтиПоКоду("00-000001");
БухСпр.Ответственный=Пользователи.ТекущийПользователь();
БухСпрСсылка = БухСпр.Ссылка;
РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
РегХозрасчетный.Отбор.Регистратор.Значение = БухСпрСсылка;
РезультатЗапроса = Запрос.Выполнить();
Выборка= РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
РегЗапись = РегХозрасчетный.Добавить();
РегЗапись.Период = Дата;
РегЗапись.Регистратор = БухСпрСсылка;
РегЗапись.Организация = Справочники.Организации.НайтиПоКоду("00-000001");
РегЗапись.СчетДт=ПланыСчетов.Хозрасчетный.ПрочиеРасходы;
РегЗапись.СчетКт=Выборка.Счет;
БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Номенклатура", Выборка.Номенклатура);
БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Склады", Выборка.Склад);
РегЗапись.КоличествоКт=Выборка.Количество;
РегЗапись.Сумма=Выборка.Сумма;
КонецЦикла;
БухСпр.Записать(РежимЗаписиДокумента.Запись);
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Рабочий код из обработки по созданию операции из табличного документа:
ДокОперация = Документы.ОперацияБух.СоздатьДокумент();
ДокОперация.Дата = Объект.ДатаОперации;
ДокОперация.УстановитьВремя();
ДокОперация.Организация = Объект.Организация;
ДокОперация.Ответственный = ПолучитьПользователяНаСервере();
ДокОперация.Содержание = Объект.Комментарий;
ДокОперация.Комментарий = Объект.Комментарий;
ДокОперация.Записать();
РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
РегХозрасчетный.Отбор.Регистратор.Значение = Объект.ДокОперация;
КолвоЭлементов = 0;
СуммаОперации = 0;
ПерваяСтрокаДанныхТабличногоДокумента = 2
Для К = ПерваяСтрокаДанныхТабличногоДокумента По Объект.ТабДок.ВысотаТаблицы Цикл
РегЗапись = РегХозрасчетный.Добавить();
РегЗапись.Период = Объект.ДатаОперации;
РегЗапись.Регистратор = Объект.ДокОперация;
РегЗапись.Организация = Объект.Организация;
РегЗапись.Содержание = ТекущаяСтрока[8];
РегЗапись.СчетДт = ПланыСчетов.Хозрасчетный.ГотоваяПродукция;
РегЗапись.СчетКт = ПланыСчетов.Хозрасчетный.ВыпускПродукции;
РегЗапись.Сумма = ТекущаяСтрока[7];
СуммаОперации = СуммаОперации + ТекущаяСтрока[7];
КолвоЭлементов = КолвоЭлементов + 1;
КонецЦикла;
РегХозрасчетный.Записать();
ДокОбъект = Объект.ДокОперация.ПолучитьОбъект();
ДокОбъект.СуммаОперации = СуммаОперации;
ДокОбъект.Записать();
ПоказатьБухСпр = Документы.ОперацияБух.СоздатьДокумент();
Движение = БухСпр.Движения.Хозрасчетный;
Движение.Записывать = Истина;
РезультатЗапроса = Запрос.Выполнить();
Выборка= РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Запись = Движение.Добавить();
Запись.Период = Дата;
Запись.Организация = Справочники.Организации.НайтиПоКоду("00-000001");
Запись.СчетДт =ПланыСчетов.Хозрасчетный.ПрочиеРасходы;
Запись.СчетКт = Выборка.Счет;
БухгалтерскийУчет.УстановитьСубконто(Запись.СчетДт, Запись.СубконтоДт, "Номенклатура", Выборка.Номенклатура);
БухгалтерскийУчет.УстановитьСубконто(Запись.СчетДт, Запись.СубконтоДт, "Склады", Выборка.Склад);
Запись.Сумма = Выборка.Сумма;
Запись.КоличествоКт=Выборка.Количество;
КонецЦикла;
БухСпр.Движения.Записать();
Показать
Просто перенести последнюю строку
сразу после
Т.к. сейчас вы связываете движения с объектом (ссылкой, регистратором), которого еще нет в базе.
БухСпр.Записать(РежимЗаписиДокумента.Запись);
сразу после
БухСпр.Ответственный=Пользователи.ТекущийПользователь();
Т.к. сейчас вы связываете движения с объектом (ссылкой, регистратором), которого еще нет в базе.
Записывать надо в движения.
Дата='20181231235959';
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
| ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
| ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Склад,
| ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток КАК Сумма,
| ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК Количество
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Дата1, &Дата2, , , Счет.Родитель = &Счет, , ) КАК ХозрасчетныйОстаткиИОбороты
|ГДЕ
| ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток < &Сумма
| И ХозрасчетныйОстаткиИОбороты.Субконто2 = &Склад
|
|УПОРЯДОЧИТЬ ПО
| Склад
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("Дата1", Дата);
Запрос.УстановитьПараметр("Дата2", КонецДня(Дата));
Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоКоду("00-000014"));
Запрос.УстановитьПараметр("Сумма", "50");
Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.Материалы);
БухСпр = Документы.ОперацияБух.СоздатьДокумент();
БухСпр.Дата = Дата;
БухСпр.Организация=Справочники.Организации.НайтиПоКоду("00-000001");
БухСпр.Ответственный=Пользователи.ТекущийПользователь();
РегХозрасчетный = БухСпр.Движения.Хозрасчетный;
РегХозрасчетный.Записывать = Истина;
РезультатЗапроса = Запрос.Выполнить();
Выборка= РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
РегЗапись = РегХозрасчетный.Добавить();
РегЗапись.Период = Дата;
РегЗапись.Регистратор = БухСпрСсылка;
РегЗапись.Организация = Справочники.Организации.НайтиПоКоду("00-000001");
РегЗапись.СчетДт=ПланыСчетов.Хозрасчетный.ПрочиеРасходы;
РегЗапись.СчетКт=Выборка.Счет;
БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Номенклатура", Выборка.Номенклатура);
БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Склады", Выборка.Склад);
РегЗапись.КоличествоКт=Выборка.Количество;
РегЗапись.Сумма=Выборка.Сумма;
КонецЦикла;
БухСпр.Записать();
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот