Есть база данных 1с серверная.
В ней таблица [dbo].[_Reference18X1], в которую добавляют запись из другой таблицы по средствам запроса:
ins ert in to [_Reference18X1] (
[_IDRRef]
,[_Marked]
,[_PredefinedID]
,[_Code]
,[_Description]
,[_Fld19]
)
SEL ECT TOP 1
CONVERT(BINARY(16), NEWID())
,[_Marked]
,[_PredefinedID]
,[_Code] + 1
,'test'
,'test 1'
FR OM [TestServ].[dbo].[_Reference18X1]
order by [_Version] desc
Показать
Вопрос:
Возможно ли отловить это событие в конфигураторе?
Если да то каким образом?
(1)
Может, создать независимый регистр сведений и писать туда ссылку или что-то ещё из справочника.
И по расписанию сравнивать запросом записи в регистре сведений и справочнике.
Или проверять максимальный код справочника (нужно его где-то запоминать), рег.заданием по расписанию.
А программисты у вас странные.
Если у вас управлеческая база есть. Значит она написана не не tSQL, а на Delphi или Net.
И от туда прекрасно можно обратиться к 1С.
Вы странным образом пытаетесь ловить события SQL в 1С.... )))
В 1С вы можете отловить событие добавления записи в метаданные 1С.
SQL делает свои добавления совершенно самостоятельно.
Если вы добавляете запись напрямую в таблицу SQL из 1С вышеуказанной процедурой SQL, то вообще непонятно в чем проблема - вы же сами добавляете - тут же и делайте с этим что хотите
(2) Не поспоришь...
Но есть одно. добавление происходит из другой базы данных (т.к. по другому обратиться она к 1с не может , со слов программиста базы).
Сделал им веб сервис - ответ "у нас не получается из tSQL авторизоваться"
Сделал им HTTP сервис - ответ аналогичен.
Вся проблема в том, что обратиться к 1с они могут только посредствам tSQL.
5.
SedovSU@mail.ru
29819.03.19 12:12 Сейчас в теме
Не какие образом не отловить, на сколько помню, ведь события возникает на стороне sql. Тут только ставить некий счетчик - обработчик ожидания и в какое время проверять таблицу, были ли в ней записи или нет.
Не какие образом не отловить, на сколько помню, ведь события возникает на стороне sql. Тут только ставить некий счетчик - обработчик ожидания и в какое время проверять таблицу, были ли в ней записи или нет.
Понятно, что без тройных костылей не обойтись.....
(7) В таблице сделать поле например "НоваяЗапись", индексированное, куда "программист базы" будет для новой записи устанавливать значение Истина, в 1С сделать регламентное задание которое с нужной вам периодичностью будет просматривать таблицу с отбором по этому полю Истина - делать нужные вам действия и после обработки у обработанных записей ставить значение Ложь.
(10)
Все эти "обработчики" как и обработчики в Объекте "ВИД" срабатывают только для событий выполняемых на стороне 1с.
Т.е. если в другой базе добавили запись, 1с не отследит изменения либо создание.
Задача то, все таки отследить в клиенте добавление или в Конфигураторе? Ну и насколько оперативно это надо делать, может просто изредка базу почитывать ....
На мой взгляд, из простых и надежных - писать в отдельную базу SQL и средствами 1С читать оттуда вот например нагуглил сразу: https://forum.infostart.ru/forum9/topic158940/ А по поводу прямой записи в таблицы 1С вот у меня сомнения: а идентификатор (GUID) разве не сервером 1С генерируется, а тут его кто создаст?
(17) Я предполагаю что есть шанс получить два одинаковых сформированных разными генераторами SQL и 1C, ведь даже существует запрет на подключение одной базу к двум серверам 1С (хотя это технически возможно) из-за проблемы генерации GUID
(19) По моему, GUID достаточно уникальный , например используем же мы его в распределенной базе данных? Если в 1с есть какие то косяки с генерацией пачки GUID, не обязательно их повторять ....
Будет "просто" ошибка записи....
А что бы не было, несложно проверить на существующий
- ПолучитьСсылку() -1с и "Sel ect ID fr om TBL where ID = 'Абра кадабра'"