1c и сервер SQL

1. Grivba 14 19.03.19 11:42 Сейчас в теме
Есть база данных 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
Показать


Вопрос:
Возможно ли отловить это событие в конфигураторе?
Если да то каким образом?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. user-z99999 67 19.03.19 12:24 Сейчас в теме
(1)
Может, создать независимый регистр сведений и писать туда ссылку или что-то ещё из справочника.
И по расписанию сравнивать запросом записи в регистре сведений и справочнике.

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

А программисты у вас странные.
Если у вас управлеческая база есть. Значит она написана не не tSQL, а на Delphi или Net.
И от туда прекрасно можно обратиться к 1С.
2. YannikAlx 43 19.03.19 11:53 Сейчас в теме
Вы странным образом пытаетесь ловить события SQL в 1С.... )))
В 1С вы можете отловить событие добавления записи в метаданные 1С.
SQL делает свои добавления совершенно самостоятельно.

Если вы добавляете запись напрямую в таблицу SQL из 1С вышеуказанной процедурой SQL, то вообще непонятно в чем проблема - вы же сами добавляете - тут же и делайте с этим что хотите
edkuznetsov; +1 Ответить
3. Grivba 14 19.03.19 12:08 Сейчас в теме
(2) Не поспоришь...
Но есть одно. добавление происходит из другой базы данных (т.к. по другому обратиться она к 1с не может , со слов программиста базы).
Сделал им веб сервис - ответ "у нас не получается из tSQL авторизоваться"
Сделал им HTTP сервис - ответ аналогичен.

Вся проблема в том, что обратиться к 1с они могут только посредствам tSQL.
4. Grivba 14 19.03.19 12:10 Сейчас в теме
А при добавлении записи, необходимо выполнить код, и выполнить его проще в 1с.
5. SedovSU@mail.ru 297 19.03.19 12:12 Сейчас в теме
Не какие образом не отловить, на сколько помню, ведь события возникает на стороне sql. Тут только ставить некий счетчик - обработчик ожидания и в какое время проверять таблицу, были ли в ней записи или нет.
6. Grivba 14 19.03.19 12:20 Сейчас в теме
(5)
Не какие образом не отловить, на сколько помню, ведь события возникает на стороне sql. Тут только ставить некий счетчик - обработчик ожидания и в какое время проверять таблицу, были ли в ней записи или нет.


Понятно, что без тройных костылей не обойтись.....
9. user-z99999 67 19.03.19 12:40 Сейчас в теме
(5)
Триггер и сообщение на почту ))
7. Grivba 14 19.03.19 12:21 Сейчас в теме
Быть может есть какие либо предложения по реализации менее болезненно?
11. user734789 19.03.19 13:21 Сейчас в теме
(7) В таблице сделать поле например "НоваяЗапись", индексированное, куда "программист базы" будет для новой записи устанавливать значение Истина, в 1С сделать регламентное задание которое с нужной вам периодичностью будет просматривать таблицу с отбором по этому полю Истина - делать нужные вам действия и после обработки у обработанных записей ставить значение Ложь.
SGordon1; +1 Ответить
10. fd13 19.03.19 13:20 Сейчас в теме
Я бы попробовал через внешний источник данных - в некую стороннюю таблицу пишем что-то нужное нам, а в 1С отлавливаем события подписками.
Прикрепленные файлы:
12. Grivba 14 20.03.19 18:24 Сейчас в теме
(10)
Все эти "обработчики" как и обработчики в Объекте "ВИД" срабатывают только для событий выполняемых на стороне 1с.
Т.е. если в другой базе добавили запись, 1с не отследит изменения либо создание.
13. fd13 20.03.19 19:34 Сейчас в теме
(12) Да, это я что-то затупил.
14. SGordon1 21.03.19 16:06 Сейчас в теме
Задача то, все таки отследить в клиенте добавление или в Конфигураторе? Ну и насколько оперативно это надо делать, может просто изредка базу почитывать ....
16. Grivba 14 22.03.19 14:31 Сейчас в теме
(14)
Такой процесс уже реализован.
Обход каждую минуту.
А необходимо сразу.


А по поводу прямой записи в таблицы 1С вот у меня сомнения: а идентификатор (GUID) разве не сервером 1С генерируется, а тут его кто создаст?


Стандартное NewID и переводим в Бинарное(16). и вуаля.
18. SGordon1 22.03.19 14:40 Сейчас в теме
(16)
Такой процесс уже реализован.


На сервере, в клиенте, в конфигураторе?
21. Grivba 14 25.03.19 20:33 Сейчас в теме
(18)
Ну тому ответ нажал...
это было для (15)
15. smurf2315 21.03.19 17:49 Сейчас в теме
На мой взгляд, из простых и надежных - писать в отдельную базу SQL и средствами 1С читать оттуда вот например нагуглил сразу: https://forum.infostart.ru/forum9/topic158940/
А по поводу прямой записи в таблицы 1С вот у меня сомнения: а идентификатор (GUID) разве не сервером 1С генерируется, а тут его кто создаст?
17. SGordon1 22.03.19 14:39 Сейчас в теме
(15) А разве GUID там какой то особенный? Лишь бы уникальный, не?
19. smurf2315 22.03.19 21:18 Сейчас в теме
(17) Я предполагаю что есть шанс получить два одинаковых сформированных разными генераторами SQL и 1C, ведь даже существует запрет на подключение одной базу к двум серверам 1С (хотя это технически возможно) из-за проблемы генерации GUID
20. SGordon1 25.03.19 09:52 Сейчас в теме
(19) По моему, GUID достаточно уникальный , например используем же мы его в распределенной базе данных? Если в 1с есть какие то косяки с генерацией пачки GUID, не обязательно их повторять ....
22. Grivba 14 25.03.19 20:36 Сейчас в теме
(19)

Будет "просто" ошибка записи....
А что бы не было, несложно проверить на существующий
- ПолучитьСсылку() -1с и "Sel ect ID fr om TBL where ID = 'Абра кадабра'"
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот