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

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 Тогда

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

                КонецЕсли;

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



 

См. также

SALE! 20%

Автоматический заказ поставщику в 1С: загрузка прайсов и анализ цен поставщиков для УТ 10.3, УТ 11, КА2, УНФ, УПП, ERP, Розница 2

Бюджетирование и планирование Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Анализ продаж Платформа 1С v7.7 Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Система управления запасами для 1С помогает работать с запасами правильно: автоматически рассчитывает потребность и делает заказ поставщику, загружает прайсы, перемещает товары по филиалам, анализирует продажи и позволяет управлять ассортиментом.

28500 22800 руб.

21.04.2017    90175    105    39    

190

АИС: Онлайн-кассы для 1С 7.7 (с поддержкой маркировки ЕГАИС, ТАБАКА, ОБУВИ, ЛЕКАРСТВ, ШИН, ОДЕЖДЫ, МОЛОКА, ВОДЫ и пр.) и Обмен с 1С 7.7 "Честный ЗНАК" (ГИСМТ, ЦРПТ, ЭДО)

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

Подключение фискального регистратора к 1С 7.7 в режиме онлайн-кассы (в соответствии с 54-ФЗ). Поддержка крайних версий драйверов ККТ: ДТО 10 и ДТО 8 для Атол, 4.15, 5.16 для Штрих-М. Поддержка протоколов ФФД 1.0, 1.05, 1.1 и 1.2, развитые настройки для применения частичных оплат и авансов в оптовой и розничной торговле. Поддержка чеков коррекции всех версий. Поддержка розничной продажи маркированной продукции (ЕГАИС, табак, обувь, лекарства, шины, одежда, белье, парфюмерия, молочная продукция, вода и пр.). Вывод электронного чека (на е-майл, телефон) по требованию покупателя, поддерживаются комбинированные типы оплаты, режим эмуляции печати чека на ФР. **** Полный цикл работы из 1С 7.7 с маркировкой "Честный ЗНАК" (ГИСМТ, ЦРПТ) из 1С 7.7. ЭДО (табак, обувь, шины, одежда, молочная продукция, вода и прочие группы товаров) для розницы и опта (приемка и оптовая отгрузка маркированной продукции). Поддерживается как объемно-сортовой учет (ОСУ) так и поштучный (поэкземплярный) учет.

2000 руб.

28.03.2017    457829    4258    3461    

2428

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

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

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

4800 руб.

31.07.2017    164842    558    601    

196

АИС: Обмен с ФГИС Меркурий (Ветис.API) для всех* конфигураций 1С 7.7

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Обмен с ГосИС Оперативный учет 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    52704    139    105    

67

АИС: Обмен с ЕГАИС 4.0 для конфигураций 1С 7.7

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

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

3000 руб.

13.12.2015    134701    159    400    

146

Обмен с ЕГАИС из 1С V7.7

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

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

6000 руб.

13.11.2015    121216    169    2528    

232

Обработка обслуживания ККТ АТОЛ, платформа 5.0 с драйверами v10 для 1С:Торговля и Склад 9.2 (МАРКИРОВКА, ФФД 1.2, эквайринг Сбер)

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

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

2000 руб.

20.08.2020    26289    53    75    

52

Конфигурация "Информационный киоск". Обработки выгрузки товаров для ТиС 9.2, УТ 10.3, УТ 11 (обмен данными с любой конфигурацией 1С 7.7, 8.х)

Оптовая торговля Розничная торговля Обмен между базами 1C Сканер штрих-кода Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Управленческий учет Платные (руб)

Конфигурация предназначена для организации offline доступа клиента (покупателя) к информации о товарах, услугах или дисконтных картах посредством сканирования штрих-кода. Основная цель – мгновенно предоставить наиболее актуальную информацию о цене, остатках, наименовании товара (услуги) или накоплениях, держателе, состоянии дисконтной карты.

1800 руб.

21.12.2014    59234    8    21    

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