Имя: Пароль:
1C
1С v8
Программное открытие кассовой смены
0 igel1969
 
13.12.17
15:44
Здравствуйте!

Пытаюсь создать кнопку открытия кассовой смены.
Зачем это надо? У меня продавцы работают в моей внешней обработке, которая очень сильно ограничивает их возможности.

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

вот текст:
ОчиститьСообщения();
    МассивККТ = ПолучитьСерверТО().ПолучитьСписокУстройств(
        ПредопределенноеЗначение("Перечисление.ВидыТорговогоОборудования.ККТ"), ОсновнаяККМ);
// ОсновнаяККМ находится из пользователя, я проверял - находится правильно.

    КоличествоККТ = МассивККТ.Количество();
    Если КоличествоККТ = 0 Тогда
        ТекстСообщения = НСтр("ru='Отсутствуют доступные фискальные устройства'");
        ОбщегоНазначения.СообщитьИнформациюПользователю(ТекстСообщения);
    ИначеЕсли КоличествоККТ = 1 Тогда
        ККТ = МассивККТ[0];
    Иначе
        ПредставлениеУстройства = "";
        ВидУстройства = "";
        СписокККТ = Новый СписокЗначений;

        Для Каждого Устройство Из МассивККТ Цикл
            ПолучитьСерверТО().ПолучитьПредставлениеУстройства(Устройство, ВидУстройства, ПредставлениеУстройства);
            СписокККТ.Добавить(Устройство, ПредставлениеУстройства);
        КонецЦикла;

        ККТ = СписокККТ.ВыбратьЭлемент("Необходимо выбрать фискальное устройство");
        Если ККТ <> Неопределено Тогда
            ККТ = ККТ.Значение;
        КонецЕсли;
    КонецЕсли;
    
    Если ККТ = NULL ИЛИ ККТ = Неопределено Тогда
        Возврат;
    КонецЕсли;
    КассовыеСменыКлиент.ОткрытьКассовуюСмену(ККТ);

Отвечает "Ошибка получения обработки обслуживания".
Путем простейших итераций (подставяю в разные части кода сообщения), понимаю, что пробела в последней процедуре (КассовыеСменыКлиент.ОткрытьКассовуюСмену(ККТ)).

ЗАхожу в эту процедуру, там есть такие строки:

ОбработкаОбслуживания = Неопределено;
    ОбъектДрайвера = Неопределено;
    
    ПолучитьСерверТО().ПолучитьОбъектДрайвера(ККТ, ОбработкаОбслуживания, ОбъектДрайвера);
    Если ОбработкаОбслуживания = Неопределено Тогда
        ОбщегоНазначения.СообщитьОбОшибке("Ошибка получения обработки обслуживания");

Добавляю туда строки:
сообщить("ККТ - " + СокрЛП(ККТ));
Сообщить("ОбработкаОбслуживания - " + СокрЛП(ОбработкаОбслуживания));

В случае, если открывать смену через документы кассовой смены, возвращает:

ККТ - 85CB1AEE-79B4-4103-9E43-6D4066698D65
ОбработкаОбслуживания - ВнешняяОбработкаОбъект.АТОЛККТсПередачейДанных

А в случае если открывать смену через мою процедуру, то%
ККТ - 85CB1AEE-79B4-4103-9E43-6D4066698D65
ОбработкаОбслуживания -

Что можно сделать, почему не находит Обработку обслуживания в моем случае??????
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.