Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Передача між кліентом та сервером , оплата, передача даних на фіскальний          
rogabob Подменю пользователя
сообщение 04.12.21, 21:18
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0

64000000.gif
Конфігурація Розница 2.0, 1с 8.3 (кліент-сервер)
Є клієнт, на якому підключений фіскальний апарат .t400me.
При оплаті потрібна відправка даних на фіскальний апарат (умова= вигрузка в касовий = ИСТИНА, + кількість і штрихкод)
Суть в тому, що код нижче, пряцює при умові якщо кліент і є сервером.. при інакших обставинах там купа помилок.. тобто коли клієнт не є сервером
&НаСервере
Процедура ПечатьФК()
ТекушийПользователь=  ПараметрыСеанса.ТекущийПользователь;
Если ТекушийПользователь.Наименование="Адміністратор" Тогда
    
    ПроверкаКаса=Ложь;
    Для каждого стр из Объект.Товары Цикл
        Если стр.Номенклатура.ВигрузкаКасовий=Истина тогда
            ПроверкаКаса=Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;    
    Если ПроверкаКаса=Истина Тогда
        Драйвер = Новый COMОбъект("ecrmini.t400");
        Драйвер.t400me("open_port;2;115200;");  
        Драйвер.t400me("cashier_registration;1;0;");  
        Драйвер.t400me("open_receipt;0;");  
    КонецЕсли;

    Для каждого стр из  Объект.Товары Цикл    
        Если стр.Номенклатура.ВигрузкаКасовий=Истина тогда
            ШтрихКод1=ПолучитьШтрихКод(стр.Номенклатура);
            ШтрихКод=СокрЛП(ШтрихКод1);
            КстьТов=Формат(стр.Количество,"ЧДЦ=3; ЧРД=.; ЧГ=0");
            Драйвер.t400me("sale_plu;0;1;0;"+КстьТов+";"+ШтрихКод+";");  
        КонецЕсли;                
    КонецЦикла;    
    
    ОплатаКарткою=Ложь;
    Для каждого стрО из Объект.Оплата Цикл
        Если стрО.ВидОплаты.ТипОплаты=Перечисления.ТипыОплатЧекаККМ.ПлатежнаяКарта Тогда
            ОплатаКарткою=Истина;
        КонецЕсли;
    КонецЦикла;        
            
    Если ПроверкаКаса=Истина Тогда     
        Если  ОплатаКарткою=Истина Тогда    
            Драйвер.t400me("pay;2;0;");    
            Драйвер.t400me("close_port;");  
        Иначе
            Драйвер.t400me("pay;0;0;");  
            Драйвер.t400me("close_port;");  
        КонецЕсли;    
    КонецЕсли;
КонецЕсли;

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


На стороні сервера я пробував і тимчасові таблиці, і перемінну форми.. але все заходив в тупік..

Задача проста, потрібно щоб при натиску кнопки оплата і проходило надсилання даних на фіскальний.
Як грамотно це зробити.



Petre Подменю пользователя
сообщение 06.12.21, 8:12
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

rogabob @ 04.12.21, 21:18 * ,
Потрібно замість &НаСервере зробити це &НаКлиенте.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

rogabob Подменю пользователя
сообщение 06.12.21, 9:08
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0

Petre @ Сегодня, 8:12 * ,
якби то бало так просто!
ТекушийПользователь=  ПараметрыСеанса.ТекущийПользователь;

працює тільки
&НаСервере

А друге
Объект.Товары
доступний тільки на сервері...


а робота надоьєктом відьбувається на клієнті..
Обьект.товари береться з обьекта ОбьектЧекККМ перед закриттям
у процедури на сервері
Процедура ЗаполнитьЧекПоВсемДанным(ОбъектЧекККМ)
    
    ЗаполнитьЗначенияСвойств(ОбъектЧекККМ, Объект,,"Ссылка, Дата");
    
    ПечатьФК();

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

sava1 Подменю пользователя
сообщение 06.12.21, 10:42
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Цитата(rogabob @ 06.12.21, 9:08) *
якби то бало так просто!


А ніхто і не обіцяв, що буде просто.

Цитата(rogabob @ 06.12.21, 9:08) *
ТекушийПользователь= ПараметрыСеанса.ТекущийПользователь;


такі конструкції отримуємо на сервері через НеКонтектний визов;

Обект.Товари - також треба отримувати на сервері, передавати на клієнт і там обробляти

і т.д.

(Перечисление теж на клієнті недоступно......)

Vofka Подменю пользователя
сообщение 06.12.21, 11:56
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

rogabob, подход должен быть такой: идем на сервер, формируем нужные данные для печати на ФР и отдаем их на клиент; на клиенте выполняем уже только функции печати.

rogabob Подменю пользователя
сообщение 06.12.21, 13:35
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(sava1 @ 06.12.21, 10:42) *
Обект.Товари - також треба отримувати на сервері, передавати на клієнт і там обробляти



От це цікавіть найбільше... як краще це зробити... направте хоть на щось

Япробував з обьекта витягувати інформацію потрібну в масив структур і записувати це в
 НАСервере Перем

але при виклику зклієнта перем обнулялася

Batchir Подменю пользователя
сообщение 06.12.21, 14:10
Сообщение #7

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

&НаКлиенте
Процедура ПечатьФК()

    Драйвер = Новый COMОбъект("ecrmini.t400");
    стрДанных = ПолучитьДанныеССервера();

    Для каждого стр из  стрДанных .Товары Цикл        
            Драйвер.t400me("sale_plu;.........");            
    КонецЦикла;      

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

&НаСервере
Функция ПолучитьДанныеССервера()

    стрДанных = Новый Структура("Товары");
    // формируем массив строк (структур) которые нужно вывести на ФР и закидываем в возвращаемую структуру
    Возврат  стрДанных;    

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

rogabob Подменю пользователя
сообщение 06.12.21, 20:29
Сообщение #8

Общительный
**
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Batchir @ 06.12.21, 14:10) *

Дякую всім за підказки..
// Оплата чека
&НаКлиенте
Процедура ОплатитьТовары(ИмяФормыОплаты, ОплатаПлатежнойКартой = Неопределено, Печать = Ложь)

По "Точкам Останова" і структурі виклику всіх процедур та функцій з клієнта на сервер, таки отримав ті дані, перед самим "так званим очищенням"
СоздатьНовыйНаборКлиент();

Зі своїми умовами
ТекушийПользователь = ТекПольз();
Если ТекушийПользователь="АДМЕН" Тогда...
//////
&НаСервере
Функция ТекПольз()
Возврат ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
КонецФункции;

Вдалося нарешті отримати всі свої Объект.Товары, Номенклатура.ВигрузкаКасовий

І ще раз дякую модератору що закрив тему... бо прийшлося дивитися уроки по "ЗАПРОСАМ" по 100 раз одне і те саме, і воно помаленьку почало доходитиsmile.gif..але ж все таки вдалося..можливо не грамотно і можливо не цілком правильно, але воно працює..поки щоsmile.gif
44000000.gif

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 23.04.24, 23:07
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!