Всем доброго дня.
Столкнулся недавно с таким забавным глюком, вдруг кому тоже пригодится.
Бухгалтерия 3.0 Проф, полностью типовая, с поддержки не снятая. Обновляется своевременно и без проблем из пользовательского интерфейса, релиз свежий. Платформа тоже свежая, не ломанная, имеется однопользовательский usb-ключ. База файловая.
Проблема: бухгалтер создаёт в рег. отчетах новый комплект Бух. отчетности (с 2011 года), неважно, коммерческая или НКО, нажимает кнопку Записать, появляется всплывающее окошко "Сохранение данных Бухгалтерской отчетности" и... всё. 1С зависает наглухо, и может висеть часами, пока задачу не снимешь.
Что пробовал: тестирование-исправление, chdbfl.exe - ошибок нет, чистка кэша в AppData, Выгрузка данных - Загрузка в другую папку. Результата нет, база зависает при попытке сохранить баланс. Другие рег.отчеты сохраняются без проблем.
Бухгалтер накануне с горя сформировала и сдала упрощенную бух.отчетность, но из ИФНС позвонили и попросили не баловаться ;)
Попробовал развернуть базу на другом компе с Windows 7 - всё сохраняется без проблем.
Полез отладчиком искать причину зависания. РегламентированныйОтчетБухОтчетность - ФормаОтчета2019Кв1. Виновник зависания - функция ВывестиНаПечатьЛистРазделаБезМногострочныхЧастей. В формируемый табличный документ ПечатнаяФорма после вывода области с данными в цикле выводится пустая строка до конца страницы:
Если флОбластьОграничителиУмещаетсяНаСтраницу Тогда
Пока флОбластьОграничителиУмещаетсяНаСтраницу Цикл
// Проверяем вывод областей "ПустаяСтрока" и "Ограничители".
флВыводимыеОбластиУмещаютсяНаСтраницу = ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ПечатнаяФорма,ВыводимыеОбласти, Ложь);
Если флВыводимыеОбластиУмещаютсяНаСтраницу Тогда
ПечатнаяФорма.Вывести(ОбластьПустаяСтрока);
Иначе
ПечатнаяФорма.Вывести(ОбластьОграничители);
ПечатнаяФорма.ВывестиГоризонтальныйРазделительСтраниц();
Прервать;
КонецЕсли;
КонецЦикла;
Иначе
// выводим область без расширения пустыми строками
ПечатнаяФорма.Вывести(ОбластьОграничители);
КонецЕсли;
Вот на этом цикле Пока 1С и виснет. Смотрим почему: ПечатнаяФорма.ВысотаСтраницы = 469 496 966. Это высота листа бумаги в миллиметрах. В более понятных цифрах: ничего необычного, просто лист бумаги высотой 469 с половиной километров. Высота пустой строки, которыми программа пытается заполнить страницу - примерно 5 мм. То есть 1С не зависает, она продолжает работать и рано или поздно сохраняет лист, но в бух. отчетности таких листов ~30...
Лечится, понятное дело, очень просто - создаем расширение, добавляем в него эту функцию с опцией Вместо, копируем в неё содержимое основной функции и комментим весь вышеприведенный кусок от Если до КонецЕсли, оставляя незакомментированным только то, что после Иначе.
У меня пока нет идей, почему именно в Windows 10 выставилась такая странная высота страницы, причём только у одного из рег.отчетов. В справочнике по языку программирования сказано, что этот параметр не может быть больше 5000... может, у кого-нибудь есть идеи?