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

1С 8.3 : Запись во внешний источник данных из 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 |  Дата:   Прочитано: 26001
 0 
Распечатать
Возможно, вас также заинтересует
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
Cодержимое указанного ниже веб-сайта в этом приложении блокируется... Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э
Google maps : вывод точек на карту и режим панорамы 9
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора
Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: ... по причине: Ошибка компоновки данных по причине: Ошибка получени
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.