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

23.11.18

Задачи пользователя - Адаптация типовых решений

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

Небольшая предыстория: на 23.11.2018 с использованием последнего релиза 1.1.107.5 программисты компании 1с так и не дописали возможность печати кассового чека из ППВ. Последние надежды получить чек в этом году ушли, поэтому решил написать сам, тем более, что стоит отдать должное, в последнее время вся печать была настолько унифицирована компанией 1с, что её доработка и вставка в любые документы не составляет большого труда. 

И так, по порядку:

1. Открываем документ платежное поручение входящее, основную форму документа, справа снизу нажимаем на три точки (рядом с кнопкой "печать"), в открывшемся окне пишем название "Чек" и нажимаем на лупу у кнопки  "действие".

Вставляем в появившуюся процедуру "Процедура ОсновныеДействияФормыЧек(Кнопка)" следующий текст:

	Если НомерЧекаККМ <> 0 Тогда
		Предупреждение("Чек уже пробит на фискальном устройстве!", 60);
		Возврат;
	КонецЕсли;

	МассивФР  = ПолучитьСерверТО().ПолучитьСписокУстройств(
	                    Перечисления.ВидыТорговогоОборудования.ФискальныйРегистратор,
	                    Организация);
	МассивККТ = ПолучитьСерверТО().ПолучитьСписокУстройств(
	                    Перечисления.ВидыТорговогоОборудования.ККТ,
	                    Организация);
						
	МассивФУ = Новый Массив();
	ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивФУ, МассивФР);
	ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивФУ, МассивККТ);
	
	ФУ            = Неопределено;
	СписокФУ      = Новый СписокЗначений();
	Вид           = Неопределено;
	Представление = Неопределено;

	Для Каждого ФУ Из МассивФУ Цикл
		ПолучитьСерверТО().ПолучитьПредставлениеУстройства(ФУ, Вид, Представление);
		СписокФУ.Добавить(ФУ, Представление);
	КонецЦикла;

	КоличествоФУ = СписокФУ.Количество();
	Если      КоличествоФУ = 0 Тогда
		Предупреждение("Фискальное устройство не подключено!");
		ФУ = Неопределено;
	ИначеЕсли КоличествоФУ = 1 Тогда
		ФУ = СписокФУ[0].Значение;
	Иначе
		ФУ = СписокФУ.ВыбратьЭлемент("Необходимо выбрать фискальное устройство");
		Если ФУ = Неопределено Тогда
			Предупреждение("Операция отменена пользователем");
		Иначе
			ФУ = ФУ.Значение;
		КонецЕсли;
	КонецЕсли;

	Если НЕ ЗначениеЗаполнено(ФУ) Тогда
		Возврат;
	КонецЕсли;

	Если (НЕ Проведен) ИЛИ Модифицированность Тогда
		Ответ = Вопрос("Провести документ?", РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да);
		Если Ответ <> КодВозвратаДиалога.Да Тогда
			Предупреждение("Операция не выполнена!");
			Возврат;
		КонецЕсли;
	КонецЕсли;

//+ЛДВ 20-11-12
	Если ЭтотОбъект.Ответственный <> ПараметрыСеанса.ТекущийПользователь Тогда
		ЭтотОбъект.Ответственный = ПараметрыСеанса.ТекущийПользователь;
	КонецЕсли;
//-ЛДВ 20-11-12	
	
	ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
	
	Если (НЕ Проведен) ИЛИ Модифицированность Тогда
		Предупреждение("Операция не выполнена!");
		Возврат;
	КонецЕсли;
	
	ВидФУ = ПолучитьСерверТО().ПолучитьВид(ФУ);
	Если ВидФУ = ПредопределенноеЗначение("Перечисление.ВидыТорговогоОборудования.ФискальныйРегистратор") Тогда
		Позиция         = Неопределено;
		НомерСмены      = Неопределено;
		ТаблицаПлатежей = Новый ТаблицаЗначений();
		ТаблицаПлатежей.Колонки.Добавить("Заголовок");
		ТаблицаПлатежей.Колонки.Добавить("Сумма");
		ТаблицаПлатежей.Колонки.Добавить("НДС");

		Для Каждого Позиция Из РасшифровкаПлатежа Цикл
			СтрокаТаблицы           = ТаблицаПлатежей.Добавить();
			СтрокаТаблицы.Заголовок = "Принято от " + СокрЛП(Контрагент)
		    	                      + "
		        	                    |Основание: " + СокрЛП(ЭтотОбъект);
			СтрокаТаблицы.Сумма     = Позиция.СуммаПлатежа;
			СтрокаТаблицы.НДС       = УчетНДС.ПолучитьСтавкуНДС(Позиция.СтавкаНДС);
		КонецЦикла;

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

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

	КонецЕсли;


Отдельно советую обратить внимание на строку:

//+ЛДВ 20-11-12
	Если ЭтотОбъект.Ответственный <> ПараметрыСеанса.ТекущийПользователь Тогда
		ЭтотОбъект.Ответственный = ПараметрыСеанса.ТекущийПользователь;
	КонецЕсли;
//-ЛДВ 20-11-12

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

2. Добавляем реквизиты в объект (документ платежное поручение входящее)

- "НомерЧекаККМ", Тип число, длинна 8, точно 0

- "АдресЭП", Тип строка, длинна 255

- "ТекстЭлектронногоЧека",Тип строка, длинна 255

- "ККМ", тип СправочникСсылка.КассыККМ

3. Добавляем в таблицу "РасшифровкаПлатежа" следующий реквизит

- "ПризнакСпособаРасчета", Тип ПеречислениеСсылка.ПризнакиСпособаРасчета

Вот и все, обновляем конфигурацию и радуемся печати чека из платежного поручения входящего!

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

См. также

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    5618    14    5    

24

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3891    11    0    

29

Адаптация типовых решений Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    5068    dimanich70    15    

21

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    5371    dimanich70    9    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. karpik666 3829 25.11.18 19:23 Сейчас в теме
А можно использовать внешнюю печатную форму, и ничего не дорабатывать
4. dima_finne 72 14.12.18 09:16 Сейчас в теме
(1) Конечно можно, напишите её пожалуйста и выложите бесплатно. Да, с каждым новым релизом поддерживайте пожалуйста в актуальном состоянии и обновляйте. Также интересно как будете решать вопрос хранения номеров чеков и тех дополнительных реквизитов, которые я описал. Такое чувство, что написали ради того, чтобы написать.
5. karpik666 3829 14.12.18 09:32 Сейчас в теме
(4) а ваш вариант типо универсальный и его не нужно поддерживать? И для чего хранить номер чека в 1С? всю нужную информацию можно вносить в поле комментарий.
Замечу, что бесплатная печатная форма выложена, и ее можно скачать с Инфостарта.
8. dr2c 44 16.07.19 12:53 Сейчас в теме
(5) Дайте, пожалуйста, ссылку!
2. Dimka74 14.12.18 08:32 Сейчас в теме
Я прошу прощения , но не понял, что за ситуация такая, когда при поступлении ДС по безналу (ППВ) нужно ещё и чек пробивать?
3. dima_finne 72 14.12.18 09:13 Сейчас в теме
(2) Покупатель праве сам выбрать способ оплаты товары, в том числе он может оплатить товар через банк как частное лицо и приехать к Вам с платежкой. На поступление таких денег, согласно закону, мы тоже обязаны пробивать чеки. Но самое интересное, что должны пробивать в тот же день, когда покупатель оплатил, а мы можем об этом узнать только на следующий день, когда будем загружать выписки.... Ждем какого либо дополнения к закону....
6. Dimka74 14.12.18 13:08 Сейчас в теме
(3) О, спасибо, не знал! Не сталкивался с таким, у нас УСН+ЕНВД, деньги что по безналу приходят сразу на УСН пускаем, мне вот интересно, а можно при таком сочетании безнальные деньги по ЕНВД пустить, понятно, что с пробитием чека. Просто в таком случае с этой суммы я больше ни копейки налогов не заплачу, а вот по УСН 6%!
7. user1163735 26.02.19 07:31 Сейчас в теме
Добрый день!!! Подскажите пожалуйста что делать в данной ситуации, когда кассир пробил ошибочно чек из платежного поручения входящего.Чек пробился как безналичными по онлайн кассе и попал в ОФД в налоговую.Как теперь нам быть.Что в данном случае делать и какие операции оформлять?
10. belka23 06.08.19 08:47 Сейчас в теме
(7)У нас аналогичная ситуация, подскажите как решили проблему? Спасибо!
9. user949348 25.07.19 20:35 Сейчас в теме
Подскажите пожалуйста, если печатать чек из ППВ, где можно настроить вид оплаты - наличные или безналичные (или правильно платежная карта)?
Оставьте свое сообщение