Обработка по Созданию ОперацииБух в БП 3.0

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


	БухСпр = Документы.ОперацияБух.СоздатьДокумент();

	БухСпр.Дата = Дата;
	БухСпр.Организация=Справочники.Организации.НайтиПоКоду("00-000001");
	БухСпр.Ответственный=Пользователи.ТекущийПользователь();
	
	БухСпрСсылка = БухСпр.Ссылка;
	РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
	РегХозрасчетный.Отбор.Регистратор.Значение = БухСпрСсылка;

	РезультатЗапроса = Запрос.Выполнить();
	Выборка= РезультатЗапроса.Выбрать();
	Пока Выборка.Следующий() Цикл
		
		РегЗапись = РегХозрасчетный.Добавить(); 
		РегЗапись.Период = Дата;
		РегЗапись.Регистратор = БухСпрСсылка;
		РегЗапись.Организация = Справочники.Организации.НайтиПоКоду("00-000001"); 
		РегЗапись.СчетДт=ПланыСчетов.Хозрасчетный.ПрочиеРасходы;
		РегЗапись.СчетКт=Выборка.Счет;
		БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Номенклатура", Выборка.Номенклатура);
		БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Склады", Выборка.Склад);

		РегЗапись.КоличествоКт=Выборка.Количество;
		РегЗапись.Сумма=Выборка.Сумма;

	КонецЦикла;

	БухСпр.Записать(РежимЗаписиДокумента.Запись);

Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. user1088693 08.02.19 11:52 Сейчас в теме
(1) После строки РегХозрасчетный.Отбор.Регистратор.Значение = БухСпрСсылка, Вам нужно написать РегХозрасчетный.Прочитать()
4. user1088693 08.02.19 11:55 Сейчас в теме
(3) Еще нужно написать в конце, перед тем как записываете документ РегХозрасчетный.Записать();
2. Linda1C 08.02.19 11:44 Сейчас в теме
Строки не добавляются в табличную часть
5. ishelper 08.02.19 12:06 Сейчас в теме
Рабочий код из обработки по созданию операции из табличного документа:
	ДокОперация = Документы.ОперацияБух.СоздатьДокумент();
	ДокОперация.Дата = Объект.ДатаОперации;
	ДокОперация.УстановитьВремя();
	ДокОперация.Организация = Объект.Организация;
	ДокОперация.Ответственный = ПолучитьПользователяНаСервере();
	ДокОперация.Содержание = Объект.Комментарий;
	ДокОперация.Комментарий = Объект.Комментарий;
	ДокОперация.Записать();
	РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
	РегХозрасчетный.Отбор.Регистратор.Значение = Объект.ДокОперация;
	КолвоЭлементов = 0;
	СуммаОперации = 0;
	ПерваяСтрокаДанныхТабличногоДокумента = 2
	Для К = ПерваяСтрокаДанныхТабличногоДокумента По Объект.ТабДок.ВысотаТаблицы Цикл
		РегЗапись = РегХозрасчетный.Добавить();
		РегЗапись.Период = Объект.ДатаОперации;
		РегЗапись.Регистратор = Объект.ДокОперация;
		РегЗапись.Организация = Объект.Организация;
		РегЗапись.Содержание  = ТекущаяСтрока[8];
		РегЗапись.СчетДт = ПланыСчетов.Хозрасчетный.ГотоваяПродукция;
		РегЗапись.СчетКт = ПланыСчетов.Хозрасчетный.ВыпускПродукции;
		РегЗапись.Сумма = ТекущаяСтрока[7];
		СуммаОперации = СуммаОперации + ТекущаяСтрока[7];
		КолвоЭлементов = КолвоЭлементов + 1;
	КонецЦикла;
	РегХозрасчетный.Записать();
	ДокОбъект = Объект.ДокОперация.ПолучитьОбъект();
	ДокОбъект.СуммаОперации = СуммаОперации;
	ДокОбъект.Записать();
Показать
6. melenaspb 208 08.02.19 12:20 Сейчас в теме
БухСпр = Документы.ОперацияБух.СоздатьДокумент();
	Движение = БухСпр.Движения.Хозрасчетный;
	Движение.Записывать = Истина;
	
	РезультатЗапроса = Запрос.Выполнить();
	Выборка= РезультатЗапроса.Выбрать();
	Пока Выборка.Следующий() Цикл
		
		Запись = Движение.Добавить();
		Запись.Период      = Дата;
		Запись.Организация = Справочники.Организации.НайтиПоКоду("00-000001"); 
		
		Запись.СчетДт =ПланыСчетов.Хозрасчетный.ПрочиеРасходы;
		Запись.СчетКт = Выборка.Счет;
		БухгалтерскийУчет.УстановитьСубконто(Запись.СчетДт, Запись.СубконтоДт, "Номенклатура", Выборка.Номенклатура);
		БухгалтерскийУчет.УстановитьСубконто(Запись.СчетДт, Запись.СубконтоДт, "Склады", Выборка.Склад);
		
		Запись.Сумма = Выборка.Сумма;
		Запись.КоличествоКт=Выборка.Количество;
			
	КонецЦикла;
	
	БухСпр.Движения.Записать();
Показать
7. JohnGalt 58 08.02.19 12:43 Сейчас в теме
Нужно писать не в регистр, а в движения документа, и чтобы сразу открылась заполненная форма документа ОпперацияБух, нужно открывать модально.
8. roman8115 59 08.02.19 17:27 Сейчас в теме
после создания набора записей

РегХозрасчетный.Записывать = Истина

или в конце

РегХозрасчетный.Записать()
9. helgi 08.02.19 22:25 Сейчас в теме
Просто перенести последнюю строку

БухСпр.Записать(РежимЗаписиДокумента.Запись);


сразу после

БухСпр.Ответственный=Пользователи.ТекущийПользователь();


Т.к. сейчас вы связываете движения с объектом (ссылкой, регистратором), которого еще нет в базе.
10. 17808849 61 04.03.19 14:17 Сейчас в теме
Записывать надо в движения.
    Дата='20181231235959';
    Запрос = Новый Запрос;
    Запрос.Текст = 
         "ВЫБРАТЬ
         |    ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
         |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
         |    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Склад,
         |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток КАК Сумма,
         |    ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК Количество
         |ИЗ
         |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Дата1, &Дата2, , , Счет.Родитель = &Счет, , ) КАК ХозрасчетныйОстаткиИОбороты
         |ГДЕ
         |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток < &Сумма
         |    И ХозрасчетныйОстаткиИОбороты.Субконто2 = &Склад
         |
         |УПОРЯДОЧИТЬ ПО
         |    Склад
         |АВТОУПОРЯДОЧИВАНИЕ";
    Запрос.УстановитьПараметр("Дата1", Дата);
    Запрос.УстановитьПараметр("Дата2", КонецДня(Дата));
    Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоКоду("00-000014"));
    Запрос.УстановитьПараметр("Сумма", "50"); 
    Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.Материалы);


    БухСпр = Документы.ОперацияБух.СоздатьДокумент();

    БухСпр.Дата = Дата;
    БухСпр.Организация=Справочники.Организации.НайтиПоКоду("00-000001");
    БухСпр.Ответственный=Пользователи.ТекущийПользователь();
    
    РегХозрасчетный = БухСпр.Движения.Хозрасчетный;
    РегХозрасчетный.Записывать = Истина;

    РезультатЗапроса = Запрос.Выполнить();
    Выборка= РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
        
        РегЗапись = РегХозрасчетный.Добавить(); 
        РегЗапись.Период = Дата;
        РегЗапись.Регистратор = БухСпрСсылка;
        РегЗапись.Организация = Справочники.Организации.НайтиПоКоду("00-000001"); 
        РегЗапись.СчетДт=ПланыСчетов.Хозрасчетный.ПрочиеРасходы;
        РегЗапись.СчетКт=Выборка.Счет;
        БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Номенклатура", Выборка.Номенклатура);
        БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Склады", Выборка.Склад);

        РегЗапись.КоличествоКт=Выборка.Количество;
        РегЗапись.Сумма=Выборка.Сумма;

    КонецЦикла;

    БухСпр.Записать();
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот