На вкладке SQL (подготовка) в окне Настройка импорта (рис. 9.5.6) можно указать скрипт инициализации, выполнение которого подготавливает импортируемые данные в таблицах импорта к быстрой обработке и переносу в системные таблицы.
С помощью скрипта инициализации можно создать в таблицах импорта сервисные поля и проинициализировать их значения, создать индексы, загрузить дополнительные данные в буферные таблицы, сформировать логи и т.п.
Рисунок 9.5.6. SQL (подготовка)
При написании скрипта используется синтаксис языка SQL, в том числе, поддерживается использование оператора GO.
Оператор GO всегда должен идти в отдельной строке. Оператор GO поддерживается только в скрипте инициализации.
Пример скрипта инициализации
Пример использования данного скрипта – загрузка в таблицу импорта связей номенклатуры приходов поставщиков с номенклатурой справочника товаров (сохраненной при предыдущих импортах через SQL-скрипт обработки записей импорта – см. SQL-скрипт (обработка записи)).
Приведенный ниже скрипт проверяет наличие таблицы связи номенклатур и при отсутствии таковой создает ее. В случае, если таблица существует, производится сопоставление номенклатур в таблице импорта и таблице связей номенклатур и загрузка в таблицу импорта идентификаторов номенклатур справочника товаров для найденных соответствий.
update imp_protek set code = p1.name from imp_protek p1
update imp_protek set vat = 0
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[IMP_PROTEK_MEDS]') AND type in (N'U'))
begin
CREATE TABLE [dbo].[IMP_PROTEK_MEDS](
[IMP_PROTEK_MEDS_ID] [int] IDENTITY(1,1) NOT NULL,
[IMP_MEDS_ID] [varchar](64) NOT NULL,
[DM_MEDS_ID] [int] NOT NULL
) ON [PRIMARY]
ALTER TABLE [dbo].[IMP_PROTEK_MEDS] WITH CHECK ADD CONSTRAINT [FK_IMP_PROTEK_MEDS_DM_MEDS] FOREIGN KEY([DM_MEDS_ID])
REFERENCES [dbo].[DM_MEDS] ([DM_MEDS_ID])
ALTER TABLE [dbo].[IMP_PROTEK_MEDS] CHECK CONSTRAINT [FK_IMP_PROTEK_MEDS_DM_MEDS]
end
else
update imp_protek set _dm_meds_id = ipm.dm_meds_id from imp_protek_meds ipm where name = ipm.imp_meds_id