- Конфигурация файла обмена
1.1 Формат файла импорта
Файл который нужно выгружать из конфигурации 1с в ТОПАЗ-АЗС:
<?xml version="1.0" encoding="windows-1251"?>
<content>
<documents/>
<objects>
<dcItemPrices>// Описание цены//***********
<obj>
<objLink field="ItemID">Внешний код товара</objLink>
<objLink field="PriceID">Внешний кодцены</objLink>
<Value>Значение цены</Value>
</obj>
</dcItemPrices>
<dcItems>// Описание товара//***********
<obj>
<objLink field="ItemsGrpID"> Внешний код группы родителя</objLink>
<Name>Наименование товара</Name>
<FullName>Полное Наименование товара</FullName>
<objLink field="UnitID">Внешний код единицы</objLink>
<objLink field="NdsID"> Внешний код НДС</objLink>
<Rem/>
<IsService>1</IsService>
<ItemCode/>//Штрих код
<FRDepartment>16</FRDepartment>//Секция ФР
<ExtCode> Внешний код товара</ExtCode>
<Country/>
<IsSet>0</IsSet>
</obj>
</dcItems>
<dcItemsGrps>// Описание групп товара//***********
<obj>
<ParentID> Внешний код родителя группы</ParentID>
<Name>Наименование группы</Name>
<Rem/>
<ExtCode> Внешний код группы</ExtCode>
<objLink field="PriceID">16</objLink>
</obj>
</dcItemsGrps>
< dcPrices >//Описание типов цен****************
<obj>
<BasePriceID>Наименование цены</ BasePriceID >
<Name>Наименование цены</Name>
<ProcentValue> Процент наценки в числовом выражении</ ProcentValue >
<Rem/>
<ExtCode> Внешний код типа цен</ExtCode>
<WithinNDS> 0 или 1</ WithinNDS >
</obj>
</ dcPrices >
//<dcPrices/>
<dcUnits>// Описание единиц//***********
<obj>
<Name>наименование единицы</Name>
<FullName>Полное наименование единицы</FullName>
<Rem/>
<ExtCode> Внешний код единицы</ExtCode>
</obj>
</dcUnits>
<dcNds>// Описание НДС//***********
<obj>
<Name>название НДС%</Name>
<Tax>Значение НДС</Tax>
<Rem/>
<ExtCode>Внешний код НДС</ExtCode>
</obj>
</dcNds>
<dcItemUnits>//Связь товара и Единиц.
<obj>
<objLink field="ItemID">100</objLink>
<objLink field="UnitID">12</objLink>
<Factor>1</Factor>
</obj>
</dcItemUnits>
</objects>
</content>
Учет количества товаров в Топаз-АЗС не будет, только в 1С - поэтому в поле "IsService" в XML-файле загрузки номенклатуры устанавливаем IsService=1 для всех товаров. Также в ExtCode подсовываем значение ItemCode (штрих-код товара)
-
- Формат файла экспорта
Файл который нужно выгружать из ТОПАЗ-АЗС в конфигурацию 1с:
<?xml version="1.0" encoding="windows-1251" ?>
<DataPaket Version="3.13" DateTime="Время" Type="Aggregated" AZSCode="Код АЗС">
<Sessions>
<Session SessionNum="Номер сессии" StartDateTime="Начало время сессии" EndDateTime="Конец время сессии" UserName="Пользователь">
…
<ItemOutcomesByRetail>
<ItemOutcomeByRetail ItemName="Наименование товара" ItemFullName="Полное Наименование товара" ItemExtCode="Код в 1С" ItemGroup="Наименование родительской группы" ItemsGrpExtCode="" IsService="0" PaymentModeName="Продукты сотрудника" PaymentModeExtCode="" PartnerName="Расходы АЗС" PartnerExtCode="88800002" PartnerINN="" ItemID="Артикул" Nds="Индекс НДС" Unit="Наименование единицы" FRDepartment="16" Hash="36f02f9bc4fbf455cc6d1eb6a2d75de5" ItemCode="Штрихкод" IsReturn="Признак возврата" Quantity="Количество проданных" Amount="Сумма продажи" PriceFastTrade="30" PriceIn="Приходная цена" PriceRetail="Розничная цена" />
…
</ItemOutcomesByRetail>
</Sessions>
</DataPaket>
Что добавлять в конфигурацию
Добавим новое перечисление ТипККМOffLine - Перечисления.ТипККМOffLine.Топаз_АЗС.
В справочнике ККМ добавим для видимости «НадписиНастройкиККМ»:
ЭлементыФормы.НадписьНастройкиККМ.Доступность = (ТипККМ = Перечисления.ТипККМOffLine.ШтрихМастер)
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.MiniPOS)
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.ШтрихМКассир50)
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.ШтрихМКассир50ТУ)
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.ГранулаШтрихМКассир)
//>>
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.Топаз_АЗС);
Для доступности «НадписьНастройкиККМ»:
ЭлементыФормы.НадписьНастройкиККМ.Доступность = (ТипККМ = Перечисления.ТипККМOffLine.ШтрихМастер)
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.MiniPOS)
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.ШтрихМКассир50)
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.ШтрихМКассир50ТУ)
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.ГранулаШтрихМКассир)
//>>
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.Топаз_АЗС);
Для доступности «НастройкиККМ»:
ЭлементыФормы.НастройкиККМ.Доступность = (ТипККМ = Перечисления.ТипККМOffLine.ШтрихМастер)
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.MiniPOS)
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.ШтрихМКассир50)
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.ШтрихМКассир50ТУ)
//>>
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.Топаз_АЗС);
Доступности «ПанельПараметровККМ»:
ЭлементыФормы.ПанельПараметровККМ.Страницы.Файлы.Доступность = (ТипККМ = Перечисления.ТипККМOffLine.PriceChecker)
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.ШтрихИнфо)
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.ШтрихМастер)
…
//>>
ИЛИ (ТипККМ = Перечисления.ТипККМOffLine.Топаз_АЗС);
Для выгрузки данных изменим функцию «ВыполнитьОперацииСККМ»:
…
//>>
//Добавить в спикок для выгрузки!
Если Обмен_АЗС_Топаз.ТопазВыгрузка(ТаблицаСкладов) Тогда
Отказ = Обмен_АЗС_Топаз.ВыгрузитьВТопаз(ТаблицаСкладов,ЭтотОбъект);
Иначе
Отказ = ВнешняяКомпонента.ВыполнитьОперацииККМ(ТаблицаСкладов, ПроведениеДокумента);
КонецЕсли;
…
Где функция «ТопазВыгрузка» из модуля «Обмен_АЗС_Топаз»:
Функция ВыгрузитьВТопаз(ТаблицаСкладов,ЭтотОбъект) экспорт
Рез = Истина;
//1. Создать файл выгрузки
ТаблицаТоваров = СоздатьСписок(ЭтотОбъект);
//2. Выгрузить по складам
Файл = СоздатьXML(ТаблицаТоваров);
Для каждого склд из ТаблицаСкладов Цикл
Рез = СкопироватьВСклад(склд.Склад,Файл);
КонецЦикла;
Возврат Рез;
КонецФункции
Соответственно для снятия отчета об продажах изменим обработку «СнятиеОтчетаОтдела» в процедуре «СнятьОтчетОтдела»:
Функция СнятьОтчетОтдела(Знач Компонента, Результат = Неопределено)
Отказ = Ложь;
…
Если (Не Отказ) Тогда
ЭтотОбъектПерем = ЭтотОбъект;
//>>
//Добавить в спикок для выгрузки!
Если Обмен_АЗС_Топаз.ТопазВыгрузка(ЭтотОбъектПерем,Истина) Тогда
Отказ = Обмен_АЗС_Топаз.СнятьОтчетОтдела_Топаз(ЭтотОбъектПерем,Результат);
Иначе
Отказ = Компонента.СнятьОтчетОтдела_бул(ЭтотОбъектПерем, Результат);
КонецЕсли;
КонецЕсли;
Возврат Отказ;
КонецФункции
где функция «ТопазВыгрузка»:
Функция ТопазВыгрузка(Склад,СнятиеОтчета=Ложь) Экспорт
Если СнятиеОтчета Тогда
Если Склад.ВариантСнятияОтчетаОтдела= Перечисления.ВариантыСнятияОтчетаОтдела.ПоККМ Тогда
Если Склад.Параметр.ТипККМ = Перечисления.ТипККМOffLine.Топаз_АЗС Тогда
Возврат Истина;
КонецЕсли;
ИначеЕсли Склад.ВариантСнятияОтчетаОтдела= Перечисления.ВариантыСнятияОтчетаОтдела.ПоВсемККМ Тогда
Если ЕстьТопазВСпискеККМ() Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Иначе
Для каждого скл из Склад Цикл
Если КэшСистемыТопаз(скл.Склад) Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат Ложь;//пока!
КонецФункции
и функция «СнятьОтчетОтдела_Топаз», определяет обработать файл по одному терминалу или по нескольким:
Функция СнятьОтчетОтдела_Топаз(ЭтотОбъект,Результат) экспорт
Рез = Ложь;
Если ЭтотОбъект.ВариантСнятияОтчетаОтдела= Перечисления.ВариантыСнятияОтчетаОтдела.ПоККМ Тогда
Если ЭтотОбъект.Параметр.ТипККМ = Перечисления.ТипККМOffLine.Топаз_АЗС Тогда
ИмяФайлаЗагрузки = ПолучитьИмяФайлаЗагрузки(ЭтотОбъект.Параметр);
Рез = ОбработатьXMLДанные(ИмяФайлаЗагрузки,ЭтотОбъект.Параметр);
КонецЕсли;
ИначеЕсли ЭтотОбъект.ВариантСнятияОтчетаОтдела= Перечисления.ВариантыСнятияОтчетаОтдела.ПоВсемККМ Тогда
СписокККМТопаз = ПолучитьСписокККМТопаз();
Для каждого ккм_Топаз из СписокККМТопаз Цикл
ИмяФайлаЗагрузки = ПолучитьИмяФайлаЗагрузки(ккм_Топаз.ККМ);
Рез = ОбработатьXMLДанные(ИмяФайлаЗагрузки,ккм_Топаз.ККМ);
КонецЦикла;
КонецЕсли;
Возврат Рез;
КонецФункции
- Примечание
Использовался ПО "Топаз-АЗС Demo" версии 3.14(Отличие данной версии программы ("Топаз-АЗС Demo") от версии "Топаз-АЗС" заключается в отсутствии поддержки внешнего оборудования (КУТРК, идентификаторов, регистраторов, уровнемеров, платежных терминлов). В "Топаз-АЗС Demo" доступны только программные эмуляторы соответствующих устройств.)
Полный код указан в обработке "Обмен_АЗС_Топаз.epf" который является только вместилищем функций.