0. @lexandr 147 04.06.16 10:17 Сейчас в теме

Исправление ошибок в типовых релизах 1С: УТ 10.3 и Розница 1.0 при отражении продаж в ЕГАИС

При продаже алкогольной продукции в программах Управление торговлей и Розница возникают ошибки. В статье разберем причины ошибок и способ их решения.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. ejique 09.06.16 14:38 Сейчас в теме
ПараметрыЧека[9] = Прав(Ссылка.Номер,5);

Даст индекс за пределами массива, т.к. нумерация элементов массива начинается с 0.

Предлагаю заменить на
ПараметрыЧека.Добавить(Прав(Ссылка.Номер,5));
2. @lexandr 147 10.06.16 00:40 Сейчас в теме
(1) ejique,
Даст индекс за пределами массива, т.к. нумерация элементов массива начинается с 0.
Не даст, рекомендацию, которую я предлагаю я опробывал уже и в УТ 10.3 и в Рознице 1.0, это работает именно так как я описал, так что замечание не обоснованное.
3. ejique 10.06.16 11:28 Сейчас в теме
(2) я вчера тоже внес изменения в код и две проблемы.
Одна это та которую я описал выше, а вторая что сохранилась ошибка:

Не удалось сформировать электронную подпись чека в ЕГАИС!

Не удалось отправить чек в УТМ.
Ошибка при выполнении POST-запроса по адресу /xml
java.lang.IllegalArgumentException: org.xml.sax.SAXParseException; cvc-pattern-valid: Value '0' is not facet-valid with respect to pattern '[1-9][0-9]{0,9}' for type 'COUNT'.
Не удалось отправить чек в УТМ.
Ошибка при выполнении POST-запроса по адресу /xml
java.lang.IllegalArgumentException: org.xml.sax.SAXParseException; cvc-pattern-valid: Value '0' is not facet-valid with respect to pattern '[1-9][0-9]{0,9}' for type 'COUNT'.


Подскажите какой версией транспортного модуля вы пользуетесь?
5. @lexandr 147 10.06.16 22:34 Сейчас в теме
(3) ejique, и на 2.0.2 и на 2.0.3 проверял данную ошибку
4. brrart 23 10.06.16 16:13 Сейчас в теме
Методом проб и ошибок пришли в выводу что УТМ требует все заполненные реквизиты ... и НомерСмены и ЗаводскойНомерККМ и НомерЧека ... посему в нашем случае приведенные в сабже функции выглядят вот так:

В модуле ЧекаККМ:
Функция ПараметрыЧекаДляПодписиВЕГАИС(ТаблицаТоваров, СуммаНал, СуммаБезНал, ТранспортныйМодуль = Неопределено)
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Ссылка", Ссылка);
	
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ЧекККМ.Организация.ИНН КАК ИНН,
	|	ЧекККМ.Организация.КПП КАК КПП,
	|	"""" КАК АдресМагазина,
	|	ЧекККМ.Склад.Наименование КАК НаименованиеМагазина,
	|	1 КАК ЗаводскойНомерККМ,
	|	1 КАК НомерСмены,
	|	ВЫБОР
	|		КОГДА ЧекККМ.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Возврат)
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК Возврат,
	|	ЧекККМ.Организация КАК Организация,
	|	ЧекККМ.Склад КАК Склад,
	|	ЧекККМ.Номер КАК Номер
	|ИЗ
	|	Документ.ЧекККМ КАК ЧекККМ
	|ГДЕ
	|	ЧекККМ.Ссылка = &Ссылка";
	
	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	
	ПараметрыЧека = Новый Массив;
	ПараметрыЧека.Добавить(ТаблицаТоваров);
	ПараметрыЧека.Добавить(СуммаНал);
	ПараметрыЧека.Добавить(СуммаБезНал);
	ПараметрыЧека.Добавить(Выборка.Возврат);
	ПараметрыЧека.Добавить(Выборка.ИНН);
	ПараметрыЧека.Добавить(Выборка.КПП);
	ПараметрыЧека.Добавить(Выборка.АдресМагазина);
	ПараметрыЧека.Добавить(Выборка.НаименованиеМагазина);
	ПараметрыЧека.Добавить(Выборка.ЗаводскойНомерККМ); //НомерСменыККМ
	ПараметрыЧека.Добавить(Число(Сред(Выборка.Номер,3)));
	ПараметрыЧека.Добавить(Выборка.НомерСмены); //НомерСменыККМ
	
	
	ТранспортныйМодуль = ИнтеграцияЕГАИСПереопределяемый.ИспользуемыйТранспортныйМодуль(Выборка.Склад, Выборка.Организация);
	ПараметрыЧека[6] = ТранспортныйМодуль.Адрес;
	
	Возврат ПараметрыЧека;
	
КонецФункции
Показать


В общем модуле ИнтеграцияЕГАИСКлиентПереопределяемый

Функция ПодготовитьВходящиеДанныеДляПодписиЧека(ПараметрыЧека, НомерЧека = 0, НомерСмены = 0, РезультатПодготовки = Неопределено) Экспорт

	РезультатПодготовки = Новый Структура("Результат, ОписаниеОшибки", Ложь, "");
	
	ВходящиеДанные = СтруктураДанныхЧекаККМ();
	
	ТаблицаТоваров = ПараметрыЧека[0];
	
	Если ТаблицаТоваров.Колонки.Найти("ПараметрыАлкогольнойПродукции") = Неопределено Тогда
		РезультатПодготовки.ОписаниеОшибки = НСтр("ru = 'В процедуру подготовки входящих данных передана некорректная структура параметров.'");
		Возврат ВходящиеДанные;
	КонецЕсли;
	
	ВыгружатьНемаркируемуюПродукцию = ИнтеграцияЕГАИСКлиентПовтИсп.ВыгружатьПродажиНемаркируемойПродукцииВЕГАИС();
	
	ВходящиеДанные.ИНН                  = ПараметрыЧека[4];
	ВходящиеДанные.КПП                  = ПараметрыЧека[5];
	ВходящиеДанные.АдресМагазина        = ПараметрыЧека[6];
	ВходящиеДанные.НаименованиеМагазина = ПараметрыЧека[7];
	ВходящиеДанные.ЗаводскойНомерККМ    = ПараметрыЧека[8];
	ВходящиеДанные.НомерСменыККМ        = ПараметрыЧека[10];
	ВходящиеДанные.НомерЧекаККМ         = ПараметрыЧека[9];
	ВходящиеДанные.ДатаВремяЧека        = ТекущаяДата();        
	ВходящиеДанные.Возврат              = ПараметрыЧека[3];
	
	Для Каждого СтрокаТаблицы Из ТаблицаТоваров Цикл
		
		ПараметрыАлкогольнойПродукции = СтрокаТаблицы.ПараметрыАлкогольнойПродукции;
		
		Если ТипЗнч(ПараметрыАлкогольнойПродукции) <> Тип("Структура") Тогда
			РезультатПодготовки.ОписаниеОшибки = НСтр("ru = 'В процедуру подготовки входящих данных передана некорректная структура параметров.'");
			Возврат ВходящиеДанные;
		КонецЕсли;
		
		Если НЕ ПараметрыАлкогольнойПродукции.Свойство("АлкогольнаяПродукция")
			ИЛИ НЕ ПараметрыАлкогольнойПродукции.Свойство("Маркируемая")
			ИЛИ НЕ ПараметрыАлкогольнойПродукции.Свойство("Штрихкод")
			ИЛИ НЕ ПараметрыАлкогольнойПродукции.Свойство("Объем") Тогда
			РезультатПодготовки.ОписаниеОшибки = НСтр("ru = 'В процедуру подготовки входящих данных передана некорректная структура параметров.'");
			Возврат ВходящиеДанные;
		КонецЕсли;
		
		Если НЕ ПараметрыАлкогольнойПродукции.АлкогольнаяПродукция Тогда
			Продолжить;
		КонецЕсли;
		
		Если ПараметрыАлкогольнойПродукции.Маркируемая Тогда
			
			Если НЕ ПараметрыАлкогольнойПродукции.Свойство("ШтрихкодМарки") Тогда
				РезультатПодготовки.ОписаниеОшибки = НСтр("ru = 'Отсутствует обязательное поле ""Штрихкод марки"".'");
				Возврат ВходящиеДанные;
			КонецЕсли;
			
		Иначе
			
			Если НЕ ВыгружатьНемаркируемуюПродукцию Тогда
				Продолжить;
			КонецЕсли;
			
			Если НЕ ПараметрыАлкогольнойПродукции.Свойство("Крепость") Тогда
				РезультатПодготовки.ОписаниеОшибки = НСтр("ru = 'Отсутствует обязательное поле ""Крепость"".'");
				Возврат ВходящиеДанные;
			КонецЕсли;
			
			Если НЕ ПараметрыАлкогольнойПродукции.Свойство("КодВидаПродукции") Тогда
				РезультатПодготовки.ОписаниеОшибки = НСтр("ru = 'Отсутствует обязательное поле ""Код вида алкогольной продукции"".'");
				Возврат ВходящиеДанные;
			КонецЕсли;
			
		КонецЕсли;
		
		КоличествоСтрок = ?(ПараметрыАлкогольнойПродукции.Маркируемая, СтрокаТаблицы.Количество, 1);
		
		Для Сч = 1 По КоличествоСтрок Цикл
			СтрокаЧека = СтруктураДанныхСтрокиЧекаККМ();
			СтрокаЧека.Наименование   = СтрокаТаблицы.Наименование;
			СтрокаЧека.Количество     = ?(ПараметрыАлкогольнойПродукции.Маркируемая, 1, СтрокаТаблицы.Количество);
			
			Если СтрокаТаблицы.Количество = 0 ИЛИ СтрокаТаблицы.Скидка = 0 Тогда
				СтрокаЧека.Цена = СтрокаТаблицы.Цена;
			Иначе
				СтрокаЧека.Цена = Окр(СтрокаТаблицы.Цена * СтрокаТаблицы.Скидка * 0.01, 2);
			КонецЕсли;
			
			СтрокаЧека.ШтрихкодТовара = ПараметрыАлкогольнойПродукции.Штрихкод;
			СтрокаЧека.Объем          = ПараметрыАлкогольнойПродукции.Объем;
			
			Если НЕ ПараметрыАлкогольнойПродукции.Маркируемая Тогда
				СтрокаЧека.Крепость = ПараметрыАлкогольнойПродукции.Крепость;
				СтрокаЧека.КодВидаПродукции = ПараметрыАлкогольнойПродукции.КодВидаПродукции;
				ВходящиеДанные.ТаблицаТоваровБезМарки.Добавить(СтрокаЧека);
			Иначе
				Если ТипЗнч(ПараметрыАлкогольнойПродукции.ШтрихкодМарки) = Тип("Массив") Тогда
					СтрокаЧека.ШтрихкодМарки = ?(ПараметрыАлкогольнойПродукции.ШтрихкодМарки.ВГраница() < Сч - 1, "", ПараметрыАлкогольнойПродукции.ШтрихкодМарки[Сч - 1]);
				ИначеЕсли ТипЗнч(ПараметрыАлкогольнойПродукции.ШтрихкодМарки) = Тип("Строка") И Сч = 1 Тогда
					СтрокаЧека.ШтрихкодМарки = ПараметрыАлкогольнойПродукции.ШтрихкодМарки;
				КонецЕсли;
				
				ВходящиеДанные.ТаблицаТоваров.Добавить(СтрокаЧека);
			КонецЕсли;
		КонецЦикла;
		
	КонецЦикла;
	
	РезультатПодготовки.Результат = Истина;
	
	Возврат ВходящиеДанные;

КонецФункции // ПодготовитьВходящиеДанныеДляПодписиЧека()
Показать
6. @lexandr 147 10.06.16 22:37 Сейчас в теме
(4) brrart, ЗаводскойНомерККМ по умолчанию в УТ 10.3 стоит 0, на это утм не ругается, проверку проходит и данные отправляются, а вот в рознице, там если в кассе не заполнен номер кассового аппарата, то выгружается пустое значение и тогда контроль правильности составленного запроса не проходи и выходит ошика.
7. ejique 11.06.16 10:45 Сейчас в теме
(6) а в рознице в базе вводится номере ККМ или получается и драйвера ККМ при регистрации продажи?
8. @lexandr 147 11.06.16 11:34 Сейчас в теме
(7) ejique, В рознице номер ККМ указывается в настройка кассы, как видно на картинке в публикации.
9. Dwiss 158 21.06.16 17:19 Сейчас в теме
Не совсем правильное решение, номер чека - это не 1С номер, а номер который дает ФР и эти поля есть в документе Чек , я вышел по-другому в запросе добавил НомерСмены и НомерЧека и добавил 2 параметра (9,10) и их передаю и там подставляю.
10. lexme 24.06.16 08:49 Сейчас в теме
на релизе 37.1 ут 10.3 при попытке пробить чек именно любого пива вылезает ошибка на чеке "не удалось сформировать подпись ЕГАИС некорректный код алкогольной продукции" с указанием кода, при этом на такой же базе в другом магазине всё проходит нормально. куда копать? уже очищал значения свойств объектов "коды алкогольной продукции" не помогает
11. @lexandr 147 24.06.16 11:37 Сейчас в теме
(10) lexme, Пока в константах убери галочку выгружать немаркируемую продукцию на закладке настройки обмена с ЕГАИС, он пиво просто выгружать не будет. Пока в 2016 году нет обязаности выгружать в егаис пиво и сидр. Поэтому пока галку можно снять с выходом следующих релизов 1с скорее всего данную ошибку поправит. Что косательно маркируемого алкоголя, то продажа его в 37.1 релизе идет нормально.
12. lexme 24.06.16 14:49 Сейчас в теме
(11) т..е вот таким образом списание проводить : В соответствии с Федеральным законом от 22.11.1995 N 171-ФЗ "О государственном регулировании производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции и об ограничении потребления (распития) алкогольной продукции" розничная продажа пива, пивных напитков, сидра, пуаре и медовухи не подлежит учету в системе ЕГАИС.

При этом, заполнение журнала учета розничных продаж в отношении пива, пивных напитков, сидра, пуаре и медовухи в электронном виде с использованием программных средств ЕГАИС производится следующим образом:
остатки продукции переводятся во второй регистр;
ежедневно в ЕГАИС фиксируется акт списания реализованной продукции с указанием причины списания: «Розничная реализация продукции, не подлежащая фиксации в ЕГАИС».
http://egais.ru/news/view?id=1473
13. ElenaBu 19.07.16 14:07 Сейчас в теме
А никого не смущает строка кода:

СтрокаЧека.Цена = Окр(СтрокаТаблицы.Цена * СтрокаТаблицы.Скидка * 0.01, 2);


если цена 150р и скидка 10, то получается по этой формуле, что в Егаис уйдет 15?
14. Tarlich 76 28.07.16 23:44 Сейчас в теме
15. user598309_varenichka89 01.09.16 04:09 Сейчас в теме
Здравствуйте! Помогите пожалуйста. При продаже продукции программа выдает ошибку. Скрин прилагаю в файле. Заранее благодарю
Прикрепленные файлы:
16. @lexandr 147 01.09.16 12:22 Сейчас в теме
(15) user598309_varenichka89, Не знаю от куда это, поэтому сложно точно сказать в чем причина, но судя из того что он ругается на превышение время, похоже что утм более 3 дней не может связаться с сервером по причине отсутсвия интернета или что-то мешает ему в передачи данных в интернет на сервер егаиса. По закону прописано, что утм в течении 3-х дней должен скинуть эти данные в егаис, если это не происходит, то продажа алкоголя будет заблакирована. Из картинки сложно судить, но похоже что дело именно в этом.
17. vcspektr 04.09.16 14:40 Сейчас в теме
Кто-нибудь может поделиться готовым cf-ником от розницы 1,0,9,16, я замучался уже, ничего не выходит....
18. @lexandr 147 04.09.16 23:18 Сейчас в теме
(17) vcspektr, Публикации конфигураций с возможностью подключать к одному рабочему месту двух кассовых аппаратов уже не содержат данных ошибок и могут отправлять данные о продажах в ЕГАИС. http://infostart.ru/public/404411/
19. vcspektr 05.09.16 10:25 Сейчас в теме
(18) Спасибо, к сожалению платная... Попробую пока сам
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Консультант-аналитик 1С
Москва
зарплата от 70 000 руб. до 100 000 руб.
Полный день

Программист 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Временный (на проект)