Отбитие чека возврата прихода на другой день на Штрих онлайн
1С:Торговля и склад 7.7
Бухгалтерский учет
Розничная и сетевая торговля (FMCG)
Россия
Корп. решения 1С
Интеграция
Бухгалтерский учет
Программист
Внешняя обработка (ert,epf)
Бесплатно (free)
Вопрос
Может кто-то подскажет что должно быть написано в коде обработки для Отбития чека возврата прихода на другой день на Штрих онлайн?
....... и т.д.
// Объект полключается - здесь все хорошо
Если ПодключитьсяКФР(Объект, Пароль) = 0 Тогда
Возврат 0;
КонецЕсли;
//Чек прихода и Чек возврата в тот же день отбивается за нал и безнал (безнал ФизЛицу и ЮрЛицу по корп карте) - все ок. в ОФД отправляется - тоже все ОК
// Не получается отбить Чек на возврат (Возврат прихода) на другой день - что нужно сделать обработке?
// Признак возврата в Чек передаю, может снесение нужной суммы нужно сделать перед отбитием или какой-то флаг проверки отвключить на ФР?
// Пример кода обработки (ошибок по синтаксису кода и его работы явных нет, даже если что-то пропущено при отображении примера):
// ПризнВозврата=1 - это Чек на возварт, иначе значение ПризнВозврата=0
Функция ПечататьЧек(Объект, Пароль, СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, ....... )
Если СокрЛП(ИННкассира) = "" Тогда
ИННкассира = ?(ПустоеЗначение(Док.Автор)=0,?(ПустоеЗначение(Док.Автор.птдФизЛицо)=0,СокрЛП(Док.Автор.птдФизЛицо.ИНН),""),"");
КонецЕсли;
Если ПустоеЗначение(Объект) = 1 Тогда
ОписаниеРезультата = "устройство не подключено";
Возврат 0;
ИначеЕсли ПодключитьсяКФР(Объект, Пароль) = 0 Тогда
Возврат 0;
КонецЕсли;
/// ..... здесь некоторый подготовительный код
Если ЕстьПоддержка54ФЗ = 1 Тогда //начало 54ФЗ
Если ПриемНаличныхОтЮрЛиц = 1 Тогда /// тогда ОСНО - юрик платит через РКО с чеком
СНО = 1; // ОСНО
Иначе
СНО = 8; // ЕНВД
КонецЕсли;
Объект.Password = "30"; //глФРПарольАдминистратора ???
Объект.TableNumber = 18; //таблица "Fiscal Storage"
Объект.RowNumber = 1; //в таблице всего одна строка
Объект.FieldNumber = 5; //поле "Tax system"
Объект.ReadTable();
Если Объект.ValueOfFieldInteger <> СНО Тогда
Объект.ValueOfFieldInteger = СНО;
Объект.WriteTable();
КонецЕсли;
Объект.Password = Пароль; //пользователя
// ..... код передачи e-mail покупателя
КонецЕсли;
Объект.Password = Пароль;
Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
Объект.Password = Пароль;
// // для FNOperation свойство CheckType: 1 -Приход, 2 -Возврат прихода, 3 -расход, 4 -возврат расхода
Объект.CheckType = ?(ПризнВозврата = 0,1,2);
Объект.StringForPrinting = СписокТоваров.ТовНаим; //тщи 54ФЗ ""; ??? Лев(СписокТоваров.ТовНаим, ДлинаНаименования)
Если НДСЕсть = 1 Тогда //\\//\\+ 2019-08-10
Объект.StringForPrinting = СокрЛП(Объект.StringForPrinting) + ", НДС"+СписокТоваров.СтавкаНДС+"%="+СписокТоваров.СуммаНДС;
КонецЕсли;
Кол = СписокТоваров.Количество; // тщи 54ФЗ
ЦенаСоСкд = ?(Кол=0, СписокТоваров.Цена, окр(СписокТоваров.Сумма / Кол,2)); //тщи 54ФЗ
Объект.Price = ЦенаСоСкд; //тщи 54ФЗ
Объект.Quantity = СписокТоваров.Количество;
Объект.Department = НомерСекции;
Показать....... и т.д.
Объект.PaymentTypeSign = PaymentTypeSign; //\\//\\+ 2019.01.03
Если СписокТоваров.КоличествоКолонок() = 6 Тогда
PaymentItemSign = 1;// Товар 4. Услуга
Иначе
PaymentItemSign = ?(PaymentTypeSign=4,СписокТоваров.PaymentItemSign,10); //\\//\\+ 2019.01.03
КонецЕсли;
Объект.PaymentItemSign = PaymentItemSign;
Объект.FNOperation();
Объект.StringForPrinting = ?(PaymentTypeSign=4,"Полный расчет","Предоплата 100%");
Объект.PrintString();
Объект.StringForPrinting = ?(PaymentItemSign = 1,"Товар","Услуга");
Объект.PrintString(); //4
Если Объект.ResultCode <> 0 Тогда
Объект.Password = Пароль;
Объект.FNGetStatus();
ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
АннулированиеЧека(Объект, Пароль);
ОтключитьсяОтФР(Объект, Пароль, 0);
Возврат 0;
КонецЕсли;
КонецЦикла;
Если сокрлп(ИННкассира) <> "" Тогда
Объект.Password = Пароль;
Объект.TagNumber = 1203;
Объект.TagType = 7;
Объект.TagValueStr = сокрлп(ИННкассира);
Объект.FNSendTag();
КонецЕсли;
Объект.Password = Пароль;
Объект.Summ4 = 0;
Объект.Summ5 = 0;
Объект.Summ6 = 0;
Объект.Summ7 = 0;
Объект.Summ8 = 0;
Объект.Summ9 = 0;
Объект.Summ10 = 0;
Объект.Summ11 = 0;
Объект.Summ12 = 0;
Объект.Summ13 = 0;
Объект.Summ15 = 0;
Объект.Summ16 = 0;
Объект.RoundingSumm = 0;
этоЗачетАванса = Док.птдЧекЗачетАванса;
Если этоЗачетАванса = 1 Тогда
Объект.Summ14 = СуммаЧека;
Получено = 0;
СуммаЧека = 0;
Иначе
Объект.Summ14 = 0;
КонецЕсли;
Если Док.птдБезнал = 1 Тогда
Объект.Summ2 = СуммаЧека; //пласт. картой
Объект.Summ1 = 0;
Объект.Summ3 = 0;
Если НДСЕсть = 1 Тогда //\\//\\+ 2019-08-10 Тогда Объект.Tax1 = 4; // Без налога (ЕНВД)
Объект.Tax1 = 0;
Объект.Tax2 = _Tax; //1 - 20%
Объект.Tax3 = 0;
КонецЕсли;
Если Док.птдБезналПоСчету = 1 Тогда //\\//\\+ 2018-06
Объект.Summ2 = 0;
Объект.Summ1 = 0;
Объект.Summ3 = СуммаЧека;
Если НДСЕсть = 1 Тогда //\\//\\+ 2019-08-10 Тогда Объект.Tax1 = 4; // Без налога (ЕНВД)
Объект.Tax1 = 0;
Объект.Tax2 = 0; // 20%
Объект.Tax3 = _Tax;
КонецЕсли;
КонецЕсли;
Иначе
Объект.Summ2 = 0;
Объект.Summ1 = СуммаЧека; //наличными
Объект.Summ3 = 0; //\\//\\+ 2018-06
КонецЕсли;
Если Объект.ResultCode <> 0 Тогда
ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
АннулированиеЧека(Объект, Пароль);
ОтключитьсяОтФР(Объект, Пароль, 0);
Возврат 0;
КонецЕсли;
Объект.FNCloseCheckEx();
// ... здесь проверки, что все прошло успешно
Объект.Password = Пароль;
Объект.GetECRStatus();
НомерЧека = Объект.OpenDocumentNumber+?(Объект.ECRAdvancedMode=5,1,0);
ОтрезатьЧек(Объект, Пароль);
Возврат ОтключитьсяОтФР(Объект, Пароль);
КонецФункции
ПоказатьОтветы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
А такой механизм разве возможен? Если штатно делается закрытие кассовой смены и формируется ОтчетККМ, то чеки либо удаляются (изначально) . Либо сами в конфигуратор лезете и подправляете код, если есть необходимость в контроле за чеками. А возврат делается документом ВозвратОтПокупателя(купля-продажа), в котором указываете документ-основание. Ну и после вводится РКО. где автоматом выбирается вид движения ДС как "возврат покупателю". Во всяком случае моя фирма так работает.
П.С. А в вашем случае нужно изначально внесение денег в кассу делать, а Закрытие смены проводить через внешний драйвер (не из 1С). Но это как предположение, не уверен...
П.С. А в вашем случае нужно изначально внесение денег в кассу делать, а Закрытие смены проводить через внешний драйвер (не из 1С). Но это как предположение, не уверен...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот