Документ "Кассовая смена" (УТ 10.3)

1. guzel001 25.07.17 15:22 Сейчас в теме
Всем добрый день!
УТ 10.3 (10.3.42.1)
Есть ли возможность открывать документ "Кассовая смена" при пробитии первого чека при использовании ККТ с передачей данных? Может я упустила какие-либо настройки?

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

Понятное дело, что можно давать по рукам кассирам, которые забывают открыть смену, но они не победимы. Да и в БСП насколько я знаю, смена (если она закрыта) принудительно открывается первым чеком. Этот функционал действительно не реализован в УТ 10.3 или я упустила какую-то галку в настройках?
P.S. Торговля сильно дописанная, могла при обновлении что-то пропустить.
Куда копать?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alxarz 32 25.07.17 16:56 Сейчас в теме
(1)
P.S. Торговля сильно дописанная
функционал не реализован, но раз сильно дописанная, тогда ничто не мешает вставить пару строчек кода и либо просто не проводить чек либо автоматом открывать смену, так?
3. Denis_CFO 49 25.07.17 17:43 Сейчас в теме
(1) Перед записью пусть текущий чек посмотрит, что он у этой смены первый... и откроет её. Правильно в (1) сказали.
Там примерно вот так должно быть :
	Смена = Документы.КассоваяСмена.СоздатьДокумент();
		Смена .Дата = ТекущаяДата();		
		Смена .ФискальноеУстройство = "";//ИД экземпляра торгового оборудования
		Смена .НачалоКассовойСмены = КассоваяСменаОбъект.Дата;
		Смена .КассаККМ = КассаККМ;//Справочник.ТорговоеОборудование
		Смена .Организация = Организация;//Владелец кассы  - организация
		Смена .Статус = Перечисления.СтатусыКассовойСмены.Открыта;//или Ваш вариант, что там у вас в конфигурации
	        Смена .Записать(РежимЗаписиДокумента.Проведение);
4. alxarz 32 25.07.17 19:34 Сейчас в теме
(3)
Там примерно вот так должно быть
а можно вызвать функцию, которая вызывается при нажатии кнопки "Открыть смену".
5. wau8824ru 23 30.07.19 05:51 Сейчас в теме
(4)
а можно вызвать функцию, которая вызывается при нажатии кнопки "Открыть смену".

Для этого сделайте
Процедура ОткрытьКассовуюСмену(Команда)
Экспортной, то есть
Процедура ОткрытьКассовуюСмену(Команда) Экспорт

После чего в модуле ЧекККМ, в
Функция ПровестиИРаспечататьЧек(Ответ, Отказ, ФормаДокумента, РучнойРежимПечати = Ложь) Экспорт
, измените кусок кода, где 88 добавленный код
		Если ВидФУ = Перечисления.ВидыТорговогоОборудования.ККТ Тогда
			ОписаниеПКС = КассовыеСменыВызовСервера.ОписаниеПоследнейКассовойСмены(ФУ);
			//88(
			Попытка
				Если ОписаниеПКС = Неопределено ИЛИ ОписаниеПКС.Статус = Перечисления.СтатусыКассовойСмены.Закрыта Тогда
					ФормаСпискаКассоваяСмена = Документы.КассоваяСмена.ПолучитьФормуСписка();
					ФормаСпискаКассоваяСмена.ОткрытьКассовуюСмену(Истина);
					ОписаниеПКС = КассовыеСменыВызовСервера.ОписаниеПоследнейКассовойСмены(ФУ);
					Если ОписаниеПКС <> Неопределено И ОписаниеПКС.Статус <> Перечисления.СтатусыКассовойСмены.Закрыта Тогда
						ФормаСпискаКассоваяСмена.Закрыть();
					КонецЕсли;
				КонецЕсли;
			Исключение
				Предупреждение("Попытка открыть кассовую смену, программно, потерпела неудачу."+
								Символы.ПС+"Откройте кассовую смену вручную, для этого перейдите:"+
								Символы.ПС+"Сервис-> Торговое оборудование-> Работа с ККМ -> Кассовые смены."+
								Символы.ПС+"Сообщите о данной ошибке Администратору!");
				Если ОписаниеПКС = Неопределено ИЛИ ОписаниеПКС.Статус = Перечисления.СтатусыКассовойСмены.Закрыта Тогда
					Ответ = "Кассовая смена не открыта";
					Отказ = Истина;
					Результат = Ложь;
					Возврат Результат;
				КонецЕсли;
			КонецПопытки;
			//88)
			Если ОписаниеПКС = Неопределено ИЛИ ОписаниеПКС.Статус = Перечисления.СтатусыКассовойСмены.Закрыта Тогда
				Ответ = "Кассовая смена не открыта";
				Отказ = Истина;
				Результат = Ложь;
				Возврат Результат;
			КонецЕсли;
			ДопДанные.Вставить("ПорядокНалогообложения", ПорядокНалогообложения);
			ДопДанные.Вставить("ОписаниеПКС", ОписаниеПКС);
			Если Не ПустаяСтрока(АдресЭП) Тогда
				ДопДанные.Вставить("ПокупательEmail", АдресЭП);
			КонецЕсли;
			Результат = ФискализироватьЧек(ФУ, ДопДанные, Ответ, Отказ, ОшибкаТО);
		Иначе
Показать
, и чтобы смена была раньше первого чека в код записи после пробития добавьте
	Если НЕ ЗначениеЗаполнено(ОшибкаТО) Тогда
		ЧекПробитНаККМ = Истина;
		Попытка
			//88(
			ЭтотОбъект.Дата = ТекущаяДата();
			//88)
			Записать(РежимЗаписиДокумента.Запись);
		Исключение
			Ответ     = "Не удалось записать документ с установленными параметрами пробитого чека.";
			Отказ     = Истина;
			Результат = Ложь;
		КонецПопытки;
	Иначе
Показать
6. wau8824ru 23 30.07.19 06:51 Сейчас в теме
(5)
                Если ОписаниеПКС = Неопределено ИЛИ ОписаниеПКС.Статус = Перечисления.СтатусыКассовойСмены.Закрыта Тогда
                    ФормаСпискаКассоваяСмена = Документы.КассоваяСмена.ПолучитьФормуСписка();
                    ФормаСпискаКассоваяСмена.ОткрытьКассовуюСмену(Истина);
                    ОписаниеПКС = КассовыеСменыВызовСервера.ОписаниеПоследнейКассовойСмены(ФУ);
                    Если ОписаниеПКС <> Неопределено И ОписаниеПКС.Статус <> Перечисления.СтатусыКассовойСмены.Закрыта Тогда
                        ФормаСпискаКассоваяСмена.Закрыть();
                    КонецЕсли;
                КонецЕсли;

Нужно убрать
                    Если ОписаниеПКС <> Неопределено И ОписаниеПКС.Статус <> Перечисления.СтатусыКассовойСмены.Закрыта Тогда
                        ФормаСпискаКассоваяСмена.Закрыть();
                    КонецЕсли;
, так как не открывали форму.
Оставьте свое сообщение

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