Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка при печати Z-отчета за период по датам
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
vbi
Есть в этом фискальном регистраторе такие функции Z-отчет за период по датам и Z-отчет за период по номеру. Вот в обработке драйверастрочки, которые осуществляют печать отчетов:
Драйвер.PeriodicalFiscalReportDate(НачалоПериода, КонецПериода); // По дате
Драйвер.PeriodicalFiscalReport(НачальныйНомер, КонечныйНомер); // По номеру


В первый в качестве параметров передаются даты, во второй номера чеков. Оба оператора в тонком клиенте работают нормально, а в веб-клиенте Драйвер.PeriodicalFiscalReportDate(НачалоПериода, КонецПериода); - тот что по дате выдает ошибку:
Цитата
Невідома помилка: Несоответствие типа


Дело в том, что изначально в драйвере в оператор по датам передавались в качестве дат строки:

    НП = Формат(НачалоПериода, "ДФ=ггггММдд");
    КП = Формат(КонецПериода, "ДФ=ггггММдд");
    
    Ответ = ПеременнаяОбъект.Драйвер.PeriodicalFiscalReportDate(НП, КП);// дата в формате ГГГГММДД


но в таком случае отчет не печатался вообще нигде, выдавал ошибки что неправильные параметры. Я решил этот код заменить на
Ответ = ПеременнаяОбъект.Драйвер.PeriodicalFiscalReportDate(НачалоПериода, КонецПериода);
- и в тонком клиенте заработало норм, а вот в веб-клиенте - сабж.

НачалоПериода и КонецПериода имеют 1Ссовский тип Дата с временем. Хотя если передавать обычные числа, то чек тоже печатается, может даты надо как-то преобразовать в числа в какаой-то формат. Но в какой? Да и АПИ я по этих функциях так и не нашел, даже на офф сайте. Если б найти хоть АПИ...
Может кто сталкивался, имел дело или знает что-то...

Да, веб-клиент - IE
logist
Посмотрите здесь необходимо зарегистрироваться для просмотра ссылки протокол связи по Вашему аппарату, возможно найдете какие-то ответы.
Vofka
Врядли в протоколе это есть.

vbi, попробуйте методом тыка разные форматы дат:
ДДММГГГ
ГГММДД
и т.п.
DartRomanius
1. Я бы посоветовал пока экперементировать с X-отчетом.
2. ВЕБ-клиент работает через AJAX, возможно проблема с передачей данных платформой когда происходит конвертация "морды" приложения под ВЕБ.

ЗЫ: ИМХО

В догонку:

Если я правильно понял используется FIRP или IREP
Согласно документации формат даты для этих комманд - "ггггммдд" причем в символьном виде (ASCII??).
vbi
Цитата(logist @ 13.10.11, 11:07) необходимо зарегистрироваться для просмотра ссылки
Посмотрите здесь необходимо зарегистрироваться для просмотра ссылки протокол связи по Вашему аппарату, возможно найдете какие-то ответы.

Смотрел, там эти протоколы какие-то непонятные, там совсем не те операторы которые сдесь используются. Хотя смотрел я не все, посмотрю все наверно.


Цитата(Vofka @ 13.10.11, 11:12) необходимо зарегистрироваться для просмотра ссылки
Врядли в протоколе это есть.

vbi, попробуйте методом тыка разные форматы дат:
ДДММГГГ
ГГММДД
и т.п.

Пробовал, правда не все варианты, а сейчас ККМ забрали теперь не могу пробовать.


Цитата(DartRomanius @ 13.10.11, 11:17) необходимо зарегистрироваться для просмотра ссылки
1. Я бы посоветовал пока экперементировать с X-отчетом.
2. ВЕБ-клиент работает через AJAX, возможно проблема с передачей данных платформой когда происходит конвертация "морды" приложения под ВЕБ.

ЗЫ: ИМХО

В X-отчет и обычный Z-отчет никаких параметров не передается, они работают на ура

Цитата
В догонку:

Если я правильно понял используется FIRP или IREP
Согласно документации формат даты для этих комманд - "ггггммдд" причем в символьном виде (ASCII??).


Изначально в драйвере так и было написано:

    НП = Формат(НачалоПериода, "ДФ=ггггММдд");
    КП = Формат(КонецПериода, "ДФ=ггггММдд");
    
    Ответ = ПеременнаяОбъект.Драйвер.PeriodicalFiscalReportDate(НП, КП);// дата в формате ГГГГММДД

, но была другая ошибка в неправильности параметров и выскакивала она при тонком клиенте (да и при толстом тоже)...
Цитата
(ASCII??)

Думаете проблема в кодировке? Я в 1С не сталкивался с кодировками...

Может проблема в драйвере. Я использую драйвер от Арт Софт, не от Резонанс.
DartRomanius
Какая софтина используется для связи?
OLE Manager Plus - ?

Какая версия?

И опять же догадка:
необходимо зарегистрироваться для просмотра ссылки
vbi
Цитата(DartRomanius @ 13.10.11, 12:15) необходимо зарегистрироваться для просмотра ссылки
Какая софтина используется для связи?
OLE Manager Plus - ?

Какая версия?

ArtSoft Maria 301MTM OLE. Версии не написано, инструкция версии 5.7. В инструкции есть описание методов, хотя не всех, которые используются в программе в стандартном драйвере. Наверно драйвер немного не тот.
Цитата
И опять же догадка:
необходимо зарегистрироваться для просмотра ссылки

Там общие указания по установке и настройке
DartRomanius
Цитата(vbi @ 13.10.11, 13:49) необходимо зарегистрироваться для просмотра ссылки
ArtSoft Maria 301MTM OLE. Версии не написано, инструкция версии 5.7. В инструкции есть описание методов, хотя не всех, которые используются в программе в стандартном драйвере. Наверно драйвер немного не тот.

Там общие указания по установке и настройке


Опять из области диагностики, попытка получить стандартный Х-отчет из веб-интерфейса проходит?
vbi
Цитата
Опять из области диагностики, попытка получить стандартный Х-отчет из веб-интерфейса проходит?

Да

Все нормально без каких-либо ошибок, вылазит Х-отчет, заполнен операциями за текущую смену.

так же само и обычный ЗЕТ-отчет
DartRomanius
Цитата(vbi @ 13.10.11, 15:53) необходимо зарегистрироваться для просмотра ссылки
Да

Все нормально без каких-либо ошибок, вылазит Х-отчет, заполнен операциями за текущую смену.

так же само и обычный ЗЕТ-отчет


Попробуйте явно преобразовать даты к строкам вида "ггггммдд".
с лидирующими нулями и прочим, или к числам такого-же формата.

ЗЫ: У меня варианты кончились.
vbi
Числа типа "ггггммдд" - выдает ошибку (слишком большое число), строку тоже ошибку выдает и в тонком клиенте. Счас больше не проверю. ККМ забрали. Вот фискализируют, тогда будем на реальных клиентах пробовать biggrin.gif
Demas
У меня вот работает на толстом:

    // ************************
    // Подключим ЭККА
    Попытка
        M301 = Новый COMОбъект("M301Manager.Application");
        Если M301.Init(1, "Кассир", "1111111111", 0, "КД ЭККА")>0 Then     //  M301.Init(COM, "                    
            ККРВключен=1;
            //Инф=СокрЛП(M301.GetPrinterConfig());
            //Артикулы=ЗначениеИзФайла(КаталогПрограммы()+"Artics.sys");
        Иначе  
            // Попробуем отключить а затем включить
            M301.Done();
            Если M301.Init(1, "Кассир", "1111111111", 0, "КД ЭККА")>0 Тогда     //  M301.Init(COM, "  
            Иначе
                ККРВключен=0;
            КонецЕсли;
        КонецЕсли;    
    Исключение
        ККРВключен=0;
    КонецПопытки;
    
    Если ККРВключен=0 Тогда
        Предупреждение("Кассовый аппрат не подключен. Печать чеков не возможна.");
        Возврат;
    КонецЕсли;
    
    Если НЕ ВвестиДату(ДатаН,"Z-отчет с даты",ЧастиДаты.Дата) Тогда
        Возврат;
    КонецЕсли;
    
    Если НЕ ВвестиДату(ДатаК,"По дату",ЧастиДаты.Дата) Тогда
        Возврат;
    КонецЕсли;
    
    Если M301.PeriodicalFiscalReportDate(ДатаН,ДатаК)<>1 Тогда
        Возврат;
    КонецЕсли;
vbi
Цитата
    Если M301.PeriodicalFiscalReportDate(ДатаН,ДатаК)<>1 Тогда
        Возврат;
    КонецЕсли;

У меня на толсто тоже работает если я передаю в качестве параметров даты. Не работает на веб (на тонком работает).
crazyboy
Цитата(vbi @ 13.10.11, 9:54) необходимо зарегистрироваться для просмотра ссылки
Есть в этом фискальном регистраторе такие функции Z-отчет за период по датам и Z-отчет за период по номеру. Вот в обработке драйверастрочки, которые осуществляют печать отчетов:
Драйвер.PeriodicalFiscalReportDate(НачалоПериода, КонецПериода); // По дате
Драйвер.PeriodicalFiscalReport(НачальныйНомер, КонечныйНомер); // По номеру


В первый в качестве параметров передаются даты, во второй номера чеков. Оба оператора в тонком клиенте работают нормально, а в веб-клиенте Драйвер.PeriodicalFiscalReportDate(НачалоПериода, КонецПериода); - тот что по дате выдает ошибку:


Дело в том, что изначально в драйвере в оператор по датам передавались в качестве дат строки:

    НП = Формат(НачалоПериода, "ДФ=ггггММдд");
    КП = Формат(КонецПериода, "ДФ=ггггММдд");
    
    Ответ = ПеременнаяОбъект.Драйвер.PeriodicalFiscalReportDate(НП, КП);// дата в формате ГГГГММДД


но в таком случае отчет не печатался вообще нигде, выдавал ошибки что неправильные параметры. Я решил этот код заменить на
Ответ = ПеременнаяОбъект.Драйвер.PeriodicalFiscalReportDate(НачалоПериода, КонецПериода);
- и в тонком клиенте заработало норм, а вот в веб-клиенте - сабж.

НачалоПериода и КонецПериода имеют 1Ссовский тип Дата с временем. Хотя если передавать обычные числа, то чек тоже печатается, может даты надо как-то преобразовать в числа в какаой-то формат. Но в какой? Да и АПИ я по этих функциях так и не нашел, даже на офф сайте. Если б найти хоть АПИ...
Может кто сталкивался, имел дело или знает что-то...

Да, веб-клиент - IE


Указывайте пожалуйста название драйвера. На данный момент их минимум 3
АртСофт ОЛЕ Сервер
АртСофт ОЛЕ Менеджер+
ОЛЕ Менеджер+ (от Резонанс)

Функция PeriodicalFiscalReport принимает тип DATE. Это тип СОМ объектов, детальнее о нем в MSDN
[id(0x00000033), helpstring("method PeriodicalFiscalReportDate. Prints periodical fiscal report"), local] LONG PeriodicalFiscalReportDate([in] DATE DateFrom, [in] DATE DateTo);
vbi
Драйвер "АртСофт ОЛЕ Сервер".
Цитата
Функция PeriodicalFiscalReport принимает тип DATE. Это тип СОМ объектов, детальнее о нем в MSDN
[id(0x00000033), helpstring("method PeriodicalFiscalReportDate. Prints periodical fiscal report"), local] LONG PeriodicalFiscalReportDate([in] DATE DateFrom, [in] DATE DateTo);

Ну ладно, а как представить этот тип в 1С?
alex040269
Что-то мне подсказывает, что тип дата - это дата+время - число с плавающей точкой. Целое значение - номер дня с 01.01.0001, а дробная - это часть суток, т.е. 1ч = 1/24
vbi
Спасибо, буду иметь ввиду. Сейчас проверить немогу. Нет кассового аппарата.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.