Команда INSERT
Реализация DaJet Script команды INSERT имеет свою специфику: она разрабатывалась в основном для вставки сообщений во входящую очередь. Главным образом имеется ввиду соответствующий регистр сведений 1С:Предприятие 8. При этом указание всех значений для соответствующих полей регистра сведений необязательно. Если какое-то значение будет не предоставлено, DaJet Script автоматически подставит значение по умолчанию, которое соответствует типу данных соответствуещего поля (измерению, ресурсу или реквизиту).
Команды INSERT поддерживает использование общих табличных выражений. Данный вариант позволяет выполнять вставку нескольких записей одновременно одной командой.
Обычная команда INSERT (рекомендованный способ)
USE 'mssql://server/database'
INSERT РегистрСведений.ВходящиеСообщения
SELECT НомерСообщения = VECTOR('so_incoming_queue')
, ТипСообщения = 'test'
, ТелоСообщения = 'тест'
, ОтметкаВремени = NOW()
, Идентификатор = NEWUUID()
END
Использование общего табличного выражения
DECLARE @vector number = 0
USE 'pgsql://postgres:postgres@localhost:5432/database'
SET @vector = SELECT VECTOR('so_incoming_queue')
CREATE COMPUTED TABLE cte AS
(
SELECT НомерСообщения = @vector
, ТипСообщения = 'test'
, ТелоСообщения = 'тест'
, ОтметкаВремени = NOW()
)
INSERT РегистрСведений.ВходящиеСообщения FROM cte
END
Вставка нескольких записей одной командой
USE 'mssql://server/database'
CREATE COMPUTED TABLE cte AS
(
SELECT НомерСообщения = 1.0
, ТипСообщения = 'test 1'
, ТелоСообщения = 'тест 1'
, ОтметкаВремени = NOW()
UNION ALL
SELECT НомерСообщения = 2.0
, ТипСообщения = 'test 2'
, ТелоСообщения = 'тест 2'
, ОтметкаВремени = NOW()
)
INSERT РегистрСведений.ВходящиеСообщения FROM cte
END