Учет и сверка Z-Отчетов ККМ в 1С

Публикация № 840708

Учет и отчетность - Кассовые операции

z-отчет ККМ проверка чеков

Думаю, все крупные компании при внедрении/эксплуатации 1С делают значительные изменения в ее конфигурации. Как бы вы ни пытались все бизнес процессы решить типовыми решениями от 1С, все равно наступает момент, когда приходится заняться конфигурированием. Я решил написать серию статей, где постараюсь описать решения, которые мне пришлось реализовывать в разных компаниях. Если разработчики 1С посчитают что-то интересным для внедрения в типовые решения, мы будем только рады. В текущей статье речь пойдет о кассовых z-отчетах в 1С.

ПРЕДПОСЫЛКИ:

Если вы используете ККМ, у вас возникает необходимость сверять отраженную выручку в 1С с предоставленными z-отчетами.

Сразу развею миф: «Если все чеки печатаются из 1С, то и сумма выручки всегда будет совпадать с z-отчетом». В жизни все не так.

Если у вас всего 1-5 контрольно кассовых машин (ККМ), можно ежедневно вручную бухгалтеру сверять выручку по бумажному z-отчету. Но если у вас более 100 ККМ, вопрос автоматизации по проверке достоверности отражения выручки, соблюдения кассовой дисциплины и своевременного пробития чеков становится очень остро. Человеческий фактор в данном случае становится просто катастрофическим.

К сожалению, типовые конфигурации 1С нам не предлагают возможность вести учет z-отчетов, что ж, реализуем сами.

Внедрение бизнес процесса по контролю и учету z-отчетов можно разделить на три этапа:

1. Создание в 1С документа "z-отчет" с ручным вводом информации.
2. Контроль и формирование отчетов по проверке показателей, которые можно извлечь из Z-отчета.
3. Автоматизация загрузки с ККМ данных о z-отчетах (их автоматическое создание в 1С).

Маленькая ремарка: Предоставленная ниже реализация z-отчета, является решением во времена ККМ с ЭКЛЗ и плавно была трансформирована (с обратной совместимостью) в решение для онлайн касс.

ПРИСТУПИМ: 

1 ЭТАП

Создаем новый документ «_ZОтчетФискальный»
Реквизиты:
- Организация (СправочникСсылка.Организации)
- Подразделение (СправочникСсылка.Подразделения)
- ККМ (СправочникСсылка.КассыККМ)
- Накопление (Число15.2)  В новых он-лайн ККМ это поле теперь называется ГРОСС ИТОГ
- Выручка (Число15.2)
- Возвраты (Число15.2)
- ВыручкаБезТоварныхЧеков (Число15.2) В этом поле отражают выручку, регистрируемую при поступлении средств от «оптовых» покупателей (ТОРГ12+ПКО).
- Неиспользованные (Число15.2)
- НомерГашения (Число10.0) В новых он-лайн ККМ это поле теперь называется НОМЕР СМЕНЫ.
- СуммаДокумента (Число15.2)
Для отображения в журнале
- НачальныеСведения (Булево) Этот реквизит необходим для обозначения вноса первого
Z
-отчета ККМ, или при смене ФН. При его установке не проверяется хронология отчетов по ККМ.
- Ответственный (СправочникСсылка.Пользователи)
- Комментарий (Строка)


Z-Отчет. Вид из конфигуратора.

В модуле объекта пишем код для проверки заполнения при проведении документа.

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

Процедура ОбработкаПроведения(Отказ, Режим)
	Если НЕ НачальныеСведения Тогда
		СведенияОПредыдущем= НайтиПредыдущееГашение();
		Если СведенияОПредыдущем.НомерГашения=Неопределено Тогда
			Сообщить("Не найден предыдущий Финансовый отчет (гашение) для ККМ: "+Строка(ККМ));
			Если НЕ РольДоступна("ПолныеПрава") Тогда
				Отказ = Истина;
			КонецЕсли;
			
		Иначе
			Если НомерГашения=СведенияОПредыдущем.НомерГашения Тогда
				Сообщить("Уже существует документ с таким номером гашения для выбранной ККМ. Возможно вы задублировали документ.");
				Сообщить("Ожидается номер "+Строка(СведенияОПредыдущем.НомерГашения+1));
				Если НЕ РольДоступна("ПолныеПрава") Тогда
					Отказ = Истина;
				КонецЕсли;
			ИначеЕсли (НомерГашения<СведенияОПредыдущем.НомерГашения) Тогда
				Сообщить("Существует документ с более поздним номером гашения для выбранной ККМ. Отмените более поздние гашения, и проведите их в порядке возрастания номера гашения.");
				Сообщить("Ожидается номер "+Строка(СведенияОПредыдущем.НомерГашения+1));
				Если НЕ РольДоступна("ПолныеПрава") Тогда
					Отказ = Истина;
				КонецЕсли;
			ИначеЕсли (НомерГашения>(СведенияОПредыдущем.НомерГашения+1)) Тогда
				Сообщить("Существуют пропущенные номера гашения для выбранной ККМ. Преверте номер гашения или проведите гашения для пропущенных номеров.");
				Сообщить("Ожидается номер "+Строка(СведенияОПредыдущем.НомерГашения+1));
				Если НЕ РольДоступна("ПолныеПрава") Тогда
					Отказ = Истина;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
		
		//РасчВозврат=?(Касса.ОтражениеВозвратовВНакоплении=Перечисления.ВлияниеНаИтоги.Увеличивают,Возвраты,?(Касса.ОтражениеВозвратовВНакоплении=Перечисления.ВлияниеНаИтоги.Уменьшают,-Возвраты,0));
		//РасчНеиспользованные=?(Касса.ОтражениеНеиспользованныхВНакоплении=Перечисления.ВлияниеНаИтоги.Увеличивают,Неиспользованные,?(Касса.ОтражениеНеиспользованныхВНакоплении=Перечисления.ВлияниеНаИтоги.Уменьшают,-Неиспользованные,0));
		РасчВозврат = Возвраты; //Считаем что всегда увеличивают;
		РасчНеиспользованные = 0; //Считаем что не влияют;
		Если (Накопление<>(СведенияОПредыдущем.Накопление+Выручка+РасчВозврат+РасчНеиспользованные)) Тогда
			Сообщить("Контроль накопления не пройден! Проверьте правильность внесения данных с бумажного чека ""Z-ОТЧЕТ (фискальный)""!");
			Если НЕ РольДоступна("ПолныеПрава") Тогда
				Отказ = Истина;
			КонецЕсли;
		КонецЕсли;
	Конецесли;
КонецПроцедуры

Если вы обратили внимание, пользователь не может провести документ «_ZОтчетФискальный», если не выполняется математика или не соблюдается очередность отчетов.

Закомментированный код применялся при подсчете накопления в старых моделях ККМ с ЭКЛЗ, теперь в нем нет необходимости.

Документ «_ZОтчетФискальный» все проверки производит по указанной в документе конкретной кассе ККМ.

Небольшое лирическое отступление:

При эксплуатации касс АТОЛ 11Ф у нас неоднократно случались ошибки математики «ГРОСС ИТОГА» во время пробития z-отчета на ККМ, как правило при сбое (окончание бумаги или разряд аккумулятора).
Что ж, не беда, в нашем случае предусмотрен флаг «НачальныеСведения» в документе, при его установки документ позволяет начать отсчет номер гашения и накопление заново.

Вызов форма списка документа поместил в меню: Документы>Управление денежными средствами>Z-Отчеты

Форма списка выглядит так:

Форму документа я оформил в наглядном и понятном бухгалтеру виде:

Форма документа z-отчет в 1С

Код формы документа:

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

Процедура ОбновитьНадписиПриИзмененииЭлемента(Элемент)
	ОбновитьНадписи();
	ОбновитьОбразецЧека();
КонецПроцедуры

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	ДокументОбъект.СуммаДокумента=ДокументОбъект.Выручка-ДокументОбъект.Возвраты-ДокументОбъект.Неиспользованные;
КонецПроцедуры

Функция НайтиПредыдущееГашениеНаСервере() 
	Возврат НайтиПредыдущееГашение(); 
КонецФункции

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

Процедура ОбновитьОбразецЧека()	
	ЭлементыФормы.ФД.Очистить();
	ЭлементыФормы.ФД.ДобавитьСтроку("ИНН "+ДокументОбъект.Организация.ИНН);
	ЭлементыФормы.ФД.ДобавитьСтроку("Z-ОТЧЕТ ФИСКАЛЬНЫЙ");
	ЭлементыФормы.ФД.ДобавитьСтроку("ККМ "+ДокументОбъект.ККМ.СерийныйНомер);
	ЭлементыФормы.ФД.ДобавитьСтроку("ЗАКР.СМЕНЫ  "+ПРАВ("0000"+ФОРМАТ(ДокументОбъект.НомерГашения,"ЧГ="),4));
	ЭлементыФормы.ФД.ДобавитьСтроку("");
	ЭлементыФормы.ФД.ДобавитьСтроку("НАКОПЛЕНИЕ");
	ЭлементыФормы.ФД.ДобавитьСтроку("ГРОСС-ИТОГ");
	ЭлементыФормы.ФД.ДобавитьСтроку("  "+ПРАВ("..........."+ФОРМАТ(ДокументОбъект.Накопление,"ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧН=0.00; ЧГ="),15));
	ЭлементыФормы.ФД.ДобавитьСтроку("ВЫРУЧКА");
	ЭлементыФормы.ФД.ДобавитьСтроку("  "+ПРАВ("..........."+ФОРМАТ(ДокументОбъект.Выручка,"ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧН=0.00; ЧГ="),15));
	ЭлементыФормы.ФД.ДобавитьСтроку(Формат(ДокументОбъект.Дата,"ДФ=""дд.ММ.гг ЧЧ.мм""")+"Ф");
	ЭлементыФормы.ФД.ДобавитьСтроку("ВОЗВРАТЫ");
	ЭлементыФормы.ФД.ДобавитьСтроку("  "+ПРАВ("..........."+ФОРМАТ(ДокументОбъект.Возвраты,"ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧН=0.00; ЧГ="),15));
КонецПроцедуры

Если используете управляемые формы, то получать ИНН организации и серийный номер ККМ нужно через вызов функции на сервере.

 

2 ЭТАП

Создаем средства проверки и контроля данных в z-отчетах. Для этого у нас уже существует решение для бухгалтеров «ЕДИНАЯ ПРОВЕРКА ОШИБОК». Добавляем раздел по проверке сразу всех Z-отчетов, внесенных в 1С за определенный период.

Макет для вывода результатов проверки там выглядит как-то так:

Макет отчета

Создаем процедуры по проверке документов «_ZОтчетФискальный»:

Перечисляю все варианты сообщений при проверке, по ним вы сможете понять, какие проверки производятся с документом z-отчет.

ОШИБКИ:

- В Z-отчете указаны неиспользованные чеки, но при этом ПКО оформлен на всю сумму выручки в Z-отчете на дату ХХХ
- В Z-отчете указаны оптовые продажи, но при этом ПКО с видом ""Прием розничной выручки"" оформлен на всю сумму выручки в Z-отчете на дату ХХХ

- Чистая выручка по Z-отчету ХХХ не соответсвует сумме ПКО ХХХ по кассе ККМ ХХХ на дату ХХХ
- Сумма неиспользованных чеков и оптовых продаж превышает общую выручку
- Сумма опта Z-отчетов ХХХ по подразделению ХХХ не сходится с суммой ПКО ХХХ на дату ХХХ
-
Не найден предыдущий Финансовый отчет (гашение) для ККМ ХХХ
- Уже существует документ с таким номером гашения для выбранной ККМ. Возможно вы задублировали документ. Ожидается номер ХХХ
- Существует документ с более поздним номером гашения для выбранной ККМ. Отмените более поздние гашения, и проведите их в порядке возрастания номера гашения.  Ожидается номер ХХХ
- Существуют пропущенные номера гашения для выбранной ККМ. Преверте номер гашения или проведите гашения для пропущенных номеров. Ожидается номер ХХХ
- Контроль накопления не пройден! Проверьте правильность внесения данных с бумажного чека "Z-ОТЧЕТ (фискальный)"!

 

ПРЕДУПРЕЖДЕНИЯ:

- По кассе ККМ ХХХ на дату ХХХ должен быть оформлен акт по неиспользованным кассовым чекам(КМ-3) на сумму ХХХ
- По кассе ККМ ХХХ на дату ХХХ должен быть оформлено заявление на возврат на сумму ХХХ
- По кассе ККМ ХХХ найдено несколько Z-отчетов с признаком "Начальные сведения"

 

 

 
 Кто хочет посмотреть код проверок

 

Процедура ПроверкаZОтчетов(ТД,Макет)
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	_ZОтчетФискальный.ККМ КАК ККМ,
	|	МИНИМУМ(_ZОтчетФискальный.Дата) КАК Дата
	|ИЗ
	|	Документ._ZОтчетФискальный КАК _ZОтчетФискальный
	|ГДЕ
	|	_ZОтчетФискальный.Дата >= &Дата1
	|
	|СГРУППИРОВАТЬ ПО
	|	_ZОтчетФискальный.ККМ";
	Запрос.Параметры.Вставить("Дата1",НачалоДня(ОбработкаОбъект.Период.ДатаНачала));
	ТаблицаКасс = Запрос.Выполнить().Выбрать();
	Пока ТаблицаКасс.Следующий() Цикл
		Запрос = Новый Запрос;
		Запрос.Текст="ВЫБРАТЬ
		|	ПКО.День КАК Дата,
		|	ЕСТЬNULL(ПКО.СуммаДокумента, 0) КАК СуммаПКО,
		|	ПКО.Контрагент КАК ККМ,
		|	ЕСТЬNULL(Отчеты.Выручка, 0) КАК СуммаОтчета,
		|	ЕСТЬNULL(Отчеты.Неиспользованные, 0) КАК Неиспользованные,
		|	ЕСТЬNULL(Отчеты.Возвраты, 0) КАК Возвраты,
		|	Отчеты.День КАК ДатаОтчета,
		|	Отчеты.ККМ КАК ККМОтчета,
		|	ЕСТЬNULL(Отчеты.ВыручкаБезТоварныхЧеков, 0) КАК Опт,
		|	ЕСТЬNULL(Отчеты.ВыручкаЧистая, 0) КАК СуммаОтчетаЧистая
		|ИЗ
		|	(ВЫБРАТЬ
		|		_ZОтчетФискальный.Организация КАК Организация,
		|		_ZОтчетФискальный.ККМ КАК ККМ,
		|		СУММА(_ZОтчетФискальный.Выручка) КАК Выручка,
		|		НАЧАЛОПЕРИОДА(_ZОтчетФискальный.Дата, ДЕНЬ) КАК День,
		|		СУММА(_ZОтчетФискальный.Неиспользованные) КАК Неиспользованные,
		|		СУММА(_ZОтчетФискальный.Возвраты) КАК Возвраты,
		|		СУММА(_ZОтчетФискальный.ВыручкаБезТоварныхЧеков) КАК ВыручкаБезТоварныхЧеков,
		|		СУММА(_ZОтчетФискальный.Выручка - _ZОтчетФискальный.Неиспользованные -  _ZОтчетФискальный.ВыручкаБезТоварныхЧеков) КАК ВыручкаЧистая
		|	ИЗ
		|		Документ._ZОтчетФискальный КАК _ZОтчетФискальный
		|	ГДЕ
		|		_ZОтчетФискальный.Дата МЕЖДУ &Дата1 И &Дата2
		|		И _ZОтчетФискальный.Проведен = ИСТИНА
		|		И _ZОтчетФискальный.Организация = &Организация
		|		И _ZОтчетФискальный.ККМ = &ККМ
		|	
		|	СГРУППИРОВАТЬ ПО
		|		_ZОтчетФискальный.Организация,
		|		_ZОтчетФискальный.ККМ,
		|		НАЧАЛОПЕРИОДА(_ZОтчетФискальный.Дата, ДЕНЬ)) КАК Отчеты
		|		ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
		|			ПриходныйКассовыйОрдер.Организация КАК Организация,
		|			ПриходныйКассовыйОрдер.Контрагент КАК Контрагент,
		|			СУММА(ПриходныйКассовыйОрдер.СуммаДокумента) КАК СуммаДокумента,
		|			НАЧАЛОПЕРИОДА(ПриходныйКассовыйОрдер.Дата, ДЕНЬ) КАК День
		|		ИЗ
		|			Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
		|		ГДЕ
		|			ПриходныйКассовыйОрдер.Проведен = ИСТИНА
		|			И ПриходныйКассовыйОрдер.Дата МЕЖДУ &Дата1 И &Дата2
		|			И ПриходныйКассовыйОрдер.Организация = &Организация
		|			И ТИПЗНАЧЕНИЯ(ПриходныйКассовыйОрдер.Контрагент) = ТИП(Справочник.КассыККМ)
		|			И ПриходныйКассовыйОрдер.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПКО.ПриходДенежныхСредствРозничнаяВыручка)
		|			И ПриходныйКассовыйОрдер.ОтражатьВБухгалтерскомУчете = ИСТИНА
		|			И ПриходныйКассовыйОрдер.Контрагент = &ККМ
		|		
		|		СГРУППИРОВАТЬ ПО
		|			ПриходныйКассовыйОрдер.Организация,
		|			ПриходныйКассовыйОрдер.Контрагент,
		|			НАЧАЛОПЕРИОДА(ПриходныйКассовыйОрдер.Дата, ДЕНЬ)) КАК ПКО
		|		ПО Отчеты.Организация = ПКО.Организация
		|			И Отчеты.ККМ = ПКО.Контрагент
		|			И Отчеты.День = ПКО.День";
		Запрос.УстановитьПараметр("Организация",ОбработкаОбъект.Организация);					
		Запрос.УстановитьПараметр("Дата1",?(ТаблицаКасс.Дата>ОбработкаОбъект.Период.ДатаНачала,НачалоДня(ТаблицаКасс.Дата),НачалоДня(ОбработкаОбъект.Период.ДатаНачала)));					
		Запрос.УстановитьПараметр("Дата2",КонецДня(ОбработкаОбъект.Период.ДатаОкончания));
		Запрос.УстановитьПараметр("ККМ",ТаблицаКасс.ККМ);
		Выборка = Запрос.Выполнить().Выбрать();
		Пока Выборка.Следующий() Цикл
			Если Выборка.СуммаПКО = Выборка.СуммаОтчета И Выборка.Неиспользованные >0 Тогда			
				ОбластьМакета         = Макет.ПолучитьОбласть("Ошибка");
				ОбластьМакета.Параметры.ОбъектаПроверки        =?(Выборка.ККМ = Null,Выборка.ККМОтчета,Выборка.ККМ);
				ОбластьМакета.Параметры.Ошибка				   ="В Z-отчете указаны неиспользованные чеки, но при этом ПКО оформлен на всю сумму выручки в Z-отчете на дату: " + Формат(?(Выборка.Дата = Null,Выборка.ДатаОтчета,Выборка.Дата),"ДФ=dd.MM.yy; ДЛФ=D");
				ТД.Вывести(ОбластьМакета);
			КонецЕсли;
				Если Выборка.СуммаПКО = Выборка.СуммаОтчета И Выборка.Опт >0 Тогда			
				ОбластьМакета         = Макет.ПолучитьОбласть("Ошибка");
				ОбластьМакета.Параметры.ОбъектаПроверки        =?(Выборка.ККМ = Null,Выборка.ККМОтчета,Выборка.ККМ);
				ОбластьМакета.Параметры.Ошибка				   ="В Z-отчете указаны оптовые продажи, но при этом ПКО с видом ""Прием розничной выручки"" оформлен на всю сумму выручки в Z-отчете на дату: " + Формат(?(Выборка.Дата = Null,Выборка.ДатаОтчета,Выборка.Дата),"ДФ=dd.MM.yy; ДЛФ=D");
				ТД.Вывести(ОбластьМакета);
			КонецЕсли;
			Если Выборка.СуммаПКО <> Выборка.СуммаОтчетаЧистая Тогда			
				ОбластьМакета         = Макет.ПолучитьОбласть("Ошибка");
				ОбластьМакета.Параметры.ОбъектаПроверки        =?(Выборка.ККМ = Null,Выборка.ККМОтчета,Выборка.ККМ);
				ОбластьМакета.Параметры.Ошибка				   ="Чистая выручка по Z-отчету: "+Выборка.СуммаОтчетаЧистая+" не соответсвует сумме ПКО: "+Выборка.СуммаПКО+" по кассе ККМ: "+Выборка.ККМ+" на дату: "+Формат(?(Выборка.Дата = Null,Выборка.ДатаОтчета,Выборка.Дата),"ДФ=dd.MM.yy; ДЛФ=D");
				ТД.Вывести(ОбластьМакета);
			КонецЕсли;
			Если Выборка.Неиспользованные>0 Тогда
				ОбластьМакета         = Макет.ПолучитьОбласть("Предупреждение");
				ОбластьМакета.Параметры.ОбъектаПроверки        =?(Выборка.ККМ = Null,Выборка.ККМОтчета,Выборка.ККМ);
				ОбластьМакета.Параметры.Ошибка				   ="По кассе ККМ: "+?(Выборка.ККМ = Null,Выборка.ККМОтчета,Выборка.ККМ)+" на дату: "+Формат(?(Выборка.Дата = Null,Выборка.ДатаОтчета,Выборка.Дата),"ДФ=dd.MM.yy; ДЛФ=D") + " должен быть оформлен акт по неиспользованным кассовым чекам(КМ-3) на сумму " + Выборка.Неиспользованные;
				ТД.Вывести(ОбластьМакета);
			КонецЕсли;	
			Если Выборка.Возвраты>0 Тогда
				ОбластьМакета         = Макет.ПолучитьОбласть("Предупреждение");
				ОбластьМакета.Параметры.ОбъектаПроверки        =?(Выборка.ККМ = Null,Выборка.ККМОтчета,Выборка.ККМ);
				ОбластьМакета.Параметры.Ошибка				   ="По кассе ККМ: "+?(Выборка.ККМ = Null,Выборка.ККМОтчета,Выборка.ККМ)+" на дату: "+Формат(?(Выборка.Дата = Null,Выборка.ДатаОтчета,Выборка.Дата),"ДФ=dd.MM.yy; ДЛФ=D") + " должен быть оформлено заявление на возврат на сумму " + Выборка.Возвраты;
				ТД.Вывести(ОбластьМакета);
			КонецЕсли;	
		КонецЦикла;
		Запрос = Новый Запрос;
		ЕстьНачальный = Ложь;
		Запрос.Текст="ВЫБРАТЬ
		|	_ZОтчетФискальный.Ссылка КАК Ссылка,
		|	_ZОтчетФискальный.НачальныеСведения КАК НачальныеСведения
		|ИЗ
		|	Документ._ZОтчетФискальный КАК _ZОтчетФискальный
		|ГДЕ
		|	_ZОтчетФискальный.ККМ = &ККМ
		|	И _ZОтчетФискальный.Дата МЕЖДУ &Дата1 И &Дата2
		|	И _ZОтчетФискальный.Проведен = ИСТИНА
		|	И _ZОтчетФискальный.Организация = &Организация";
		Запрос.УстановитьПараметр("Дата1",?(ТаблицаКасс.Дата>ОбработкаОбъект.Период.ДатаНачала,НачалоДня(ТаблицаКасс.Дата),НачалоДня(ОбработкаОбъект.Период.ДатаНачала)));					
		Запрос.УстановитьПараметр("Дата2",КонецДня(ОбработкаОбъект.Период.ДатаОкончания));
		Запрос.УстановитьПараметр("ККМ",ТаблицаКасс.ККМ);
		Запрос.УстановитьПараметр("Организация",ОбработкаОбъект.Организация);
		ZОтчеты = Запрос.Выполнить().Выбрать();
		Пока ZОтчеты.Следующий() Цикл
			Если ЕстьНачальный И ZОтчеты.НачальныеСведения Тогда
				ОбластьМакета         = Макет.ПолучитьОбласть("Предупреждение");
				ОбластьМакета.Параметры.ОбъектаПроверки        =?(Выборка.ККМ = Null,Выборка.ККМОтчета,Выборка.ККМ);
				ОбластьМакета.Параметры.Ошибка				   ="По кассе ККМ " + ?(Выборка.ККМ = Null,Выборка.ККМОтчета,Выборка.ККМ) + " найдено несколько Z-отчетов с признаком ""Начальные сведения""";
				ТД.Вывести(ОбластьМакета);
			КонецЕсли;
			Если ZОтчеты.НачальныеСведения Тогда
				ЕстьНачальный = Истина;
			КонецЕсли;
			ПроверкаКорректностиZОтчетов(ZОтчеты.Ссылка,Выборка.ККМ,ТД,Макет);
		КонецЦикла;
	КонецЦикла;
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	МИНИМУМ(_ZОтчетФискальный.Дата) КАК Дата,
	|	_ZОтчетФискальный.ККМ.ПодразделениеОрганизации КАК Подразделение
	|ИЗ
	|	Документ._ZОтчетФискальный КАК _ZОтчетФискальный
	|ГДЕ
	|	_ZОтчетФискальный.Дата >= &Дата1
	|
	|СГРУППИРОВАТЬ ПО
	|	_ZОтчетФискальный.ККМ.ПодразделениеОрганизации";
	Запрос.Параметры.Вставить("Дата1",НачалоДня(ОбработкаОбъект.Период.ДатаНачала));
	ТаблицаПодразделений = Запрос.Выполнить().Выбрать();
	Пока ТаблицаПодразделений.Следующий() Цикл
		ЗапросОпт = Новый Запрос;
		ЗапросОпт.Текст = "ВЫБРАТЬ
		|	ПКО.День КАК Дата,
		|	ЕСТЬNULL(ПКО.СуммаДокумента, 0) КАК СуммаПКО,
		|	Отчеты.День КАК ДатаОтчета,
		|	ЕСТЬNULL(Отчеты.ВыручкаБезТоварныхЧеков, 0) КАК Опт,
		|	Отчеты.Подразделение,
		|	ПКО.Подразделение КАК ПодразделениеПКО
		|ИЗ
		|	(ВЫБРАТЬ
		|		_ZОтчетФискальный.Организация КАК Организация,
		|		НАЧАЛОПЕРИОДА(_ZОтчетФискальный.Дата, ДЕНЬ) КАК День,
		|		СУММА(_ZОтчетФискальный.ВыручкаБезТоварныхЧеков) КАК ВыручкаБезТоварныхЧеков,
		|		_ZОтчетФискальный.Подразделение КАК Подразделение
		|	ИЗ
		|		Документ._ZОтчетФискальный КАК _ZОтчетФискальный
		|	ГДЕ
		|		_ZОтчетФискальный.Дата МЕЖДУ &Дата1 И &Дата2
		|		И _ZОтчетФискальный.Проведен = ИСТИНА
		|		И _ZОтчетФискальный.Организация = &Организация
		|		И _ZОтчетФискальный.ВыручкаБезТоварныхЧеков > 0
		|		И _ZОтчетФискальный.Подразделение = &Подразделение
		|	
		|	СГРУППИРОВАТЬ ПО
		|		_ZОтчетФискальный.Организация,
		|		НАЧАЛОПЕРИОДА(_ZОтчетФискальный.Дата, ДЕНЬ),
		|		_ZОтчетФискальный.Подразделение) КАК Отчеты
		|		ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
		|			ПриходныйКассовыйОрдер.Организация КАК Организация,
		|			СУММА(ПриходныйКассовыйОрдер.СуммаДокумента) КАК СуммаДокумента,
		|			НАЧАЛОПЕРИОДА(ПриходныйКассовыйОрдер.Дата, ДЕНЬ) КАК День,
		|			ПриходныйКассовыйОрдер.Подразделение КАК Подразделение
		|		ИЗ
		|			Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
		|		ГДЕ
		|			ПриходныйКассовыйОрдер.Проведен = ИСТИНА
		|			И ПриходныйКассовыйОрдер.Дата МЕЖДУ &Дата1 И &Дата2
		|			И ПриходныйКассовыйОрдер.Организация = &Организация
		|			И ПриходныйКассовыйОрдер.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПКО.ОплатаПокупателя)
		|			И ПриходныйКассовыйОрдер.ОтражатьВБухгалтерскомУчете = ИСТИНА
		|			И ПриходныйКассовыйОрдер.Подразделение = &Подразделение
		|		
		|		СГРУППИРОВАТЬ ПО
		|			ПриходныйКассовыйОрдер.Организация,
		|			НАЧАЛОПЕРИОДА(ПриходныйКассовыйОрдер.Дата, ДЕНЬ),
		|			ПриходныйКассовыйОрдер.Подразделение) КАК ПКО
		|		ПО Отчеты.Организация = ПКО.Организация
		|			И Отчеты.День = ПКО.День
		|			И Отчеты.Подразделение = ПКО.Подразделение";
		ЗапросОпт.УстановитьПараметр("Организация",ОбработкаОбъект.Организация);					
		ЗапросОпт.УстановитьПараметр("Дата1",?(ТаблицаКасс.Дата>ОбработкаОбъект.Период.ДатаНачала,НачалоДня(ТаблицаКасс.Дата),НачалоДня(ОбработкаОбъект.Период.ДатаНачала)));					
		ЗапросОпт.УстановитьПараметр("Дата2",КонецДня(ОбработкаОбъект.Период.ДатаОкончания));
		ЗапросОпт.УстановитьПараметр("Подразделение",ПодразделениеОрганизацииВПодразделение(ТаблицаПодразделений.Подразделение));
		ВыборкаОпт = ЗапросОпт.Выполнить().Выбрать();
		Пока ВыборкаОпт.Следующий() Цикл
			Если ВыборкаОпт.Опт <> ВыборкаОпт.СуммаПКО Тогда
				ОбластьМакета         = Макет.ПолучитьОбласть("Ошибка");
				ОбластьМакета.Параметры.ОбъектаПроверки        =?(ВыборкаОпт.Подразделение = Null,ВыборкаОпт.ПодразделениеПКО,ВыборкаОпт.Подразделение);
				ОбластьМакета.Параметры.Ошибка				   ="Сумма опта Z-отчетов: " + ВыборкаОпт.Опт + " по подразделению " + ?(ВыборкаОпт.Подразделение = Null,ВыборкаОпт.ПодразделениеПКО,ВыборкаОпт.Подразделение) + " не сходится с суммой ПКО: " + ВыборкаОпт.СуммаПКО + " на дату " + Формат(?(ВыборкаОпт.Дата = Null,ВыборкаОпт.ДатаОтчета,ВыборкаОпт.Дата),"ДФ=dd.MM.yy; ДЛФ=D");
				ТД.Вывести(ОбластьМакета);
			КонецЕсли;	
		КонецЦикла;
	КонецЦикла;	
КонецПроцедуры

Процедура ПроверкаКорректностиZОтчетов(СсылкаНаОтчет,ККМ,ТД,Макет)
	Если НЕ СсылкаНаОтчет.НачальныеСведения Тогда
		СведенияОПредыдущем= НайтиПредыдущееГашение(СсылкаНаОтчет);
		Если СведенияОПредыдущем.НомерГашения=Неопределено Тогда
			ОбластьМакета         = Макет.ПолучитьОбласть("Ошибка");
			ОбластьМакета.Параметры.ОбъектаПроверки        =СсылкаНаОтчет;
			ОбластьМакета.Параметры.Ошибка				   ="Не найден предыдущий Финансовый отчет (гашение) для ККМ: "+Строка(ККМ);
			ТД.Вывести(ОбластьМакета);					
		Иначе
			Если СсылкаНаОтчет.НомерГашения=СведенияОПредыдущем.НомерГашения Тогда				
				ОбластьМакета         = Макет.ПолучитьОбласть("Ошибка");
				ОбластьМакета.Параметры.ОбъектаПроверки        =СсылкаНаОтчет;
				ОбластьМакета.Параметры.Ошибка				   ="Уже существует документ с таким номером гашения для выбранной ККМ. Возможно вы задублировали документ." + Символы.ПС + "Ожидается номер "+Строка(СведенияОПредыдущем.НомерГашения+1);
				ТД.Вывести(ОбластьМакета);
			ИначеЕсли (СсылкаНаОтчет.НомерГашения<СведенияОПредыдущем.НомерГашения) Тогда				
				ОбластьМакета         = Макет.ПолучитьОбласть("Ошибка");
				ОбластьМакета.Параметры.ОбъектаПроверки        =СсылкаНаОтчет;
				ОбластьМакета.Параметры.Ошибка				   ="Существует документ с более поздним номером гашения для выбранной ККМ. Отмените более поздние гашения, и проведите их в порядке возрастания номера гашения." + Символы.ПС + "Ожидается номер "+Строка(СведенияОПредыдущем.НомерГашения+1);
				ТД.Вывести(ОбластьМакета);
			ИначеЕсли (СсылкаНаОтчет.НомерГашения>(СведенияОПредыдущем.НомерГашения+1)) Тогда
				ОбластьМакета         = Макет.ПолучитьОбласть("Ошибка");
				ОбластьМакета.Параметры.ОбъектаПроверки        =СсылкаНаОтчет;
				ОбластьМакета.Параметры.Ошибка				   ="Существуют пропущенные номера гашения для выбранной ККМ. Преверте номер гашения или проведите гашения для пропущенных номеров." + Символы.ПС + "Ожидается номер "+Строка(СведенияОПредыдущем.НомерГашения+1);
				ТД.Вывести(ОбластьМакета);				
			КонецЕсли;
		КонецЕсли;
		
		РасчВозврат = СсылкаНаОтчет.Возвраты; //Считаем что всегда увеличивают;
		РасчНеиспользованные = 0; //Считаем что не влияют;
		Если (СсылкаНаОтчет.Накопление<>(СведенияОПредыдущем.Накопление+СсылкаНаОтчет.Выручка+РасчВозврат+РасчНеиспользованные)) Тогда
			ОбластьМакета         = Макет.ПолучитьОбласть("Ошибка");
			ОбластьМакета.Параметры.ОбъектаПроверки        =СсылкаНаОтчет;
			ОбластьМакета.Параметры.Ошибка				   ="Контроль накопления не пройден! Проверьте правильность внесения данных с бумажного чека ""Z-ОТЧЕТ (фискальный)""!";
			ТД.Вывести(ОбластьМакета);
		КонецЕсли;
	КонецЕсли;
	Если СсылкаНаОтчет.Неиспользованные + СсылкаНаОтчет.ВыручкаБезТоварныхЧеков>СсылкаНаОтчет.Выручка Тогда
		ОбластьМакета         = Макет.ПолучитьОбласть("Ошибка");
		ОбластьМакета.Параметры.ОбъектаПроверки        =СсылкаНаОтчет;
		ОбластьМакета.Параметры.Ошибка				   ="Сумма неиспользованных чеков и оптовых продаж превышает общую выручку";
		ТД.Вывести(ОбластьМакета);
	КонецЕсли;
	
КонецПроцедуры

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

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



 

 

В результате можно формировать отчеты по проверки z- отчетов за любой период и вовремя устранять нарушения, не дожидаясь того, что на эти ошибки укажет вам ФНС.

Пример работы проверки:

Единая проверка ошибок

 

3 ЭТАП

Когда количество касс вырастает к трехзначной цифре, остро назревает вопрос об автоматизации процесса получения сведений из z-отчета ККМ в автоматическом режиме.

Рассмотрим на примере POS систем АТОЛ и их ККМ.

Стандартный обмен текстовыми файлами с POS системами АТОЛ нам не особо помогает в процессе автоматизации.
При пробитии z-отчета POS система АТОЛа пишет в файл report.txt  строку с кодом "63"
Пример строки:

 

1937;19.04.2018;20:09:47;63;1;195;2;;19;1379;1379;1379;9;2;0;0;0;;;1379;;0;8;0;;146/245/19;1;;;;;;;0;0 - Ошибок нет,0 - Ошибок нет,0 - Ошибок нет;;;;;;;; 

Что можно из нее выдернуть :
дата - 19.04.2018,
время – 20:09:47
порядковый номер
z
-отчета -  19
выручку -1379.00
наличную часть выручки – 1379.00
накопление (ГРОСС ИТОГ) – такой информации АТОЛ в файл не записывает.

АТОЛ дает обработку «82АТОЛ.epf». В ее модуле объекта можно найти участок кода:

Функция ПрочитатьФайлВыгрузки(Объект, Файл, Отчет, Карты, Оплаты)
//++Комментарий автора
// Эта функция вызывается из Функции ЗагрузитьОтчет(Объект, Отчет, Карты = Неопределено, Оплаты = Неопределено)
// А она вызывается из функции «ЗагрузитьОтчетОПродажах» обработки конфигурации «ТОСервер»
//--Комментарий автора
       //… разбор файла и запись его в таблицу «Отчет»…

		ИначеЕсли ТипТранзакции = 63 Тогда
			// Z-отчёт
			Если Объект.Параметры.КритичныеОперации Тогда
				Попытка
					НомерСмены		= Число(СтрПолучитьСтроку(ТекущаяСтрока, 9));
					Выручка		= Число(СтрПолучитьСтроку(ТекущаяСтрока, 10));
					Наличность	= Число(СтрПолучитьСтроку(ТекущаяСтрока, 11));
					СменныйИтог = Число(СтрПолучитьСтроку(ТекущаяСтрока, 12));

				Исключение
				КонецПопытки;
			КонецЕсли;

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

Для автоматизации загрузки Z-отчетов нужно передать по функциям пустую табличку с полями z-отчета и заполнить ее в указанном участке кода, а по возврату таблицы из функций - создать документ _ZОтчетФискальный в  модуле обработки «ТОСервер».

Нам этот способ не подходил, поскольку АТОЛ не выдает накопление (ГРОСС ИТОГ) и возвраты, а их проверка была жизненно необходима.

Мы пошли другим путем, написали свою POS  систему и сведения брали из драйвера ККМ в полном объеме в виде XML.

Пример xml

О обработках по автоматической загрузке данных с ККМ в 1С парсим приходящие файлы XML от ККМ.

Функция ЗагрузитьXML_reg(ПолноеИмяФайла) Экспорт    
	Перем ПостроитьДУМ,ДокументДУМ;
	ПостроитьДУМ = Новый ПостроительDOM; 
	ПолучитьКорневойУзелXMLФайла(ПолноеИмяФайла,ПостроитьДУМ,ДокументДУМ);
	Если ДокументДУМ=Неопределено Тогда
		Возврат Ложь;
	КонецЕсли;
	КорневойУзел = ДокументДУМ.ПервыйДочерний;
	Если КорневойУзел=Неопределено Тогда
		Возврат Истина;
	КонецЕсли;
	
//...
	ЕстьОшибки = Ложь;
	Если КорневойУзел.ЕстьДочерниеУзлы() Тогда
		Для Каждого Узел_entry ИЗ КорневойУзел.ПолучитьЭлементыПоИмени("Документы") Цикл
			Если Узел_entry.ЕстьДочерниеУзлы() Тогда
//…
				Для Каждого Узел_requests ИЗ Узел_entry.ПолучитьЭлементыПоИмени("Документ.ZОтчёт") Цикл  //ZОтчет
					СтруктураДок = Новый Структура("ИДОтчета,НомерГашения,НомерСмены,ДатаККМ,НомерККМ,СуммаВыручки,СуммаВозвратов,СуммаВКассе,СуммаПрихода,СуммаНеобнуляемая","",0,0,Дата(1,1,1),"",0,0,0,0,0);
					Для Каждого УзелРеквизитЭлемента ИЗ Узел_requests.ПолучитьЭлементыПоИмени("*") Цикл
						ТекИмяУзла = УзелРеквизитЭлемента.ИмяУзла;
						ТекЗначениеУзла = СокрЛП(УзелРеквизитЭлемента.ТекстовоеСодержимое);
						Если ТекИмяУзла="ДатаККМ"  Тогда
							СтруктураДок.Вставить(ТекИмяУзла,ПолучитьДатуВремяИзСтроки(ТекЗначениеУзла,6)); 
						ИначеЕсли ТекИмяУзла="СуммаВыручки" ИЛИ ТекИмяУзла="СуммаВозвратов" ИЛИ  ТекИмяУзла="СуммаВКассе" ИЛИ  ТекИмяУзла="СуммаПрихода" ИЛИ  ТекИмяУзла="СуммаНеобнуляемая" Тогда
							СтруктураДок.Вставить(ТекИмяУзла,Число(ТекЗначениеУзла));
						Иначе
							СтруктураДок.Вставить(ТекИмяУзла,СокрЛП(ТекЗначениеУзла));
						КонецЕсли;
					КонецЦикла;//конец шапки документа
					НовЧек = ZОтчет.Добавить();
					НовЧек.ИДОтчета				=СтруктураДок.ИДОтчета;
					НовЧек.НомерГашения			=СтруктураДок.НомерГашения;
					НовЧек.НомерСмены			=СтруктураДок.НомерСмены;
					НовЧек.ДатаККМ				=СтруктураДок.ДатаККМ;
					НовЧек.НомерККМ				=СтруктураДок.НомерККМ;
					НовЧек.СуммаВыручки			=СтруктураДок.СуммаВыручки;
					НовЧек.СуммаВозвратов		=СтруктураДок.СуммаВозвратов;
					НовЧек.СуммаВКассе			=СтруктураДок.СуммаВКассе;
					НовЧек.СуммаПрихода			=СтруктураДок.СуммаПрихода;
					НовЧек.СуммаНеобнуляемая	=СтруктураДок.СуммаНеобнуляемая;
					НовЧек.СсылкаZОтчета		= ПолучитьДокZОтчетПоИД(СтруктураДок.ИдОтчета, СтруктураДок.ДатаККМ);
				КонецЦикла;
			КонецЕсли;
			
		КонецЦикла;
	КонецЕсли;
	
	
	Возврат ЕстьОшибки;
КонецФункции

Отдельно загружает загруженную таблицу z-отчетов

Функция ПолучитьКассуККМПоСерийномуНомеру(СерНомер)
	Запрос = новый Запрос;
	Запрос.УстановитьПараметр("СерНомер", СерНомер);
	Запрос.Текст= "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	КассыККМ.Ссылка
	|ИЗ
	|	Справочник.КассыККМ КАК КассыККМ
	|ГДЕ
	|	КассыККМ.СерийныйНомер = &СерНомер";
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Количество() = 0 тогда 
		Сообщить("Не удалось найти кассу с серийным номером " + СерНомер +" !!!");
		Возврат Неопределено;
	ИначеЕсли Выборка.Количество() > 1 тогда 
		ТекстЗаголовок = "В базе найдено две Кассы с одинаковым серийным номером"; 
		Сообщить(ТекстЗаголовок);
		Возврат Неопределено;
	ИначеЕсли Выборка.Количество() = 1 тогда 
		Выборка.Следующий();
		
		Возврат Выборка.Ссылка;
	КонецЕсли;	
	
КонецФункции	

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

Процедура СоздатьДокументыZОтчеты(Кнопка)
	// Вставить содержимое обработчика.
	Если ZОтчет.Количество() = 0 тогда 
		Сообщить("Нет Z-Отчетов доступных для загрузки");
	КонецЕсли;
	ДЛя Каждого Ст Из ZОтчет Цикл 
		Если Ст.СоздатьZ тогда 
			ДокZ = Документы._ZОтчетФискальный.СоздатьДокумент();
			ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ДокZ);
			ДокZ.Дата = Ст.ДатаККМ;
			//Проверим организации
			Если ДокZ.Организация.Пустая() тогда 
				Организация = Справочники.Организации.НайтиПоКоду("000000001");
				Если Организация = Неопределено тогда 
					Сообщить("Не удалось установить организацию");
					Возврат;
				КонецЕсли;
				ДокZ.Организация = Организация;
			КонецЕсли;
			КассаККМ = ПолучитьКассуККМПоСерийномуНомеру(Ст.НомерККМ);
			Если не КассаККМ = Неопределено тогда 
				ДокZ.ККМ = КассаККМ;
			Иначе
				Возврат;
			КонецЕсли;
			
			Если ДокZ.Ответственный.Пустая() Тогда 
				ДокZ.Ответственный = ПараметрыСеанса.ТекущийПользователь;
			КонецЕсли;
			ДокZ.НачальныеСведения = ПроверитьПервыйВвод(ДокZ.ККМ);
			ДокZ.Подразделение = Подразделение;
			ДокZ.Возвраты 		= Ст.СуммаВозвратов;
			ДокZ.Выручка  		= Ст.СуммаВыручки;
			ДокZ.Накопление 	= Ст.СуммаНеобнуляемая;
			ДокZ.НомерГашения   = Ст.НомерСмены;
			ДокZ.СуммаДокумента =ДокZ.Выручка-ДокZ.Возвраты-ДокZ.Неиспользованные;
			ДокZ.Комментарий    = "АвтоСоздание ##"+Ст.ИДОтчета+"##";  
			Попытка
				ДокZ.Записать(РежимЗаписиДокумента.Проведение);
				Ст.СоздатьZ = Ложь;
			Исключение
				Сообщить("Документ не удалось записать и провести!!! " + ОписаниеОшибки());
				ДокZ.Записать(РежимЗаписиДокумента.Запись);
				Ст.СоздатьZ = Ложь;
			КонецПопытки; 
			Ст.СсылкаZОтчета = ДокZ.Ссылка;
		КонецЕсли;	
	КонецЦикла;		
	
КонецПроцедуры

 

В РЕЗУЛЬТАТЕ:

Теперь у нас за несколькими сотнями ККМ наблюдает один бухгалтер, благодаря автоматической загрузке и единой проверке ошибок.

Настало время переходить на сверку данных не с ККМ, а с ОФД. Но это тема уже для следующих статей.

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
2. Goruch 8 07.06.18 13:27 Сейчас в теме
Я правильно понимаю, что вы сверяете данные полученные и кассовой pos системы с данными в товароучетной системе?
Т.к. я не нашел никакого упоминание о том, как вытащить данные по z-отчету напрямую из кассы.
3. dima_home 117 08.06.18 10:46 Сейчас в теме
Мы сверяем данные о продажах и поступлении денежных средств, отраженные в учетной системе-1С с реальными чеками, пробитыми в ККМ, посредством ручного переноса контрольных сведений(дублирование) с чека ККМ "Z-ОТЧЕТ" в документ 1С "z-отчет" и их дальнейшее автоматическое сравнение.

Когда ККМ много, как у нас, бухгалтеру слишком сложно переносить с печатного чека ККМ "Z-ОТЧЕТ" сведения (ВЫРУЧКА,НОМЕРСМЕНЫ,ВОЗВРАТ_ПРИХОДА,ГРОСС_ИТОГ,НОМЕР_СМЕНЫ) в 1С, и тогда можно автоматизировать процесс получения данных Z-ОТЧЕТА напрямую из ККМ или из POS.

Сегодня можно уйти с пути получения контрольных сведений из ККМ в сторону получения контрольных сведений непосредственно из ОФД. Правда пока операторы ОФД не предоставляют API, но всегда есть выгрузки CSV за период.
4. dima_home 117 08.06.18 10:52 Сейчас в теме
Еще об автоматизации получения данных по z-отчету.
Драйвер ККМ АТОЛ при передачи задания на закрытие смены в кассу, возвращает все сведения, напечатанные в чеке Z-Отчет в POS систему. В свою очередь, POS системы АТОЛ при закрытии смены пишут в лог файл report лишь часть данных о z-отчете.

Поскольку мы для своей сети магазинов писали свою POS систему с нуля, то брали полные данные непосредственно из драйвера ККМ и передавали их в 1С уже сами через XML.
5. Bosma 69 08.06.18 12:09 Сейчас в теме
Интересная публикация. Смежный вопрос: Если используется в качестве POS системы АТОЛ, и соответственно смену в ККМ закрывает именно эта система, можно ли из другой внешней программы (пусть та же 1С) через драйвер ККМ получить данные напечатанные в Z-Отчете? У Вас, насколько я понял, совя POS система именно в момент закрытия смены ККМ получает ответ о Z-Отчете и складывает его в xml. Вопрос в том, что можно ли получить данные Z-Отчета из ККМ уже после закрытия смены.
7. dima_home 117 08.06.18 14:57 Сейчас в теме
К сожаление дважды войти в реку нельзя... то есть, либо вы закрываете смену в POS системе АТОЛ и она понимает это событие и соответственно закрывает у себя смену, либо вы сами пишете всю POS систему и делает что хотите.


Что касается прямого обращения к ККМ, можешьтут посмотреть ... даже есть примеры на C++. Можно например не закрывать смену, а попробовать получить с сведения по последней операции.


PS:/Отдельно: "ГРОСС ИТОГ".
Из POS АТОЛА можно получать строку с кодом 63... я писал в 3 ЭТАПЕ... но тогда придётся отказаться от контроля накопления (ГРОСС ИТОГА).
Как рассказывали тех.инженеры компании АТОЛ, когда мы разбирались, почему иногда ККМ не верно считает ГРОСС ИТОГ в новых ККМ, они сказали что ГРОСС ИТОГ не ведется в ФН (который подписывает чеки перед передачей в ОФД), он даже не хранит его, как это было раньше в ЭКЛЗ. Хранение и расчет ГРОСС ИТОГА сегодня возложен на сам ККМ, а она иногда, пробивая чеки не достоверно понимает статус(результат) пробития чеков. Это, кстати, та-же причина расхождения данных ККМ и 1С, когда ККМ (прямо подсоединенный к 1С) возвращает код ошибки при пробитии чека (например бумага закончилась), 1С считает что чек не пробит, а заходишь в ОФД, чек уже пробит.
6. Goruch 8 08.06.18 14:55 Сейчас в теме
Вы сказали:

Поскольку мы для своей сети магазинов писали свою POS систему с нуля, то брали полные данные непосредственно из драйвера ККМ и передавали их в 1С уже сами через XML.

Скажите, подкскажите каким образом вы получали данные о z-отчетах с ККМ?
Это какой-то обмен/запрос с ФР? Если да то подскажите где по -этому поводу почитать.
8. Denger 13.06.18 08:03 Сейчас в теме
(6)http://partner.atol.ru/files/dc/590/Drivers8_Um.pdf

ККМ хранит данные в регистрах. Посмотреть можно в прикрепленном скриншоте

Например, //ВНЕСЕНИЯ
driver.CheckType=1;
	driver.RegisterNumber=4;
	driver.GetRegister();
	ВНЕСЕНИЙ=Формат(driver.Summ,"Ч4.2");
	//ВЫПЛАТЫ
	driver.RegisterNumber=5;
	driver.GetRegister();
	ВЫПЛАТ=Формат(driver.Summ,"Ч4.2");
	
	
	Инкассация=ВозвратПараметра(10,0,0);
	Выручка=ВозвратПараметра(11,0,0);
	
	//КОЛ ПРОДАЖ
	driver.RegisterNumber=6;
	driver.CheckType=1;
	driver.GetRegister();
	КолПродаж=Формат(driver.count,"Ч(0)4");
	//КОЛ ВОЗВР
	driver.RegisterNumber=6;
	driver.CheckType=2;
	driver.GetRegister();
	КолВозв=Формат(driver.count,"Ч(0)4");
	
	//НОМЕР ККМ	
	driver.RegisterNumber=22;
	driver.GetRegister();
	НОМККМ=driver.SerialNumber;
	
	//НОМЕР СМЕНЫ, ДАТА
	driver.RegisterNumber=17;
	driver.GetRegister();
	НОМСМЕНЫ=driver.session;
	г=driver.Year;
	м=driver.Month;
	д=driver.Day;
	ДАТАСМЕНЫ=Дата(г,м,д);
Показать
Прикрепленные файлы:
9. dima_home 117 14.06.18 09:13 Сейчас в теме
гросс итог можно получить
driver.RegisterNumber=14;
//14 - Необнуляемая сумма после последней перерегистрации + сменный итог текущей смены (Summ)
driver.OperationType=0;
//0 – продажа;1 – покупка;2 – возврат продажи; 3 – возврат покупки.
driver.GetRegister();
НеобнуляемаяСумма=Формат(driver.count,"Ч(0)4");


Я вам советую направить силы не по съему данных с ККМ, а по съему данных с ОФД.

Хотя и в этом направлении еще много препятствий. Например наше ОФД - "Платформа О-Ф-Д" совсем сдурела - за возможность получить данные о ККМ требует оплату по 300 рублей в месяц за каждую ККМ. У нас более 400 касс это получается более 120'000 рублей в месяц. Легче посадить бухгалтера, который будет выгружать CSV за месяц, и его уже сверять в 1С внешней обработкой. Чтоб они от жадности лопнули ;)
12. dima_home 117 02.11.18 10:46 Сейчас в теме
Из практики
(9)
Например наше ОФД - "Платформа О-Ф-Д" совсем сдурела

Принято решение переходить на ОФД ТАКСКОМ... у них АПИ бесплатное (для нас по крайней мере)
10. Goruch 8 14.06.18 13:07 Сейчас в теме
У нас Контур. У него все хорошо и красиво, но нет API для того чтобы считать данные из ОФД в автоматизированном режиме...
Вот по-этому думаю как данные автоматизированно получать....
Плюс на данных из ОФД нет номера чека. Есть номер ФД и номер чека за смену, а это не та номера...
11. popenko 31.10.18 12:02 Сейчас в теме
понравился ваш подход. но есть вопрос, чисто практический - У вас много касс, а как работается бухгалтеру с формой списка документа (z-отчеты), может надо закладки хотя бы по подразделениям типа infostart.ru https://infostart.ru/public/16536/ или это лишнее? Я задал вопрос со стороны бухгалтера - если надо что -то посмотреть (найти, сравнить, да мало ли еще чего).
И еще не заметил.... может для подстраховки организовать хранилище с файлами из пос-системы
справочник -ХранилищеВнешнихФайлов
реквизиты - объект - документ ZОтчетФискальный
и Файл с типом ХранилищеЗначения
что вы на это скажите, исходя из большого кол-ва касс это надо или нет?
Прикрепленные файлы:
13. dima_home 117 02.11.18 11:33 Сейчас в теме
Напишите ваше сообщение
(11)
Журнал нужен лишь во время разбора полетов. С ним как правило работает только ревизор.
Он делает отбор по кассе и смотрит все z-отчеты кассы в хронологии.
Единственное в журнале есть колонка "Начальные сведения" - это булево является "красным" флагом для проверки - означает что бухгалтер начал подсчет ГРОСИТОГа или НОМЕРА СМЕНЫ с начало, без сверки с предыдущим z-отчетом.
Снимок1

За всеми кассами следит один бухгалтер-ревизор запуская единую проверку (сразу по всем ККМ), которая все и проверяет (пишу статью по этой единой проверке...).
Снимок2

А сам момент загрузки с касс, например от торговых представителей выглядит так:
Бухгалтер филиалов когда принимает от представителя выручку... может сразу увидеть все продажи, все чеки и все z-отчеты торгового представителя за всю смену его работы.
Снимок3
А потом нажав кнопочку выделить все, и нажав кнопки создать документы... загружает их в базу.

Для POS систем нет интерфейсов - из магазинов все грузится автоматом, без участия человека.
Прикрепленные файлы:
Оставьте свое сообщение

См. также

Расширение типового функционала работы с ККМ в 1с Розница 1.0 (добавление произвольного количества типов оплаты) Промо

ККМ v8 Розница Бесплатно (free)

У одного клиента,занимающегося розничной торговлей, появилась необходимость разделять продажи по типам оплаты в Z-отчете с бОльшим разнообразием,чем позволяет типовой функционал работы с ТО. Т.е. стандартную разбивку на наличную и безналичную оплату расширить до нал,оплата по платежным картам(безнал),банковским кредитам.В то же время исключить кредит из секции «оплата по безналу». Почему возникла такая потребность?Все просто,в бэк-офисе так проще сверять Отчет о розничных продажах с Z-отчетом.

28.02.2013    49808    0    ranger    17    

Анализ работы внешней обработки сервиса МодульКасса применительно к задаче фискализации чеков при доставке

Кассовые операции WEB v8 УТ11 Россия Бесплатно (free)

В статье разберу работу внешней обработки для работы с МодульКасса, опишу недочеты и применимость для организации доставки, предложу собственный вариант реализации.

11.02.2020    1917    0    malikov_pro    0    

Одна ККТ для розничного магазина и Интернет-сайта

Розничная торговля ККМ v8 Россия Бесплатно (free)

Опыт использования одной онлайн-кассы для приема платежей в розничном магазине и на Интернет-сайте: технические подробности.

23.01.2020    3356    0    sivin-alexey    10    

Подключение АТОЛ 91/92Ф к 1С:Касса

ККМ Кассовые операции Кассовые операции v8 1cv8.cf Россия Бесплатно (free)

Т.к. я не нашел данной информации в гугле (возможно, плохо искал), решил, что нужно оставить эту статью здесь, может, поможет кому.

10.09.2019    6282    0    rule_2    6    

Чеки ККМ для расчетов с ИП по безналу. Новые обязательные реквизиты в чеке

Практика программирования ККМ Оптовая торговля Оптовая торговля Разработка v8 v8::ОУ УТ11 УУ Бесплатно (free)

Новые требования законодательства по пробитию чеков ККМ при расчетах с индивидуальными предпринимателями по безналу. Нюансы подключения интеграционной компоненты ДТО 10.5.0 на примере кассы ККТ АТОЛ 11Ф и конфигурации 1С УТ 11.4. Необходимые доработки типовой конфигурации УТ 11.4 для вывода на печать новых обязательных реквизитов: покупатель, ИНН, ГТД, страна происхождения.

22.07.2019    13777    0    ids79    16    

Оформление простых розничных продаж и возвратов в УТ 10.3.50.2 и некоторые особенности этого процесса

Бухгалтерский учет Кассовые операции Розничная торговля Кассовые операции Розничная торговля v8::ОУ УТ10 Розничная и сетевая торговля (FMCG) Россия УУ Бесплатно (free)

В данной короткой статье я хотел осветить наиболее простые случаи оформления розничных продаж и последующих возможных возвратов товаров в 1С УТ 10.3.50.2 с использованием фискального регистратора от фирмы Штрих М. Без сомнения тема является более глубокой т.к. есть ещё оптовые продажи, продажи в кредит, авансы. Рад буду если кто то дополнит моё повествование. Нацелено оно на старших и рядовых кассиров. Небольших торговых предприятий занимающихся розничной торговлей. Хотел бы что бы данная статья была со временем дополнена всеми нюансами оформления продаж и освещением использования всего набора инструментов онлайн касс, ОФД и ИФНС в современной торговле.

03.04.2019    8296    0    Umka23    7    

AltLinux + ККТ Атол 30Ф (55Ф) + сканер штрих-кода

Администрирование данных 1С ККМ Сканер штрих-кода Кассовые операции Розничная торговля Кассовые операции Розничная торговля v8 Розница Россия Бесплатно (free)

Описание опыта настройки контура AltLinux + платформа 1С 8.3 + Розница 2.2 базовая + сканер штрих-кода + ККТ 30Ф (55Ф).

14.02.2019    5571    0    Ceboo    4    

Возврат товаров, проданных в прошлых кассовых сменах, через Чек ККМ на возврат

Кассовые операции Практика программирования Кассовые операции v8 УТ11 Россия Бесплатно (free)

В Управлении торговлей 11.4 разработчики зачем-то сделали возможность делать "Чек ККМ на возврат" для Чеков ККМ, сделанных прошлыми датами. Причем чек на возврат создается и печатается, но потом при закрытии смены формируется "Отчет о розничных продажах", который ставит отрицательное количество по возвращенным позициям. Это в свою очередь ведет к тому, что с включенным контролем остатков этот "Отчет о розничных продажах" не проводится.

19.01.2019    7135    0    nagimo    26    

Работа с кассой Atol через веб-сервер ДТО-10

Внешние источники данных ККМ Фискальный регистратор Кассовые операции Кассовые операции v8 Россия НДС Бесплатно (free)

Поддержка многопользовательской печати на одном устройстве ККТ. Поддержка изменений в законодательстве (Переход на ФФД 1.05 и НДС 20%).

31.12.2018    29193    0    medangel    41    

Печать Чека ККМ из Платежного поручения входящего. КА 1.1

Практика программирования Кассовые операции ККМ Кассовые операции v8 КА1 Бесплатно (free)

Доработка КА 1.1 для печати чека из платежного поручения входящего.

23.11.2018    9121    0    dima_finne    10    

Фискальный чек из 1С:Управление торговлей 10.3

Практика программирования Кассовые операции Кассовые операции v8::ОУ УТ10 Россия Бесплатно (free)

Способ в фискальном чеке из документа "Реализация товаров и услуг" УТ 10.3. печатать "полный расчет" и "наличные".

16.10.2018    7524    0    rch    2    

Внесение денежных средств в ККМ прямо из РМК

Практика программирования Кассовые операции Кассовые операции v8 Розница Розничная и сетевая торговля (FMCG) Россия Бесплатно (free)

В типовом механизме внесения ДС в кассу ККМ требуется наличие расходного кассового ордера, но основании которого будет создан документ "Внесение денежных средств в кассу ККМ". Если его нет (и соответственно остатков по РН "ДенежныеСредстваКПоступлениюНаличные"), то выводится сообщение "Нет документов по внесению ДС" (в противном случае открывается список РКО, на основании которых требуется создать внесение ДС). Данная доработка позволяет автоматически создать РКО (с видом операции "Выдача денежных средств в кассу ККМ") вместо выдачи сообщения об отказе и звонку бухгалтеру/администратору.

12.10.2018    4611    0    triviumfan    0    

Прикладной пример переработки стандартной формы РМК - Розница

Работа с интерфейсом Кассовые операции Розничная торговля Кассовые операции Розничная торговля v8 Розница УУ Бесплатно (free)

Простой пример, как с помощью программного изменения шрифтов элементов формы достичь наилучшего результата отображения на примере формы РМК.

04.10.2018    17203    0    asdfgcom    58    

Авансы, кредиты и предоплаты. Примеры чеков ФФД 1.05

ККМ Розничная торговля Розничная торговля v8 УТ11 Розничная и сетевая торговля (FMCG) Россия БУ Бесплатно (free)

В публикации рассмотрено, как должны выглядеть корректные чеки ФФД 1.05 при авансах, кредитах и предоплатах. Чеки получены с помощью демонстрационной базы 1С:Управление торговлей 11.4.5.54 (Платформа 8.3.11.3034).

30.07.2018    41276    0    vasilievil    28    

Отправка http запросов с Дайджест-аутентификацией из 1С на примере кассового аппарата MG N707TS

ККМ v8 1cv8.cf Украина Бесплатно (free)

Возникала необходимость использовать кассовый аппарат MG N707TS под ubuntu, как известно, COM объекты не поддерживаются. На самом деле не все так сложно! Расписывать долго не буду, смотрите "Процедура КнопкаСформироватьНажатие" , может кому пригодится.

16.07.2018    6238    0    IgKR    8    

Чеки ККМ онлайн касс Атол на конфигурации КА 1.1

ККМ Кассовые операции Кассовые операции v8 КА1 Россия Бесплатно (free)

Онлайн касса печатает тип СНО УСН, хотя организация работает на ЕНВД.

13.07.2018    9838    0    dima_finne    6    

Подключение и настройка ККТ АТОЛ 22Ф / FPrint-22ПТК к конфигурации УТ 10.3

Кассовые операции ККМ Кассовые операции v8 v8::ОУ УТ10 Россия Бесплатно (free)

Опыт подключения и настройки онлайн-кассы "АТОЛ 22Ф / FPrint-22ПТК" к 1С конфигурации "УТ 10.3".

25.06.2018    40403    0    MarcoPolo3    31    

Подключение онлайн кассы (ККМ) ATOL к УТ 10.3 в терминале. Личный опыт

ККМ Кассовые операции Кассовые операции v8 БП2.0 УТ10 Бесплатно (free)

Использование Онлайн Кассы на Windows HOME c драйвером без цифровой подписи. Проброска портов для ККМ. Использование компьютера с кассой в качестве сервера для быстрой печати чеков через терминал без использования сквозных COM портов.

10.05.2018    27204    0    pridecom    26    

Настройка ККТ с передачей данных. 1С: 8.3

ККМ Кассовые операции Розничная торговля Кассовые операции Розничная торговля v8 Розница Россия Бесплатно (free)

Настройка ККТ в 1С после замены фискального регистратора АТОЛ 30Ф.

04.04.2018    49013    0    user949167    3    

Ошибка печати чека на ККМ Атол FPrint22. ПоследующаяОплата (Кредит) вместо Электронными. Розница 2

Адаптация типовых решений ККМ Кассовые операции Розничная торговля Кассовые операции Розничная торговля v8 Розница Россия Бесплатно (free)

При печати чека на FPrint22 неожиданно выяснилось, что вместо Электронными (пробивали по платежной карте) в чеке вставало на вид оплат ПоследущаяОплата (Кредит).

22.01.2018    27274    0    ah7777777    15    

Как печатать чеки с разными видами деятельности на онлайн-кассе

ККМ Кассовые операции Розничная торговля Кассовые операции Розничная торговля v8::ОУ УТ10 Россия ИП, ПБОЮЛ, КФХ Бесплатно (free)

Как печатать чеки по разным видам деятельности (с НДС и БЕЗ НДС) для одной организации и одного кассового аппарата, не используя сторонних доработок.

17.10.2017    19796    0    serpolit    11    

Редактирование шаблона чека ККТ

Фискальный регистратор Кассовые операции Кассовые операции v8 УТ10 УТ11 Россия Бесплатно (free)

Добрый день. Думаю, волна вопросов по подключению онлайн-касс к 1С уже позади, достаточно просто полистать данный ресурс, поэтому можно переходить на новый уровень. С изменением ФР на ККТ изменился формат обмена между 1С и оборудованием и стало намного сложнее управлять формой чека. В этой статье я расскажу, какие методы изменения формы чека я нашел и попробовал, данная статья относится к ККТ фирмы АТОЛ, т.к. на остальных я не тестировал.

01.10.2017    77177    0    tjurikov_ivan    45    

Подключение ККТ (Торгового оборудования) в разрезе Пользователя или Клиента RDP

ККМ Кассовые операции Кассовые операции v8 1cv8.cf Бесплатно (free)

Старые конфигурации (Комплексная автоматизаци 1.1, УТ 10.3...) не поддерживают разрез пользователей или клиентов RDP при подключение кассового оборудования. Решил немного освежить идею статьи https://infostart.ru/public/197612/ и комментарии Сергея Муравьёва и Сергея Капустина собрав воедино. В этой статье-заметке вы узнаете, как с минимальными доработками изменить видимость ККТ в разрезе пользователей или терминальных сессий по RDP даже с вводом новых документов по работе с ККТ.

28.09.2017    23836    0    rpgshnik    24    

Комплексное решение для малого бизнеса: 1С:УНФ + онлайн-касса "ШТРИХ-МPAY-Ф"

ККМ Кассовые операции Кассовые операции v8 Россия Бесплатно (free)

Фирма "1С" представляет новый программно-аппаратный комплекс для интернет-магазинов, предпринимателей и компаний сферы торговли и услуг, предпочитающих облачные решения, а также для тех, кто торгует алкоголем и кому в связи с этим необходимо обеспечить поддержку ЕГАИС.

29.08.2017    15900    0    user818734    5    

Ошибка интерфейса ЭКЛЗ/ФН1 или как правильно подключать фискальные регистраторы АТОЛ без ФН/ЕНВД

Фискальный регистратор Кассовые операции Кассовые операции v8 Россия Бесплатно (free)

В статье описывается решение проблем с подключением фискальных регистраторов АТОЛ без ФН/ЕНВД к 1С 8. Устранение ошибки, возникающей при попытке пробить чек: "Чек не напечатан на устройстве для печати чеков. Ошибка интерфейса ЭКЛЗ/ФН1".

12.08.2017    38467    0    Stan    11    

Способы решения ошибок при настройке кассы ККТ для ФЗ-54

ККМ Кассовые операции Кассовые операции v8 1cv8.cf Россия Бесплатно (free)

Решение ошибок: 1. "При выполнении операции произошла ошибка: FFFFFFF8h, Смена открыта, программирование налогов невозможно" 2. "При выполнении операции произошла ошибка: 37h, Команда не поддерживается в данной реализации" 3. "Касса через какой то период перестает отправлять данные в налоговую"

31.05.2017    91473    0    lightvdv    55    

Внедрение ККМ Онлайн в сторонние конфигурации 1С

ККМ Кассовые операции Розничная торговля Фискальный регистратор Кассовые операции Розничная торговля v8 1cv8.cf Бесплатно (free)

В данной статье мне бы хотелось поделиться опытом внедрения ККМ онлайн (Атол 11Ф) в одну из сторонних конфигураций 1С. Надеюсь, что она поможет сэкономить время моим коллегам, которые столкнулись с ситуацией, когда есть конфигурация, но ее поддержка разработчиком уже давно прекращена. В статье мы рассмотрим общие моменты, которые позволят "подружить" ее с онлайн кассами.

22.04.2017    66640    0    lord_soth    28    

54 ФЗ своими руками

ККМ Кассовые операции Розничная торговля Кассовые операции Розничная торговля v8 Розница Розничная и сетевая торговля (FMCG) Россия УУ Бесплатно (free)

Практический опыт внедрения изменений в 54ФЗ в розничной сети, работающей на 1С. Если вы не хотите платить каким-либо подрядчикам, которые "всё сделают и настроят за вас", то статься может оказаться крайне полезной.

17.04.2017    57036    0    comol    124    

Несколько видов оплат в Чеке ККМ и Z-отчете, разделение по секциям в X отчете

Практика программирования Кассовые операции Розничная торговля Кассовые операции Розничная торговля v8 Розница Россия УУ Бесплатно (free)

В данной статье вы сможете найти описание того, как реализовать несколько видов оплат в чеке ККМ, разделение по видам оплат в Z-отчете, а также посекционный вывод в X-отчет в 1С: Рознице 8.2 в связке с фискальными регистраторами Штрих.

25.01.2017    11906    0    dmitzin    2    

Практика подключения ККМ онлайн

ККМ Кассовые операции Розничная торговля Кассовые операции Розничная торговля v8 Россия Бесплатно (free)

С 1 июля 2017 года большинство юридических лиц и индивидуальных предпринимателей работающие с наличными должны использовать контрольно-кассовую технику(ККТ) в режиме онлайн или проще говоря перейти на онлайн кассы. Расскажу на практическом примере, как я подключал и зарегистрировал кассу ATOL FPrint 90Ф.

13.12.2016    286044    0    79044970523    797    

Использование графического планшета для подписи в 1С

Кассовые операции Практика программирования Кассовые операции v8 Россия Бесплатно (free)

Есть у нас рабочие места, в которых происходит выдача денег/товаров и т.п. в которых человек расписывается о получении материальных ценностей. После этого печатная форма печатается, отдается на подпись, сканируется, прикрепляется в 1С, затем уничтожается в шредере. Возникла идея отказаться от 3 действий (печать + сканирование + уничтожение в шредере) и воспользоваться графическим планшетом с функцией захвата подписи.

13.10.2016    21875    0    Red_Devil    47    

Важные изменения в 54-ФЗ: какой будет ККМ в 2017 году

Кассовые операции Розничная торговля Фискальный регистратор ККМ Кассовые операции Розничная торговля v7.7 v8 Розничная и сетевая торговля (FMCG) Россия Бесплатно (free)

Уже начиная с апреля 2016 года нас ждут довольно серьезные изменения по передаче данных о продажах в налоговую. Не только ожесточится контроль над тем, сколько мы продаем, но и изменятся сами ККМ.

11.05.2016    93633    0    alis112358    80    

Не смогли определить доступный магазин или доступные кассы ККМ. Обратитесь к Администратору системы

Администрирование данных 1С ККМ Кассовые операции Кассовые операции v8 Розница Розничная и сетевая торговля (FMCG) Бесплатно (free)

Иногда бывает, что, после включения рабочего места возникает ошибка «Не смогли определить доступный Магазин или доступные кассы ККМ. Обратитесь к Администратору системы».

04.12.2015    52653    0    Dima_    4    

Инструкция для кассиров, приступивших к работе в УТ11: Как включить подбор в чеке

Пользователю системы Кассовые операции Кассовые операции v8 УТ11 Розничная и сетевая торговля (FMCG) Россия Бесплатно (free)

Если вы только приступили к работе кассиром в программе под своей новой учетной записью и не знакомы с работой кассовых чеков в программах 1С, то открыв первый свой чек, вы не увидите формы подбора товаров с остатками.

04.02.2014    8609    0    ChaosHead    4    

Подключение торгового оборудования по rdp.

Розничная торговля ККМ Сканер штрих-кода Розничная торговля v8 КА1 УПП1 Россия УУ Бесплатно (free)

Задача следующая, есть две розничные точки и центральная оптовая. Пользователи работают в терминале на Win Server 2003, база находится на центральной точке, розничные подключаются по интернету. Необходимо подключить сканеры штрих-кода в центральной точке на складе и Сканеры и ФР в розничных точках. При чем в розничных точках один сканер должен переподключаться между кассовым узлом и компьютером в приёмке. Сканеры ШК - Datalogic QuickScan I QM2100 (беспроводной), Honeywell Eclipse 5145, ФР - Штрих-М-ФР-К. Все устройства с интерфейсом USB.

14.08.2013    129168    0    de0nis    37    

Формирование печати чека ККМ и Z - отчета по нескольким отделам магазина одновременно

Практика программирования ККМ Розничная торговля Розничная торговля v8 Розница Розничная и сетевая торговля (FMCG) Россия Бесплатно (free)

Статья на тему: как сделать так, чтобы из 1С Розницы (Розница Магазин Автозапчастей, Розница Магазин обуви и одежды) можно было распечатать ЧекККМ на несколько отделов.

02.08.2012    21838    0    rsvp201    3    

Счета-фактуры на аванс, БП 2.0 как есть

Пользователю системы Бухгалтерский учет Банковские операции Кассовые операции Оптовая торговля Банковские операции Кассовые операции Оптовая торговля v8 БП2.0 БУ НУ НДС Бесплатно (free)

Формирование авансовых счетов-фактур, вычет НДС с полученных авансов, как работает и от чего зависит в Бухгалтерии предприятия 2.0, в том числе и про 5 дней.

30.03.2012    29270    0    Yury1001    10