|
Как в 1С отслеживать изменение внешнего файла | ☑ | ||
---|---|---|---|---|
0
АртемП
05.03.21
✎
13:33
|
Прошу помочь советом, как отслеживать изменение внешнего файла.
Ситуация следующая. Подключаемся к системе быстрых платежей Сбера - P2P. Сбер дал утилиту обмена и пример связи ее с 1С. Если кратко - с помощью WScript.Shell запускается exe-файл в который передаются параметры для отправки денег. проблема в том, что этот файл не возращает результат. Т.е. появилось окно отправки, вы подтверждаете, а результат пишется в текстовый лог файл. Человек при отправке видит результат - успешно/отказ и причина отказа. но надо записать это в 1С. А 1С об этом не знает - потому что результат записан в файл лога. В Сбере сказали - так сделано, потому что 1С не смогли подружить со своей утилитой. Получается надо постоянно опрашивать этот лог файл - изменился ли он? Других нет вариантов? Если только путем опроса этого файла, то как лучше сделать? Не буду же я каждую секунду опрашивать? А как часто ? На транзакцию со Сбером дается 9 минут. Вероятно нужно запускать регламент в момент запуска exe и в течении 9 минут вести опрос ? |
|||
1
polosov
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 - говорите Б |
|||
7
polosov
05.03.21
✎
14:01
|
(5) А если у человека Linux или MacOS?
|
|||
8
Масянька
05.03.21
✎
14:02
|
(6) Вот хамить не надо.
|
|||
9
МихаилМ
05.03.21
✎
14:03
|
(6)я пишу для специалистов, которые что-то падзабылми, упустили. к Вам мой пост не относился.он для тех , кто будет искать подобные темы. ВЫ их найти не смогли.
|
|||
10
Базис
naïve
05.03.21
✎
14:06
|
(6) Это можно.
А-Б. АртемП - Б(в общем, не так много вариантов). |
|||
11
Garikk
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 """ + ордер + """") |
|||
15
mistеr
05.03.21
✎
14:49
|
(0) СБП она же вроде для физлиц. Зачем ее к 1С подключать?
Обнальные схемы мутите? :) |
|||
16
arsik
гуру
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с. А отлавливания событий и парсера - ничего нет - сами напишите. тока пример кода отправки транзакции по каналу |
|||
19
Kassern
05.03.21
✎
17:40
|
(14) А в СП уже прочитал, что ЗапуститьПриложениеАсинх делает и какие у него параметры? Мне кажется, если бы прочитал, то не писал бы дальше про WshShell = Новый COMОбъект("WScript.Shell");
|
|||
20
АртемП
05.03.21
✎
17:44
|
т.е. напрямую запускать приложение ? Без WshShell = Новый COMОбъект("WScript.Shell") ?
Это программист Сбера рекомендовал. Но сказал, что плоховато знает 1с. Возможно и можно обойтись без WScript.Shell |
|||
21
Dzenn
гуру
05.03.21
✎
17:44
|
Рассчитывай контрольную сумму файла и запоминай её. Как только она меняется - пора считывать изменения.
Функция КонтрольнаяСумма(ДвоичныеДанные) Хеширование = Новый ХешированиеДанных(ХешФункция.SHA256); Хеширование.Добавить(ДвоичныеДанные); КонтрольнаяСумма = СтрЗаменить(Строка(Хеширование.ХешСумма), " ", ""); Возврат КонтрольнаяСумма; КонецФункции |
|||
22
АртемП
05.03.21
✎
17:45
|
(21)спасибо! Да в принципе можно по дате времени файла сравнивать.
|
|||
23
Dzenn
гуру
05.03.21
✎
17:49
|
(22) можно и по дате/времени, конечно, но дата/время - это всё-таки относительный показатель, а контрольная сумма - абсолютный
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |