Skip to the content.

Назад

Команда 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

Наверх