текст 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 412 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 Ответить
Оставьте свое сообщение
Вакансии
1С-Программист (интегратор Битрикс24)
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 100 000 руб.
Временный (на проект)

Разработчик 1С
Москва
зарплата от 150 000 руб.
Полный день

Программист
Санкт-Петербург
зарплата от 180 000 руб. до 240 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 150 000 руб. до 250 000 руб.
Полный день