Доработка конфигурации УПП 1.2  для работы с ШТРИХ-МПЕЙ-Ф

25.05.20

Интеграция - ККМ

Работа с ККТ ШТРИХ-МПЕЙ-Ф на примере доработки конфигурации УПП 1.2 (1.2.19.1).

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
Редактирование конфигурации УПП 1.2  для работы с ШТРИХ-МПЕЙ-Ф:
.epf 24,79Kb
0 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

 

  1. Изменение конфигурации УПП.

Для того чтобы конфигурация  УПП, редакция 1.2(1.2.19.1)  смогла обмениваться заказами с ККТ Штрих-МПЕЙ-Ф используем логику обмена конфигурации и Штрих-М Кассира текстовыми файлами.

Во-первых, включим в документе “ЗаказПокупателя”(Форма документа) поддержку обработки

Функция ПоддерживаетсяВидТО(Вид) Экспорт

                Результат = Ложь;

                Если Вид = Перечисления.ВидыТорговогоОборудования.СканерШтрихКода

                               Или Вид = Перечисления.ВидыТорговогоОборудования.СчитывательМагнитныхКарт

                               Или Вид = Перечисления.ВидыТорговогоОборудования.ККМOffLine Тогда//>>

                               Результат = Истина;

                КонецЕсли;

                Возврат Результат;              

КонецФункции // ПоддерживаетсяВидТО()

Добавим на форме заказа новую кнопку “в М-ПЕЙ”, означающую выгрузку данных из документа и процедурой:

Процедура ОсновныеДействияФормыМ_ПЕЙ(Кнопка)

                Если Товары.Количество() = 0 Тогда

                               Предупреждение("Список товаров пуст.");

                               Возврат;

                КонецЕсли;

                мСерверТО = ПолучитьСерверТО();

                МассивККМ = мСерверТО.ПолучитьСписокУстройств(

                                Перечисления.ВидыТорговогоОборудования.ККМOffLine,

                                Справочники.КассыККМ.ПустаяСсылка());

                 

                мСписокККМ    = Новый СписокЗначений();

                ККМ           = Неопределено;

                Вид           = Неопределено;

                Представление = Неопределено;

                Для Каждого ККМ Из МассивККМ Цикл

                               мСерверТО.ПолучитьПредставлениеУстройства(ККМ, Вид, Представление);

                               Если (Представление="Штрих-М: MPAY-Ф") Тогда

                                               мСписокККМ.Добавить(ККМ, Представление);

                                               ККМOffline = мСписокККМ[0].Значение;;

                                               Прервать;

                               КонецЕсли;           

                КонецЦикла;                                                       

                Шапка = ЗаполнитьШапку();

                Результат = мСерверТО.ВыгрузитьЗаказыККМ(ККМOffline, Ссылка, Шапка);

                Если НЕ ЗначениеЗаполнено(Результат) Тогда

                               КолВо = Товары.Количество() + Услуги.Количество();

                               ОписаниеРезультата = "Выгрузка заказов завершена успешно.

                                                                                                               |Выгружено " + СокрЛП(КолВо) + " строк.";

                Иначе

                               ОписаниеРезультата = мСерверТО.ПолучитьТекстОшибкиККМOfflineТО(Результат);

                КонецЕсли;

                Предупреждение(ОписаниеРезультата);

КонецПроцедуры//<<

И описание функций  “СтатусЗаказа” и “ЗаполнитьШапку”

 

Функция ЗаполнитьШапку()

                СтрукВз = Новый Структура("store, date, number, externalnumber, doctype, uuid, posted, status, deliveryaddress, customer, prepayment");

                СтрукВз.store                                       = Ссылка.СкладГруппа.Код;

                СтрукВз.date                                         = Ссылка.Дата;

                СтрукВз.number                                   = Ссылка.Номер;//Ссылка.НомерИнтернетЗаказа;

                СтрукВз.externalnumber       = Ссылка.Номер;

                СтрукВз.doctype                   = "30";

                СтрукВз.uuid                                        = Строка(Ссылка.УникальныйИдентификатор());

                СтрукВз.posted                                     = ?(Ссылка.Проведен,1,0);

                СтрукВз.status                                      = СтатусЗаказа();

                СтрукВз.deliveryaddress       = Ссылка.АдресДоставки;  

                СтрукВз.customer                 = Ссылка.Контрагент.Наименование;//Ссылка.НаименованиеПокупателя; 

                СтрукВз.prepayment                             = Ссылка.СуммаОплаты;   

               

                Возврат СтрукВз;

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

//>>

Функция СтатусЗаказа()

                Если (Ссылка._СтатусЗаказа = Перечисления.MI_СтатусЗаказаПокупателя.НеВыполненныйЗаказ) Тогда

                               возврат "open";

                ИначеЕсли (Ссылка._СтатусЗаказа = Перечисления.MI_СтатусЗаказаПокупателя.ЗаказВыполнен) Тогда

                                Возврат "close";

                ИначеЕсли (Ссылка._СтатусЗаказа = Перечисления.MI_СтатусЗаказаПокупателя.ЗаказОтменен) Тогда

                               Возврат "cancel";  

                ИначеЕсли (Ссылка._СтатусЗаказа = Перечисления.MI_СтатусЗаказаПокупателя.ОтказОтВыполненияНаТекущейКкм) Тогда

                               Возврат "reject";

                Иначе

                               Возврат "";

                КонецЕсли;

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

Как видно из функции “СтатусЗаказа” необходимо добавить новое перечисление “ MI_СтатусЗаказаПокупателя ”, которое будет использоваться в статусе документа “Заказпокупателя”

 

Добавим в документ реквизит “_СтатусЗаказа”, который будет влиять на выгрузку в МПЕЙ:

Также необходимо изменить обработку “ТОСервер”(Модуль объекта), добавим функция “ВыгрузитьЗаказыККМ”:

Функция ВыгрузитьЗаказыККМ(Идентификатор, Товары, Шапка) Экспорт

	Обработка = Неопределено;
	Объект    = Неопределено;
	Результат = ПолучитьОбъектДрайвера(Идентификатор, Обработка, Объект);
	Если НЕ ЗначениеЗаполнено(Результат) Тогда
		Результат  = Обработка.ВыгрузитьЗаказы(Объект, Товары, Шапка);
		мОписаниеОшибки = Объект.ОписаниеОшибки;
	Иначе
		мОписаниеОшибки = ПолучитьТекстОшибкиПодключенияТО("ККМ Off-Line");
	КонецЕсли;
	Возврат Результат;
КонецФункции 

2. Создание обработки для выгрузки в МПЕЙ

Создадим обработку “ShtrihMPAYOffline_v1.epf”:

         Отредактируем основную функцию “ВыгрузитьТовары”:

Функция ВыгрузитьТовары(Объект, Товары, ЧастичнаяВыгрузка = Неопределено) Экспорт
	Результат = мНетОшибки;
	Файл      = Новый ТекстовыйДокумент();
	Товар     = Неопределено;
	Разделитель = ";";

	Файл.ДобавитьСтроку("##@@&&");
	Файл.ДобавитьСтроку("#");

	Если ЧастичнаяВыгрузка <> Неопределено Тогда
		Если ЧастичнаяВыгрузка Тогда
			Файл.ДобавитьСтроку("$$$ADD");
		Иначе
			Файл.ДобавитьСтроку("$$$CLR");
		КонецЕсли;
	КонецЕсли;
	//>>
	ЗаполнитьГруппыТоваров(Файл,Товары);
	//<<
Для Каждого Товар Из Товары Цикл
		Если ТипЗнч(Товар.КодТовара) <> Тип("Массив") Тогда
			Гр_Родитель_Код = Справочники.Номенклатура.НайтиПоНаименованию(Товар.Номенклатура).Родитель.Код;
			КодГр = Преоб(Гр_Родитель_Код);
			Если КодГр=-1 Тогда
				КодГр = 0;;
			КонецЕсли;	
			Строка = Формат(Товар.ПЛУ, "ЧЦ=13; ЧДЦ=0; ЧГ=0")   + Разделитель +
			Формат(Товар.КодТовара, "ЧЦ=13; ЧДЦ=0; ЧГ=0")      + Разделитель +
			ИсключитьСпецСимв(Товар.Номенклатура)              + Разделитель +
			ИсключитьСпецСимв(Товар.Номенклатура)              + Разделитель +
			Формат(Товар.Цена, "ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧГ=0")    + Разделитель +
			Формат(Товар.Остаток, "ЧЦ=17; ЧДЦ=3; ЧРД=.; ЧГ=0") + Разделитель +
			"0"                                                + Разделитель +
			?(Товар.ВесовойТовар, "1", "0")                    + Разделитель +
			"0"                                                + Разделитель +
			"0"                                                + Разделитель +
			"0"                                                + Разделитель +
			"0"                                                + Разделитель +
			"0"                                                + Разделитель +
			"0"                                                + Разделитель +
			"0"                                                + Разделитель +
			Формат(КодГр, "ЧЦ=13; ЧДЦ=0; ЧГ=0")      		   + Разделитель + //16-Код род группы
			"1";
			Файл.ДобавитьСтроку(Строка);
		Иначе

Где функция “ЗаполнитьГруппыТоваров”:

Функция ЗаполнитьГруппыТоваров(Файл,Товары)

               

                Для каждого Товар из Товары Цикл

                               Тов = Справочники.Номенклатура.НайтиПоНаименованию(Товар.Номенклатура);

                               Если Тов.Пустая() Тогда

                                               Сообщить("Для товара "+ Товар.Номенклатура+" не нашли соответствие!");

                               Иначе

                                               ДобавитьРодителя(Тов.Родитель);

                               КонецЕсли;           

                КонецЦикла;

                Разделитель = ";";

                Для каждого Гр из ТабГрупп Цикл

                               КодГр = Преоб(Гр.Группа.Код);

                               Если КодГр=-1 Тогда

                                               Продолжить;

                               КонецЕсли;           

                               КодГрР = Преоб(Гр.Группа.Родитель.Код);

                               Строка = Формат(КодГр, "ЧЦ=13; ЧДЦ=0; ЧГ=0")                       + Разделитель +

                                               ""                                                                                                                                                                         + Разделитель +

                                               Гр.Группа.Наименование                                    + Разделитель +

                                               Гр.Группа.наименование                              + Разделитель +

                                               ""                                                                                                                                                                                        + Разделитель +

                                               ""                                                                                                                                                                                                         + Разделитель +

                                               "0"                                                                         + Разделитель +

                                               "0"                                                                                                                            + Разделитель +

                                               "0"                                                              + Разделитель +//9

                                               "0"                                                                      + Разделитель +

                                               "0"                                                              + Разделитель +

                                               "0"                                                                      + Разделитель +

                                               "0"                                                                         + Разделитель +

                                               "0"                                                                         + Разделитель +

                                               "0"                                                                         + Разделитель +

                                               Формат(КодГрР, "ЧЦ=13; ЧДЦ=0; ЧГ=0")                                                     + Разделитель +//16-Код род группы

                                               "0"                                                 + Разделитель ;//17-Товар или группа: для    группы “0”

                                               Файл.ДобавитьСтроку(Строка);

                КонецЦикла;        

                Возврат Истина;

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

И другие дополнительные функции:

 

Функция ИсключитьСпецСимв(НаимТовара)

                Если Найти(НаимТовара,";")>0 Тогда

                               Врем = СтрЗаменить(НаимТовара,";","##");

                               Возврат Врем;

                КонецЕсли;

                Возврат   НаимТовара;

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

Процедура ДобавитьРодителя (Родитель)

                Если Родитель.Пустая() Тогда

                               Возврат;

                Иначе

                               СтрПоиска = Новый структура("Группа",Родитель.Ссылка);

                               Масс = ТабГрупп.НайтиСтроки(СтрПоиска);

                               Если Масс.Количество()=0 Тогда

                                               стр = ТабГрупп.Добавить();

                                               стр.Группа = Родитель.Ссылка;

                               КонецЕсли;           

                               ДобавитьРодителя(Родитель.Родитель);

                КонецЕсли;           

КонецПроцедуры



Функция Преобразовать(Строка) Экспорт

                ии=1;

                Сум="";

                Пока ии<СтрДлина(Строка)+1 Цикл

                               Стр = Сред(Строка,ии,1);

                               Попытка

                                               а=Число(Стр);

                                               Сум=Сум+Стр;

                               Исключение

                                               ф=0;

                               КонецПопытки;    

                               ии=ии+1;

                КонецЦикла;        

                Возврат Сум;

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



Функция Преоб(Б)

                Попытка

                               А = Число(Б);

                               Возврат Преобразовать(А);

                Исключение

                               Возврат -1;

                КонецПопытки;    

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

    

 

  1. Настройка

Подключить обработку «ShtrihMPAYOffline_v1.epf»

    1. Открыть «Подключение и настройка торгового оборудования»

    1. Заполнить параметры выгрузки заказа. Путь файл заказа «…pos.spr» - файл который по умолчанию стоит в МПЕЙ

    1. Нажать кнопку «Проверка», если все корректно то выйдет сообщение «торговое оборудование настроено корректно».

 

 

  1. Создадим заказ покупателя и заполним все поля. Статус заказ и т.д.

  1. Выгрузка происходит по кнопке «Выгрузка заказа-> в- МПЕЙ».
  2. Полученные данные на флэшке(они должны находится в корне), вставляем в МПЕЙ
  3. Заходим в «Меню», «0.Еще…» -> «1.Обмен» -> «1.Файловый обмен» -> «1.Загрузка справочника». Если все успешно, система сообщит сколько строк было загружено

Просмотр заказа «Меню» -> «9.Подбор заказа»

4. Примечание:

          -  Описание работы с Штрих-М ПЕЙ-Ф https://wiki.sftserv.ru/index.php/Выгрузка_товаров_в_ККТ_ШТРИХ-МПЕЙ-Ф

- Ссылка для загрузки заказа https://kkm.solutions/wiki/doku.php?id=кассир5:форматобменаданными:заказпокупателя

Вступайте в нашу телеграмм-группу Инфостарт

УПП Штрих-МПЕЙ ШТРИХ-MPAY-Ф

См. также

ККМ Кассовые операции Розничная торговля Системный администратор Программист 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия 1.6 1С:Бухгалтерия автономного учреждения Россия Платные (руб)

Универсальная обработка для обслуживания любых фискальных регистраторов (ККТ), в том числе Веб сервер АТОЛ. Работает в соответствии с 54-ФЗ. (ФФД 1.0, ФФД 1.05, ФФД 1.1, ФФД 1.2). Подключайте любую онлайн кассу к практически любой конфигурации на обычных формах. Нет необходимости обновлять 1С. Можно бесплатно скачать и протестировать. Может работать одновременно с несколькими онлайн-кассами, либо одной с разных рабочих мест. (через RDP, TCP\IP или веб-сервер) Позволяет разделить один чек сразу на несколько ККТ или на несколько систем налогообложения. Поддерживает разрешительный режим и маркировку. Поддерживает локальный модуль честного знака для офлайн проверки. Можно настроить собственный шаблонов чека. Можно использовать эквайринг там, где он не поддерживается. Работает на LINUX и Windows

6000 руб.

27.02.2017    844818    5321    9848    

2986

ККМ Кассовые операции Розничная торговля Системный администратор Программист 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия автономного учреждения Россия Платные (руб)

Обработка осуществляет обслуживание ККТ АТОЛ, Штрих, Вики Принт и Меркурий для конфигураций "УТ 10.3", "КА 1.1", "УПП 1.3", "Розница 1.0", "БП 2.0" и других отраслевых решений, построенных на основе указанных выше конфигурациях. Поддерживает возможность параллельно пробития чеков на одной ККМ несколькими пользователями. Поддерживает Веб-сервер Атол. Соответствует требованиям 54-ФЗ. Поддерживает ФФД 1.0, 1.05, 1.1 и 1.2. Разделяет чеки по нескольким СНО. Поддерживает механизмы подключения ККТ по TCP/IP, для работы через RDP или интернет. Поддержка маркировки и разрешительного режима. Поддержка пробития чеков с новыми ставками НДС 5% и НДС 7%.

7900 руб.

25.05.2015    351117    2141    3134    

1107

ККМ Розничная торговля Системный администратор Программист 1С v8.3 Оперативный учет 1С:Розница 2 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Обмен между 1С:Розница и Frontol 6 при торговле от нескольких организаций, а также ряд других полезных функций. Данный модуль синхронизации незаменим для тех, кто ведёт учет по нескольким организациям в 1С:Розница, а на РМК (рабочем месте кассира) установлен Frontol или планируется его установка. Подходит для 1С:Розница 2.3 / 3.0, 1С:УНФ 3.0

7900 руб.

22.03.2019    89994    651    480    

209

ККМ Кассовые операции Розничная торговля Программист Бухгалтер Пользователь Бухгалтерский учет Оперативный учет Управляемые формы 1С:Розница 2 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение для типовых конфигураций для Управляемых форм позволяет выполнять печать кассовых чеков на одну ККМ 54-ФЗ с нескольких рабочих мест. НИКАКИХ НАСТРОЕК В РАЗРАБОТКЕ - ПОДКЛЮЧИЛ И ПЕЧАТАЙ. Если у вас несколько отделов и одна ККМ - печатайте на одной ККМ! Если у вас две ККМ и одна поломалась - печатайте на одной ККМ, пока ремонтируете другую!

9500 руб.

27.08.2018    128408    706    603    

914

ККМ Кассовые операции Розничная торговля Системный администратор Программист Пользователь 1С v8.3 1C:Бухгалтерия Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Россия Платные (руб)

«Сервер ККМ» позволяет приложениям работать с фискальными регистраторами по локальной сети или интернет, организовать печать на одном ККМ с нескольких рабочих мест с поддержкой очереди печати. Поддерживаются ВСЕ ревизии требований фирмы 1С к разработке драйверов ККТ от 2.2 до 4.4.

5000 руб.

02.09.2016    143273    125    196    

208

Кассовые операции ККМ Пользователь 1С v8.3 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Управленческий учет Платные (руб)

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

7080 руб.

12.04.2023    11993    72    8    

59

Кассовые операции ККМ Пользователь 1С v8.3 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Расширение для 1С:Управление торговлей 11.5 и 11.4, которое позволяет из рабочего места кассира разбивать чек ККМ на несколько чеков и пробивать их на разных кассах подключенных к одному РМК. Можно пробивать разные группы товаров по разным организациям на разных кассовых аппаратах.

7080 руб.

22.08.2022    12400    39    17    

38

Кассовые операции ККМ Системный администратор Программист Бухгалтер 1С v7.7 1С v8.3 1C:Бухгалтерия 1C77 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Программа для управления ККМ Атол и Штрих нового поколения (он-лайн ККТ под 54-ФЗ) с помощью текстового файла (ini файла) с изменениями включена 1 лицензия Для любых программ, которые умеют работать с текстовыми файлами. Внутри комплекта есть готовые к использованию обработки

6000 руб.

31.07.2017    178259    613    609    

215
Оставьте свое сообщение