ИП "Еловик Юрий Леонидович"

13 февраля 2023 - дата последней корректировки сайта

Виртуальный работник

Доброго здравия тому кто читает данный опус!

Хотелось бы поделиться в статье опытом использования «Виртуального» работника на платформе 1С версии 7.7. «Виртуальный» работник позволяет сохранять самый ценный человеческий ресурс – время.

Под «Виртуальным» работником я понимаю отдельный сеанс (или сеансы) в 1С который обрабатывает задачи поступающие от людей – пользователей базы данных. Это позволяет запараллелить выполняемые задачи и таким образом экономить время людей. Задачи которые выполняют «виртуальные» работники в разработанных мною базах данных я бы разделил следующим образом (все нижеперечислоенные примеры из реальной жизни):

А) «Долгие отчеты»

Все сталкиваются с ситуацией когда формирование отдельных отчетов занимает продолжительное время в течении которого нельзя воспользоваться программой. Можно поручить формировать отчет «Виртуальному» работнику. Пример из реальной жизни – имеется форма прайса-заказник под клиента которая формируется в формате Excel – само формирование занимает до 5ти минут + используется буфер обмена (не судите строго – в этом прайсе показывается и история по покупкам и отдельно новинки, акции и основной прайс + картинки), но пользователь может выдать задание на формирование этих прайсов «Виртуальному» работнику. «Виртуальный» работник запущен в отдельном сеанс Windows на сервере и под отдельным сеансом 1С. Ниже в видео ролике показано как это работает на примере тестовой базы. Далее «Виртуальный» работник видит список заданий, выбирает по хронологии, выполняет его, создает некий результат который возвращается пользователю сформировавшему задание.

Еще один реальный пример – автоматическое создание предложений покупателям, которым будут отгружены в будущем товары. В момент когда менеджер создает новую заявку от покупателя – программа создает задание компьютеру на формирование предложения покупателю по специальному алгоритму – в результате которого программа проанализирует 1) текущие остатки, 2)что брал клиент, 3)что не брал и 4)что нам наиболее выгодно предложить – что опять же занимает продолжительное время и сформирует список товаров чтобы вмещался на листок. И в момент когда покупателю печатают комплект документов(это через несколько дней после оформления заявки) – предложение уже сформировано, его остается только распечатать.

Б) «Статистика»

Также «Виртуального» работника можно использовать для сбора статистической информации и потом её показывать (использовать) для реальных пользователей.

Пример из жизни: собираем статистику по каждому покупателю в разрезе специализаций номенклатуры которую покупал, графику платежей, объёмам закупок - а затем в момент когда менеджер открывает форму для заполнения заявки от покупателя – пока программа обсчитывает текущие остатки, резервы и прорисовывает заявку от покупателя– ему в течении пары минут показываются данные по статистике покупателя.

Или например - Менеджерам для их стимулирования в режиме «реального времени» показывается форма на кото рой отражается заработок, отгрузки и оплаты менеджера и коллег менеджера. Но так как сам заработок рассчитывается по сложному алгоритму в котором учитывается много факторов, то расчёт занимает 10-15 минут. «Виртуальный» пользователь периодически делает этот расчёт, а уже готовый результат видят менеджеры – и их это подстегивает к работе – когда они в реальном времени видят что заработали.

В) «События»

Еще один вариант использования «Виртуального» работника это реагирование на возникновение определенных событий:

опять же примеры из реальной жизни - главный бухгалтер проводит «Закрытие месяца» - «Виртуальный» работник пересчитывает управленческие себестоимости и себестоимости для разных видов отчетностей.

создают новую карточку продукции – «Виртуальный» работник определяет что появилась новая карточка, проверяет ее на заполненность и оповещает тех пользователей - кто должен довнести информацию – технолог, бухгалтер или менеджер. Тут кажется что проще бы было делать такую проверку при создании карточки – но карточку номенклатуры могут создать программно и здесь уже без «Виртуального» работника трудно обойтись

идут новые поступления товаров – «Виртуальный» работник проверяет изменение себестоимости и оповещает пользователей при её резком изменении. Без использования «Виртуального» работника увеличиться время ожидания пользователей выполняющих проведение новых поступлений

Г) «Планировщик задач»

есть также вариант использования «виртуального» работника в качестве выполнения плановых задач

– загрузка курсов, ставки рефинансирования – оповещение определенных пользователей о курсах, или о их резком изменении. Если привязку делать к определенному пользователю или группе пользователей – всегда есть вероятность – что один пользователь заболеет, другой уедет в командировку, третий будет в отпуске, а четвертый заменяющий первого не обратит внимание что курсы не загрузились – и импортное поступление оприходуют по неправильной учетной стоимости (из реальной жизни). Но «Виртуальный» работник всегда бодр и в прекрасном самочувствии.

-пользователь указывает какой товар его интересует – а «виртуальный» работник периодически мониторит свободные остатки и при их появлении - сигнализирует

-проверка списка номенклатуры на актуальность показа и корректировка списка показываемой номенклатуры. Например показывать только с остатками.

Д) «Обмен со сторонними программами»

- например «виртуальный» работник используется в качестве сервера для обмена с терминалами рабочих – где рабочие отчитываются о проделанной работе

- для обмена с торговыми площадками (отдельный пользователь занимается рекомендуемыми розничными ценами на продукцию – с утра ее меняет, а «виртуальный» работник связывается с торговой площадкой и корректирует изменившиеся цены у себя и в интернет магазинах сотрудничающих с производителем. Причем делает это до тех пор пока не убедиться что цены не поменялись.).

Реализация «Виртуального» работника

Для использования «Виртуального работника требуется решить ряд задач»

- обмен сообщениями и файлами между разными сеансами 1С.

для этого создал справочник «Пользователи». Код этого справочника = Имени пользователя 1С. При запуске сеанса – прописываю папку пользователя (для каждого пользователя должна быть своя). Обмен сообщениями происходит с помощью файлов. Если мне надо пользователю отправить сообщение, то в папку нужного пользователя записываю файл-сообщение. Для создания заданий лучше создать отдельный каталог – это для случая если заданий много и их должны обрабатывать несколько «виртуальных» работников. Ниже на рисунке пример такого сообщения

картинка с сообщением

- информирование пользователя на каком свете его задача поставленная «виртуальному» работнику

для этого разработал отдельную компоненту которая отслеживает файлы с заданиями и в режиме реального времени их отображает (пока ее не выложил), как выглядит можно увидеть на рисунке ниже

пример листа ожидания

в этой компоненте отображаются только задачи поставленные живыми пользователями «Виртуальному» работнику.

- оповещение пользователя о выполнении задачи

если задача возникает по ходу работы и не ставиться пользователем - оповещение может выполняться компонентой сообщения с обратной связью– в которой реализован механизм обратной связи (https://infostart.ru/public/1505725/). это окно живет параллельной жизнью с программой, т.е. менеджер может выставлять счет а оповещение о чем-то будет находиться в параллельном окне

обратная связь окна сообщения

- а как воспользоваться полученным результатом?

результат сохраняем во временную(можно самим создать внутри каталога базы данных) папку с уникальным именем, в файле ответа задания запоминаем ссылку на данный файл (все пути надо прописывать относительно к базе данных). В компонентах описанных выше – можно указать путь к файлу ответа и в этих компонентах имеется возможность вызвать обратную связь. При вызове обратной связи мы получаем данные из файла ответа и ссылки на созданные файлы(если они создаются) – а дальше обрабатываем их по своему произволу.

- отдельная задача это гарантированная работа «виртуального» работника.

(«Виртуальный» работник может зависнуть, не запуститься – как минимум реальные работники должны быть проинформированы об этом, как максимум «виртуальный» работник должен перезапуститься сам)

в 95% случаев помогает батник и планировщик задач, ниже пример батника который запускается в случае отсутствия файл-флага – внутри каталога базы данных «quit.txt» и если не запущен сеанс пользователя Computer это наличие файла 1Cv7.LCK в каталоге пользователя

chcp 1251 > nul

Set Path01="D:\Базы 1с\1С_Производство\"

if exist %Path01%"quit.txt" goto end

if exist "D:\Базы 1с\1С_Производство\Users\Computer\1Cv7.LCK" goto UserOnLine

start /wait "•" "C:\Program Files (x86)\1Cv77\BIN\1cv7s.exe" enterprise /D%Path01% /nComputer /pEdfsas

goto end

:UserOnLine

del "D:\Базы 1с\1С_Производство\Users\Computer\1Cv7.LCK"

:end

для более надежной работы использую связку компоненту + программу (пока ее не выкладывал) которая отслеживает зависание сеанса 1С под определенным пользователем и в случае зависания 1С – жестко завершает процесс, что позволяет батнику перезапустить «Виртуального» работника.

Плюсы и минусы использования «Виртуального» работника

- Плюсы

- экономия времени живых пользователей

- «Виртуальный» работник работает без выходных, отпусков и не просит кушать

- количество «Виртуальных» работников ограничено лишь возможностями платформы

- сокращается количество живых пользователей кому надо платить

- из-за осовбождающегося времени реальных раюотников - они пробуют несвойственные для себя роли(как пример бухгалтера начинали за доппремию помогать менеджерам продавать)

- Минусы

- более сложная реализация для программиста

- "виртуальный работник" пока не может решать творческие задачи

P.S.

Если статья заинтересовала – пишите и тогда выложу мною yfписанные компоненты предназначенные для работы с «Виртуальным» работником. Также мною была написана компонента позволяющая на базе 1Cv7.7 создать многопоточный сервер работающий по протоколу TCP-IP, но это будет отдельная статья. Для уменьшения нагрузки на базу и при наличии резервного сервера – часть задач может выполнять резервный сервер (физически размещенный в другом месте).