helpf.pro
Регистрация
 0 
Распечатать

Запись во внешний источник данных из 1С 8.3 (без com подключения)

В 8.3.4 в свойствах объекта "Внешний источник данных" появилась вкладка "Функции". Для внешних таблиц MSSQL данный функционал позволяет подключить к 1С хранимые процедуры и функции на стороне SQL. В том числе и процедуры, содержащие запросы SQL на добавление и обновление данных внешней таблицы.

По сравнению с прошлым примером количество кода 1С уменьшится, поскольку подключение через COM-объект и формирование запросов SQL на стороне 1С нам больше не потребуется.

Для начала создадим тестовую таблицу с помощью скрипта в панели управления сервером SQL:

Код SQL
 USE [test]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[tovar](
 [id] [int] IDENTITY(1,1) NOT NULL,
 [name] [nvarchar](max) NOT NULL,
 [price] [numeric](18, 2) NULL,
 CONSTRAINT [PK_tovar] PRIMARY KEY CLUSTERED
(
 [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO 

Скрипт создания процедуры insert_tovar:

Код SQL
 SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE insert_tovar

 @name nvarchar(max),
 @price numeric(18, 2)

AS
BEGIN

 SET NOCOUNT ON;

 INSERT INTO test.dbo.tovar
    ([name] ,[price])
    VALUES (@name, @price)

END
GO 

Скрипт создания процедуры update_tovar:

Код SQL
 SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE update_tovar

 @id int,
 @name nvarchar(max),
 @price numeric(18, 2)

AS
BEGIN

 SET NOCOUNT ON;

 UPDATE test.dbo.tovar
    SET [name] = @name
    ,[price] = @price
 WHERE id = @id 
 
END
GO

Теперь переходим в 1С и добавляем внешний источник данных. Подключаем таблицу SQL:

Подключаем процедуры:

Далее, для таблицы dbo_tovar создаем формы списка и объекта. На форму списка вешаем команду "ДобавитьТовар" и обработку оповещения:

Код 1C v 8.3
 &НаКлиенте
Процедура ДобавитьТовар(Команда)
 
 ОткрытьФорму("ВнешнийИсточникДанных.test.Таблица.dbo_tovar.ФормаОбъекта", , ЭтаФорма);
 
КонецПроцедуры


&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
 
 Если ИмяСобытия = "ОбновитьВнешнийИсточникДанных_dbo_tovar" Тогда
  Элементы.Список.Обновить();
 КонецЕсли; 
 
КонецПроцедуры

На форме объекта на командной панели размещаем команду "ЗаписатьТовар", для кнопки выставляем свойство "Кнопка по умолчанию":

Код 1C v 8.3
 &НаКлиенте
Процедура ЗаписатьТовар(Команда)
 
 ЗаписатьТоварНаСервере();
 Оповестить("ОбновитьВнешнийИсточникДанных_dbo_tovar");
 
КонецПроцедуры


&НаСервере
Процедура ЗаписатьТоварНаСервере()
 
 Если Объект.Ссылка.Пустая() Тогда
  ВнешниеИсточникиДанных.test.dbo_insert_tovar(Объект.name, Объект.price);
 Иначе
  ВнешниеИсточникиДанных.test.dbo_update_tovar(Объект.id, Объект.name, Объект.price);
 КонецЕсли;
 
КонецПроцедуры 

Для свойства реквизита "Объект" снимаем свойство "Сохраняемые данные", для поля "id" устанавливаем свойство "Только просмотр".

Готово, запускаем, тестируем. Для тестов использовался сервер MSSQL Server 2008 R2.

Источник

Разместил:   Версии: | 8.3 |  Дата:   Прочитано: 25964
 0 
Распечатать
Возможно, вас также заинтересует
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
1C медленно работает по сети с базой на SQL Server 22
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П
1Cv8.1CD - Файл данных достиг максимального размера! 9
1С выдает предупреждение " Файл данных достиг максимального размера" . Подскажите из - за чего это и как можно решить ? Превышен размер файла, обычно это сообщение возникает, когда размер файла 1Cv8.1CD приближается к 10 гигабайтам или размер ка
Посмотреть все результаты поиска похожих
Комментарии
Dimatok
14.11.2018 23:55Комментарий: 1
Dimatok

Огромное спасибо за предоставленную информацию!До этого пытался вписать все напрямую в таблицу.

Вы упростили мне жизнь!!!

Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.