Невозможность отменить изменения при редактировании сведений в пачках ПФР

1. jack19 148 28.01.17 10:19 Сейчас в теме
Релиз 361. Многие, наверное, сталкивались с проблемой невоможности отменить изменения при редактировании пачек ПФР. Нажимаем кнопку "Отмена", а суммы баз взносов по месяцам, не смотря на это, изменились. Ошибка обработки "РедактированиеСведенийПФР" конфигурации кроется в том, что в неё передаются из отчета "ПодготовкаСведенийДляПФР" не только данные в виде обычных значений (сумм, строк и т.д.), но и таблицы данных (базы взносов по месяцам). А таблицы передаются в виде ссылок на них, и все манипуляции с ними при редактировании данных моментально отражаются на исходных пачках ПФР независимо от того, закрываем мы обработку кнопкой "Ok" или "Отмена". Чтобы этого не происходило нужно предварительно скопировать таблицы. Для этого в обработке "РедактированиеСведенийПФР" перед процедурой ПриОткрытии() вставляем две функции:
Функция СкопироватьРаздел6РСВ_1(Раздел6РСВ_1ИзПараметра)
	Раздел6РСВ_1 = СоздатьОбъект("ТаблицаЗначений");
	Раздел6РСВ_1ИзПараметра.Выгрузить(Раздел6РСВ_1);
	Для Сч = 1 По Раздел6РСВ_1ИзПараметра.КоличествоСтрок() Цикл
		Раздел6РСВ_1ИзПараметра.ПолучитьСтрокуПоНомеру(Сч);
		Раздел6РСВ_1.ПолучитьСтрокуПоНомеру(Сч);
		Раздел6РСВ_1.ТаблицаВыплатПоКатегории = СоздатьОбъект("ТаблицаЗначений");
		Раздел6РСВ_1ИзПараметра.ТаблицаВыплатПоКатегории.Выгрузить(Раздел6РСВ_1.ТаблицаВыплатПоКатегории);
	КонецЦикла;
	Возврат Раздел6РСВ_1;
КонецФункции

Функция СкопироватьРаздел6РСВ_1_Вредн(Раздел6РСВ_1_ВреднИзПараметра)
	Раздел6РСВ_1_Вредн = СоздатьОбъект("ТаблицаЗначений");
	Раздел6РСВ_1_ВреднИзПараметра.Выгрузить(Раздел6РСВ_1_Вредн);
	Для Сч = 1 По Раздел6РСВ_1_ВреднИзПараметра.КоличествоСтрок() Цикл
		Раздел6РСВ_1_ВреднИзПараметра.ПолучитьСтрокуПоНомеру(Сч);
		Раздел6РСВ_1_Вредн.ПолучитьСтрокуПоНомеру(Сч);
		Раздел6РСВ_1_Вредн.ТаблицаВыплатПоКлассам = СоздатьОбъект("ТаблицаЗначений");
		Раздел6РСВ_1_ВреднИзПараметра.ТаблицаВыплатПоКлассам.Выгрузить(Раздел6РСВ_1_Вредн.ТаблицаВыплатПоКлассам);
	КонецЦикла;
	Возврат Раздел6РСВ_1_Вредн;
КонецФункции
Показать
В самой процедуре ПриОткрытии() заменяем строчки
		ТаблицаВыплатРаздел6РСВ_1 		 = Форма.Параметр.ПолучитьЗначение(20);//Раздел6РСВ_1
		ТаблицаВыплатРаздел6РСВ_1_Вредн  = Форма.Параметр.ПолучитьЗначение(21);//Раздел6РСВ_1
на
		ТаблицаВыплатРаздел6РСВ_1 = СкопироватьРаздел6РСВ_1(Форма.Параметр.ПолучитьЗначение(20));//Раздел6РСВ_1
		ТаблицаВыплатРаздел6РСВ_1_Вредн = СкопироватьРаздел6РСВ_1_Вредн(Форма.Параметр.ПолучитьЗначение(21));//Раздел6РСВ_1_Вредн
На всякий случай прилагаю обработку целиком
Прикрепленные файлы:
РедактированиеСведенийПФР.ert
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)