Для 1с 7.7 ТиС 7.70.999 пришлось написать обработку подключаемого оборудования для новых драйверов Атол версии 8.16.5.9221, которая может работать с разными СНО и ставкой НДС 20 % (если ККТ прошит до последней прошивки 7733 и получена лицензия).
Для работы необходимо скопировать файлы из каталога драйвера "C:\Program Files\ATOL\Drivers8\Bin"с расширением *.dll в каталога ИБ или платформы и зарегистрировать "FprnM1C.dll" с помощью regsvr32.exe.
Скопировать обработку обслуживания "frATOL54_comm_105.efd" в [каталог ИБ]\ExtForms\Equip
Если необходимо, то измененяем файл описания оборудования с расширением *.efd.
Например:
Модель оборудования АТОЛ 55Ф, то изменяем содержимое файла "fr_Atol55F_105.efd" на следующее:
Вид=фр
Модель=АТОЛ 55Ф 1.05
Компонента=FprnM1C.dll
ПрогИд=FprnM8
Обработка=frATOL54_comm_105.ert
В 1с 7.7 Сервис-Настройки торгового оборудования-Фискальный регистратор необходимо выбрать модель ККТ, в настройках подключения выбрать ВК "FprnM1C.dll", обработку обслуживания "frATOL54_comm_105.ert", программный идентификатор "FprnM8"
Для печати скидок в таблицу значений товаров необходимо добавить колонки и заполнить "ЦенаСоСкидками" и "СуммаСкидок".
Пример функции ПробитьЧекНаККМ() в форме документа ЧекККМ:
Функция ПробитьЧекНаККМ()
Перем НомерЧека;
СписокТоваров = СоздатьОбъект("ТаблицаЗначений");
СписокТоваров.НоваяКолонка("ТовНаим" , "Строка");
СписокТоваров.НоваяКолонка("Цена" , "Число");
СписокТоваров.НоваяКолонка("Количество", "Число");
СписокТоваров.НоваяКолонка("Сумма" , "Число");
СписокТоваров.НоваяКолонка("СтавкаНДС" , "Строка");
//Изменения нового формата
СписокТоваров.НоваяКолонка("СуммаСкидок" , "Число");
СписокТоваров.НоваяКолонка("ЦенаСоСкидками" , "Число");
СписокТоваров.НоваяКолонка("НомерСекции" , "Число");
СписокТоваров.НоваяКолонка("СуммаНДС" , "Число");
//Изменения нового формата
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
СписокТоваров.НоваяСтрока();
СписокТоваров.ТовНаим = Номенклатура.Наименование;
СписокТоваров.Цена = Цена;
СписокТоваров.Количество = Количество;
СписокТоваров.Сумма = Сумма;
//Изменения нового формата
Если Скидка.Процент <> 0 Тогда
СписокТоваров.ЦенаСоСкидками = Сумма / Количество;
СписокТоваров.СуммаСкидок = Окр(Цена * Количество, 2, 1) - Сумма;
Иначе
СписокТоваров.ЦенаСоСкидками = Цена;
СписокТоваров.СуммаСкидок = 0;
КонецЕсли;
//Изменения нового формата
//Тип системы налогообложения
//0 Общая ОСН
//1 Упрощенная Доход УСН доход
//2 Упрощенная Доход минус Расход УСН доход - расход
//3 Единый налог на вмененный доход ЕНВД
//4 Единый сельскохозяйственный налог ЕСН
//5 Патентная система налогообложения Патент
Если Номенклатура.СтавкаНДС = Перечисление.СтавкиНДС.БезНДС Тогда
СписокТоваров.СтавкаНДС = "none";
//Изменения нового формата
ПУП = 3;
СписокТоваров.НомерСекции = 1;
СписокТоваров.СуммаНДС = 0;
//Изменения нового формата
Иначе
////Изменения нового формата
//СписокТоваров.СтавкаНДС = 100 * глНачисляемыйНДС(Номенклатура.СтавкаНДС);
ПроцентНДС = глНачисляемыйНДС(Номенклатура.СтавкаНДС);
СписокТоваров.СтавкаНДС = 100 * ПроцентНДС ;
ПУП = 0;
СписокТоваров.НомерСекции = 8;
СписокТоваров.СуммаНДС = Окр(Сумма * ПроцентНДС / (ПроцентНДС + 1), 2, 1);
//Изменения нового формата
КонецЕсли;
КонецЦикла;
ПризнВозврата = ?(ВидОперации = Перечисление.ВидыОперацийЧекККМ.Чек, 0, 1);
ВыбКасса = глЗначениеПоУмолчанию("ОсновнаяКасса");
ВыбКассир = "";
Если ПустоеЗначение(ВыбКасса) = 0 Тогда
ВыбКассир = ВыбКасса.КассирККМ.Получить(ДатаДок);
Если ПустоеЗначение(ВыбКассир) = 1 Тогда
ВыбКассир = Фирма.ЮрЛицо.Кассир.Получить(ДатаДок);
КонецЕсли;
КонецЕсли;
Кассир = глФамилияИмяОтчество(ВыбКассир);
ЧекПробитККМ = глФРПечататьЧек(СписокТоваров, Итог("Сумма"), ?(Получено=0,Итог("Сумма"),Получено), Скидка.Процент, ПризнВозврата, Склад.НомерСекции, НомерЧека, ПУП, Кассир);
Если ЧекПробитККМ = 1 Тогда
ПриЗаписиПерепроводить(0);
НомерЧекаККМ = НомерЧека;
Записать();
ПриЗаписиПерепроводить(1);
// Откроем денежный ящик, если он подключен
глДПОткрытьДенежныйЯщик();
КонецЕсли;
Возврат ЧекПробитККМ;
КонецФункции // ПробитьЧекНаККМ()