Не добавляются строки в таблицу

1. user2128470 21.05.25 12:42 Сейчас в теме
Приветствую! Я сейчас подготавливаюсь к экзамену 1С специалист решаю задачи по бухучёту для экзамена по 1С. Мне нужно через обработку создать документ "Операция" и проставить проводки в табличной части.

Создание документа и запись проходят успешно, а вот с заполнением таблицы – затык. Когда пытаюсь добавить строку через:
НоваяСтрока = Таблица.Добавить();
метод возвращает Ложь, и строка не добавляется.

Вопрос: С чем это может быть связано?.

Вот код -
Процедура Перерасчет(Дата)
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	УправленческийОстатки.Субконто1 КАК Контрагент,
|	УправленческийОстатки.Субконто2 КАК Договор,
|	ЕСТЬNULL(УправленческийОстатки.СуммаВалОстаток, 0) * ЕСТЬNULL(КурсыВалютСрезПоследних.Курс, 0) КАК СуммаНовая,
|	ЕСТЬNULL(УправленческийОстатки.СуммаОстаток, 0) КАК СуммаСтарая
|ИЗ
|	РегистрБухгалтерии.Управленческий.Остатки(&МоментВремени, Счет = &Счет, &МассивСубконто, ) КАК УправленческийОстатки
|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&МоментВремени, ) КАК КурсыВалютСрезПоследних
|		ПО УправленческийОстатки.Субконто2.Валюта = КурсыВалютСрезПоследних.Валюта
|ГДЕ
|	УправленческийОстатки.Субконто2.Валюта <> &Рубль
|
|УПОРЯДОЧИТЬ ПО
|	Контрагент";
Запрос.УстановитьПараметр("МоментВремени", Дата );
Запрос.УстановитьПараметр("Счет", ПланыСчетов.Управленческий.Покупатели);
Запрос.УстановитьПараметр("Рубль", Справочники.Валюты.НайтиПоКоду(810));

МассивСубконто = Новый Массив(2);
МассивСубконто[0] = ПланыВидовХарактеристик.ВидыСубконто.Контрагент;
МассивСубконто[1] = ПланыВидовХарактеристик.ВидыСубконто.Договор;

Запрос.УстановитьПараметр("МассивСубконто", МассивСубконто);

Результат = Запрос.Выполнить();  

Выборка = Результат.Выбрать(); 

Операция = Документы.Операция.СоздатьДокумент(); 
Операция.Дата = КонецДня(ТекущаяДата());
Таблица = Операция.Движения.Управленческий;
Провести = Ложь;
Пока Выборка.Следующий() Цикл
	
	Если Выборка.СуммаСтарая > Выборка.СуммаНовая Тогда 
		НоваяСтрока = Таблица.Добавить();  
		
		Если НоваяСтрока = Ложь Тогда 
			Сообщить("Ошибка");
		КонецЕсли;
		
		НоваяСтрока.Период = ТекущаяДата();
		НоваяСтрока.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
		НоваяСтрока.СчетКт = ПланыСчетов.Управленческий.Покупатели;
		НоваяСтрока.СубконтоКт.Контрагент = Выборка.Контрагент;
		НоваяСтрока.СубконтоКт.Договор = Выборка.Договор;
		НоваяСтрока.Сумма = Выборка.СуммаСтарая - Выборка.СуммаНовая; 
		
		Провести = Истина;
		
	ИначеЕсли Выборка.СуммаСтарая < Выборка.СуммаНовая Тогда    
		
		НоваяСтрока = Таблица.Добавить();
		Если НоваяСтрока = Ложь Тогда 
			Сообщить("Ошибка");
		КонецЕсли;
		
        НоваяСтрока.Период = ТекущаяДата();
		НоваяСтрока.СчетДт = ПланыСчетов.Управленческий.Покупатели;
		НоваяСтрока.СчетКт = ПланыСчетов.Управленческий.ПрибылиУбытки;
		НоваяСтрока.СубконтоДт.Контрагент = Выборка.Контрагент;
		НоваяСтрока.СубконтоДт.Договор = Выборка.Договор;
		НоваяСтрока.Сумма = Выборка.СуммаНовая - Выборка.СуммаСтарая;
		
		Провести = Истина;
	КонецЕсли;
	
		
				
КонецЦикла;


Если Провести Тогда 
	Операция.Записать();
КонецЕсли;
Показать
По теме из базы знаний
Найденные решения
9. Kanigin 21.05.25 13:19 Сейчас в теме
(3) правильной дорогой идешь, товарищ! Только учти, что ручная операция это регистратор движений Регистра бухгалтерии Хозрасчетный, и в ней по сути ничего заполнять не нужно, а нужно заполнить движения в регистре и привязать его к регистратору. У меня есть обработка, в ней в модуле формы так написано:
ДокОбъект 	= Операция.ПолучитьОбъект();
	НЗ 			= ДокОбъект.Движения.Хозрасчетный;

ну и по смыслу:
НоваяЗапись = НЗ.Добавить();
		НоваяЗапись.Период = ДокОбъект.Дата;
		НоваяЗапись.Регистратор = ДокОбъект;
		НоваяЗапись.Организация = ДокОбъект.Организация;
		
		НоваяЗапись.СчетДт = Счет10;
		НоваяЗапись.СчетКт = Счет000;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user2107184 21.05.25 12:46 Сейчас в теме
Это в каком модуле? У Объекта или Формы есть реквизиты с именами Таблица или Операция?
3. user2128470 21.05.25 12:49 Сейчас в теме
4. user2107184 21.05.25 12:55 Сейчас в теме
(3) То есть твой мозг одновременно два вопроса осилить не может... Ок.
5. user2128470 21.05.25 12:57 Сейчас в теме
Может, просто занять не много был. Код в модуле формы. А нужно чтоб он записал строки в таблицу управленческий.
6. user2107184 21.05.25 13:00 Сейчас в теме
(5) Молодец, подтвердил, что
твой мозг одновременно два вопроса осилить не может...

Может, просто занять не много был.
Ты куда-то торопился отвечать? Я вроде за время ожидания ответа денег пока не беру.
7. user2107184 21.05.25 13:01 Сейчас в теме
(5)
Код в модуле формы.
И давно ли в модуле формы можно формировать движения?
9. Kanigin 21.05.25 13:19 Сейчас в теме
(3) правильной дорогой идешь, товарищ! Только учти, что ручная операция это регистратор движений Регистра бухгалтерии Хозрасчетный, и в ней по сути ничего заполнять не нужно, а нужно заполнить движения в регистре и привязать его к регистратору. У меня есть обработка, в ней в модуле формы так написано:
ДокОбъект 	= Операция.ПолучитьОбъект();
	НЗ 			= ДокОбъект.Движения.Хозрасчетный;

ну и по смыслу:
НоваяЗапись = НЗ.Добавить();
		НоваяЗапись.Период = ДокОбъект.Дата;
		НоваяЗапись.Регистратор = ДокОбъект;
		НоваяЗапись.Организация = ДокОбъект.Организация;
		
		НоваяЗапись.СчетДт = Счет10;
		НоваяЗапись.СчетКт = Счет000;
10. user2128470 21.05.25 13:32 Сейчас в теме
8. Bukaska 148 21.05.25 13:11 Сейчас в теме
Формировать движения из модуля формы? Не то клиент не то сервер? А чем модуль объекта мешает?
Оставьте свое сообщение

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