Цитата(nickles @ 12.09.13, 20:48)
Здравствуйте.
Фискальный принтер Датекс 3530Т. При печати иногда выводит, что "Аннулирован чек".
Удалось определить, что при установке артикула (SetArticle) одна и та же позиция товара в разных чеках, может проходить, либо аннулироваться. Цена одна и та же.
Добрый день. Сталкивался с такой ситуацией. Поборол след. образом. До открытия фиск. чека проверяю программировался ли этот артикул и если да, то проверяю менялась ли цена. Код ниже
Функция РезультатПроверкиАртикула(Объект,Товар) Экспорт
Результат=Объект.Драйвер.GetArtInfo(Число(Товар.Артикул)); // читем информацию о артикуле в Датексе
Если Не ЗначениеЗаполнено(Результат) Тогда // Товара в датексе нет и мы его программируем ...
ПризнакСтавкиНДС=?(Товар.Номенклатура.СтавкаНДС=Перечисления.СтавкиНДС.НДС20,192,193);
Если Объект.Драйвер.ProgramArt(ПризнакСтавкиНДС,Число(Товар.Артикул),1,Товар.Цена,"0000",Лев(СокрЛП(Товар.Номенклатура.Наименование),24))=0 Тогда
//[in] unsigned char Tax - налоговая группа (возможные значения - А, Б, В, Г, Д),
// передается не строкой,а числом
//[in] int NumArt - номер артикула, под которым артикул будет известен регистратору для
// проведения продаж и возвратов (от 1 до 14800).
//[in] int Group - номер товарной группы (от 1 до 99)
//[in] double Price - стоимость единицы товара
//[in] BSTR Password - пароль оператора для программирования (по умолчанию в регистраторе этот пароль "0000")
//[in] BSTR Name - название артикула (24 символа, либо две строки не более 24 символа в каждой разделенные
// символом 09H)
Предупреждение("Невозможно присвоить артикул - сообщите в офис !"); Возврат Неопределено;
КонецЕсли;
Иначе // Товар уже программировался - проверка
Для инд=1 По 8 Цикл поз=Найти(Результат,",");
Если инд=1 Тогда АртикулДатекса=Лев(Результат,поз-1); КонецЕсли;
Результат=Прав(Результат,СтрДлина(Результат)-поз);
Если инд=3 Тогда поз=Найти(Результат,","); ЦенаДатекса=Число(Лев(Результат,поз-1)); КонецЕсли;
КонецЦикла;
Если Число(АртикулДатекса)=Число(Товар.Артикул) Тогда // Артикул уже продавался можем изменить цену если нужно
Если Товар.Цена<>ЦенаДатекса Тогда
//ТекстВопроса="Внимание - обнаружено изменение цены."+Символы.ПС+
//"В РРО цена - "+Формат(ЦенаДатекса,"Ч12.2")+Символы.ПС+
//"В документе - "+Формат(Товар.Цена,"Ч12.2")+Символы.ПС+ "Изменить цену в РРО ?";
//Если Вопрос(ТекстВопроса,РежимДиалогаВопрос.ДаНет)=КодВозвратаДиалога.Да Тогда
Объект.Драйвер.ChangePrice(Число(Товар.Артикул),Товар.Цена,"0000");
//Иначе
// Предупреждение("Цена не изменилась.Продажа будет по старой цене.");
//КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Истина;
КонецФункции