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

Хранилище

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

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



> Как организовать фоновую работу сканера в 1С , платформа: 8.3.8, конфигурация: УТП для Украины 1.2.38.1          
sanytch Подменю пользователя
сообщение 03.03.17, 9:04
Сообщение #1

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

Здравствуйте форумчане. Решив проблему со сканером, описанную ЗДЕСЬ вышел на последний этап. Теперь нужно обработку которая сейчас работает со сканером сделать фоновой, т.е. так чтобы оператор 1С каждый раз не сворачивал-разворачивал её, а выполнял свои задачи, а обработка висела "в фоне". Подскажите как можно сделать... методом научного тыка (в Гугле не нашел каких то подходящих решений) запихивал процедуры во все модули, начиная с модуля управляемого приложения, модуля сеанса, внешнего соединения и заканчивая модулем обычного приложения... не реагирует никак. в обработке основная Процедура ВнешнееСобытие + Процедура ОбработкаПодбора, а дальше штатные из конфигурации из вышеупомянутых модулей... Но, воз и ныне там... Помогите, пжалста...

logist Подменю пользователя
сообщение 03.03.17, 9:38
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

В модуле обычного приложения есть обработчик ВнешнееСобытие, думаю вам туда. И где-то там же должна быть переменная которая хранит форму в которую должен помещаться результат сканирования.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: sanytch,

Flexy Подменю пользователя
сообщение 03.03.17, 10:24
Сообщение #3

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

В типовых обычно Обработчик события "ВнешнееСобытие"
И код:
Процедура ВнешнееСобытие(Источник, Событие, Данные)

    Если Не ВводДоступен() Тогда
        Возврат;
    КонецЕсли;

    ПолучитьСерверТО().ОбработатьВнешнееСобытие(Источник, Событие, Данные, ЭтаФорма);

КонецПроцедуры // ВнешнееСобытие()


ВводДоступен() проверяет активна ли форма для ввода в нее данных. Имхо для фона не нужно использовать проверку на активность формы.
Процедура ВнешнееСобытие(Источник, Событие, Данные)

    //Если Не ВводДоступен() Тогда
    //    Возврат;
    //КонецЕсли;

    ПолучитьСерверТО().ОбработатьВнешнееСобытие(Источник, Событие, Данные, ЭтаФорма);

КонецПроцедуры // ВнешнееСобытие()


Сообщение отредактировал Flexy - 03.03.17, 10:24

logist Подменю пользователя
сообщение 03.03.17, 11:22
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Flexy @ 03.03.17, 11:24) *
Имхо для фона не нужно использовать проверку на активность формы.

Это само собой, но внешнему событию надо понимать в какую форму передавать ввод, иначе он будет в активную.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Flexy Подменю пользователя
сообщение 03.03.17, 12:07
Сообщение #5

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(logist @ 03.03.17, 11:22) *
Это само собой, но внешнему событию надо понимать в какую форму передавать ввод, иначе он будет в активную.

Точно smile.gif Тогда наверное ловить в модуле приложения в процедуре ОбработкаВнешнегоСобытия() и передавать в какой-то свой дополнительный общий модуль для обработки. По идее так будет и без формы работать.
А если надо в форме обработки "в фоне", то делаем обработчик события для этой формы:
Процедура ВнешнееСобытие(Источник, Событие, Данные)

   ОбработатьДанныеВФоне(Данные);

КонецПроцедуры // ВнешнееСобытие()


Сообщение отредактировал Flexy - 03.03.17, 12:24

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

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

logist @ Сегодня, 9:38 * ,
Спасибо за ответ. В моей конфе в Модуле Обычного Приложения Процедура ОбработкаВнешнегоСобытия выглядит так:

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    
    Если Источник = "Zvit1C" Тогда
        // Событие от 1С:Звіт        
        
        // Актуализируем глМенеджерЗвит1С, если был подключен как внешний
        Если Не глПодключитьМенеджерЗвит1С() Тогда
            Возврат;
        КонецЕсли;

        глМенеджерЗвит1С.ОбработкаВнешнегоСобытияЗвит1С(Источник, Событие, Данные);    
        
    Иначе
        //Событие от торгового оборудования
        Если мКлиентOnline <> Неопределено Тогда
            мКлиентOnline.ВнешнееСобытие(Источник, Событие, Данные);
        КонецЕсли;

        ПолучитьСерверТО().ЗавершитьОбработкуВнешнегоСобытия(Источник, Событие, Данные);
        
    КонецЕсли;    
    
КонецПроцедуры

и если я правильно понимаю то сразу после открытия базы я просто пикну сканером и должен попасть в эту процедуру после Иначе в //Событие от торгового оборудования. Ставлю после Иначе точку останова и не попадаю туда...

sanytch @ Сегодня, 21:47 * ,
А не заходит сюда потому что при запуске видимо нужно подключать сканер...
в обработке:
Процедура ПриОткрытии()
    
    ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);

но в модуле обычного приложения так низя) какая такая ЭтаФорма... Подскажите Как заставить 1С-ку подкючить СШК сразу при открытии?

sanytch Подменю пользователя
сообщение 04.03.17, 0:00
Сообщение #7

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

Flexy @ Сегодня, 12:07 * ,
Спасибо за ответ. Идея "без формы" вообще классная, но моя обработка с таблицей, где все данные о сканированных объектах плюс выбор типа цены и всякое другое. Да и с реализацией этой идеи, думаю, мне будет тяжко справится и долго, а время, как раз то, чего у меня нет.
А вот про
Цитата
А если надо в форме обработки "в фоне", то делаем обработчик события для этой формы:
Процедура ВнешнееСобытие(Источник, Событие, Данные)

ОбработатьДанныеВФоне(Данные);

КонецПроцедуры // ВнешнееСобытие()

если не затруднит подробнее, не совсем вашу мысль улавливаю.
У меня из Процедуры ВнешнееСобытие вызывается первым делом ПолучитьСерверТО().ОбработатьВнешнееСобытие(Источник, Событие, Данные, ЭтаФорма) а потом пролетав по разным общим модулям возвращаюсь в обработку в процедуру ОбработкаПодбора(ТабличнаяЧасть, ЗначениеВыбора) где заполняю ТЧ на форме номенклатурой штрихкода.
дальше танцы с бубнами со сканером и т.д. и т.п. Чтобы было понятнее обработка моя это сильно урезаный документ ЧекККМ из УТП(более точно о конфе и платформе в теме вопроса).
Ваш вариант позволит даже при свёрнутой форме всё это проделать? Не пойму как это возможно, ведь внешнее событие может возникнуть только при активной форме... Или я об этом не знаю? Не обессудьте ибо уже бьюс неделю по ночам с этим чудным сканером... 09000000.gif

logist Подменю пользователя
сообщение 04.03.17, 9:47
Сообщение #8

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(sanytch @ 03.03.17, 23:35) *
но в модуле обычного приложения так низя) какая такая ЭтаФорма

Вы плохо читали/поняли мое сообщение. В модуле обычного приложения создайте глобальную переменную, при открытии формы в которую будет помещаться результат сканирования после подключения оборудования (ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма)wink.gif добавляйте глФормаДляРезультатаСканирования = ЭтаФорма; Только не забудьте ПриЗакрытии формы сделать глФормаДляРезультатаСканирования = Неопределено.
В модуле обычного приложения в обработке внешнего события после Иначе добавьте
Если глФормаДляРезультатаСканирования <> Неопределено Тогда
ПолучитьСерверТО().ОбработатьВнешнееСобытие(Источник, Событие, Данные, глФормаДляРезультатаСканирования);
Возврат; // Или по другому определите окончание, так что бы дальше код не выполнялся
КонецЕсли


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: sanytch,

sanytch Подменю пользователя
сообщение 04.03.17, 13:43
Сообщение #9

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

logist @ Сегодня, 9:47 * ,
Спасибо большое понял! теперь ход мысли ясен) Спасибо за "разжовывание". Буду терзать) 32000000.gif

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


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

 

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