Имя: Пароль:
1C
1С v8
v8: Розница 2.0 торг.оборуд
0 vahate
 
20.06.12
22:22
есть обработка .epf для подключения к Рознице 1.0
как её использовать чтоб ФР работал с розницей 2.0
1 Mouzem
 
20.06.12
22:31
А что за обработка?
2 vahate
 
20.06.12
22:36
обработка закрытая - платная для украинского ФР и Украинской Розницы 1..0 - но с российской 1.0 работает без проблем так как в этой части украинская и российская розницы не имеют отличий.
но интересует Розница 2.0 - да и вообще российская розница - так как украинский франч который адаптирует 1с для украины давно на все забил)))
как эту обработку "заработать" в 2.0???
3 wowik
 
21.06.12
08:53
(2) - Розница 2.0 - управляемое приложение. обработку нужно переписать.Закрытые обработки можно декомпилировать... если что...
4 tridog
 
21.06.12
09:04
(0) Вратце - никак. В РТ2 отказались от технологии подключения произвольного количества оборудования с помощью внешних обработок в пользу подключения ограниченного количества оборудования.

Вся логика работы с оборудованием - в обших модулях ПодключаемоеОборудование*. Хочешь подключить новую железку - пиши свой аналогчиный общий модуль по аналогии с уже существующими.
5 vahate
 
23.06.12
04:09
уважаемые wowik и tridog подскажите пож. кто мы помог с таким подключением
6 tridog
 
23.06.12
15:59
(5) Ты бы показал обработку от РТ1 - может кто и откликнулся бы. А так - кто его знает, через какое место она работает)
7 vahate
 
23.06.12
16:58
с удовольствием показал бы - но я тут новенький - подскажи где ее выложить?
или как то в личку?
8 vahate
 
23.06.12
17:37
Модуль обработки ФР ArtSoft_ICS_MiniFP_v3.01.epf

///////////////////////////////////////////////////////////////////////////////
//// ПЕРЕМЕННЫЕ МОДУЛЯ

#Если Клиент Тогда

Перем мНетОшибки;
Перем мОшибкаПараметровНастройки;
Перем мОшибкаЗагрузкиДрайвера;
Перем мОшибкаНеизвестно;
Перем мОшибкаПриПодключении;
Перем мОшибкаТестНеПройден;
Перем мОшибкаНетВозможностиПечатиПКО;
Перем мОшибкаНеобходимПарольАдминистратора;
Перем мОшибкаНеобходимПарольКассира;
Перем мОшибкаНетНаличных;

Перем мНДС;
Перем СЗ;

Перем ИмяФайлаАртикуловККМ;
Перем МаксКоличествоАртикулов;

Перем фЧекНаВозврат;


///////////////////////////////////////////////////////////////////////////////
//// ЭКСПОРТНЫЕ ПРОЦЕДУРЫ (ОБЩИЕ ФУНКЦИИ API)

// Функция возвращает номер версии API, поддерживаемой обработкой обслуживания.
//
// Номер версии задаётся следующим образом: Ver = Vmajor + Vminor / 100.0.
// Например, в случае, если данная функция возвращает значение «1.01», это
// означает, что данная обработка  имеет версию «1.1», полностью поддерживает
// версию «1.0» и содержит некоторые дополнительные элементы.
// В случае, если отличается целая часть версии (например, «2.1»), то это
// означает, что данная обработка несовместима с версией API «1.0».
//
// Функция является обязательной для любой версии API.
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  <Число> - Версия API обработки обслуживания.
//
//
Функция ПолучитьВерсиюAPI() Экспорт

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

КонецФункции // ПолучитьВерсиюAPI()

// Функция возвращает описание текущей обработки обслуживания
// (API v2.0).
//
// Данная функция позволяет серверу получить информацию об обработке
// обслуживания. Функция является обязательной для версий 2.X API.
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  <Структура> - Структура, содержащая описание текущей обработки.
//                Структура имеет следующие поля:
//
//                Вид              - <ПеречислениеСсылка.ВидыТорговогоОборудования>
//                                 - Вид торгового оборудования, поддерживаемый
//                                   данной обработкой обслуживания.
//
//                СписокМоделей    - <Массив>
//                                 - Список поддерживаемых обработкой моделей
//                                   торгового оборудования.
//
//                Наименование     - <Строка>
//                                 - Наименование обработки обслуживания.
//
//                Описание         - <Строка>
//                                 - Описание обработки обслуживания.
//
//                ВерсияОбработки  - <Число>
//                                 - Номер версии обработки обслуживания
//                                   (не версии API!!!).
//                                   Данный параметр используется при
//                                   обновлении.
//                                   Номер версии задаётся следующим образом:
//                                   Ver = Vmajor + Vminor / 100.0.
//
Функция ПолучитьОписание() Экспорт

   Результат = Новый Структура("Вид, СписокМоделей, Наименование, Описание, ВерсияОбработки, Идентификатор");
   Модели    = Новый Массив();

   // Добавление поддерживаемых обработкой обслуживания моделей в массив
   Модели.Добавить("ИКС-483LT");
   Модели.Добавить("ИКС-Е260Т");
   Модели.Добавить("Мини-ФП4");
   Модели.Добавить("Мини-ФП6");

   мМетаданные               = Метаданные();
   // Указание вида торгового оборудования, поддерживаемого обработкой обслуживания
   Результат.Вид             = Перечисления.ВидыТорговогоОборудования.ФискальныйРегистратор;
   Результат.СписокМоделей   = Модели;
   Результат.Наименование    = мМетаданные.Синоним;
   Результат.Описание        = мМетаданные.Комментарий;
   Результат.ВерсияОбработки = 3.01;
   // Уникальный идентификатор обработки обслуживания.
   // Данное значение необходимо заменить.
   Результат.Идентификатор   = Новый УникальныйИдентификатор;

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

КонецФункции // ПолучитьОписание()

// Функция создаёт объект драйвера.
// (API v2.0)
//
// Параметры:
//  Объект                         - <*>
//                                 - Выходной параметр; объект драйвера торгового
//                                   оборудования.
//
//  Модель                         - <Строка>
//                                 - Модель торгового оборудования, для которой
//                                   создаётся экземпляр драйвера.
//
//  Параметры                      - <Структура>
//                                 - Параметры подключаемого торгового оборудования.
//
// Возвращаемое значение:
//  <ПеречислениеСсылка.ТООшибки*> - Результат работы функции.
//
Функция СоздатьОбъектДрайвера(Объект, Модель, Параметры) Экспорт

   // Инициализация переменных
   Результат = мНетОшибки;
   ОписаниеОшибки = "";
   Объект    = Неопределено;

   Порт                    = Неопределено;
   Скорость                = Неопределено;
   ЕдиницаВНаименовании    = Неопределено;
   ДлинаНаименования        = Неопределено;

   // Чтение и проверка параметров, установленных в при настройке
   // Если обработка не была настроенна, то функция возвращает ошибку

   // Получение значений параметров
   Параметры.Свойство("Порт",                    Порт);
   Параметры.Свойство("Скорость",                Скорость);
   Параметры.Свойство("ЕдиницаВНаименовании",    ЕдиницаВНаименовании);
   Параметры.Свойство("ДлинаНаименования",    ДлинаНаименования);
   
   // Проверка параметров
   Если Порт = Неопределено
    Или Скорость = Неопределено
    Или ЕдиницаВНаименовании = Неопределено
    Или ДлинаНаименования = Неопределено Тогда
       Результат = мОшибкаПараметровНастройки;
   Иначе
       // Подключение внешней компоненты
       Попытка
           ПрогИД = "ArtSoft.IKS483LT";
           Драйвер = Новый COMОбъект(ПрогИД);
       Исключение
           Результат = мОшибкаЗагрузкиДрайвера;
       КонецПопытки;

       // Создание объекта, используемого для взаимодействия
       // с оборудованием.
       Если Результат = мНетОшибки Тогда
           Объект = Новый Структура("Модель,
                                    |Параметры,
                                    |Драйвер,
                                    |ОписаниеОшибки",
                                     Модель,
                                     Параметры,
                                     Драйвер,
                                     ОписаниеОшибки);
       КонецЕсли;
   КонецЕсли;

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

КонецФункции // СоздатьОбъектДрайвера()

// Функция возвращает набор событий драйвера и параметры их обработки для
// заданной модели торгового оборудования.
// (API v2.0)
//
// Параметры:
//  Объект            - <*>
//                    - Объект драйвера торгового оборудования.
//
// Возвращаемое значение:
//  <ТаблицаЗначений> - Таблица значений, содержащая информацию о внешних
//                      событиях, генерируемых драйвером.
//                      Таблица имеет следующие колонки:
//                       "ИмяСобытия" - <Строка> - Имя внешнего события.
//
Функция ПолучитьОписаниеСобытий(Объект) Экспорт

   Таблица = Новый ТаблицаЗначений();

   Таблица.Колонки.Добавить("ИмяСобытия");

   Возврат Таблица;

КонецФункции // ПолучитьОписаниеСобытий()

// Функция осуществляет подключение устройства.
// (API v2.0)
//
// Параметры:
//  Объект                         - <*>
//                                 - Объект драйвера торгового оборудования.
//
// Возвращаемое значение:
//  <ПеречислениеСсылка.ТООшибки*> - Результат работы функции.
//
Функция Подключить(Объект) Экспорт
   
   // Максимальное количество артикулов зависит от модели регистратора
   // В некоторых моделях меняется динамически, в зависимости от длины наименования
   Если Объект.Модель = "ИКС-483LT" Тогда
       МаксКоличествоАртикулов = 10900;
   ИначеЕсли Объект.Модель = "ИКС-Е260Т" Тогда
       МаксКоличествоАртикулов = 10900;
   ИначеЕсли Объект.Модель = "Мини-ФП4" Тогда
       МаксКоличествоАртикулов = 6460;
   ИначеЕсли Объект.Модель = "Мини-ФП6" Тогда
       МаксКоличествоАртикулов = 15640;
   Иначе
       МаксКоличествоАртикулов = 10000; // Если модель не определена
   КонецЕсли;
   
   Результат = мНетОшибки;

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

КонецФункции // Подключить()

// Процедура осуществляет отключение устройства.
// (API v2.0)
//
// Параметры:
//  Объект - <*>
//         - Объект драйвера торгового оборудования.
//
Процедура Отключить(Объект) Экспорт
   // Отключение устройства.
КонецПроцедуры // Отключить()

// Функция осуществляет проверку правильности настройки и подключения
// торгового оборудования.
// (API v2.0)
//
// Параметры:
//  Объект                         - <*>
//                                 - Объект драйвера устройства, проверка
//                                   которого предполагается.
//
//  ОписаниеРезультата             - <Строка>
//                                 - Выходной параметр; в случае, если тест
//                                   завершился неудачно, в данный параметр
//                                   помещается рекомендация для пользователя
//                                   (как ему действовать дальше).
//
// Возвращаемое значение:
//  <ПеречислениеСсылка.ТООшибки*> - Результат работы функции.
//
Функция ТестУстройства(Объект) Экспорт
Перем Порт,Скорость;
   
   Результат = мНетОшибки;
   
   Объект.Параметры.Свойство("Порт", Порт);
   Порт = Формат(Порт,"ЧГ=0");
   Объект.Параметры.Свойство("Скорость", Скорость);
   
   Попытка
       Объект.Драйвер.OpenPort(Порт,Скорость);
       Если Объект.Драйвер.LastError<>0 Тогда  
           Объект.ОписаниеОшибки = НСтр("ru='Ошибка открытия СОМ порта  ';uk='Помилка відкриття СОМ порта! '")+ Объект.Драйвер.LastErrorText ;
           Результат = мОшибкаТестНеПройден;
       КонецЕсли;
       Объект.Драйвер.ClosePort(); //закрываем порт
   Исключение
       Объект.ОписаниеОшибки = НСтр("ru='Ошибка ККМ :';uk='Помилка ККМ :'")+ОписаниеОшибки();
       Результат = мОшибкаТестНеПройден;
   КонецПопытки;

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

КонецФункции // ТестУстройства()

// Процедура осуществляет вызов формы настройки торгового оборудования.
// (API v2.0)
//
// Параметры:
//  Модель    - <Строка>
//            - Модель настраиваемого оборудования.
//
//  Параметры - <Структура>
//            - Входной/выходной параметр; структура параметров.
//
Процедура НастроитьОборудование(Модель, Параметры) Экспорт

   Форма            = ПолучитьФорму("ФормаНастройки");
   Форма.мМодель    = Модель;
   Форма.мПараметры = Параметры;
   Ответ            = Форма.ОткрытьМодально();

   Если Ответ = КодВозвратаДиалога.ОК Тогда
       Параметры = Форма.мПараметры;
   КонецЕсли;

КонецПроцедуры // НастроитьОборудование()

// Функция возвращает имя источника внешнего события
// генерируемое при подключеннии внешней компонентой.
// По уникальному для сеанса подключения имени производится поиск
// из конфигурации обработки обслуживания для обработки полученного
// события.
// (API v2.1)
//
// Параметры:
//  Объект                         - <*>
//                                 - Объект драйвера устройства.
//
// Возвращаемое значение:
//  <Строка> - Имя внешнего источника события.
//
Функция ПолучитьИмяИсточникаВнешнегоСобытия(Объект) Экспорт

   Возврат "";

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

///////////////////////////////////////////////////////////////////////////////
//// ЭКСПОРТНЫЕ ПРОЦЕДУРЫ (ФУНКЦИИ API ОБРАБОТОК ОБСЛУЖИВАНИЯ ФР)

// Функция возвращает параметры отражения в чеке наличной оплаты от юридических
// лиц.
// (API v2.0)
//
// Параметры:
//  Объект                         - <*>
//                                 - Объект драйвера ФР.
//
//  НомерОтдела                    - <Число>
//                                 - Выходной параметр; номер отдела, используемый
//                                   для вывода чека.
//
// Возвращаемое значение:
//  <ПеречислениеСсылка.ТООшибки*> - Результат выполнения операции.
//
Функция ПолучитьПараметрыНаличнойОплаты(Объект, НомерОтдела) Экспорт

   Результат   = мОшибкаНетВозможностиПечатиПКО;

   // Получение параметров печати чека из ПКО

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

КонецФункции // ПолучитьПараметрыНаличнойОплаты()

// Функция осуществляет снятие X-отчёта на ФР.
// (API v2.0)
//
// Параметры:
//  Объект                         - <*>
//                                 - Объект драйвера ФР.
//
//  Пароль                         - <Число>
//                                 - Пароль пользователя ФР.
//
//  НомерЧека                      - <Число>
//                                 - Выходной параметр; номер чека ФР.
//
//  НомерСмены                     – <Число>
//                                 - Выходной параметр; номер текущей смены ФР.
//
// Возвращаемое значение:
//  <ПеречислениеСсылка.ТООшибки*> - Результат выполнения операции.
//
Функция XОтчет(Объект, Пароль, НомерЧека, НомерСмены) Экспорт
   
   Результат = мНетОшибки;
   Если ОткрытьПорт(Объект, Объект.Параметры) = мНетОшибки Тогда
           ОтменаЧека(Объект); // Отменяем незавершенный чек    
           Объект.Драйвер.printXReport(); // Печать Х-отчета
           Результат = ПроверкаОшибокРегистратора(Объект);
           Если Результат = мНетОшибки Тогда
               Объект.Драйвер.GetStatus(); // Читаем информацию из ККМ о НомереЧека и НомереСмены
               НомерЧека = Объект.Драйвер.LastCheckNum+1;
               НомерСмены = Объект.Драйвер.LastZRepNum;
           КонецЕсли;
           Объект.Драйвер.ClosePort();
   Иначе
           Результат = мОшибкаПриПодключении;        
   КонецЕсли;
   Возврат Результат;
КонецФункции // XОтчет()

// Функция осуществляет снятие Z-отчёта на ФР.
// (API v2.0)
//
// Параметры:
//  Объект                         - <*>
//                                 - Объект драйвера ФР.
//
//  Пароль                         - <Число>
//                                 - Пароль пользователя ФР.
//
//  НомерЧека                      - <Число>
//                                 - Выходной параметр; номер чека ФР.
//
//  НомерСмены                     – <Число>
//                                 - Выходной параметр; номер текущей смены ФР.
//
// Возвращаемое значение:
//  <ПеречислениеСсылка.ТООшибки*> - Результат выполнения операции.
//
Функция ZОтчет(Объект, Пароль, НомерЧека, НомерСмены) Экспорт

   Результат          = мНетОшибки;
   
   Если ОткрытьПорт(Объект, Объект.Параметры) = мНетОшибки Тогда
           ОтменаЧека(Объект); // Отменяем незавершенный чек    
           Объект.Драйвер.printZReport(); // Печать Z-отчета
           Результат = ПроверкаОшибокРегистратора(Объект);
           Если Результат = мНетОшибки Тогда
               Объект.Драйвер.GetStatus(); // Читаем информацию из ККМ о НомереЧека и НомереСмены
               НомерЧека = Объект.Драйвер.LastCheckNum+1;
               НомерСмены = Объект.Драйвер.LastZRepNum;
               ОчиститьАртикулы();
           КонецЕсли;
           Объект.Драйвер.OpenDrawer(); // Открытие денежного ящика
           Объект.Драйвер.ClosePort();
   Иначе
           Результат = мОшибкаПриПодключении;        
   КонецЕсли;
   Возврат Результат;
КонецФункции // ZОтчет()

// Функция осуществляет внесение (сумма > 0) или изъятие (сумма < 0) суммы на ФР.
// (API v2.0)
//
// Параметры:
//  Объект                         - <*>
//                                 - Объект драйвера ФР.
//
//  Пароль                         - <Число>
//                                 - Пароль пользователя ФР.
//
//  Сумма                          - <Число>
//                                 - Вносимая сумма.
//
// Возвращаемое значение:
//  <ПеречислениеСсылка.ТООшибки*> - Результат выполнения операции.
//
Функция Сумма(Объект, Пароль, Сумма) Экспорт

   Результат  = мНетОшибки;

   Если ОткрытьПорт(Объект, Объект.Параметры) = мНетОшибки Тогда
       ОтменаЧека(Объект); // Отменяем незавершенный чек    
       Объект.Драйвер.printRecCash(Сумма); // Печать чека внесения/выдачи на регистраторе
       Результат = ПроверкаОшибокРегистратора(Объект);
       Объект.Драйвер.OpenDrawer(); // Открытие денежного ящика
       Объект.Драйвер.ClosePort(); // Закрытие СОМ-порта
   Иначе
           Результат = мОшибкаПриПодключении;        
   КонецЕсли;
   
   Возврат Результат;
КонецФункции // Сумма()

// Функция осуществляет открытие чека на ФР.
// (API v2.0)
//
// Параметры:
//  Объект                         - <*>
//                                 - Объект драйвера ФР.
//
//  Пароль                         - <Число>
//                                 - Пароль пользователя ФР.
//
//  ЭтоВозврат                     - <Булево>
//                                 - Истина в случае, если открывается чек на возврат.
//
//  НомерЧека                      - <Число>
//                                 - Выходной параметр; номер чека ФР.
//
//  НомерСмены                     – <Число>
//                                 - Выходной параметр; номер текущей смены ФР.
//
// Возвращаемое значение:
//  <ПеречислениеСсылка.ТООшибки*> - Результат выполнения операции.
//
Функция ОткрытьЧек(Объект, Пароль, ЭтоВозврат, НомерЧека, НомерСмены, ФискальныйЧек = Истина) Экспорт

   Результат  = мНетОшибки;
   фЧекНаВозврат = ЭтоВозврат;

   Если ОткрытьПорт(Объект, Объект.Параметры) = мНетОшибки Тогда
       ОтменаЧека(Объект); // Отменяем незавершенный чек        
       Объект.Драйвер.GetStatus(); // Читаем информацию из ККМ о НомереЧека и НомереСмены
       НомерЧека = Объект.Драйвер.LastCheckNum+1;
       НомерСмены = Объект.Драйвер.LastZRepNum;
   Иначе
           Результат = мОшибкаПриПодключении;        
   КонецЕсли;

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

КонецФункции // ОткрытьЧек()

// Функция осуществляет печать строки чека на ФР.
// (API v2.0)
//
// Параметры:
//  Объект                         - <*>
//                                 - Объект драйвера ФР.
//
//  Наименование                   - <Строка>
//                                 - Описание товара, отображаемое в чеке.
//
//  Количество                     - <Число>
//                                 - Количество выводимой номенклатуры.
//
//  Цена                           - <Число>
//                                 - Цена выводимой номенклатуры за единицу.
//
//  Скидка                         - <Число>
//                                 - Скидка в % на выводимую номенклатуру.
//                                   В случае, если это значение < 0, абсолютное
//                                   значение данного параметра считается наценкой.
//
//  Отдел                          - <Число>
//                                 - Номер отдела (секции), которой соответствует данная строка.
//
//  НДС                            - <Число>
//                                 - Ставка НДС в %
//
// Возвращаемое значение:
//  <ПеречислениеСсылка.ТООшибки*> - Результат выполнения операции.
//
Функция ПечататьСтроку(Объект, Наименование, Количество, Цена, Скидка, Отдел, НДС, Код=0) Экспорт
Перем ЕдиницаВНаименовании, ДлинаНаименования, Порт;
   Результат  = мНетОшибки;
   
   // Получение параметров
   Объект.Параметры.Свойство("ЕдиницаВНаименовании", ЕдиницаВНаименовании);
   ЕдиницаВНаименовании = Формат(ЕдиницаВНаименовании,"ЧГ=0");
   
   Если ЕдиницаВНаименовании = 1 Тогда
       Объект.Параметры.Свойство("ДлинаНаименования", ДлинаНаименования);
       ДлинаНаименования = Формат(ДлинаНаименования,"ЧГ=0");
       Если НЕ ЗначениеЗаполнено(ДлинаНаименования) Тогда
           Сообщить(НСтр("ru='Не задано значение параметра ДлинаНаименования!';uk='Не задане значення параметра ДлинаНаименования!'"));
           ДлинаНаименования = 48;
       КонецЕсли;
   КонецЕсли;
   
   //Получение кода товара из параметров    //См. Обработка ТОСервер
   Если Код = 0 Тогда
       Объект.Параметры.Свойство("Код", Код);
   КонецЕсли;
   
   ЗаполнитьАртикулы() ;
   
   // вычисление значений Налоговой группы для продажи товара
   НалоговаяГруппа = мНДС.Получить(НДС);
   
   // Форматируем код товара, дополняя нулями до 11 символов
   КодТовара = Код;
   Пока СтрДлина(Строка(КодТовара)) < 11 Цикл
       КодТовара = "0" + КодТовара;
   КонецЦикла;    
   
   // Определяем параметр Весовой из Справочника номенклатуры
   Товар = Справочники.Номенклатура.НайтиПоКоду(КодТовара);
   Если Товар <> Справочники.Номенклатура.ПустаяСсылка() Тогда
       Если Товар.Весовой Тогда
           Делимость = 1;
       Иначе
           Делимость = 0;
       КонецЕсли;
   иначе
       Сообщить("Не найден товар с кодом "+КодТовара+".
       |Невозможно определить признак весового товара.");
       Результат = мОшибкаНеизвестно;
       Возврат Результат;
   КонецЕсли;
   
   Если СЗ.Количество()=0 Тогда
       Арт = Неопределено;    
   Иначе
       Арт = СЗ.Найти(СокрЛП(Строка(Код)), "ТоварКод");    
   КонецЕсли;
           
   Если Арт = Неопределено Тогда
       //присвоить новый    
       КодАртикула = СЗ.Количество()+1;
       Если КодАртикула > МаксКоличествоАртикулов Тогда
           Объект.ОписаниеОшибки = НСтр("ru='Необходимо снять Z-отчет.';uk='Необхідно зняти Z-звіт.'");
           Объект.Драйвер.ClosePort(); //закрываем порт
           Результат = мОшибкаНеизвестно;
           Возврат Результат;
       КонецЕсли;
       
       ЗаписатьВФайл(КодАртикула, Строка(Код), Наименование , Окр(Цена,2) , НалоговаяГруппа , Делимость);        
   Иначе
       // проверяем на наличие критичных изменений параметров товара
       // Критичные: Наименование, налоговая группа, признак делимости
       // Если есть изменения, присваиваем товару другой КодАртикула
       Если ((СокрЛП(Арт.ТоварНаименование) <> Лев(СокрЛП(Наименование),50)) ИЛИ (Арт.ТоварНГ <> НалоговаяГруппа) ИЛИ (Арт.ТоварДелимость <> Делимость)) Тогда
           КодАртикула = СЗ.Количество() + 1;
           СтеретьКодВФайле(СокрЛП(Арт.Артикул));
           ЗаписатьВФайл(КодАртикула, Строка(Код), Наименование , Окр(Цена,2) , НалоговаяГруппа , Делимость);
       Иначе
           КодАртикула = Арт.Артикул;     // артикул уже имеющийся
       КонецЕсли;    
   КонецЕсли;
   
   Если Не фЧекНаВозврат Тогда
       // продажа товара на ККМ
       Объект.Драйвер.printRecItem(Наименование, Цена, Количество, Делимость, НалоговаяГруппа, КодАртикула);
   Иначе
       // возврат товара на ККМ
       Объект.Драйвер.printRecItemRefund(Наименование, Цена, Количество, Делимость, НалоговаяГруппа, КодАртикула);
   КонецЕсли;
   
   Результат = ПроверкаОшибокРегистратора(Объект);

   Если Результат <> мНетОшибки Тогда
       Объект.Драйвер.printRecVoid();//отмена чека
       Объект.Драйвер.ClosePort();
       Возврат Результат; // Прекращение печати чека при возникновении ошибки при печати строки чека
   КонецЕсли;
   
   // printRecItemAdjustment(ТипСкидки, Комментарий, Сумма/Процент)
   // Печать скидки/надбавки на строку/чек
   // Тип скидки:
   // 0 - % скидка/надбавка на товар
   // 1 - абсолютная скидка/надбавка на товар
   // 2 - % скидка/надбавка на промежуточную сумму
   // 3 - абсолютная скидка/надбавка на промежуточную сумму
   
   Если Скидка <> 0 Тогда
       Объект.Драйвер.printRecItemAdjustment(0, "", -Скидка);
       Результат = ПроверкаОшибокРегистратора(Объект);

       Если Результат <> мНетОшибки Тогда
           Объект.Драйвер.printRecVoid(); //отмена чека
           Объект.Драйвер.ClosePort();
       КонецЕсли;
       
   КонецЕсли;
   Возврат Результат;

КонецФункции // ПечататьСтроку()

// Функция осуществляет аннулирование текущего открытого чека на ФР.
// (API v2.0)
//
// Параметры:
//  Объект                         - <*>
//                                 - Объект драйвера ФР.
//
// Возвращаемое значение:
//  <ПеречислениеСсылка.ТООшибки*> - Результат выполнения операции.
//
Функция АннулироватьЧек(Объект) Экспорт
   Результат = мНетОшибки;

   Объект.Драйвер.printRecVoid();    // Аннулировать чек
   Объект.Драйвер.ClosePort();

   Возврат Результат;
КонецФункции // АннулироватьЧек()

// Функция осуществляет отмену текущего открытого чека на ФР.
// (API v2.2)
//
// Параметры:
//  Объект                         - <*>
//                                 - Объект драйвера ФР.
//
// Возвращаемое значение:
//  <ПеречислениеСсылка.ТООшибки*> - Результат выполнения операции.
//
Функция ОтменитьЧек(Объект) Экспорт
   Результат = мНетОшибки;

   Объект.Драйвер.printRecVoid();    // Аннулировать чек
   Объект.Драйвер.ClosePort();

   Возврат Результат;
КонецФункции // ОтменитьЧек()

// Функция осуществляет закрытие текущего открытого чека на ФР.
// (API v2.0)
//
// Параметры:
//  Объект                         - <*>
//                                 - Объект драйвера ФР.
//
//  СуммаНал                       - <Число>
//                                 - Сумма, внесённая наличными.
//
//  СуммаБезнал                    - <Число>
//                                 - Сумма, внесённая при помощи карты.
//
// Возвращаемое значение:
//  <ПеречислениеСсылка.ТООшибки*> - Результат выполнения операции.
//
Функция ЗакрытьЧек(Объект, СуммаНал, СуммаБезнал) Экспорт
   Результат  = мНетОшибки;

   // Закрытие чека
   // printRecTotal(тип, сумма, комментарий)
   // 1 – оплата наличными;
   // 2 – оплата в кредит;
   // 3 – оплата чеком;
   // 4 – оплата карточкой;

   Если СуммаБезнал > 0 Тогда
       Объект.Драйвер.printRecTotal(4,СуммаБезнал,"");  // оплата карточкой
   КонецЕсли;
   
   Если СуммаНал > 0 Тогда
       Объект.Драйвер.printRecTotal(1,СуммаНал,"");  // оплата наличными
   КонецЕсли;
   Результат = ПроверкаОшибокРегистратора(Объект);
   Объект.Драйвер.OpenDrawer(); // Открытие денежного ящика
   Объект.Драйвер.ClosePort();

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

КонецФункции // ЗакрытьЧек()

// Функция возвращает Истину, если поддерживается смешанный режим печати чека
// (одновременно фискальные и нефискальные строки).
// (API v2.4)
//
// Параметры:
//
// Возвращаемое значение:
// <Булево>
//
Функция ПоддерживаетсяСмешанныйРежимПечати() Экспорт
   Результат  = Истина;
   Возврат Результат;
КонецФункции  // ПоддерживаетсяСмешанныйРежимПечати()

// Функция осуществляет построчную печать нефискального чека из переданного массива строк.
// (API v2.0)
//
// Параметры:
// Объект                            - <*>
//                                    - Объект драйвера ФР.
//
// МассивСтрок                        - <Массив>
//                                    - Массив строк для печати.
//
// Ширина                            - <Число>
//                                    - Ширина чековой ленты.
//
// Возвращаемое значение:
// <ПеречислениеСсылка.ТООшибки*>   - Результат выполнения операции
//
Функция НапечататьСтроки(Объект, МассивСтрок, Ширина) Экспорт
   Результат = мНетОшибки;
   Для Каждого СтрокаМассива Из МассивСтрок Цикл
       // Функция печати текстовой информации в чеке
       Объект.Драйвер.printComment(Лев(СтрокаМассива, Ширина), фЧекНаВозврат); // Печать текста в чеке
       Результат = ПроверкаОшибокРегистратора(Объект);
       Если Результат <> мНетОшибки Тогда
           Прервать; // Прервать печать текста при ошибке
       КонецЕсли;
   КонецЦикла;
   Возврат Результат;
КонецФункции // НапечататьСтроки()

///////////////////////////////////////////////////////////////////////////////

// Очищает файл артикулов
//
Процедура ОчиститьАртикулы()
   хВ = Новый xBase;
   хВ.ОткрытьФайл(ИмяФайлаАртикуловККМ);
   Если хВ.Открыта() Тогда
       хВ.ОчиститьФайл();
   Иначе
       Предупреждение ("Не удалось открыть файл артикулов ККМ");
   КонецЕсли;
   хВ.ЗакрытьФайл();
   СЗ.Очистить();

КонецПроцедуры // ОчиститьАртикулы()

//заполнение файла артикулами продаж
//
Процедура ЗаполнитьАртикулы()  
   хВ = Новый xBase;
   ФайлНаДиске = Новый Файл (ИмяФайлаАртикуловККМ);
   СЗ.Очистить();
   Если  ФайлНаДиске.Существует() Тогда
       хВ.ОткрытьФайл(ИмяФайлаАртикуловККМ);
       хВ.Первая();
       Если хВ.КоличествоЗаписей()> 0 Тогда
           Если Не (НачалоДня(хВ.DATA) = НачалоДня(ТекущаяДата())) Тогда
               хВ.ОчиститьФайл();
           КонецЕсли;
       КонецЕсли;
       Пока Не хВ.ВКонце() Цикл
               // заполняем таблицу значений для поиска артикулов
               НоваяСтрока = СЗ.Добавить();
               НоваяСтрока.ТоварКод= СокрЛП(хВ.Tovar);
               НоваяСтрока.Артикул = хВ.Code;
               НоваяСтрока.ТоварЦена = хВ.Price;
               НоваяСтрока.ТоварНГ = хВ.TaxGrp;
               НоваяСтрока.ТоварНаименование = хВ.Name;
               НоваяСтрока.ТоварДелимость = хВ.Unit;
               хВ.Следующая();
       КонецЦикла;
       хВ.ЗакрытьФайл();
   Иначе
       хВ.поля.Добавить("Tovar","S", 15);   // код товара
       хВ.поля.Добавить("Code" ,"N", 5);    // код РРО
       хВ.поля.Добавить("Name" ,"S", 50);   // наименование товара
       хВ.поля.Добавить("TaxGrp" ,"N", 1);  // налоговая группа
      &nb
9 tridog
 
23.06.12
19:07
(8) Да выложи на любой файловый хостинг, на тот же narod.ru например. В браузере портянку кода читать - дело не очень веселое :)
10 vahate
 
23.06.12
20:16
11 vahate
 
23.06.12
22:51
ну есть еще .dll и документация - но это я думаю вряд ли нужно при такой постановке?))
12 fly7
 
24.06.12
00:09
вы бы размещали сразу вакансию
что надо переписать обработку от Розницы 1 в Розницу 2
с указанием сроков и сумм
на халяву наврятли кто-то будет делать
13 vahate
 
24.06.12
00:30
да с чего ж на халяву???
просто я тоже вникнуть пытаюсь как задания здесь размещаются)) прицениваюсь))))))))))
14 tridog
 
24.06.12
18:20
(13) Поглядел, в прицнипе переписать возможно (единственное - не совсем понял на кой ляд оно пишет артикулы пролаваемых товаров в файлик *.dbf). Если оно Вам и правда нужно - стучитесь в аську (номер указан в личке), можем обсудить.
15 vahate
 
02.07.12
15:42
никто не подскажет к кому обратиться по данному вопросу))?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn