Вход | Регистрация
 

Как в 1С отслеживать изменение внешнего файла

Как в 1С отслеживать изменение внешнего файла
Я
   АртемП
 
05.03.21 - 13:33
Прошу помочь советом, как отслеживать изменение внешнего файла.
Ситуация следующая.
Подключаемся к системе быстрых платежей Сбера - P2P. Сбер дал утилиту обмена и пример связи ее с 1С.
Если кратко - с помощью WScript.Shell запускается exe-файл в который передаются параметры для отправки денег.
проблема в том, что этот файл не возращает результат.
Т.е. появилось окно отправки, вы подтверждаете, а результат пишется в текстовый лог файл.
Человек при отправке видит результат - успешно/отказ и причина отказа.
но надо записать это в 1С. А 1С об этом не знает - потому что результат записан в файл лога.
В Сбере сказали - так сделано, потому что 1С не смогли подружить со своей утилитой.
Получается надо постоянно опрашивать этот лог файл - изменился ли он?
Других нет вариантов?

Если только путем опроса этого файла, то как лучше сделать?
Не буду же я каждую секунду опрашивать? А как часто ?
На транзакцию со Сбером дается 9 минут.
Вероятно нужно запускать регламент в момент запуска exe и в течении 9 минут вести опрос ?
   polosov
 
1 - 05.03.21 - 13:36
Используй ЗапуститьПриложениеАсинх или ЗапуститьПриложение с параметром ДождатьсяЗавершения
   ДенисЧ
 
2 - 05.03.21 - 13:36
Можно изучить АПИ ОС и написать ВК, которая будет вешать хук на файловую систему и вызывать событие при изменении файла...
   АртемП
 
3 - 05.03.21 - 13:43
(2)не подходит
   АртемП
 
4 - 05.03.21 - 13:44
(1)спасибо попробую
   МихаилМ
 
5 - 05.03.21 - 13:52
откройте для себя wmi подписки
   АртемП
 
6 - 05.03.21 - 13:57
(5)где это в 1С ?
Что за дурацкая привычка говорить намеками.
Сказали A - говорите Б
   polosov
 
7 - 05.03.21 - 14:01
(5) А если у человека Linux или MacOS?
   Масянька
 
8 - 05.03.21 - 14:02
(6) Вот хамить не надо.
   МихаилМ
 
9 - 05.03.21 - 14:03
(6)я пишу для специалистов, которые что-то падзабылми, упустили. к Вам мой пост не относился.он для тех , кто будет искать подобные темы. ВЫ их найти не смогли.
   Базис
 
10 - 05.03.21 - 14:06
(6) Это можно.
А-Б.
АртемП - Б(в общем, не так много вариантов).
   Garikk
 
11 - 05.03.21 - 14:11
(7) есть аналог хуков файловой системы и в этих ОС
p.s. правда там свои приколы, как минимум в линуксе
   МихаилМ
 
12 - 05.03.21 - 14:14
(7) в (0) был указан "WScript.Shell". а он - только в вин
   АртемП
 
13 - 05.03.21 - 14:37
да запускается WScript.Shell
вот так
   WshShell = Новый COMОбъект("WScript.Shell");
   oE = WshShell.Run(ДиректорияПрограммы + " /new """ + ордер + """")
   АртемП
 
14 - 05.03.21 - 14:41
(1)>> Используй ЗапуститьПриложениеАсинх или ЗапуститьПриложение с параметром ДождатьсяЗавершения
А как это сделать для кода

WshShell = Новый COMОбъект("WScript.Shell");
оE = WshShell.Run(ДиректорияПрограммы + " /new """ + ордер + """")
   mistеr
 
15 - 05.03.21 - 14:49
(0) СБП она же вроде для физлиц. Зачем ее к 1С подключать?

Обнальные схемы мутите? :)
   arsik
 
16 - 05.03.21 - 15:07
(0) Мне кажется этот скрипт с утилитой, только лишь для тестирования. На самом деле там все отправляется через http. Вам к этому http нужно апи, и через это апи прикрутить в 1С напрямую, без прокладок.
   АртемП
 
17 - 05.03.21 - 17:34
(16)нет. общался с программистом сбера и жаловался, что нет события возврата.
Он сказал в прошлом году был возврат ответа в 1с. но плохо работало. решили писать в лог.
А программисты 1с пусть как хотят - так и парсят
   АртемП
 
18 - 05.03.21 - 17:35
(15) какие обнальные. Офицально подключаем - сбер дал. Тока там почти нет поддержки.
Небольшая консультация у программиста Сбера.
Куча документации - не асилил
и убогий пример кода для 1с.

А отлавливания событий и парсера - ничего нет - сами напишите.
тока пример кода отправки транзакции по каналу
   Kassern
 
19 - 05.03.21 - 17:40
(14) А в СП уже прочитал, что ЗапуститьПриложениеАсинх делает и какие у него параметры? Мне кажется, если бы прочитал, то не писал бы дальше про WshShell = Новый COMОбъект("WScript.Shell");
   АртемП
 
20 - 05.03.21 - 17:44
т.е. напрямую запускать приложение ? Без WshShell = Новый COMОбъект("WScript.Shell") ?
Это программист Сбера рекомендовал.
Но сказал, что плоховато знает 1с.
Возможно и можно обойтись без WScript.Shell
   Dzenn
 
21 - 05.03.21 - 17:44
Рассчитывай контрольную сумму файла и запоминай её. Как только она меняется - пора считывать изменения.

Функция КонтрольнаяСумма(ДвоичныеДанные)
    
    Хеширование = Новый ХешированиеДанных(ХешФункция.SHA256);
    Хеширование.Добавить(ДвоичныеДанные);
    КонтрольнаяСумма = СтрЗаменить(Строка(Хеширование.ХешСумма), " ", "");
    Возврат КонтрольнаяСумма;
    
КонецФункции
   АртемП
 
22 - 05.03.21 - 17:45
(21)спасибо! Да в принципе можно по дате времени файла сравнивать.
   Dzenn
 
23 - 05.03.21 - 17:49
(22) можно и по дате/времени, конечно, но дата/время - это всё-таки относительный показатель, а контрольная сумма - абсолютный


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.