Все началось с http://forum.infostart.ru/forum9/topic7856/message59191/#message59191
Честно сказать, не посмотрел, что там в стандартной обработке печати фискального чека из 1С (говорят, не всё там круто), но то, что было оттуда вынесено (не мной) в нашу самописную конфу - работало глючно. Когда дошли руки - переписал.
Вот что было:
Объект.ПолучитьСостояние();
НомерЧека = Объект.НомерЧека;
Объект.ЗакрытьЧек();
Если Объект.ResultCode <> 0 Тогда //ошибка
Предупреждение("Код ошибки: "+Строка(Объект.ResultCode)+" "+Объект.ResultDescription);
Возврат 0;
Иначе
Возврат 1;
КонецЕсли;
При этом часто ResultCode был 0, хотя чек не закрывался.
После долгих экспериментов написал такой код, для большей устойчивости
Объект.ПолучитьСостояние();
НомерЧека = Объект.НомерЧека;
Объект.ЗакрытьЧек();
ТекРезультат=Объект.Результат;
ОписаниеРезультата=Объект.ОписаниеРезультата;
ТекСостояние=Объект.ПолучитьСостояние();
ТекРезультат=Объект.Результат;
ОписаниеРезультата=Объект.ОписаниеРезультата;
БылаОшибка=0;
Если ТекРезультат <> 0 Тогда //ошибка
БылаОшибка=1;
Иначе
Если (Объект.СостояниеЧека<>0) ИЛИ (ТекСостояние<>0) Тогда
ОписаниеРезультата="";
ТекРезультат=0;
Если ТекСостояние<>0 Тогда
Если ТекСостояние=-1 Тогда
ОписаниеРезультата="Нет связи с ККМ";
ИначеЕсли ТекСостояние=-3807 Тогда
ОписаниеРезультата="Нет бумаги";
Иначе
ОписаниеРезультата="Неизвестная ошибка";
КонецЕсли;
ТекРезультат=ТекСостояние;
БылаОшибка=1;
Иначе
Если Объект.НетСвязиСПринтеромЧеков = 1 Тогда
ОписаниеРезультата="Нет связи с ККМ";
БылаОшибка=1;
ИначеЕсли Объект.УстройствоВключено = 0 Тогда
ОписаниеРезультата="ККМ не включена";
БылаОшибка=1;
ИначеЕсли Объект.КрышкаОткрыта = 1 Тогда
ОписаниеРезультата="Открыта крышка";
БылаОшибка=1;
ИначеЕсли Объект.НаличиеЧековойЛенты=0 Тогда
ОписаниеРезультата="Нет Чековой Ленты";
БылаОшибка=1;
ИначеЕсли Объект.НетБумаги = 1 Тогда
ОписаниеРезультата="Нет Бумаги";
БылаОшибка=1;
ИначеЕсли Объект.ОшибкаПерегревПечатающейГоловки = 1 Тогда
ОписаниеРезультата="Перегрев печатающей головки";
БылаОшибка=1;
Иначе
ОписаниеРезультата="Чек не закрыт";
БылаОшибка=1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если БылаОшибка=1 Тогда
ГлСформироватьСписокПараметровСбояККМ("При закрытии чека",ТекРезультат,ОписаниеРезультата, Объект, НомерНакладной);
Предупреждение("Ошибка ККМ : "+ТекРезультат+" - "+ОписаниеРезультата);
Возврат 0;
КонецЕсли;
Возврат 1;
Процедура ГлСформироватьСписокПараметровСбояККМ - это я веду список ошибок ККМ для передачи их в офис и дальнешего анализа