Сетевая на 25 рабочих мест. Контроль изменения хозяйственных операций

пользователь
Регистрация: 26.02.2006

Здравствуйте!

ИБ 8 ОРН, сетевая версия 25 рабочих мест. Инфо-сервера нет

Возникла очень острая необходимость в фиксации того, с какого рабочего места идет изменение уже существующей операции. Подчеркну - именно уже имеющейся. Т.е. в журнале есть операция, её открыли, сделали с ней какие-либо действия (например, что-то поменяли в проводках), нажали ОК.

Нет необходимости фиксировать, что именно поменяли, достаточен факт изменения и рабочее место, с какого именно это сделано.

Как вариант, обычный текстовый файл, в который при изменении операции каждый раз добавляется новая строчка к примеру:

Дата_изменения время_изменения Рабочее_место Дата_операции Название_операции

Чтобы файл не раздувался, каждый месяц приходится создавать новый. Можно, конечно, и в табличку какую-то писать. Единственно, возникает вопрос совместного доступа, если в один момент два разных пользователя изменят две операции, и соответственно, нужно будет обработать два события.

Это мысли вслух. Может кто-то сможет посоветовать другой функционал для решения указанной задачи?

пользователь
Регистрация: 26.02.2006

Прописал функцию вручную - результат есть! Получаю на выходе файл!

Можно ли изменить кодовую страницу? Он пишется в DOS кодировке, а хотелось бы в ANSI.

И еще вопрос - можно ли как-то в автоматическом режиме раскидать настройку по всем программам? Т.е. при входе в базу проверялось, есть ли такая настройка в ib.ini? Если нет - добавить.

модератор
Регистрация: 06.09.2007

Для обработчиков "Оповещений" https://dev.ib.ru/sys/docs/platform/ib8/events/notific.html
не используется возвращаемое значение ТИП_ЛОГИКА.

Просто ФУНКЦИЯ ИзменениеОпер ( ТИП_ЧИСЛО: номер ).
Параметр "номер" можно передавать в функции типа ОПЕР_ДАТА, ОПЕР_СОД вне зависимости от включения фильтра.

В лог в папке базы уже пишутся текущие дата и время, а также логин пользователя и имя пользователя Windows. РАБ_МЕСТО можно дописать вручную.

Кодировка задается только для всех файлов трассировки скопом.
[Trace] OEM = 0
Все log файлы трассировки будут в ANSI
https://dev.ib.ru/sys/docs/platform/ib8/debug/log_files.html

дилер
Регистрация: 01.12.2005

И еще вопрос - можно ли как-то в автоматическом режиме раскидать настройку по всем программам?

Я использую два способа.

1. Синхронизирую файлы в папках по шаблону.

Например, я сделал новый файл бланка и мне его надо раскидать по рабочим местам.

При выходе из программы задаётся вопрос "Копировать новые файлы?". Если ответить "ДА", то файлы (по фильтру) будут записаны в общую папку.

Если эта сетевая папка будет прописана в определениях, то новые файлы будут скопированы по рабочим местам при входе в программу.

2. Для ИНИ файлов делаю прямую запись в нужный файл, пример добавления для обработки удаления счёта:

Фини=ТЕК_ДИР+"\ib.ini"
секция="AppFunctions"
КлюЧ="DelScet"
значение="["+СИМВ(34)+"MOD\MODUS.IBL"+СИМВ(34)+"].АОБР_УД_СЧЕТ"
АИЗ_ИНИ_ФАЙЛА(Фини,секция,КлюЧ,значЧ)
ЕСЛИ значЧ="" ТО АВ_ИНИ_ФАЙЛ(Фини,секция,КлюЧ,значение)КОНЕЦ_ЕСЛИ//добавляем событие удаление счёта, проверка на наличие записей в базе ЗП

Функция АВ_ИНИ_ФАЙЛ присутствует в библиотеке ibalt.ibl, которая использует ibalt.dll. Всё это присутствует в нашем обновлении.

пользователь
Регистрация: 26.02.2006

У меня обработчик событий на добавление операции в журнал не срабатывает, если в бланке операция формируется через конструктор ТИП_ОПЕРАЦИЯ а затем кодом:

СОЗДАТЬ(оп,ТИП_ОПЕРАЦИЯ)
оп.дата=дат_д
оп.документ="ЛЗК "+СТР(док)
оп.название="Списание материалов в производство"+СИМВ(13)+издел

......

ЕСЛИ оп.РЕДАКТИРОВАТЬ ТО
оп.ДОБАВИТЬ

КОНЕЦ_ЕСЛИ

дилер
Регистрация: 01.12.2005

Может это событие Изменение операции или Диалог редактирования?

Событие добавление операции, это реакция программы на кнопку добавления F7 и стандартный диалог (открывается список ТОП) не вызывается.

 

модератор
Регистрация: 06.09.2007

оп.ДОБАВИТЬ

Вы же операцию явно руками программно добавляете.
Я и писал, что в таком случае обработчик "Добавление операции" не вызывается.
Здесь можно явно что-то свое вызывать.

пользователь
Регистрация: 26.02.2006

Да, руками. Но при этом, если формировать ПКО, то нажав ОК в окне событие в лог записывается. Специально проверял. Единственно, там используется функция ОПЕРАЦИЯ для этих целей.

В хэлпе написано: "Это событие вызывается также при добавлении операции из бланка."

Получается, вызываться-то вызывается, но только при определенных условиях

модератор
Регистрация: 06.09.2007

Вызывается, когда платформа сама добавляет операцию.
В т.ч. при использовании функции ПРОВОДКА после пересчета бланка показывается стандартный диалог операции и при нажатии ОК операция добавляется платформой.