Имя: Пароль:
1C
1C 7.7
v7: АТОЛ 54-ФЗ ФФД1.05 Не могу сделать возврат прихода
0 Caesar
 
19.07.18
15:41
Добрый день.
По просьбе клиента дорабатываю штатную обработку из ТиС 7.7.
Не могу добиться заставить делать возврат прихода.
Пробую делать вот так:

Если ПризнВозврата = 0  Тогда  
    Объект.AttrValue = 1;  //приход
    Объект.AttrNumber = 1054;
    Объект.WriteAttribute();  
Иначе
    Объект.AttrValue = 2;  //возврат  прихода
    Объект.AttrNumber = 1054;
    Объект.WriteAttribute();
КонецЕсли;

Из документа передаю соответствующее значение ПризнВозврата, но ККМ (АТОЛ 30Ф) упорно печатает признак расчета "ПРИХОД". Что еще необходимо задать, чтобы получить чек на возврат прихода?
Описание ФФД (упрощенное) брал тут:
https://online.atol.ru/files/Uproschennaya_versiya_FFD_ot_ATOL.pdf
1 Kigo_Kigo
 
19.07.18
15:51
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
// ----- Чек возврата прихода без отправки электронного чека покупателю ---- //
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // //

// Mode - Режим:
//     0 - Выбора
//     1 - Регистрации
//     2 - Отчётов без гашения
//     3 - Отчётов с гашением
driver.Mode = 1;
driver.SetMode();

driver.NewDocument();

// Записать должность и ФИО кассира
driver.AttrNumber = 1021;
driver.AttrValue = "Старший кассир Иванов И.И.";
driver.WriteAttribute();

// CheckType - Тип чека:
//     1 - Приход
//     2 - Возврат прихода
//     4 - Расход
//     5 - Возврат расхода
//     7 - Коррекция прихода
//     9 - Коррекция расхода
driver.CheckType = 2;
// CheckMode - Режим формирования чека:
//     0 - только в электронном виде без печати на чековой ленте
//     1 - печатать на чековой ленте
driver.CheckMode = 1;
driver.OpenCheck();

driver.AttrNumber = 1055;
// Применяемая система налогооблажения в чеке:
//     ОСН - 1
//     УСН доход - 2
//     УСН доход-расход - 4
//     ЕНВД - 8
//     ЕСН - 16
//     ПСН - 32
driver.AttrValue = 8;
driver.WriteAttribute();

// Регистрация товара или услуги
driver.Name = "Молоко 3.2%";
driver.Price = 50.33;
driver.Quantity = 2;
driver.Department = 0;
// TaxTypeNumber - Номер налога:
//     0 - Налог из секции
//     1 - НДС 0%
//     2 - НДС 10%
//     3 - НДС 18%
//     4 - НДС не облагается
//     5 - НДС с расчётной ставкой 10%
//     6 - НДС с расчётной ставкой 18%
driver.TaxTypeNumber = 4;
// рекомендуется рассчитывать в кассовом ПО цену со скидкой, а информацию по начисленным скидкам печатать нефискальной печатью и не передавать скидку в ККМ, поэтому код для начисления скидки закомментирован
// driver.DiscountValue = 10;
// // DiscountType - Тип скидки:
// //     0 - суммовая
// //     1 - процентная
// driver.DiscountType = 0;
driver.Registration();
driver.Caption = "В том числе скидка: 4.67\nЦена без скидки: 55.00";
driver.PrintString();

// Отброс копеек (округление чека без распределения по позициям). Скидка на чек доступна только для его округления до рубля. Таким образом недоступны: надбавки, назначение "на позицию", процентные значения.  SummCharge(), PercentsCharge(), PercentsDiscount () и ResetChargeDiscount () более недоступны
// Destination - Назначение скидки:
//     0 - на чек
//     1 - на позицию (недоступно)
driver.Destination = 0;
driver.Summ = 0.66;
driver.SummDiscount();

// Нефискальная печать с информацией по скидкам чека
driver.Caption = "--Скидки по чеку--";
driver.PrintString();
driver.Caption = "Сумма чека без скидок 110.00";
driver.PrintString();
driver.Caption = "Скидки по карте: 9.34";
driver.PrintString();
driver.Caption = "Округление: 0.66";
driver.PrintString();

// Оплата и закрытие чека
// TypeClose - Тип оплаты:
//     0 - Наличными
//     1 - Электронными средствами платежа
driver.TypeClose = 0;
driver.Summ = 100.00;
driver.Payment();
driver.CloseCheck();
2 Kigo_Kigo
 
19.07.18
15:53
Короче используйте команду
объект.CheckType = 2;
3 Масянька
 
19.07.18
15:56
(2) Однозначно. И лучше перед CheckOpen воткнуть.
4 Davalebor
 
19.07.18
16:03
(2) А можно ли после печати чека получить в 1с номер чека, который пробит?

В старой типовой обработке, где формировался файлик XML?
а потом был код
Объект.СформироватьЧек(глФРИДУстройства, Кассир, Электронно, ТекстАдоДБСтрим, НомерЧека, НомерСмены, ФискальныйПризнак, АдресСайтаПроверки);

В НомерЧека возвращался реальный номер пробитого чека.

А в новой обработке получение номера чека никак не описано. Есть возможность его получить?
5 Kigo_Kigo
 
19.07.18
16:07
(4) driver.RegisterNumber = 51;
driver.GetRegister();
НомеррДока = driver.DocNumber
6 Davalebor
 
19.07.18
16:14
(5) Спасибо!
Попробую.
7 Caesar
 
19.07.18
17:52
А если используется конструкция beginItem / EndItem?
В таком случае OpenCheck излишен..
8 Caesar
 
19.07.18
17:55
ну, то есть CheckOpen
9 Davalebor
 
20.07.18
09:03
(5) Да, все отработало как надо. Спасибо.