Имя: Пароль:
1C
1C 7.7
v7: не получается печать 2-мерных штрихкодов
0 iomoe
 
23.07.09
12:11
Есть информационная база (Бухгалтерия предприятия 1.6.16.6, платформа 1С 8.1.14.72 ).

Если она развернута на компьютере под управлением Windows XP, то печать 2-мерных штрихкодов в регламентированной отчетности происходит нормально.

Если она развернута на компьютере под управлением Windows 2003 (64 bit) Server, сообщает о том, что "компоненте печати не удалось распознать формат файла выгрузки" и предлагает переустановить компоненту печати (3.0.9).

Если помотреть отладчиком, то можно увидеть подробности: "Ошибка при вызове метода контекста (PreviewFile1C): Произошла исключительная ситуация (TAXDOCPrt): 0x8004000A Файл данных - не файл формата 2/3 : Не найдена сигнатура "ИдФайл:".

Если посмотреть файл, то там есть сигнатура ИдФайл (и много чего другого):

ИдФайл:7817036039**78170100120090723115627
ТипИнф:ОТЧЕТНОСТЬНП
ВерсФорм:3.00
ИдПол:7817
ВерсПрог:1С:ПРЕДПРИЯТИЕ 8.1 БП 1.6.16.6
КолДок:1
НаимОтпрЮл:ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ "..."
ТелОтпр:
ДолжнОтпр:ГЛАВНЫЙ БУХГАЛТЕР
ФИООтпр:...
@@@
ИдДок:7817036039**781701001200900000066
ДатаДок:23.07.2009
###
НаимЮЛПол:...
ИННЮЛ:7817036039
КППЮЛ:781701001
ТелНП:
###
ФИОРук:...
УпПред:
###
ПризФОтч:1
КНД:1151001
НаимФОтч:НАЛОГОВАЯ ДЕКЛАРАЦИЯ ПО НАЛОГУ НА ДОБАВЛЕННУЮ СТОИМОСТЬ
ВерФОтч:3.00006
ПериодВерОтч:13.12.2006,
ПризВидДок:1
ПризПериодОтч:3
НомерПериодОтч:02
ГодПериодОтч:2009
ОКЕИ:383
КолПокФОтч:72
###
...
###
@@@
===

Кто с таким сталкивался, подскажите, где рыть? В чем может быть причина неработоспособности компоненты печати?
1 НикДляЗапросов
 
23.07.09
12:14
Ошибка на сервере, под админом? проверь под админом
2 iomoe
 
23.07.09
12:43
(1) Ошибка и под админом.
3 ИначеЕсли
 
23.07.09
12:48
А если так?

Функция ВывестиМашиночитаемуюФорму(Форма, ИмяКнопки) Экспорт
   
   // сохраняем форму, если она не сохранена
   Если Форма.Модифицированность Тогда
       Если Вопрос("Перед печатью отчета требуется сохранить введеную информацию." + Символы.ПС + "Продолжить?", РежимДиалогаВопрос.ДаНет) <> КодВозвратаДиалога.Да
       ИЛИ НЕ Форма.Сохранить() Тогда
           Возврат Ложь;
       КонецЕсли;
   КонецЕсли;

   // формируем текст выгрузки во временный файл
   ВремФайл = ПолучитьИмяВременногоФайла();
   Если НЕ СформироватьТекстВыгрузки(Форма, ВремФайл) Тогда
       Возврат Ложь;
   КонецЕсли;
   
   // извлекаем параметры сформированного файла выгрузки
   СтруктураПараметров = СформироватьСтруктуруПараметровФайлаВыгрузки(ВремФайл);
   КаталогВремФайлов = КаталогВременныхФайлов();
   КаталогВремФайлов = ?(Прав(КаталогВремФайлов, 1) = "\", КаталогВремФайлов, КаталогВремФайлов + "\");
   ВремКаталог = КаталогВремФайлов + Строка(Новый УникальныйИдентификатор) + "\";
   СоздатьКаталог(ВремКаталог);
   
   // выгружаем во временный каталог шаблоны печати, соответствующие сформированному файлу выгрузки
   Если НЕ ВыгрузитьШаблоныПечатиВКаталог(Форма, ВремКаталог, СтруктураПараметров["КНД"], ?(СтруктураПараметров["ЭтоXML"], СтруктураПараметров["ВерсФорм"], СтруктураПараметров["ВерФОтч"])) Тогда
       Возврат Ложь;
   КонецЕсли;
   
   Результат = Истина;
   КомпонентаУжеУстанавливалась = Истина;
   
   // пытаемся создать объект для формирования машиночитаемой формы
   ТаксДокПринт = Неопределено;
   Попытка
       ТаксДокПринт = Новый COMОбъект("TAXDOCPrt.TAXDOCPrint");
   Исключение
       // если не удалось создать объект, то спрашиваем у пользователя, хочет ли он установить компоненту
       Если Вопрос("Для формирования машиночитаемой формы необходимо установить в системе вспомогательную компоненту.
                   |Установить компоненту сейчас?", РежимДиалогаВопрос.ДаНет) <> КодВозвратаДиалога.Да Тогда
           Результат = Ложь;
       Иначе
           // если не удалось создать объект и пользователь не против, то запускаем установку компоненты
           Если НЕ УстановитьКомпонентуПечатиМашиночитаемыхФорм(Истина) Тогда
               Предупреждение("Формирование машиночитаемой формы прервано: в системе не установлена вспомогательная компонента.");
               Результат = Ложь;
           Иначе
               ТаксДокПринт = Новый COMОбъект("TAXDOCPrt.TAXDOCPrint");
               КомпонентаУжеУстанавливалась = Истина;
           КонецЕсли;
       КонецЕсли;
   КонецПопытки;
   
   Если ТаксДокПринт <> Неопределено Тогда
       Попытка
           ТаксДокПринт.PrintTiffFolder = ВремКаталог;
           НаименованиеИФНС = ОпределитьНаименованиеИФНСПолучателяОтчета(Форма);
           Если ЗначениеЗаполнено(НаименованиеИФНС) Тогда
               ТаксДокПринт.SetPrintTiffParam1C("Наименование налогового органа-получателя", НаименованиеИФНС);
           КонецЕсли;
           Если ИмяКнопки = "ПечататьМашиночитаемыйБланк" Тогда
               ТаксДокПринт.PrintFile(ВремФайл, "", "", 0);
           Иначе
               ТаксДокПринт.PreviewFile1C(ВремФайл, 0);
           КонецЕсли;
           Результат = Истина;
       Исключение
           //*  Закомментировал Кравцов
           ОбработатьОшибкуМодуляПечати(ИнформацияОбОшибке().Описание);
           ТаксДокПринт = Неопределено;
           // * Конец комментария - Кравцов
           Результат = Ложь;
       КонецПопытки;
   КонецЕсли;
   
   //Elit_Sol_20081001 {На некоторых компьютерах траблы
     //с региональными настройками и стандартный файл не читается, сформируем свой
     //Если НЕ Результат Тогда
     //      Текст1 = Новый ТекстовыйДокумент;
     //      Текст1.Прочитать(ВремФайл, КодировкаТекста.ANSI);
     //      ТекстСтр1 = Текст1.ПолучитьТекст();
     //      
     //      Текст2 = Новый ТекстовыйДокумент;
     //      МестоВставки = Найти(ВремФайл, "v8_");
     //      НашПуть = Сред(ВремФайл, 1, МестоВставки - 1) + "_temp.txt";
     //      Для СчетчикСтрок = 1 По СтрЧислоСтрок(ТекстСтр1) Цикл
     //            Стр = СтрПолучитьСтроку(ТекстСтр1, СчетчикСтрок);
     //            Текст2.ВставитьСтроку(СчетчикСтрок, Стр);
     //      КонецЦикла;
     //      
     //      Текст2.Записать(НашПуть, КодировкаТекста.ANSI);
     //      
     //      Попытка
     //            ТаксДокПринт.PrintTiffFolder = ВремКаталог;
     //            НаименованиеИФНС = ОпределитьНаименованиеИФНСПолучателяОтчета(Форма);
     //            Если ЗначениеЗаполнено(НаименованиеИФНС) Тогда
     //                  ТаксДокПринт.SetPrintTiffParam1C("Наименование налогового органа-получателя", НаименованиеИФНС);
     //            КонецЕсли;
     //            Если ИмяКнопки = "ПечататьМашиночитаемыйБланк" Тогда
     //                  ТаксДокПринт.PrintFile(НашПуть, "", "", 0);
     //            Иначе
     //                  ТаксДокПринт.PreviewFile1C(НашПуть, 0);
     //            КонецЕсли;
     //            Результат = Истина;
     //      Исключение
     //            ОбработатьОшибкуМодуляПечати(ОписаниеОшибки().Описание);
     //            ТаксДокПринт = Неопределено;
     //            Результат = Ложь;
     //      КонецПопытки;
     //КонецЕсли;
     
     //Elit_Sol_20081001 }
     
   ТаксДокПринт = Неопределено;
   УдалитьВременныйКаталогШаблонов(ВремКаталог);
   Возврат Результат;
КонецФункции
4 ИначеЕсли
 
23.07.09
12:52
ой, неправильно скопипастил
5 iomoe
 
23.07.09
12:54
(4) Идея понятна - принудительно поставить ANSI кодировку. Попробую.
6 ИначеЕсли
 
23.07.09
12:54
Должны быть закомментированы:

//ОбработатьОшибкуМодуляПечати(ИнформацияОбОшибке().Описание);
//ТаксДокПринт = Неопределено;

А после
//Elit_Sol_20081001 {На некоторых компьютерах траблы

раскомментированы
7 ИначеЕсли
 
23.07.09
12:55
(5) да
8 iomoe
 
23.07.09
13:35
(7) Спасибо, получилось.
9 ИначеЕсли
 
23.07.09
14:51
(8) пожалуйста
сам убил дох время с этим

найти ошибку в региональных настройках не получилось...
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан