текст xml содержит недопустимый символ в позиции 0

1. user1559606 19.11.21 14:00 Сейчас в теме
Добрый день. Клиенту обновили несколько баз до версии Розницы 2.3.9.42. На 4-ти компах всё взлетело, всё работает хорошо. Но на одной из баз, при сканировании штрихкода товара в формате EAN 13 в документ "Поступление товаров", выскакивает ошибка "текст xml содержит недопустимый символ в позиции 0: 6438429602880". Посмотрел в отладке, останавливается в данном месте (см. скрин). Причем значение параметра "НовыеДанныеШтрихкода.Штрихкод это просто строка с обычным 13-ти значным кодом. При сканировании марки, например, всё хорошо, внутрь можно провалиться. Насколько я понял, в эту процедуру должны попадать только считанные марки. Сканер переподключал, всё окей. Товары продавать возможность есть, марка считывается корректно, как и штрихкод. Кто нибудь сталкивался с подобным?Заранее спасибо за ответ!
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Sashares 34 19.11.21 14:09 Сейчас в теме
(1) Посмотрите в отладчике, что возвращает СтрДлина(НовыеДанныеШтрихкода.Штрихкод) - а то может там есть символ с длиной 0.
4. user1559606 19.11.21 14:13 Сейчас в теме
(3)Посмотрел, всё ок, 15 символов, с учетом 2-ух кавычек
2. smirnova_a 19.11.21 14:09 Сейчас в теме
кеш пробовали чистить?
5. user1559606 19.11.21 14:27 Сейчас в теме
6. Vladimir-R 167 19.11.21 15:14 Сейчас в теме
Функция УдалитьНедопустимыеСимволыXML(Стр)

    Позиция = НайтиНедопустимыеСимволыXML(Стр, , );

	Пока Позиция <> 0 Цикл
		Стр = Лев(Стр, Позиция-1) + Сред(Стр, Позиция+1);
		Позиция = НайтиНедопустимыеСимволыXML(Стр, , );
	КонецЦикла; 

	Возврат Стр;

КонецФункции //УдалитьНедопустимыеСимволыXML()
Показать
Stan; dima_finne; +2 Ответить
7. user1559606 19.11.21 16:42 Сейчас в теме
(6)У меня типовая конфа и раньше всё работало, снимать с поддержки не хочется
8. Vladimir-R 167 19.11.21 17:47 Сейчас в теме
(7) этот же штрихкод в дргие базы на том же компьютере сканируется без ошибок?
попробуй в отладчике посмотреть что вернет функция НайтиНедопустимыеСимволыXML(НовыеДанныеШтрихкода.Штрихкод, , )
9. user1559606 22.11.21 11:42 Сейчас в теме
(8)Посмотрел, ругается на первый и последний символ, т.е. на кавычки. Но это же нормально вроде, штрихкод же формате "Строка" идет
10. Vladimir-R 167 22.11.21 11:50 Сейчас в теме
(9) в тех базах, где не ругается, в штрих-код кавычки попадают?
формат "Строка" не подразумевает наличие кавычек.
12. user1559606 22.11.21 12:55 Сейчас в теме
(10)Попробовал отсканировать марку, недопустимых символов нет, но на обычный ругается на 1-ый и 15-ый символ. Очень странно
11. ishelper 22.11.21 12:39 Сейчас в теме
(9)
ругается на первый и последний символ, т.е. на кавычки. Но это же нормально вроде, штрихкод же формате "Строка" идет
Кавычками строка обозначается в коде. Но это вовсе не значит, что везде и всегда строки обрамляются кавычками: например, откройте любой текстовый файл - много там кавычек?

Чтобы не спорить попусту, отсканируйте штрих-код в Блокнот на "хорошем" и на "плохом" компах и сравните.
13. user1559606 22.11.21 12:55 Сейчас в теме
(11)И там, и там просто цифры
14. igor32499 1 14.09.22 12:30 Сейчас в теме
Добрый день.
Чем все закончилось? у меня такая же беда неожиданно
15. asdfgcom 415 07.04.23 12:57 Сейчас в теме
(14) не прошло и полгода, но все-же отвечу. У самого была сейчас такая проблема. Удалять поврежденную квитанцию с помощью утилиты curl (инструкций море). Как найти поврежденный документ в УТМ? Я открывал все входящие по очереди. Пока один из них не открылся. Это и была поврежденная квитанция. Удалил - 1С заработал.
16. user1475907 12.05.23 03:04 Сейчас в теме
Функция УдалитьНедопустимыеСимволыXML(Стр)

    Позиция = НайтиНедопустимыеСимволыXML(Стр, , );

    Пока Позиция <> 0 Цикл
        Стр = Лев(Стр, Позиция-1) + Сред(Стр, Позиция+1);
        Позиция = НайтиНедопустимыеСимволыXML(Стр, , );
    КонецЦикла; 

    Возврат Стр;

КонецФункции //УдалитьНедопустимыеСимволыXML()

&НаКлиенте
Процедура Расш1_ВнешнееСобытиеПеред(Источник, Событие, Данные)  
	ОчиститьСообщения();    
	_ТекстОшибки = ""; 
	_Данные = УдалитьНедопустимыеСимволыXML(СокрЛП(Данные));
	//Сообщить("_Данные ="+_Данные+"=");   
	Если Найти(_Данные,"http:/") или Найти(_Данные,"https:/") или Найти(_Данные,"/www") Тогда  
		  // Сообщить("***** Очистить Данные *****");
		   Данные = "";   
		   //Расш1_ОбщийМодуль2.ГолосТекстНовый(_НомерГолоса, _ГромкостьГолосаОшибки, _СкоростьГолоса, -1, "Проверьте Количество");
	КонецЕсли;
КонецПроцедуры
Показать
17. user1475907 12.05.23 03:11 Сейчас в теме
Весь Код для который использую.

 &НаКлиенте
Процедура Расш1_ПриОткрытииПеред(Отказ)
	// Вставить содержимое обработчика. 
	_ПользовательБД = ВРЕГ(СокрЛП(Объект.ПользовательБД)); 
	Если _ПользовательБД="АДМИНИСТРАТОР" Тогда
		ЭтаФорма.Масштаб = 100;
	КонецЕсли;
	
	
КонецПроцедуры

&НаКлиенте
Процедура ВремяНаФорме()
	   //ВремяНаФормеТекст = Формат(ТекущаяДата(),"ДЛФ=T");
	_ВремяНаФормеТекст = СокрЛП(Формат(ТекущаяДата(), "ДФ='dddd dd MM yyyy   HH:mm'"));
	Элементы.ВремяНаФормеТекст.Заголовок = _ВремяНаФормеТекст;
	//Если СтатусСмены = ПолучитьСтатусСменыПеречисленияЗакрыта() Тогда 
	//		//Сообщить("Подать Сигнал на Закрытие"); 
	//		ЭтаФорма.Закрыть(); 
	//		//ПоказатьПредупреждение(, "Подать Сигнал на Закрытие", , "ТекстЗаголовка");
	//		//ПодключитьОбработчикОжидания("ПоказатьОкноПредупреждение", 4, ИСТИНА);
	//		//ПодключитьОбработчикОжидания("ЗакрытьОкноРабочегоМестаКассира", 1, ИСТИНА);
	//КонецЕсли; 
КонецПроцедуры


&НаКлиенте
Процедура Расш1_ПриОткрытииПосле(Отказ) 
		
	Элементы.ЗакрытьОкно.Видимость = Ложь; 
	
	ОчиститьСообщения();

	_ПользовательБД = ВРЕГ(СокрЛП(Объект.ПользовательБД));  
	
	//Если _ПользовательБД="АДМИНИСТРАТОР" Тогда
	//	ЭтаФорма.Масштаб = 115;
	//КонецЕсли;
	
	Элементы.ПодменюРежим.Видимость = Ложь;  
	
	Элементы.ГруппаМоя.Видимость = Истина; 
			
	_ПользовательБД = ВРЕГ(СокрЛП(Объект.ПользовательБД));   
	_ip_max = "192.168.100.88"; 
	
	_СкоростьГолоса = 6;
	_НомерГолоса = 3;           
	_ГромкостьГолоса = Расш1_ОбщийМодуль1.Восстановить_Настройки("ГромкостьГолоса", _ПользовательБД);
	_ГромкостьГолосаОшибки = 85;

	
	Элементы.ОтложитьЧек.Видимость = Ложь;
	
	Элементы.ПоказатьОстатки.Видимость = Ложь; 
	
	_ДеньНедели = Формат(ТекущаяДата(),"ДФ=dddd"); 
	Если _ДеньНедели = "воскресенье" Тогда 
		  ГромкостьГолоса = 100;         	    
		 // Элементы.ОтложенныеЧеки.Видимость = Истина;     
	КонецЕсли;

	_Вывод88 = Ложь;        
	
	//_ВидимостьСообщения = Истина;     
	
	
	_РежимТоваровед = Истина;  
	Элементы.ГруппаОформлениеКассыСамообслуживания.Видимость = Ложь; 
	//Элементы.ГруппаВидовОплат.Видимость = Ложь; 
	
	Если _ПользовательБД = "КАССА-2" Тогда  
			 
		Элементы.ТоварыОст.Видимость = Ложь; 
		
		Элементы.ГруппаОформлениеКассыСамообслуживания.Видимость = Истина;

		_РежимТоваровед = Ложь;   
		ВидимостьГруппаОперации(_РежимТоваровед);
		_Вывод88 = Ложь;
		_ВидимостьСообщения = Ложь;                         
				 
		Элементы.КомандаОплатыНаличнымиБыстро1.Видимость=Ложь;
		Элементы.ОплатаНаличнымиВТихомРежиме.Видимость=Ложь;
		
		//Элементы.ПоказатьОстатки.Видимость = Ложь;
		
		Элементы.ГруппаВидовОплат.Видимость = Ложь; 
		Элементы.ГруппаСдача.Видимость = Ложь;	
		
		Элементы.ГруппаМоя.Видимость = Истина; 
		
		Элементы.ОплатаКартойВТихомРежиме.Высота = 15;   
		
		Элементы.ЗакрытьСмену.Высота = 6;   
		
		ВремяНаФорме();
		ПодключитьОбработчикОжидания("ВремяНаФорме",15);

		Элементы.ТекущийТоварКоличество.ТолькоПросмотр = Истина;
    КонецЕсли;
	
	Элементы.ВвестиДанныеПокупателя.Видимость=Ложь;
	Элементы.ОткрытьПлиточныйИнтерфейсКаталога.Видимость=Ложь;   
	Элементы.ТекущийТоварЦенаИзКарточки.Видимость = Ложь;  
	
	Элементы.ДекорацияЗнакВалюты.Видимость = Ложь; 
	
	//СуммаОплаченоНал   не трогать
	
	
	// ШрифтОбычныйПолужирный18РМК   
	Элементы.ГруппаСуммаСкидки.Видимость = Ложь; 
	Элементы.ГруппаСуммаБонусов.Видимость = Ложь;
	Элементы.ГруппаСуммаСертификата.Видимость = Ложь;  
	
	Элементы.ГруппаРучнаяСкидкаНаТовар.Видимость = Ложь;  

	
	
	Элементы.КомандаРежим.Видимость = Ложь; 

    //
	Расш1_ОткрытьПанельИзбранныхТоваровВместо(); 
	
	Если _ПользовательБД="АДМИНИСТРАТОР" Тогда
	
		Элементы.ТоварыПредставлениеНоменклатураХарактеристика.Ширина = 100; 
		
	КонецЕсли;   
	
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ОткрытьПанельИзбранныхТоваровВместо(Команда="")
	Панель = Элементы.ПанельИзбранныхТоваров;
	ПанельСкрыта = Панель.Скрыта();
	
	ДопустимоСворачиватьПанельИзбранныхТоваров = (Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаОбщая);
	
	Если ДопустимоСворачиватьПанельИзбранныхТоваров Тогда
		
		Если ПанельСкрыта Тогда
			Панель.Показать();
		Иначе      
			//Если _ПользовательБД="КАССА-2" Тогда
				//Панель.Скрыть();
			//КонецЕсли;
		КонецЕсли;
		
	Иначе
		Панель.Показать();
	КонецЕсли;
	
	Если Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаПустая Тогда
		ОбщегоНазначенияРМККлиентСервер.УстановитьТекущуюСтраницу(Элементы.СтраницаОбщая);
	КонецЕсли;  
	
	Элементы.ДекорацияТекстПустойСтраницы.Заголовок = "-";

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

&НаКлиенте
Процедура Расш1_УдалитьТоварПосле(Команда)
	// Вставить содержимое обработчика.   
	_ТекстОшибки = "";
	ОчиститьСообщения();
	Если _ПользовательБД="АДМИНИСТРАТОР" Тогда
		Расш1_ОткрытьПанельИзбранныхТоваровВместо();
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Расш1_УдалитьЧекПосле(Команда)    
	_ТекстОшибки = ""; 
	// Вставить содержимое обработчика.  
	Если _ПользовательБД="АДМИНИСТРАТОР" Тогда
		Расш1_ОткрытьПанельИзбранныхТоваровВместо(); 
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ПробитьЧекПосле(Команда) 
	_ТекстОшибки = ""; 
	// Вставить содержимое обработчика.    
	_Сообщить("Расш1_ПробитьЧекПосле", _ВидимостьСообщения);

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

&НаКлиенте
Процедура Расш1_КомандаОплатыНаличнымиПосле(Команда)     
	_ТекстОшибки = ""; 

 
	_Сообщить("Расш1_КомандаОплатыНаличнымиПосле", _ВидимостьСообщения);

	//ПодключитьОбработчикОжидания("ВыполнитьПробитьЧек", 0.2, ИСТИНА); 
	//
	//ГруппаСлоевОсновныхКоманд = Элементы.ГруппаСлоевОсновнаяКоманднаяПанельУправленияЧеком;
	//ТекущийСлой = ИнтерфейсРМКСлужебныйКлиентСервер.ПолучитьТекущийСлойГруппы(ГруппаСлоевОсновныхКоманд);
	//Если ТекущийСлой = Элементы.ГруппаКомандПробитияЧека И Элементы.ПробитьЧек.Доступность Тогда
	//	
	//	//КомандаПробитьЧек = ЭтотОбъект.Команды.Найти("ПробитьЧек");
	//	//ПробитьЧек(КомандаПробитьЧек);
	//	ТекущийЭлемент = Элементы.ПробитьЧек;
	//	
	//КонецЕсли;

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


&НаКлиенте
Процедура ВыполнитьПробитьЧек()
	//ИмяНужнойКоманды = "ПробитьЧек"; // Тут просто имя команды как в конфигураторе. 
	//НужнаяКоманда = ЭтаФорма.Команды.Найти(ИмяНужнойКоманды);	
	//////Сообщить("НужнаяКоманда="+СокрЛП(НужнаяКоманда)+"  ТипЗнч="+ТипЗнч(НужнаяКоманда));
	//ПробитьЧек(НужнаяКоманда);	 
	
	Shell= Новый COMОбъект("Wscript.Shell");
	Shell.SendKeys("{F12}");
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ОплатаНаличнымиБыстроПосле(Команда)

	_Сообщить("Расш1_ОплатаНаличнымиБыстроПосле", _ВидимостьСообщения);

	//Если ЭтотОбъект.Открыта() И Объект.Товары.Количество() > 0 Тогда 
	//	
	//	//_Режим = "ОплатаНаличнымиБыстро";
	//	_Режим = "";
	//	
	//	Shell= Новый COMОбъект("Wscript.Shell");
	//	Shell.SendKeys("{F6}");	
	//	
	//	ПодключитьОбработчикОжидания("ВыполнитьПробитьЧек", 0.2, ИСТИНА);			
	//	
	//	//Сообщить(ТекущаяДата());
	//	
	//	//ИмяНужнойКоманды = "ПробитьЧек"; // Тут просто имя команды как в конфигураторе. 
	//	//НужнаяКоманда = ЭтаФорма.Команды.Найти(ИмяНужнойКоманды);	
	//	////Сообщить("НужнаяКоманда="+СокрЛП(НужнаяКоманда)+"  ТипЗнч="+ТипЗнч(НужнаяКоманда));
	//	//ПробитьЧек(НужнаяКоманда);
	//Иначе
	//	ЭтаФорма.ТекущийЭлемент = Элементы.ТоварыПредставлениеНоменклатураХарактеристика;
	//КонецЕсли;	

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

&НаКлиенте
Процедура Расш1_СуммаОплаченоНалПриИзмененииПосле(Элемент)
	_Сообщить("Расш1_СуммаОплаченоНалПриИзмененииПосле", _ВидимостьСообщения);
	Если Сдача<>0 Тогда   
		//СуммаСдачаВидимость(Истина); 
		//Элементы._СдачаПред.Видимость = Истина;
		//Расш1_ОбщийМодуль1.ПередачаЗапоса(ip_max,"Сдача:  "+Формат(Сдача,"ЧРГ=; ЧГ="), 8, Вывод88);
		Расш1_ОбщийМодуль1.ПередачаЗапосаNew(_ip_max,"Сдача:  "+Формат(Сдача,"ЧРГ=; ЧГ="), 8, _Вывод88, _ПользовательБД);		
		Расш1_ОбщийМодуль2.ГолосТекстНовый(_НомерГолоса, _ГромкостьГолоса, _СкоростьГолоса, -1, "Сдача "+СокрЛП(Сдача));
		//Сообщить("2 Сдача:  "+Формат(Сдача,"ЧРГ=; ЧГ="));		
	КонецЕсли; 
КонецПроцедуры

&НаКлиенте
Процедура _Сообщить(ТекстС, _ВидимостьСообщения)
	//_ВидимостьСообщения = Истина;
	Если _ВидимостьСообщения Тогда
		Сообщить(ТекстС);            
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
&После("ВывестиИнформациюНаДисплейПокупателя")
Процедура Расш1_ВывестиИнформациюНаДисплейПокупателя(Операция)
	
	_Операция = СокрЛП(Операция); 
	_Сообщить("Расш1_ВывестиИнформациюНаДисплейПокупателя  Операция ="+_Операция+"=", _ВидимостьСообщения); 

	//_ВидимостьСообщения = Истина;
	Если СокрЛП(_Операция)="НачалоРаботы" Тогда  
		
		Элементы.ОтложитьЧек.Видимость = Ложь;
		_ТекстОшибки = "";    
		ОчиститьСообщения();    
		Элементы.ДекорацияТекстПустойСтраницы.Заголовок = "";
		
		//_Сообщить("НачалоРаботы", _ВидимостьСообщения);
		ОбъектShell = Новый COMОбъект("Wscript.Shell");
		ОбъектShell.SendKeys("^+1");    //English   CTRL SHIFT    
		
		Расш1_ОбщийМодуль1.ПередачаЗапосаNew(_ip_max, "Ок!        ", 3, , _ПользовательБД);
		
		Если _ПользовательБД="АДМИНИСТРАТОР" Тогда
			Расш1_ОткрытьПанельИзбранныхТоваровВместо();
		КонецЕсли;
		
	ИначеЕсли _Операция = "ОжиданиеОплаты" Тогда  
		
		Расш1_ОбщийМодуль1.ПередачаЗапосаNew(_ip_max,"Жду Оплату",3,, _ПользовательБД);	
		//Расш1_ОбщийМодуль1.ПередачаЗапоса(ip_max,"Жду Оплату",3);	
	ИначеЕсли _Операция = "Оплата" Тогда   
		
	ИначеЕсли _Операция = "Сервис" Тогда      
		Попытка
			//Расш1_ОбщийМодуль1.ПередачаЗапосаNew(_ip_max, "Отключена ", 3, , _ПользовательБД);  
			Оповестить("РабочееМестоОтключено",,ЭтотОбъект);
		Исключение
		КонецПопытки;
	КонецЕсли; 
	
КонецПроцедуры

&НаСервере
Функция Расш1_ПолучитьОстаток(Номенклатура)
	
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	ТоварыНаСкладахОстатки.КоличествоОстаток
	|ИЗ
	|	РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки";
	
	Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	
	Возврат Выборка.КоличествоОстаток;
	
КонецФункции

&НаКлиенте
&После("ПересчитатьИтогиТабличнойЧастиТовары")
Процедура Расш1_ПересчитатьИтогиТабличнойЧастиТовары(ОбнулитьСуммыОплат)  
	//Сообщить("Расш1_ПересчитатьИтогиТабличнойЧастиТовары"); 
	_Сообщить("Расш1_ПересчитатьИтогиТабличнойЧастиТовары", _ВидимостьСообщения);
	
	Если _СуммаИтогоПред <> СуммаИтого Тогда
		Расш1_ОбщийМодуль2.ГолосТекстНовый(_НомерГолоса, _ГромкостьГолоса, _СкоростьГолоса, -1, СуммаИтого);  
	КонецЕсли;
	_СуммаИтогоПред = СуммаИтого;
	//_Вывод88 = Истина;                    
	Если Сдача<>0 и СокрЛП(Сдача)<>"" Тогда 
		
	Иначе
		Расш1_ОбщийМодуль1.ПередачаЗапосаNew(_ip_max,"Итог:  "+Формат(СуммаИтого,"ЧРГ=; ЧГ="), 8, _Вывод88, _ПользовательБД);	
	КонецЕсли;    
	
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные; 
	Попытка                   
		КолОст = Расш1_ПолучитьОстаток(ТекущаяСтрока.Номенклатура);  	
		ТекущаяСтрока.Ост = КолОст; 
		
		//Если _ПоказатьНакрутку Тогда
		//	ПрихЦена = Расш1_ОбщийМодуль1.ПолучитьЦенуЗакупаНоменклатуры(ТекущаяСтрока.Номенклатура);
		//	Накрутка = ПолучитьНаценку(ТекущаяСтрока.Цена, ПрихЦена);  
		//	ТекущаяСтрока.Накрутка = Накрутка;	
		//КонецЕсли;
		
		//Сообщить(ТекущаяСтрока.Ост);
	Исключение   
		//Сообщить("="+СокрЛП(ТекущаяСтрока)+"==  "+ОписаниеОшибки());
	КонецПопытки;
	//Если _ПользовательБД = "КАССА-2" Тогда  
	//	ЭтаФорма.ТекущийЭлемент = Элементы.ТоварыПредставлениеНоменклатураХарактеристика; 
	//КонецЕсли;

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

&НаКлиенте
Процедура Расш1_ВнешнееСобытиеПосле(Источник, Событие, Данные)
		
	Если _ПользовательБД = "КАССА-2" Тогда     
		//Сообщить("Источник:"+Источник+"  Событие:"+Событие+"  Данные:"+Данные);
		ШккШкк = ВРЕГ(СокрЛП(Данные));     
		//ШккШкк=СтрЗаменить(ШккШкк,Символы.ВК,"");
		//Сообщить("01");
		Если ШккШкк="Ф-0010-Я" или ШккШкк="A-0010-Z" Тогда 
			//Сообщить("ШккШкк="+ШккШкк);
			Если _РежимТоваровед = Истина Тогда 
				_РежимТоваровед = Ложь; 
				//ЗакрытьЭксплорер();
			Иначе     
				_РежимТоваровед = Истина; 
				//ЗапуститьЭксплорер();
			КонецЕсли;   
			
            ВидимостьГруппаОперации(_РежимТоваровед);
			
			//СкрытьДляКассы2(Истина);
		КонецЕсли;
	//	ПодключитьОбработчикОжидания("СкрытьДляКассы2", 0.5, Истина);
  КонецЕсли

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


Процедура ВидимостьГруппаОперации(РежимТоваровед) 
	Элементы.ГруппаУправления.Видимость = РежимТоваровед;  
	//Элементы.ГруппаМоя.Видимость = РежимТоваровед;  

	
	//Если РежимТоваровед Тогда
	//	
	//Иначе    
	//	
	//КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ГорячаяКлавишаESCПосле(Команда)
	_Сообщить("Расш1_ГорячаяКлавишаESCПосле Элементы.ГруппаОплатаНал.Видимость = "+ Элементы.ГруппаОплатаНал.Видимость , _ВидимостьСообщения);
	Если Элементы.ГруппаОплатаНал.Видимость Тогда
		_Сообщить("Выполнить Возврат к Выбору Товаров" , _ВидимостьСообщения); 
		ИмяНужнойКоманды = "ВернутьсяВРежимПодбораТовара"; // Тут просто имя команды как в конфигураторе. 
		НужнаяКоманда = ЭтаФорма.Команды.Найти(ИмяНужнойКоманды);	
		ВернутьсяВРежимПодбораТовара(НужнаяКоманда); 
	КонецЕсли;
КонецПроцедуры


Функция ОчисткаТекстаОшибки(Тш)     
	Тш = СокрЛП(Тш);	                               
	Тш = СтрЗаменить(Тш,  Символ(34), "");  
	Тш = СтрЗаменить(Тш, Символы.ПС, ""); 
	Тш = СтрЗаменить(Тш, Символы.ВК, "");
	
	Тш = СокрЛП(СтрЗаменить(Тш, "System error: 212 Details:", "")); 
	Тш = СокрЛП(СтрЗаменить(Тш, "System error: 051 Details:", ""));
	
	
	Тш = СокрЛП(СтрЗаменить(Тш, "Ошибка системы: 212 подробно:", ""));
	Тш = СокрЛП(СтрЗаменить(Тш, "Ошибка системы: 051 подробно:", ""));
	
	Тш = СтрЗаменить(Тш, "Insufficient funds", "Недостаточно средств");   
	Тш = СтрЗаменить(Тш, "the Failure of the I / o card", "сбой карты ввода-вывода");
	
	Возврат Тш;
КонецФункции

&НаКлиенте
&После("ОткрытьСтраницуИнфоОшибка")
Процедура Расш1_ОткрытьСтраницуИнфоОшибка(ТекстЗаголовка, ТекстОшибки, ПараметрыОшибки)
	// Вставить содержимое метода.       
	//Сообщить("ТекстЗаголовка = " + СокрЛП(ТекстЗаголовка));
	
	
	//_ТекстОшибки = СтрЗаменить(ТекстОшибки,  Символ(34), "");  
	//_ТекстОшибки = СтрЗаменить(_ТекстОшибки, Символы.ПС, ""); 
	//_ТекстОшибки = СтрЗаменить(_ТекстОшибки, Символы.ВК, ""); 	
	
	//_ТекстОшибки = СокрЛП(СтрЗаменить(_ТекстОшибки, "Ошибка системы: 212 подробно:", "")); 	
	
	
	//РазделительСтрок=Символы.ПС;
	//Строка=СтрЗаменить(Строка,РазделительСтрок," ");
	//Строка=СтрЗаменить(Строка,Символы.ВК," ");
	//Сообщить("ПараметрыОшибки = " + СокрЛП(ПараметрыОшибки));
	_ТекстОшибки = ОчисткаТекстаОшибки(ТекстОшибки); 
	ТекстОшибкиПриОплате = _ТекстОшибки;
	Если _ТекстОшибки<>"" Тогда      
		_Сообщить("_ТекстОшибки = " + СокрЛП(_ТекстОшибки), _ВидимостьСообщения); 
		_Сообщить("ТекстОшибки = " + СокрЛП(ТекстОшибки), _ВидимостьСообщения);     
		
		//"ТекстОшибки = Ошибка системы: 051 подробно: Недостаточно сpедств.Оплата по карте не была произведена."
		Если СокрЛП(ТекстОшибки) = "Отказ ввода карты.Оплата по карте не была произведена." ИЛИ
			СокрЛП(ТекстОшибки) = "Недостаточно сpедств.Оплата по карте не была произведена."
			Тогда
			Элементы.ОплатаКартой.Доступность=Истина; 
		Иначе  
			Элементы.ОплатаКартой.Доступность=Истина; 
			//Сообщить(ТекстОшибки);
		КонецЕсли;
		
		Расш1_ОбщийМодуль2.ГолосТекстНовый(_НомерГолоса, _ГромкостьГолосаОшибки, 3, -1, _ТекстОшибки);		   
		
		Если СокрЛП(_ТекстОшибки) = "В строке не указана цена." Тогда
			//Сообщить("Ожидаем");
		Иначе
			ПодключитьОбработчикОжидания("Закрыть_СтраницуИнфоОшибка", 2, ИСТИНА);
			//Юра
		КонецЕсли;

	КонецЕсли;
КонецПроцедуры    

&НаКлиенте
Процедура Закрыть_СтраницуИнфоОшибка()  
	ИмяНужнойКоманды = "ЗакрытьСтраницуИнфоОшибка"; // Тут просто имя команды как в конфигураторе. 
	НужнаяКоманда = ЭтаФорма.Команды.Найти(ИмяНужнойКоманды);	
	ЗакрытьСтраницуИнфоОшибка(НужнаяКоманда); 
	//_ТекстОшибки = "";    
	
	//_Операция = "Оплата";                
	//ОбновитьИнформациюНаДисплееПокупателя(_Операция);
	//ВывестиИнформациюНаДисплейПокупателя(_Операция);
	
	ИмяНужнойКоманды = "ВернутьсяВРежимПодбораТовара"; // Тут просто имя команды как в конфигураторе. 
	НужнаяКоманда = ЭтаФорма.Команды.Найти(ИмяНужнойКоманды);	
	ВернутьсяВРежимПодбораТовара(НужнаяКоманда); 


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


&НаКлиенте
&После("ОбработатьШтрихкодКлиент")
Процедура Расш1_ОбработатьШтрихкодКлиент(Штрихкод)
	_Сообщить("Расш1_ОбработатьШтрихкодКлиент = "+СокрЛП(Штрихкод), _ВидимостьСообщения);    
	
	ГруппаРучноеСопоставлениеТовараВидимость = Элементы.ГруппаРучноеСопоставлениеТовара.Видимость; 
	_Сообщить("ГруппаРучноеСопоставлениеТовараВидимость = "+СокрЛП(ГруппаРучноеСопоставлениеТовараВидимость), _ВидимостьСообщения);           
	
	//////ПодтверждениеПродажиБезПроверкиМаркиВидимость = Элементы.ПодтверждениеПродажиБезПроверкиМарки.Видимость;
	////// _Сообщить("ПодтверждениеПродажиБезПроверкиМаркиВидимость = "+СокрЛП(ПодтверждениеПродажиБезПроверкиМаркиВидимость), _ВидимостьСообщения);           
	
	
	//_ПродолжитьДобавлениеТовараПослеПроверкиМарки = Элементы.ПродолжитьДобавлениеТовараПослеПроверкиМарки;  
	//_Сообщить("_ПродолжитьДобавлениеТовараПослеПроверкиМарки = "+СокрЛП(_ПродолжитьДобавлениеТовараПослеПроверкиМарки), _ВидимостьСообщения); 
	
	_Сообщить("ТекущаяОперация = "+СокрЛП(ТекущаяОперация), _ВидимостьСообщения); 
	//ТекущаяОперация
	
	Если ГруппаРучноеСопоставлениеТовараВидимость Тогда  
		//Сообщить("ПодключитьОбработчикОжидания");
		//ВыполнитьКомандочкуПродолжитьДобавлениеТовараПослеПроверки­Марки  
		//ОчиститьСообщения();     
		
		//_ТекстОшибки = Элементы.ДекорацияТекстСопоставлениеТовара.Заголовок; 
		_ТекстОшибки = Элементы.ДекорацияЗаголовокСопоставлениеТовара.Заголовок; 
		Расш1_ОбщийМодуль2.ГолосТекстНовый(_НомерГолоса, _ГромкостьГолосаОшибки, 3, -1, _ТекстОшибки);
		ПодключитьОбработчикОжидания("ВыполнитьКомандочкуОтменаСопоставленияТовараи", 4, ИСТИНА);
	КонецЕсли;  
	
	//////Если ПодтверждениеПродажиБезПроверкиМаркиВидимость Тогда
	//////	_ТекстОшибки = Элементы.ДекорацияЗаголовокСопоставлениеТовара.Заголовок; 
	//////	Расш1_ОбщийМодуль2.ГолосТекстНовый(_НомерГолоса, _ГромкостьГолосаОшибки, 3, -1, _ТекстОшибки);
	//////	ПодключитьОбработчикОжидания("ВыполнитьКомандочкуПродолжитьДобавлениеТовараПослеПроверкиМ­арки", 4, ИСТИНА);

	//////КонецЕсли;
	//СтрСтПр = Элементы.СтраницаРучноеСопоставлениеТовара; 
	//_СтраницыСтаканПраво = СтрСтПр; 
	
	//_ТекущаяСтраницаРучноеСопоставлениеТовара = "ОбработатьШтрихкодКлиен "+СокрЛП(Элементы.СтраницаРучноеСопоставлениеТовара.Доступность)+" "+ СокрЛП(Элементы.СтраницаРучноеСопоставлениеТовара.Видимость);
	//_Сообщить(_ТекущаяСтраницаРучноеСопоставлениеТовара, _ВидимостьСообщения);
КонецПроцедуры


&НаКлиенте
Процедура ВыполнитьКомандочкуПродолжитьДобавлениеТовараПослеПроверкиМа­рки()
		
	_Сообщить("ВыполнитьКомандочкуПродолжитьДобавлениеТовараПослеПроверкиМ­арки", _ВидимостьСообщения); 
	ИмяНужнойКоманды = "ПродолжитьДобавлениеТовараПослеПроверкиМарки";
	НужнаяКоманда = ЭтаФорма.Команды.Найти(ИмяНужнойКоманды);	
	ПродолжитьДобавлениеТовараПослеПроверкиМарки(НужнаяКоманда); 
	
	ОчиститьСообщения();
КонецПроцедуры  

&НаКлиенте
Процедура ВыполнитьКомандочкуОтменаСопоставленияТовараи()
	
	ИмяНужнойКоманды = "ОтменаСопоставленияТовара";
	НужнаяКоманда = ЭтаФорма.Команды.Найти(ИмяНужнойКоманды);	
	ОтменаСопоставленияТовара(НужнаяКоманда);  
	Расш1_ОткрытьПанельИзбранныхТоваровВместо(); 
	ОчиститьСообщения();

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

&НаКлиенте
Процедура Расш1_ОбработкаОповещенияПосле(ИмяСобытия, Параметр, Источник)	
	//Сообщить("08 ОбработкаОповещенияПосле СтатусСмены="+СокрЛП(СтатусСмены)+"  ИмяСобытия = "+СокрЛП(ИмяСобытия));
	_Сообщить("Расш1_ОбработкаОповещенияПосле " + "  ИмяСобытия = "+СокрЛП(ИмяСобытия), _ВидимостьСообщения);  
	Если ИмяСобытия = "ИзменениеСостоянияКассовойСмены" Тогда  
		Если НЕ ТаблицаКассККМОрганизаций[0].Открыта Тогда
			//ЭтаФорма.Закрыть();  
		//	Сообщить("Подать Сигнал на Закрытие");
			//ПоказатьПредупреждение(, "Подать Сигнал на Закрытие", , "ТекстЗаголовка");
			//ПодключитьОбработчикОжидания("ПоказатьОкноПредупреждение", 4, ИСТИНА);
			ПодключитьОбработчикОжидания("ЗакрытьОкноРабочегоМестаКассира", 3);
		КонецЕсли; 
	КонецЕсли;
КонецПроцедуры    

&НаКлиенте
Процедура ЗакрытьОкноРабочегоМестаКассира()   
	//Сообщить("ТаблицаКассККМОрганизаций[0].Открыта="+ТаблицаКассККМОрганизаций[0].Открыта);
		
	//Сообщить(Элементы.КассоваяСменаСтатус.ТекстРедактирования);
	//Сообщить("ЗакрытьОкноРабочегоМестаКассира");     
	//ОбновитьОтображениеДанных(Элементы.КассоваяСменаСтатус);
	//ОбновитьОтображениеДанных();     

	//Сообщить(Элементы.КассоваяСменаСтатус.ТекстРедактирования);
	Попытка         
		//ОтключитьОбработчикОжидания("ЗакрытьОкноРабочегоМестаКассира");
		ЭтаФорма.Закрыть();
	Исключение   
		//Сообщить(ОписаниеОшибки());
	КонецПопытки;
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ОтменаСопоставленияТовараПосле(Команда)
	Расш1_ОткрытьПанельИзбранныхТоваровВместо(); 
	ОчиститьСообщения();
КонецПроцедуры

Функция УдалитьНедопустимыеСимволыXML(Стр)

    Позиция = НайтиНедопустимыеСимволыXML(Стр, , );

    Пока Позиция <> 0 Цикл
        Стр = Лев(Стр, Позиция-1) + Сред(Стр, Позиция+1);
        Позиция = НайтиНедопустимыеСимволыXML(Стр, , );
    КонецЦикла; 

    Возврат Стр;

КонецФункции //УдалитьНедопустимыеСимволыXML()

&НаКлиенте
Процедура Расш1_ВнешнееСобытиеПеред(Источник, Событие, Данные)  
	ОчиститьСообщения();    
	_ТекстОшибки = ""; 
	_Данные = УдалитьНедопустимыеСимволыXML(СокрЛП(Данные));
	//Сообщить("_Данные ="+_Данные+"=");   
	Если Найти(_Данные,"http:/") или Найти(_Данные,"https:/") или Найти(_Данные,"/www") Тогда  
		  // Сообщить("***** Очистить Данные *****");
		   Данные = "";   
		   Расш1_ОбщийМодуль2.ГолосТекстНовый(_НомерГолоса, _ГромкостьГолосаОшибки, _СкоростьГолоса, -1, "Проверьте Количество");
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ТекущийТоварУвеличитьКоличествоПосле(Команда)
	// Вставить содержимое обработчика. 
	Если _ПользовательБД = "КАССА-2" Тогда  
		ЭтаФорма.ТекущийЭлемент = Элементы.ТоварыПредставлениеНоменклатураХарактеристика; 
	КонецЕсли;
	ОчиститьСообщения(); 
	_ТекстОшибки = "";
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ТекущийТоварУменьшитьКоличествоПосле(Команда)
	// Вставить содержимое обработчика.
	Если _ПользовательБД = "КАССА-2" Тогда  
		ЭтаФорма.ТекущийЭлемент = Элементы.ТоварыПредставлениеНоменклатураХарактеристика; 
	КонецЕсли;

	ОчиститьСообщения();
	_ТекстОшибки = "";
КонецПроцедуры

&НаКлиенте
Процедура Расш1__ГромкостьГолосаПриИзмененииПосле(Элемент)
		Расш1_ОбщийМодуль1.Сохранить_Настройки("ГромкостьГолоса", _ГромкостьГолоса, _ПользовательБД);
КонецПроцедуры

&НаКлиенте
Процедура Расш1__КомандаПроверкаВидимостьГруппыПосле(Команда)
	// Вставить содержимое обработчика.                   
	_ВидимостьСообщения = Истина;
	ПодтверждениеПродажиБезПроверкиМаркиВидимость = Элементы.ПодтверждениеПродажиБезПроверкиМарки.Видимость;
 	_Сообщить("ПодтверждениеПродажиБезПроверкиМаркиВидимость = "+СокрЛП(ПодтверждениеПродажиБезПроверкиМаркиВидимость), _ВидимостьСообщения); 
	_ВидимостьСообщения = Ложь;
КонецПроцедуры

&НаКлиенте
&После("ОбработатьОшибкуПроверкиМарки")
Процедура Расш1_ОбработатьОшибкуПроверкиМарки(Контекст, СтраницаДиалога)
	// Вставить содержимое метода.    
	_Сообщить("Расш1_ОбработатьОшибкуПроверкиМарки ", _ВидимостьСообщения); 
	ПодключитьОбработчикОжидания("ВыполнитьКомандочкуПродолжитьДобавлениеТовараПослеПроверкиМ­арки", 0.2, ИСТИНА);
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ПродолжитьДобавлениеТовараПослеПроверкиМаркиПосле(Команда)
	// Вставить содержимое обработчика.  
	_Сообщить("КОМАНДА Расш1_ПродолжитьДобавлениеТовараПослеПроверкиМаркиПосле ", _ВидимостьСообщения); 
КонецПроцедуры

&НаКлиенте
Процедура Расш1_КаталогПосле(Команда)
	ОбъектShell = Новый COMОбъект("Wscript.Shell");
	//ОбъектShell.SendKeys("^+1");    //English   CTRL SHIFT
	ОбъектShell.SendKeys("^+2");  //Русский   
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ЗакрытьПоискТоваровПосле(Команда)    
	
	_Сообщить("Расш1_ЗакрытьПоискТоваровПосле", _ВидимостьСообщения); 

	// Вставить содержимое обработчика.
	//ЭтаФорма.ТекущийЭлемент = Элементы.ТоварыПредставлениеНоменклатураХарактеристика;   
	Расш1_ОткрытьПанельИзбранныхТоваровВместо();   
	
	//ОбъектShell = Новый COMОбъект("Wscript.Shell");
	//ОбъектShell.SendKeys("^+1");    //English   CTRL SHIFT
	////ОбъектShell.SendKeys("^+2");  //Русский 

    ПодключитьОбработчикОжидания("ВключитьEnglish", 0.2, ИСТИНА);

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



&НаКлиенте
Процедура ВключитьEnglish()      
	
	_Сообщить("ВключитьEnglish", _ВидимостьСообщения); 

	ОбъектShell = Новый COMОбъект("Wscript.Shell");
	ОбъектShell.SendKeys("^+1");    //English   CTRL SHIFT
	//ОбъектShell.SendKeys("^+2");  //Русский 
КонецПроцедуры

&НаКлиенте
Процедура Расш1_СписокТоваровВыборПосле(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	// Вставить содержимое обработчика.
	  ПодключитьОбработчикОжидания("ВключитьEnglish", 0.2, ИСТИНА);
КонецПроцедуры

&НаКлиенте
Процедура Расш1_КомандаОплатыНаличнымиБыстроПосле(Команда)
	// Вставить содержимое обработчика.
		// Вставить содержимое обработчика.  
		
	ОчиститьСообщения();
	_ТекстОшибки = "";

	_Сообщить("Расш1_ОплатаНаличнымиБыстроПосле", _ВидимостьСообщения);

	Если ЭтотОбъект.Открыта() И Объект.Товары.Количество() > 0 Тогда 
		
		//_Режим = "ОплатаНаличнымиБыстро";
		//_Режим = "";    
		//Элементы.ОплатаНаличнымиБыстро2.Видимость=Ложь;
		
		Shell= Новый COMОбъект("Wscript.Shell");
		Shell.SendKeys("{F6}");	
		
		ПодключитьОбработчикОжидания("ВыполнитьПробитьЧек", 0.2, ИСТИНА);			
		
		//Сообщить(ТекущаяДата());
		
		//ИмяНужнойКоманды = "ПробитьЧек"; // Тут просто имя команды как в конфигураторе. 
		//НужнаяКоманда = ЭтаФорма.Команды.Найти(ИмяНужнойКоманды);	
		////Сообщить("НужнаяКоманда="+СокрЛП(НужнаяКоманда)+"  ТипЗнч="+ТипЗнч(НужнаяКоманда));
		//ПробитьЧек(НужнаяКоманда);
	Иначе
		ЭтаФорма.ТекущийЭлемент = Элементы.ТоварыПредставлениеНоменклатураХарактеристика;
	КонецЕсли;

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

&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	// Вставить содержимое обработчика.  
	СбросНастроекОкна("Обработка.РабочееМестоКассира");   
	
	//РежимКассыСамообслуживания=Истина;
КонецПроцедуры  

&НаСервере
Процедура СбросНастроекОкна(_ИмяОбъекта)
	
	КлючОбъекта = _ИмяОбъекта+".Форма.ФормаДокумента/Такси/НастройкиОкна";
	ХранилищеСистемныхНастроек.Удалить(КлючОбъекта,"", ИмяПользователя());
	КлючСохраненияПоложенияОкна = Строка(Новый УникальныйИдентификатор);     
	
	КлючОбъекта = _ИмяОбъекта+".Форма.ФормаДокумента/НастройкиОкна";
	ХранилищеСистемныхНастроек.Удалить(КлючОбъекта,"", ИмяПользователя());
	КлючСохраненияПоложенияОкна = Строка(Новый УникальныйИдентификатор);

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

&НаКлиенте
Процедура Расш1_ЗакрытьСменуВместо(Команда) 
	
	Если Объект.Товары.Количество()=0 Тогда	
		// Вставить содержимое обработчика. 
		Элементы.ЗакрытьОкно.Видимость = Истина; 
		Элементы.ЗакрытьСмену.Видимость = Ложь;
		Элементы.ПодменюЕще.Видимость = Ложь; 
		Элементы._ГромкостьГолоса.Видимость = Ложь; 
		
		
		
		_ПроДолжитьПроцедуруВызова = Истина;   
		Если _ПроДолжитьПроцедуруВызова Тогда  
			ОбщегоНазначенияРМККлиентСервер.УстановитьТекущуюСтраницу(Элементы.СтраницаПустая);
			ПродолжитьВызов();								
		КонецЕсли;
	КонецЕсли;		
	
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ЗакрытьОкноПосле(Команда)
	// Вставить содержимое обработчика. 
	ЭтаФорма.Закрыть();
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ОплатаКартойВТихомРежимеПеред(Команда)
	// Вставить содержимое обработчика. 
	ОчиститьСообщения();
	_ТекстОшибки = "";
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ОплатаНаличнымиВТихомРежимеПеред(Команда)
	// Вставить содержимое обработчика.
	ОчиститьСообщения();
	_ТекстОшибки = "";
КонецПроцедуры


//&НаКлиенте
//&Вместо("СформироватьЗаголовок")
//Процедура Расш1_СформироватьЗаголовок(ТекстЗаголовка)  

//	_ВидимостьСообщения = Истина;
//	_Сообщить("ТекстЗаголовка= " + ТекстЗаголовка, _ВидимостьСообщения);	     
//	
//	Если СокрЛП(ТекстЗаголовка)="" Тогда  
//		Если _ПользовательБД = "КАССА-2" Тогда  
//		Иначе
//			Расш1_ОбщийМодуль1.ПередачаЗапосаNew(_ip_max,"Ок!        ",3,,_ПользовательБД);
//		КонецЕсли;
//		//Расш1_ОбщийМодуль1.ПередачаЗапоса(ip_max,"",3);			
//	КонецЕсли;
//	
//	ПродолжитьВызов(ТекстЗаголовка);   

//	
//	Если Найти(ТекстЗаголовка, "Продажа") Тогда		
//		//Если _СуммаОплаченоНалПред<>0 Тогда      
//		//	ВидимостьОтображения = Истина;   
//		//	
//		//	Если _Режим = "ОплатаКартой" Тогда
//		//		ВидимостьОтображения = Ложь; 
//		//	КонецЕсли;
//		//	
//		//	Расш1_ОткрытьПанельИзбранныхТоваровВместо();			

//		//	
//		//КонецЕсли;			
//				
//	КонецЕсли;
//	
//КонецПроцедуры

Показать
18. Saipl 7 09.06.23 10:39 Сейчас в теме
Аналогичная ошибка при загрузке сообщений из УТМ. Если открыть интерфейс УТМ "Входящие" и пробежаться по сообщениям то одно или несколько не откроется (видимо внутренняя ошибка УТМ). Поиск решения проблемы для УТМ ничего не дал. Помогла переустановка УТМ с перезапросом Актов и ТТН.
Розница, редакция 2.3 (2.3.10.35)
user725774; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот