1С 8.3 Сторно для регистра бухгалтерии
Данные > Примеры кода 1С > 1С 8.3 Регистры бухгалтерии
Перейти в раздел примеры кода 1С 8.3:
Пример Сторно проводок в 1С 8.3:
Процедура ОбработкаПроведения(Отказ, Режим)
ДвиженияСторно = РегистрыБухгалтерии.Хозрасчетный.ВыбратьПоРегистратору(ВыбДокументСторно);
Пока ДвиженияСторно.Следующий() Цикл
НоваяПроводка = Движения.Хозрасчетный.Добавить();
НоваяПроводка.Период = Дата;
НоваяПроводка.НомерЖурнала = ДвиженияСторно.НомерЖурнала;
НоваяПроводка.Организация = ДвиженияСторно.Организация;
НоваяПроводка.Содержание = ДвиженияСторно.Содержание;
НоваяПроводка.СчетДт = ДвиженияСторно.СчетДт;
НоваяПроводка.СчетКт = ДвиженияСторно.СчетКт;
Для Каждого СубконтоДт Из ДвиженияСторно.СубконтоДт Цикл
НоваяПроводка.СубконтоДт[СубконтоДт.Ключ] = СубконтоДт.Значение;
КонецЦикла;
Для Каждого СубконтоКт Из ДвиженияСторно.СубконтоКт Цикл
НоваяПроводка.СубконтоКт[СубконтоКт.Ключ] = СубконтоКт.Значение;
КонецЦикла;
НоваяПроводка.ВалютаДт = ДвиженияСторно.ВалютаДт;
НоваяПроводка.ВалютаКт = ДвиженияСторно.ВалютаКт;
НоваяПроводка.ВалютнаяСуммаДт = - ДвиженияСторно.ВалютнаяСуммаДт;
НоваяПроводка.ВалютнаяСуммаКт = - ДвиженияСторно.ВалютнаяСуммаКт;
НоваяПроводка.КоличествоДт = - ДвиженияСторно.КоличествоДт;
НоваяПроводка.КоличествоКт = - ДвиженияСторно.КоличествоКт;
НоваяПроводка.Сумма = - ДвиженияСторно.Сумма;
КонецЦикла;
Движения.Хозрасчетный.Записать();
КонецПроцедуры
ДвиженияСторно = РегистрыБухгалтерии.Хозрасчетный.ВыбратьПоРегистратору(ВыбДокументСторно);
Пока ДвиженияСторно.Следующий() Цикл
НоваяПроводка = Движения.Хозрасчетный.Добавить();
НоваяПроводка.Период = Дата;
НоваяПроводка.НомерЖурнала = ДвиженияСторно.НомерЖурнала;
НоваяПроводка.Организация = ДвиженияСторно.Организация;
НоваяПроводка.Содержание = ДвиженияСторно.Содержание;
НоваяПроводка.СчетДт = ДвиженияСторно.СчетДт;
НоваяПроводка.СчетКт = ДвиженияСторно.СчетКт;
Для Каждого СубконтоДт Из ДвиженияСторно.СубконтоДт Цикл
НоваяПроводка.СубконтоДт[СубконтоДт.Ключ] = СубконтоДт.Значение;
КонецЦикла;
Для Каждого СубконтоКт Из ДвиженияСторно.СубконтоКт Цикл
НоваяПроводка.СубконтоКт[СубконтоКт.Ключ] = СубконтоКт.Значение;
КонецЦикла;
НоваяПроводка.ВалютаДт = ДвиженияСторно.ВалютаДт;
НоваяПроводка.ВалютаКт = ДвиженияСторно.ВалютаКт;
НоваяПроводка.ВалютнаяСуммаДт = - ДвиженияСторно.ВалютнаяСуммаДт;
НоваяПроводка.ВалютнаяСуммаКт = - ДвиженияСторно.ВалютнаяСуммаКт;
НоваяПроводка.КоличествоДт = - ДвиженияСторно.КоличествоДт;
НоваяПроводка.КоличествоКт = - ДвиженияСторно.КоличествоКт;
НоваяПроводка.Сумма = - ДвиженияСторно.Сумма;
КонецЦикла;
Движения.Хозрасчетный.Записать();
КонецПроцедуры
Пример Сторно проводок через ПолучитьДополнение в 1С 8.3:
Процедура ОбработкаСторно()
ЗаписиДвижения = Движения.Хозрасчетный.ПолучитьДополнение();
Для Каждого Сторно Из ЗаписиДвижения Цикл
НоваяПроводка = Движения.Хозрасчетный.Добавить();
ЗаполнитьЗначенияСвойств(НоваяПроводка, Сторно);
НоваяПроводка.Сторно = Истина;
НоваяПроводка.ПериодРегистрации = Сторно.ПериодРегистрацииСторно;
НоваяПроводка.ПериодДействияНачало = Сторно.ПериодДействияНачалоСторно;
НоваяПроводка.ПериодДействияКонец = Сторно.ПериодДействияКонецСторно;
КонецЦикла;
//....
КонецПроцедуры
ЗаписиДвижения = Движения.Хозрасчетный.ПолучитьДополнение();
Для Каждого Сторно Из ЗаписиДвижения Цикл
НоваяПроводка = Движения.Хозрасчетный.Добавить();
ЗаполнитьЗначенияСвойств(НоваяПроводка, Сторно);
НоваяПроводка.Сторно = Истина;
НоваяПроводка.ПериодРегистрации = Сторно.ПериодРегистрацииСторно;
НоваяПроводка.ПериодДействияНачало = Сторно.ПериодДействияНачалоСторно;
НоваяПроводка.ПериодДействияКонец = Сторно.ПериодДействияКонецСторно;
КонецЦикла;
//....
КонецПроцедуры
Пример Сторно проводок через Метаданные в 1С 8.3 (от Timo):
Процедура ОбработкаСторно()
Док = Объект.Док.ПолучитьОбъект();
МассивМетаданных = Новый Массив;
МассивМетаданных.Добавить("Измерения");
МассивМетаданных.Добавить("Ресурсы");
МассивМетаданных.Добавить("Реквизиты");
МассивОтрицательныхРеквизитов = Новый Массив;
МассивОтрицательныхРеквизитов.Добавить("Количество");
МассивОтрицательныхРеквизитов.Добавить("Сумма");
МассивОтрицательныхРеквизитов.Добавить("ВалютнаяСумма");
МетаДокумента = Док.Движения.ВыручкаИСебестоимостьПродаж.Метаданные();
НовоеДвижение = Док.Движения.ВыручкаИСебестоимостьПродаж.Добавить();
ДвижениеСторно = РегистрыНакопления.ВыручкаИСебестоимостьПродаж.ВыбратьПоРегистратору(Док.Ссылка);
Пока ДвижениеСторно.Следующий() Цикл
Для Каждого ИмяМетаданных Из МассивМетаданных Цикл
Для Каждого МетаИмяРеквизита Из МетаДокумента[ИмяМетаданных] Цикл
Если МассивОтрицательныхРеквизитов.Найти(МетаИмяРеквизита.Имя) <> Неопределено Тогда
НовоеДвижение[МетаИмяРеквизита.Имя] = - ДвижениеСторно[МетаИмяРеквизита.Имя];
Иначе
НовоеДвижение[МетаИмяРеквизита.Имя] = ДвижениеСторно[МетаИмяРеквизита. Имя];
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Док.Движения.Записать();
КонецПроцедуры
Док = Объект.Док.ПолучитьОбъект();
МассивМетаданных = Новый Массив;
МассивМетаданных.Добавить("Измерения");
МассивМетаданных.Добавить("Ресурсы");
МассивМетаданных.Добавить("Реквизиты");
МассивОтрицательныхРеквизитов = Новый Массив;
МассивОтрицательныхРеквизитов.Добавить("Количество");
МассивОтрицательныхРеквизитов.Добавить("Сумма");
МассивОтрицательныхРеквизитов.Добавить("ВалютнаяСумма");
МетаДокумента = Док.Движения.ВыручкаИСебестоимостьПродаж.Метаданные();
НовоеДвижение = Док.Движения.ВыручкаИСебестоимостьПродаж.Добавить();
ДвижениеСторно = РегистрыНакопления.ВыручкаИСебестоимостьПродаж.ВыбратьПоРегистратору(Док.Ссылка);
Пока ДвижениеСторно.Следующий() Цикл
Для Каждого ИмяМетаданных Из МассивМетаданных Цикл
Для Каждого МетаИмяРеквизита Из МетаДокумента[ИмяМетаданных] Цикл
Если МассивОтрицательныхРеквизитов.Найти(МетаИмяРеквизита.Имя) <> Неопределено Тогда
НовоеДвижение[МетаИмяРеквизита.Имя] = - ДвижениеСторно[МетаИмяРеквизита.Имя];
Иначе
НовоеДвижение[МетаИмяРеквизита.Имя] = ДвижениеСторно[МетаИмяРеквизита. Имя];
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Док.Движения.Записать();
КонецПроцедуры
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник