Эквайринг Райффайзенбанка и Менеджер оплат (Штрих-М)

03.06.20

Учетные задачи - Розничная торговля

Подключение эквайринга Райффайзенбанка к конфигурации 1с7.7 на примере Штрих-М Кассир 1.10.

 

  1. Установка ПО

Для работы используем менеджер оплат (Штрих-М - ShtrihPayMan). Скопируйте менеджер оплат в корень программы.  Для работы эквайринга банка Райффайзен нужен модуль в каталоге «SoftCase».

    1. Установка ПО “SoftCase

1) Распаковать архив "EFTHCXML"в корень диска "С:"
2) Запустить командную строку от имени администратора и прописать команду:
sc create EFTHCXML binpath= c:\efthcxml\efthcxml.exe start= auto
3) Зайти в раздел "Службы" и запустить службу EFTHCXML

    1. Настройка терминала

Узнать IP адрес компьютера на котором будет стоять ПО Штрих-М Кассир и служба "EFTHCXML".

Позвонить в техслужбу компании  «SoftCase» 8(495)374-64-76, и следуя их инструкции добиться чтобы на экране терминала появилась надпись «Готов к работе», т.е. терминал видит службу.

 

  1. Доработка конфигурации

При начале работы нужно получить активный индекс по терминалам, для этого обрабатываем файлы ShtrihPayMan_ActivePay.ini – активные индексы и ShtrihPayMan.ini – приязка индекса и логическое описания:

Функция ПолучитьАктивныеИндексы(Банк="")  Экспорт 
	АктивныйНомер = 0;
	//
	ТабИндексов = СоздатьОбъект("ТаблицаЗначений");
	ТабИндексов.НоваяКолонка("Индекс");
	ТабИндексов.НоваяКолонка("Активно");
	ТабИндексов.НоваяКолонка("ТипБанка");
	//ShtrihPayMan_ActivePay.ini
	ИмяФДанных = КаталогИБ()+"ShtrihPayMan_ActivePay.ini";
	Если ВнешняяКомпонента.OpenFl(ИмяФДанных)<0 Тогда
		Возврат 0;
	КонецЕсли; 
	
	Для Ном=0 По ВнешняяКомпонента.CountStr()-1 Цикл
		
		Стр=ВнешняяКомпонента.GetStrPs(Ном);
		Если СокрЛП(Стр)="" Тогда
			Продолжить;
		КонецЕсли;                      
		
		Стр=СтрЗаменить(Стр,";",РазделительСтрок); 
		СтрВрем = Стр;
		Если Лев(Стр,1)="[" Тогда
			СтрВрем = СтрЗаменить(СтрВрем,"[","");
			СтрВрем = СтрЗаменить(СтрВрем,"]","");
			СтрВрем = СокрЛП(СтрВрем);
			НомерИндекса=Число(СтрВрем);
			ТабИндексов.НоваяСтрока();
			ТабИндексов.Индекс = НомерИндекса;
			ТабИндексов.Активно = 0;
		ИначеЕсли (Найти(Стр,"active")>0) Тогда
			СтрВрем = СтрЗаменить(СтрВрем,"active","");
			СтрВрем = СтрЗаменить(СтрВрем,"=","");
			СтрВрем = СокрЛП(СтрВрем);
			ТабИндексов.Активно = Число(СтрВрем);
			//
			Если (ТабИндексов.Активно =Истина) И (ПустаяСтрока(Банк)=Истина) Тогда
				АктивныйНомер = НомерИндекса;
			КонецЕсли;
		КонецЕсли;	
	КонецЦикла; 
	ВнешняяКомпонента.CloseFl();
	
ИмяФДанных = КаталогИБ()+"ShtrihPayMan.ini";
	Если ВнешняяКомпонента.OpenFl(ИмяФДанных)<0 Тогда
		Возврат 0;
	КонецЕсли; 
	
	Для Ном=0 По ВнешняяКомпонента.CountStr()-1 Цикл     		
		Стр=ВнешняяКомпонента.GetStrPs(Ном);
		Если СокрЛП(Стр)="" Тогда
			Продолжить;
		КонецЕсли;                      
		НашлиСтроку=0;	
		Стр=СтрЗаменить(Стр,";",РазделительСтрок); 
		СтрВрем = Стр;
		Если Лев(Стр,1)="[" Тогда  //Ищем по индексу
			СтрВрем = СтрЗаменить(СтрВрем,"[","");
			СтрВрем = СтрЗаменить(СтрВрем,"]","");
			СтрВрем = СокрЛП(СтрВрем);
			НомерИндекса=Число(СтрВрем); 
			нм="";
			Если (ТабИндексов.НайтиЗначение(НомерИндекса,нм,"Индекс")>0) Тогда 
				ТабИндексов.ПолучитьСтрокуПоНомеру(нм);
				НашлиСтроку=1;
			Иначе
				НашлиСтроку=0;
			КонецЕсли;
		ИначеЕсли (Найти(Стр,"name")>0) Тогда
			СтрВрем = СтрЗаменить(СтрВрем,"name","");
			СтрВрем = СтрЗаменить(СтрВрем,"=","");
			СтрВрем = СокрЛП(СтрВрем);
			ТабИндексов.ТипБанка = СтрВрем;
			Если ПустаяСтрока(Банк)=0 Тогда
				Если (Найти(Стр,Банк)>0) Тогда
					//все ок     
					ТабИндексов.Активно = 1; 
				ИначеЕсли (Банк="SoftCase") И (Найти(Стр,Банк)>0) Тогда
					//все ок     
					ТабИндексов.Активно = 1;	
				Иначе
					ТабИндексов.Активно = 0;
				КонецЕсли; 
			Иначе
				Если (АктивныйНомер = НомерИндекса)Тогда
					Если (ТабИндексов.ТипБанка = "SoftCase") Тогда
						ТекАктивныйТерминал = Перечисление.ТипТерминала.Райффайзенбанк;
					КонецЕсли;
				КонецЕсли;
			КонецЕсли;		
		Иначе
			Продолжить;
		КонецЕсли;	
	КонецЦикла;
	ВнешняяКомпонента.CloseFl();
	
	Возврат ТабИндексов;	
КонецФункции	

Подключим компоненту:

Попытка

                МенеджерОплат=СоздатьОбъект("ShtrihPayMan.PayMan");

Исключение

                ВывестиПредупреждение("Ошибка загрузки менеджера оплат","Ошибка!");

                Константа.ВидОплатыМенеджерОплат=0;

КонецПопытки;

Если Константа.ВидОплатыМенеджерОплат>0 Тогда

                Если МенеджерОплат.Init(КаталогИБ())=0 Тогда

                               ВывестиПредупреждение("Ошибка инициализации менеджера оплат "+МенеджерОплат.LastError+": "+МенеджерОплат.LastErrorMsg,"Ошибка!");

                               Константа.ВидОплатыМенеджерОплат=0;

                КонецЕсли;

КонецЕсли;

Теперь опишем продажу:

Если (ТекАктивныйТерминал=Перечисление.ТипТерминала.Райффайзенбанк) Тогда            
	RRN = "";
	Если (ПродажаПоРайфайзенБанку(ИндексТипаОплаты, ИтогЧека("СуммаСоСкидкой"), СкидкиНаЧек, RRN)=Ложь) Тогда
		//Проверка на ошибку							
		Если ОбработкаОшибокЭквайринга( ЕстьОплатаКартой )=Ложь Тогда
		 	Возврат;   
		КонецЕсли;											
    КонецЕсли;
КонецЕсли;

где ИндексТипаОплаты – это активный индекс оплаты

ИтогЧека – Сумма чека по позициям с учетом скидки

СкидкиНаЧек – Скидка на чек

RRN – Данные полученные от эквайринга, которые нужно сохранить, для того чтобы сделать возврат в будущем, если нужно

Функция ПродажаПоРайфайзенБанку:

Функция ПродажаПоРайфайзенБанку(ИндексОплаты, СуммаЧека,СкидкиНаЧек, RRN)       

                РезОч = МенеджерОплат.ClearPays();              

                РезОч = МенеджерОплат.ClearGoods();

                КурсРубля = 1;

                //

                Если (ВидЧека = 3) Тогда

                               Знак=-1;     

                               //Поиск RRN

                               RRN = НайтиRRNВБазе(НомерЧекаВозврата, СуммаЧека);    

                               МенеджерОплат.RRN = RRN;

                Иначе

                               Знак=1;

                КонецЕсли;

                //

                РезОч = МенеджерОплат.AddPay(     2,

                                                                              2,//ИндексОплаты

                                                                              "Безналичные",

                                                                              Знак*СуммаЧека*КурсРубля * 100,

                                                                              ""); 

                РезОч = МенеджерОплат.ClearGoods();

                PayType = МенеджерОплат.GetPayTypeIndex(ИндексОплаты);

                //

                _СуммаСкидки = 0;_СуммаБонусов = 0;

                СкидкиНаЧек.ВыбратьСтроки();

                Пока СкидкиНаЧек.ПолучитьСтроку()>0 Цикл

                               Если (ПустоеЗначение(ФиксированнаяСкидкаНаЧек)=0) И (СкидкиНаЧек.Вид=1) Тогда

                                               //0 — ручная скидка

                               ИначеЕсли (ПустоеЗначение(АвтоматическаяСкидкаНаЧек)=0) И (СкидкиНаЧек.Вид=2) Тогда

                                               //, 1 — фиксированная скидка,

                               ИначеЕсли СкидкиНаЧек.Вид=3 Тогда

                                               //3 — скидка по дисконтной карте 

                                               _СуммаСкидки = ABS(СкидкиНаЧек.СуммаСкидки);                                 

                               ИначеЕсли СкидкиНаЧек.Вид=4 Тогда  

                                               //4 — бонусная карта

                                               _СуммаБонусов=ABS(СкидкиНаЧек.СуммаСкидки);

                               КонецЕсли;

                КонецЦикла;            

                //

                СуммаСкидкиВПозициях=0;

                Чек.ВыбратьСтроки();

                Пока Чек.ПолучитьСтроку() = 1 Цикл 

                               СуммаСкидкиВПозициях = СуммаСкидкиВПозициях + Чек.СуммаСкидки;

                               Barcode = ПолучитьШтрихКод(Чек.Товар.ТекущийЭлемент()); 

                               MaxDiscount = Чек.ТОвар.МаксСкидка;

                               Если (MaxDiscount<0) Тогда

                                               MaxDiscount=0;

                               КонецЕсли;

                               Если ВидЧека=2 Тогда                 

                                               СуммаСкидки       = 0;

                               Иначе

                                               СуммаСкидки = Чек.СуммаСкидки*100;

                               КонецЕсли;  

                               _Бонусы                 = Чек.СуммаСоСкидкой * КурсРубля;

                               _МаксСкидка = Чек.СуммаСоСкидкой * КурсРубля;

                               Рез = МенеджерОплат.AddGood( 

                                                                                              Чек.Товар.Код,

                                                                                              Чек.Товар.Наименование,

                                                                                              Чек.Количество * 1000,

                                                                                              Чек.Цена * 100 * КурсРубля,

                                                                                              Чек.СуммаСоСкидкой * 100 * КурсРубля,

                                                                                              СуммаСкидки * КурсРубля,

                                                                                              MaxDiscount * 100 * КурсРубля,

                                                                                              Barcode,

                                                                                              _Бонусы*100,

                                                                                              _МаксСкидка * 100,

                                                                                              "");

                КонецЦикла;

                //Модифицируемые свойства:            

                МенеджерОплат.PayType                                    = PayType;

                МенеджерОплат.CardNumber                             = "";

                МенеджерОплат.Amount                                     = Знак*СуммаЧека*КурсРубля*100;

                МенеджерОплат.KKMNumber                            = 1;//--Потому что иначе ошибка 911, это номер для службы---

                МенеджерОплат.RRN                                                         = RRN; 

                МенеджерОплат.CheckNumber                           = Число(НомерЧека);

                МенеджерОплат.AuthCode                                 = СтрПолучитьСтроку(КодАвторизацииПриВозврате,1);

                МенеджерОплат.RRN                                         = СтрПолучитьСтроку(КодАвторизацииПриВозврате,2); 

                Если ВидЧека=2 Тогда                            

                               МенеджерОплат.DiscountAmount= 0;//Сумма скидки

                               МенеджерОплат.BonusAmount           = 0;//Сумма бонусов

                Иначе

                               МенеджерОплат.DiscountAmount= _СуммаСкидки*КурсРубля;//Сумма скидки

                               МенеджерОплат.BonusAmount           = _СуммаБонусов;//Сумма боеусов  

                КонецЕсли;

                Рез = МенеджерОплат.Pay();        

                Если Рез=1 Тогда         

                               Если (Знак=1) Тогда

                                               RRN = МенеджерОплат.RRN;//сохраняем данные по чеку для возврата

                               КонецЕсли;

                ИначеЕсли РезОч=0 Тогда                                          

                               РезОч = МенеджерОплат.ClearGoods();

                               Возврат 0;

                КонецЕсли;

                //Очистим список товаров

                РезОч = МенеджерОплат.ClearGoods();

                Если Рез=1 Тогда  

                               Возврат 1;

                Иначе

                               Возврат 0;

                КонецЕсли;

                Возврат 0;

КонецФункции  

   

где  Чек - табличное значение по строкам чека,

СкидкиНаЧек – список скидок на чек.

Теперь расмотрим функцию ОбработкаОшибокЭквайринга:

Функция ОбработкаОшибокЭквайринга(ЕстьОплатаКартой) 

                Состояние("Ошибка авторизации "+МенеджерОплат.LastError+": "+МенеджерОплат.LastErrorMsg);

                Если (ТекАктивныйТерминал=Перечисление.ТипТерминала.Райффайзенбанк)  Тогда  

                               Если (МенеджерОплат.LastError=911) Тогда

                                               Предупреждение("Номер кассы превышает лимит для передачи в эквайринг!"); 

                                               Возврат 0;

                               КонецЕсли;

                КонецЕсли;

                Если (Константа.ИспользоватьККМ>0) И (ЧекНачалПечататься=0) И (СокрЛП(МенеджерОплат.StringForPrint)<>"") Тогда

                               СписокККМ.ПолучитьСтрокуПоНомеру(1);

                               УстановитьККМ(); 

                               ПечатьЧекаПлатежнойСистемы(СтрЗаменить(МенеджерОплат.StringForPrint,Симв(10),РазделительСтрок)+Симв(1));

                КонецЕсли;

               

                Возврат 0;             

КонецФункции   

    

Функция снятия конца смены по терминалу:

Процедура ЗакрытиеДняМенеджерОплат()

                Если Константа.ВидОплатыМенеджерОплат=0 Тогда

                               ВывестиПредупреждение("На данном рабочем месте не подключен менеджер оплат!","Не подключено!");

                               Возврат;

                КонецЕсли;

                Если ЗаполнитьСписокККМ()=0 Тогда

                               Если Константа.ФронтОфисныйРежим>0 Тогда

                                               ОбновитьСтроку();

                               КонецЕсли;

                               Возврат;

                КонецЕсли;

                СписокККМ.ВыбратьСтроки();

                Пока СписокККМ.ПолучитьСтроку()>0 Цикл

                               Если Константа.ИспользоватьККМ=1 Тогда

                                               ФискальныйРегистратор.DeviceEnabled=1;

                                               Если ФискальныйРегистратор.ResultCode<0 Тогда

                                                               ВывестиПредупреждение("Ошибка кассы"+?(СписокККМ.Номер=0,""," №"+СписокККМ.Номер)+": "+ФискальныйРегистратор.ResultDescription+"!","Ошибка кассы!");

                                                               Если Константа.ФронтОфисныйРежим>0 Тогда

                                                                              ОбновитьСтроку();

                                                               КонецЕсли;

                                                               Возврат;

                                               КонецЕсли;

                               ИначеЕсли Константа.ИспользоватьККМ=2 Тогда

                                               ФискальныйРегистратор.Password=Константа.ПарольСистемногоАдминистратора;

                                               Пока 1=1 Цикл

                                                               ФискальныйРегистратор.Connect();

                                                               Рез=ОбработкаОшибокФР();

                                                               Если Рез>0 Тогда

                                                                              Если Константа.ФронтОфисныйРежим>0 Тогда

                                                                              ОбновитьСтроку();

                                                                              КонецЕсли;

                                                                              Возврат;

                                                               ИначеЕсли Рез=0 Тогда

                                                                              Прервать;

                                                               КонецЕсли;

                                               КонецЦикла;

                               КонецЕсли;

                КонецЦикла;

               

                Если (ТекАктивныйТерминал = Перечисление.ТипТерминала.Райффайзенбанк) Тогда

                               ТипЭквайринга = "SoftCase";

                КонецЕсли;

                ИндексБанковОплат = ПолучитьАктивныеИндексы(ТипЭквайринга); 

                Если (ИндексБанковОплат=0) Тогда

                               Предупреждение("Не активна не одна из платежных систем!");

                               Возврат;

                КонецЕсли;

                ИндексБанковОплат.ВыбратьСтроки();

                Пока ИндексБанковОплат.ПолучитьСтроку()=1 Цикл

                               Если (ИндексБанковОплат.Активно=0) Тогда

                                               Продолжить;

                               КонецЕсли;

                               Транз=СоздатьОбъект("Справочник.Транзакции");

                               Транз.Новый();

                               Транз.Наименование="Закрытие дня по кредитным картам";

                               Транз.НомерККМ=Константа.НомерПОС;

                               Транз.ДатаТранз=ТекущаяДата();

                               Транз.ВремяТранз=ТекущееВремя();

                               Транз.ТипТранзакции=63;

                               Транз.НомерЧека=0;

                               Транз.Секция=0;

                               Транз.КодКассира=ТекущийПользователь.Код;

                               Транз.КодТовара=8;

                               Транз.Цена=0;

                               Транз.Количество=0;

                               Транз.Сумма=0;

                               Попытка

                                               Транз.Записать();

                               Исключение

                                               ВывестиПредупреждение("Ошибка работы с базой данных!","Ошибка!");

                                               ОтменитьТранзакцию();

                                               Если Константа.ФронтОфисныйРежим>0 Тогда

                                                               ОбновитьСтроку();

                                               КонецЕсли;

                                               Возврат;

                               КонецПопытки; 

                               Если (ТекАктивныйТерминал = Перечисление.ТипТерминала.Райффайзенбанк) Тогда

                                               РезОч = МенеджерОплат.CloseDayAllow(1);

                                               РезОч = МенеджерОплат.PrintReportAllow(1);

                                               РезОч = МенеджерОплат.CloseDayAllow(1);

                               КонецЕсли;                                          

                               МенеджерОплат.PayType                                    = МенеджерОплат.GetPayTypeIndex(ИндексБанковОплат.Индекс);

                               Если (ТекАктивныйТерминал = Перечисление.ТипТерминала.Райффайзенбанк) Тогда

                                               МенеджерОплат.KKMNumber                                           = 1;        

                               КонецЕсли;                                          

                               Рез=МенеджерОплат.CloseDay();

                               ВнешняяКомпонента.SetVisWind("1С:Предприятие - Штрих-М: КАССИР",15);

                               Если Рез=0 Тогда

                                               ВывестиПредупреждение("Ошибка закрытия дня "+МенеджерОплат.LastError+": "+МенеджерОплат.LastErrorMsg+". По типу :"+ИндексБанковОплат.Индекс,"Ошибка!");

                                               ДобавитьВЛог("Ошибка закрытия дня "+МенеджерОплат.LastError+": "+МенеджерОплат.LastErrorMsg+". По типу :"+ИндексБанковОплат.Индекс);

                                               //ОтменитьТранзакцию();

                                               Если Константа.ФронтОфисныйРежим>0 Тогда

                                                               ОбновитьСтроку();

                                               КонецЕсли;

                                               Продолжить;

                               КонецЕсли;

                               Если СокрЛП(МенеджерОплат.StringForPrint)<>"" Тогда

                                               ЧекДляОтчета=СтрЗаменить(МенеджерОплат.StringForPrint,Симв(10),РазделительСтрок)+?(Прав(МенеджерОплат.StringForPrint,1)=РазделительСтрок,"",РазделительСтрок)+Симв(1);

                                               Для Пар=1 по СтрКоличествоСтрок(ЧекДляОтчета) Цикл

                                                               Стр=СтрПолучитьСтроку(ЧекДляОтчета,Пар);

                                                               Если Лев(Стр,1)=Симв(1) Тогда

                                                                              Если Константа.ИспользоватьККМ=1 Тогда

                                                                                              Для Ном=1 по 2 Цикл

                                                                                                              Если ПечатьСтроки(" ",0,0)=0 Тогда

                                                                                                                             ОтменитьТранзакцию();

                                                                                                                             Если Константа.ФронтОфисныйРежим>0 Тогда

                                                                                                                                             ОбновитьСтроку();

                                                                                                                             КонецЕсли;

                                                                                                                             Возврат;

                                                                                                              КонецЕсли;

                                                                                              КонецЦикла;

                                                                                              Пока 1=1 Цикл

                                                                                                              Рез=ОбработкаОшибок(ФискальныйРегистратор,"кассы",ФискальныйРегистратор.PrintHeader());

                                                                                                              Если Рез>0 Тогда

                                                                                                                             ОтменитьТранзакцию();

                                                                                                                             Если Константа.ФронтОфисныйРежим>0 Тогда

                                                                                                                                             ОбновитьСтроку();

                                                                                                                             КонецЕсли;

                                                                                                                             Возврат;

                                                                                                              ИначеЕсли Рез=0 Тогда

                                                                                                                             Прервать;

                                                                                                              КонецЕсли;

                                                                                              КонецЦикла;

                                                                              ИначеЕсли Константа.ИспользоватьККМ=2 Тогда

                                                                                              Если СписокККМ.ПечатьРекламногоТекста>0 Тогда

                                                                                                              Для Ном=1 по 3 Цикл

                                                                                                                              Стр=СписокККМ.ПолучитьЗначение(СписокККМ.НомерСтроки,"Клише"+Ном);

                                                                                                                             Если Стр<>"" Тогда

                                                                                                                                             Если ПечатьСтроки(Стр,0,0)=0 Тогда

                                                                                                                                                             ОтменитьТранзакцию();

                                                                                                                                                             Если Константа.ФронтОфисныйРежим>0 Тогда

                                                                                                                                                                            ОбновитьСтроку();

                                                                                                                                                             КонецЕсли;

                                                                                                                                                             Возврат;

                                                                                                                                             КонецЕсли;

                                                                                                                             КонецЕсли;

                                                                                                              КонецЦикла;

                                                                                              КонецЕсли;

                                                                                              Если (Ширина>24) ИЛИ (Ширина=20) Тогда

                                                                                                              Для Ном=1 по ?(Ширина=36,2,?(((Ширина>=40) ИЛИ (Ширина=32)),4,3)) Цикл

                                                                                                                             Если ПечатьСтроки(" ",0,0)=0 Тогда

                                                                                                                                             ОтменитьТранзакцию();

                                                                                                                                             Если Константа.ФронтОфисныйРежим>0 Тогда

                                                                                                                                                             ОбновитьСтроку();

                                                                                                                                             КонецЕсли;

                                                                                                                                             Возврат;

                                                                                                                             КонецЕсли;

                                                                                                              КонецЦикла;

                                                                                              КонецЕсли;

                                                                                              Для Ном=4 по СписокККМ.ЧислоСтрокПодКлише Цикл

                                                                                                              Стр=СписокККМ.ПолучитьЗначение(СписокККМ.НомерСтроки,"Клише"+Ном);

                                                                                                              Если ПечатьСтроки(Стр,0,0)=0 Тогда

                                                                                                                             ОтменитьТранзакцию();

                                                                                                                             Если Константа.ФронтОфисныйРежим>0 Тогда

                                                                                                                                             ОбновитьСтроку();

                                                                                                                             КонецЕсли;

                                                                                                                             Возврат;

                                                                                                              КонецЕсли;

                                                                                              КонецЦикла;

                                                                                              Если СписокККМ.ОтрезкаЧека>0 Тогда

                                                                                                              ФискальныйРегистратор.Password=Число(Константа.ПарольСистемногоАдминистратора);

                                                                                                              ФискальныйРегистратор.CutType=СписокККМ.ОтрезкаЧека-1;

                                                                                                              ФискальныйРегистратор.CutCheck();

                                                                                              КонецЕсли;

                                                                              КонецЕсли;

                                                                              Продолжить;

                                                               КонецЕсли;

                                                               Если ПечатьСтроки(Стр,0,0)=0 Тогда

                                                                              ОтменитьТранзакцию();      

                                                                              Если Константа.ФронтОфисныйРежим>0 Тогда

                                                                                              ОбновитьСтроку();

                                                                              КонецЕсли;

                                                                              Возврат;

                                                               КонецЕсли;

                                               КонецЦикла;

                               КонецЕсли;

                               Если (ИндексБанковОплат.Активно=1) Тогда

                                               Прервать;  

                               КонецЕсли;

                КонецЦикла;

 

                ЗафиксироватьТранзакцию();

                СписокККМ.ВыбратьСтроки();

                Пока СписокККМ.ПолучитьСтроку()>0 Цикл

                               Если Константа.ИспользоватьККМ=1 Тогда

                                               ФискальныйРегистратор.DeviceEnabled=0;

                               ИначеЕсли Константа.ИспользоватьККМ=2 Тогда

                                               ФискальныйРегистратор.Disconnect();

                               КонецЕсли;

                КонецЦикла;

                Если Константа.ФронтОфисныйРежим>0 Тогда

                               ОбновитьСтроку();

                КонецЕсли;

КонецПроцедуры



 

См. также

Оптовая торговля Розничная торговля ККМ ЭДО и ОФД Обмен с ГосИС Системный администратор Программист Оперативный учет 7.7 Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия Платные (руб)

Поддерживаются новые ставки НДС 5% и 7% для УСН при продаже через ККТ. Подключение фискального регистратора к 1С 7.7 в режиме онлайн-кассы в соответствии с 54-ФЗ. Поддержка актуальных версий драйверов ККТ: ДТО 10 и ДТО 8 для Атол, 4.15, 5.16 для Штрих-М. Поддержка розничной продажи маркированной продукции (алкоголь, табак, обувь, лекарства, шины, одежда, белье, парфюмерия, молочная продукция, вода и пр.).

2000 руб.

28.03.2017    484166    4546    3519    

2478

Кассовые операции ККМ Системный администратор Программист Бухгалтер Платформа 1С v7.7 Платформа 1С v8.3 1C:Бухгалтерия 1C77 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Программа для управления ККМ Атол и Штрих нового поколения (он-лайн ККТ под 54-ФЗ) с помощью текстового файла (ini файла) с изменениями включена 1 лицензия Для любых программ, которые умеют работать с текстовыми файлами. Внутри комплекта есть готовые к использованию обработки

6000 руб.

31.07.2017    173253    599    609    

208

ККМ Эквайринг/ридер магнитных карт Системный администратор Программист Оперативный учет 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)

Данная обработка предназначена для работы с ККТ АТОЛ на платформе 5.0 с драйверами АТОЛ версии 10.7.0.0 и выше для 1С:Торговля и Склад 9.2 и 1С: Комплексная 4.5 (в соответствии с 54-ФЗ). Проста в установке и настройке. Реализован учет маркируемой продукции по ФФД 1.2. В поставку включена поддержка эквайринга на уровне драйверов (в данный момент – Сбер), реализован учет частичных оплат, добавлены эмуляторы кассы и эквайрингового терминала, добавлена обработка генерации тестовых кодов маркировки. Поддерживаются ставки НДС 5% и 7%.

3000 руб.

20.08.2020    28439    70    81    

66

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Обмен с ГосИС Программист Бухгалтер Оперативный учет 7.7 Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 1С:Упрощенное налогообложение 7.7 Сельское хозяйство и рыболовство Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Пищевая промышленность Россия Бухгалтерский учет Управленческий учет Платные (руб)

Полностью автоматизированный обмен между конфигурациями 1С 7.7 и ФГИС Меркурий через Ветис.API для всех видов деятельности (Опт, Розница, Производство). Для организации обмена с ФГИС Меркурий требуется минимальная доработка конфигураций (поддерживается "из коробки" 1С: "Торговля и склад ред. 9.2", 1С: "Комплексная ред. 4.5", 1С: "Бухгалтерия 7.7", 1С: "УСН 7.7", 1С Предприниматель, другие конфигурации по заказу, включая нетиповые и самописные). Модуль разработан таким образом, чтобы минимизировать затраты по внедрению в произвольную конфигурацию на базе 1С 7.7. Вы можете БЕСПЛАТНО скачать демо-версию без ограничения по функционалу и опробовать решение в полном объеме перед покупкой. В данном программном продукте реализованы все технические требования Россельхознадзора по обмену в формате 2.0 и 2.1. Решение прошло опытную эксплуатацию и тестирование на крупных объектах всех видов деятельности: Производство, Опт, Розница.

10000 руб.

21.11.2018    54342    157    105    

71

ККМ Кассовые операции Системный администратор Программист Платформа 1С v7.7 1C77 Россия Платные (руб)

Решение для тех, у кого остались не типовые конфигурации или сильно доработанные. Не все заказчики согласны платить за перенос конфигурации c V 1С 7.7 на V 1С 8 в связи с новым применением ККМ нового поколения (54-ФЗ). Код обработки полностью открыт, поэтому разработчику не составит труда использовать методы данной обработки для привязки фискального регистратора Атол любых моделей к конфигурации Заказчика.

2400 руб.

31.03.2017    54369    44    37    

45

Оптовая торговля Розничная торговля Обмен с ГосИС Бухгалтер Оперативный учет 7.7 1С:Торговля и склад 7.7 Бухгалтерский учет Акцизы Платные (руб)

Дорогие друзья! Предлагаю Вашему вниманию обработку, предназначенную для обмена данными из Вашей учетной системы с ЕГАИС, через универсальный транспортный модуль (УТМ). В обработке реализован весь функционал обмена: - загрузка справочных данных по контрагентам, производителям, импортерам алкогольной продукции; - загрузка справочных данных по номенклатуре алкогольной продукции; - загрузка остатков; - помощник сопоставления справочных данных и запись их в базу данных; - загрузка приходных ТТН и справок Б от поставщиков, отправка по ним актов всех типов, создание по ним приходных документов; - выгрузка расходных ТТН покупателям; - управление Марками и ведение Регистра 3; Обработку возможно использовать автономно, не внося изменений в Вашу Учетную систему. Код открыт.

6000 руб.

13.11.2015    127285    172    2529    

233

Файловый обмен (TXT, XML, DBF), FTP ККМ Бухгалтер Пользователь Оперативный учет 7.7 1С:Торговля и склад 7.7 Бухгалтерский учет Управленческий учет Абонемент ($m)

Данная обработка предназначена для выгрузки файла из программы 1С: Предприятие 7.7 Конфигурации «Торговля и Склад 9.2» в файл CSV для загрузки в кассу МТС. Тестирование проводилось на релизах 937 и 998. В теории должна работать на всех типовых релизах конфигурации «Торговля и Склад 9.2».

1 стартмани

07.02.2021    10460    5    Kuzya_brаtsk    1    

7
Оставьте свое сообщение