Переход на новые требования фискального законодательства (54-ФЗ) и новые форматы фискальных данных (ФФД 1.05 и 1.2) застал врасплох многих пользователей платформы 1С:Предприятие 7.7. Устаревшие конфигурации, такие как «Торговля и Склад» (ТиС), релиз 7.70.1001, не содержат полноценных современных инструментов для интеграции с онлайн-кассами «из коробки». Тем не менее, настроить стабильную работу со старой доброй версией 7.7 вполне реально. В этой статье мы подробно разберем, как правильно подключить онлайн-кассу семейства «Штрих-М» (включая популярные аппараты «Штрих-Лайт 2.0»), доработать программный код конфигурации для передачи обязательных реквизитов в ОФД и настроить внутренние таблицы кассы, чтобы избавиться от лишнего мусора в печатной форме чека.
Типичная ошибка при первоначальной настройке торгового оборудования в обновленной ТиС 1001 — выбор типа оборудования «ККМ онлайн». В терминологии старой платформы 1С 7.7 это понятие относилось к автономным кассовым аппаратам, которые работают в режиме периодического обмена («оффлайн/онлайн» выгрузка товаров и загрузка продаж). Если вы используете полноценный кассовый аппарат, подключенный непосредственно к компьютеру под управлением драйвера, вам необходимо настраивать его как фискальный регистратор.
Правильный алгоритм действий при настройке:
shrih-m_105.ert или ее обновленный аналог).Для того чтобы касса не просто печатала бумажную ленту, но и отправляла в ОФД все требуемые законом реквизиты (ФИО кассира, его ИНН, адрес отправки электронного чека покупателю, признак способа расчета), нам потребуется внести изменения в код проведения документа ЧекККМ и глобальный модуль системы.
Рассмотрим пример реализации функции пробития чека непосредственно в модуле документа ЧекККМ:
Функция ПробитьЧекНаККМ()
Перем НомерЧека;
СписокТоваров = СоздатьОбъект("ТаблицаЗначений");
СписокТоваров.НоваяКолонка("ТовНаим" , "Строка");
СписокТоваров.НоваяКолонка("Цена" , "Число");
СписокТоваров.НоваяКолонка("ЦенаТЧ" , "Число");
СписокТоваров.НоваяКолонка("Количество", "Число");
Если Продавец.Выбран() = 0 Тогда
Предупреждение("Не выбран продавец!");
Возврат 0;
КонецЕсли;
Если Продавец.Пароль = 0 Тогда
Пароль = "30"; // Пароль системного администратора по умолчанию
Иначе
Пароль = Продавец.Пароль;
КонецЕсли;
Если (ОплатаКартой = 1) и (ИтогоПоБанку = 0) Тогда
Предупреждение("Введите сумму оплаты по банку!");
Возврат 0;
КонецЕсли;
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
СписокТоваров.НоваяСтрока();
// Собираем наименование номенклатуры с артикулом для соответствия требованиям ФНС
СписокТоваров.ТовНаим = СокрЛП(Номенклатура.Артикул) + ":" + СокрЛП(Номенклатура.Наименование);
СписокТоваров.Цена = Сумма / ?(Количество = 0, 1, Количество);
СписокТоваров.ЦенаТЧ = Цена;
СписокТоваров.Количество = Количество;
КонецЦикла;
ПризнВозврата = ?(ВидОперации = Перечисление.ВидыОперацийЧекККМ.Чек, 0, 1);
// Вызываем глобальную функцию печати с расширенным списком параметров
ЧекПробитККМ = глФРПечататьЧек(СписокТоваров, Итог("Сумма"), Итог("Сумма"), Скидка.Процент,
ПризнВозврата, Склад.НомерСекции, НомерЧека, ОплатаКартой,
ТекущийДокумент(), Пароль, СокрЛП(Продавец.ИНН),
СокрЛП(КудаОтправитьЧек));
Если ЧекПробитККМ = 1 Тогда
ПриЗаписиПерепроводить(0);
НомерЧекаККМ = НомерЧека;
Записать();
ПриЗаписиПерепроводить(1);
// Откроем денежный ящик, если он подключен и настроен
глДПОткрытьДенежныйЯщик();
КонецЕсли;
Возврат ЧекПробитККМ;
КонецФункции // ПробитьЧекНаККМ
Для обеспечения связи между документом и обработкой обслуживания кассы, проанализируем структуру глобальной функции глФРПечататьЧек, которую необходимо разместить в Глобальном модуле конфигурации:
Функция глФРПечататьЧек(СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека, ОплатаКартой = 0, Док = "", Пароль = "", ИННПродавца = "", КудаОтправитьЧек = "") Экспорт
Рез = 0;
Если глФРВкл = 1 Тогда
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.Установить("Процесс" , "печатать_чек");
Параметры.Установить("Объект" , глФР);
Если ПустоеЗначение(Пароль) = 1 Тогда
Параметры.Установить("ПарольПользователя", глФРПарольПользователя);
Иначе
Параметры.Установить("ПарольПользователя", Пароль);
КонецЕсли;
Параметры.Установить("СписокТоваров" , СписокТоваров);
Параметры.Установить("СуммаЧека" , СуммаЧека);
Параметры.Установить("Получено" , Получено);
Параметры.Установить("Скидка" , Скидка);
Параметры.Установить("Возврат" , ПризнВозврата);
Параметры.Установить("НомерСекции" , НомерСекции);
Параметры.Установить("ПриемНаличныхОтЮрЛиц", глФРДляПриемаНаличныхОтЮрЛиц);
Параметры.Установить("ОплатаКартой" , ОплатаКартой);
Параметры.Установить("Док" , Док);
Параметры.Установить("ИННПродавца" , ИННПродавца);
Параметры.Установить("КудаОтправитьЧек" , КудаОтправитьЧек);
РезТекст = глОборудованиеКоманда("ФР", глФРОбработка, Параметры);
Если ПустоеЗначение(РезТекст) = 0 Тогда
Сообщить(РезТекст);
Иначе
Если Параметры.Получить("Результат") = 0 Тогда
Сообщить("Фискальный регистратор: ошибка при печати чека");
Сообщить(Параметры.Получить("ОписаниеРезультата"));
Иначе
НомерЧека = Параметры.Получить("НомерЧека");
Рез = 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Рез;
КонецФункции // глФРПечататьЧек
Важное примечание по закрытию чека: Чтобы фискальный документ гарантированно уходил в ОФД, обработка обслуживания ККМ должна использовать метод драйвера FNCloseCheckEx() или последнюю версию метода CloseCheck(), которая полностью поддерживает фискальный накопитель и корректно передает все тэги ФФД.
Часто после успешного сопряжения 1С 7.7 и онлайн-кассы «Штрих-М» на бумажном чеке в строке итога по позиции начинает печататься непонятный символ 1....... [Сумма]. Выясним причину этого поведения.
Цифра «1» в данном случае обозначает номер секции (отдела) ККМ, в которую распределяется продажа. По умолчанию программа передает значение из реквизита Склад.НомерСекции. В современных реалиях большинству розничных магазинов на ЕНВД или Патенте разделение по секциям на физическом чеке не требуется, и эта строчка лишь засоряет документ.
Выполним отключение печати номера секции аппаратным методом через драйвер кассы:
Еще один частый вопрос при настройке розничных продаж на спецрежимах — появление загадочной приписки _г (или _Г) в конце суммовой строки чека.
Проанализируем ситуацию: символ _г — это не системная ошибка 1С, а буквенный код ставки налога, запрограммированный в самом фискальном аппарате. Согласно стандартным таблицам Штрих-М:
_А — соответствует ставке НДС 20% (ранее 18%);_Б — соответствует ставке НДС 10%;_В — соответствует ставке НДС 0%;_Г — соответствует значению «Без НДС» (актуально для ЕНВД, УСН Доходы, Патента).Для розничного магазина на спецрежиме печать индекса _г выглядит неэстетично. Мы можем либо полностью отключить печать кода ставки налога, либо заменить букву на красивое текстовое обозначение «БЕЗ НДС».
Пошаговая настройка в Тесте драйвера ФР:
2 (печать только буквенного кода налога).1, обязательно перейдите в Таблицу № 6 «Налоговые ставки» и убедитесь, что напротив строки 4 (группа «Г») прописан понятный текст, например, БЕЗ НДС или БЕЗ НАЛОГА.Согласно требованиям Федерального закона № 54-ФЗ, в фискальном чеке обязательно должно фигурировать настоящее ФИО кассира (продавца), который осуществляет расчет. Оставлять значение по умолчанию «системный администратор» в рабочих условиях категорически запрещено налоговой службой.
Для того чтобы касса автоматически подставляла нужные имена при отправке команды из 1С 7.7, настроим таблицы кассиров:
1, Имя — Иванова А.А.2, Имя — Петрова Б.Б.Пароль (тип Число) и укажите там пароль, соответствующий сотруднику в таблице кассы (например, для Ивановой — 1, для Петровой — 2).ПробитьЧекНаККМ() программа считает пароль выбранного продавца и передаст его в качестве аргумента на кассовый аппарат. Фискальный регистратор автоматически определит, под каким номером работает кассир, и напечатает на чеке правильное ФИО.Таким образом, комбинируя небольшую доработку программного кода конфигурации «Торговля и Склад» 7.7 и правильную аппаратную настройку таблиц ККТ «Штрих-М» через тест драйвера, мы получаем полностью рабочее решение розничных продаж, соответствующее всем современным требованиям законодательства.