На вике страницы скрипта не нашел, здесь вроде тестов хотели - вот некорректно обрабатывающаяся ситуация (код приведен не полностью):
Код:
Процедура ВосстановитьЗначенияРучныхКорректировокТабличнойЧасти(ИмяТЧ, СкорректированныеСтроки)
Перем НеобходимоПредупредитьОбИзмененияхБУ, СтрокаДляКорректировки, МассивСтрокДляКорректировки, СкорректированнаяСтрока;
Перем СписокКорректируемыхКолонок;//список колонок, которые могут корректироваться пользователем, их корректируем, остальные сверяем
Перем СпецСумма;//Сумма долгосрочного и краткосрочного для 91, 99, потом для проценнтов и тд
МассивКорректируемыхКолонок = ПолучитьМассивКорректируемыхКолонок();
#Если _ Тогда
МассивКорректируемыхКолонок = Новый Массив;
#КонецЕсли
Для каждого СкорректированнаяСтрока Из СкорректированныеСтроки Цикл
НеобходимоПредупредитьОбИзмененияхБУ = Ложь;
Отбор = ПолучитьКлючСтроки(СкорректированнаяСтрока);
МассивСтрокДляКорректировки = ЭтотОбъект[ИмяТЧ].НайтиСтроки(Отбор);
Если МассивСтрокДляКорректировки.Количество() = 0 тогда
СтрокаДляКорректировки = ЭтотОбъект[ИмяТЧ].Добавить();
ИначеЕсли МассивСтрокДляКорректировки.Количество() = 1 тогда
СтрокаДляКорректировки = МассивСтрокДляКорректировки[0];
Иначе
ВызватьИсключение "201409101233 Нашлось несколько строк с одним ключем";
КонецЕсли;
Выделяю строки с "отбор =" до конца блока. Автоматом получается
Код:
Функция ПолучитьСтрокуДляКорректировки(ИмяТЧ)
Отбор = ПолучитьКлючСтроки(СкорректированнаяСтрока);
МассивСтрокДляКорректировки = ЭтотОбъект[ИмяТЧ].НайтиСтроки(Отбор);
Если МассивСтрокДляКорректировки.Количество() = 0 тогда
СтрокаДляКорректировки = ЭтотОбъект[ИмяТЧ].Добавить();
ИначеЕсли МассивСтрокДляКорректировки.Количество() = 1 тогда
СтрокаДляКорректировки = МассивСтрокДляКорректировки[0];
Иначе
ВызватьИсключение "201409101233 Нашлось несколько строк с одним ключем";
КонецЕсли;
Возврат СтрокаДляКорректировки;
КонецФункции
То есть теряется параметр "СкорректированнаяСтрока" несмотря на то, что выше эта переменная явно объявлена как локальная переменная модуля (в первой строке "Перем").