gifts2017

Сторнирование движений регистров накопления

Опубликовал Олег Бутин (boutinol) в раздел Обработки - Обработка документов

Создание документа "Корректировка записей регистров" с отрицательными движениями по всем регистрам накопления, по которым у документа есть движения. (только управляемые формы)

В созданном документе "Корректировка записей регистра"  по любому виду документа в табличной части перечисляются регистры, имеющие движения. Все значения ресурсов движений записываются инвертированными значениями (с минусом). Вид движения не меняется. Дата движения не меняется. В комментарии указывается, какой именно документ сторнируется. После обработки документа открывается форма созданного документа "Корректировка записей регистра".

Протестировано на конфигурациях "Управление небольшой фирмой" и ERP 2.0.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
уфСозданиеДокументаКорректировкаЗаписейРегистра.epf
.epf 6,54Kb
13.10.14
32
.epf 6,54Kb 32 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр Попков (pas) 04.01.15 15:07
Воланд сказал будто про ERP 2.0: "Чего не хватишься -ничего нет!". Как можно заметить в конфигураторе, документ "Корректировка регистров" является регистратором только для части регистров накопления, поэтому как могут формироваться все сторнирующие движения любого документа?
2. Виталий Толстых (vittol) 26.06.15 11:44
В ERP не у всех регистров документ регистратор "Корректировка регистров" пришлось "допилить"
&НаСервере
Функция КорректировкаСервер()
	Если Объект.Ссылка.Проведен тогда
		ДокументОбъект = Объект.Ссылка.ПолучитьОбъект();
	ДокументПереноса = Документы.КорректировкаРегистров.СоздатьДокумент();
	ДокументПереноса.Дата = ТекущаяДата();
	ДокументПереноса.УстановитьНовыйНомер();
	ДокументПереноса.Комментарий = "Сторнирование документа "+Объект.Ссылка;
	ДокументПереноса.Записать();
	Для Каждого Строка из ДокументОбъект.Движения Цикл
		Если Лев(Строка(Строка),30)="РегистрНакопленияНаборЗаписей." тогда 
			Строка.Прочитать();
			ДанныеРегистра = Строка.Выгрузить();
			Если ДанныеРегистра.Количество() > 0 тогда
				ИмяРегистра = Прав(Строка(Строка),СтрДлина(Строка(Строка))-30);
				НаборКоэффициентов = РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей();
				Если Найти(НаборКоэффициентов.Отбор.Регистратор.ТипЗначения,типЗнч(ДокументПереноса.Ссылка))<>0 Тогда 
					НаименованиеРегистра = ДокументПереноса.ТаблицаРегистров.Добавить();
					НаименованиеРегистра.Имя = ИмяРегистра;
					Для Каждого Запись из ДанныеРегистра цикл
						Запись.Регистратор = ДокументПереноса.Ссылка;
						Для Каждого ресурсы из Строка.Метаданные().Ресурсы цикл
							СтронированиеРесурса(Ресурсы.Имя,ДанныеРегистра,Запись);
						КонецЦикла;
					КонецЦикла;	
					НаборКоэффициентов.Очистить();
					НаборКоэффициентов.Отбор.Регистратор.Значение= ДокументПереноса.Ссылка;
					НаборКоэффициентов.Загрузить(ДанныеРегистра);
					НаборКоэффициентов.Записать();
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;	
	ДокументПереноса.Записать();
	Возврат ДокументПереноса.Ссылка;
	Иначе
	 Возврат неопределено;
	КонецЕсли; 
КонецФункции
...Показать Скрыть
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа