|
Получить результат (таблицу) процедуры с параметрами (Внешний источник данных) Niveus, unenu, ДенисСмирнов, dimasad, Галахад, DemonShinji2, H A D G E H O G s, JohnGilbert, Garykom, Crusher, Timon1405, 1cVandal, torgm, toypaul, Fish, vicof, alexis_nov, RomanYS, trooba, integer, bolder, zenik, Мультук, Бычье сердце, b_ru, elka302, nick86, Климов Сергей, Kigo_Kigo, ads55, maxar, PuhUfa, RVN, 2S, АгентБезопаснойНацио, Redkiy
| ☑ | |||
|---|---|---|---|---|---|
|
0
dimasad
24.03.26
✎
23:03
|
Стоит задача использовать в различных отчетах данные из сторонней СУБД.
Просто подключить таблицу ВИД - не проблема, а вот получить результат процедуры из ВИД - фиг. ВИД подключал согласно документации ( https://its.1c.ru/db/v8321doc#bookmark:dev:TI000001645 ) Вызов процедуры в скуле такой: exec dbo.rep_on ID, DateOn, DateOff exec dbo.rep_on 31, '20260101', '20260201' В ВИД создал ручками таблицу описал все поля, Вид таблицы - выражение: rep_on(&1, &2, &3). Даже явное указание параметров выдает ошибки: dbo.rep_on(36159, '20260101', '20260201') - объект не найден; [dbo].[report_on] (31, '20260101', '20260201') - неправильная конструкция "(" [dbo].[report_on] 31, '20260101', '20260201') - неправильный синтаксис "31"; Кто знает как заставить это г... взлететь, да еще и передавать туда параметры? ПС/тестил в консоле запросов. ППС/ странная оссобенность нашел эту процедуру при подключении функции синтаксис странный: rep_on;1(&1, &2, &3) |
||||
|
1
Garykom
гуру
25.03.26
✎
00:01
|
(0) Через хранимки уже пробовал?
Через них можно даже INSERT делать https://infostart.ru/1c/articles/1019947/ |
||||
|
2
H A D G E H O G s
25.03.26
✎
00:06
|
Тыц, тыц, тыц.
|
||||
|
3
bolder
25.03.26
✎
00:20
|
(0) Вызов хранимых процедур недокументирован.Поэтому только через грабли и набитые шишки.ВИД подключает физические таблицы внешней БД.В (1) про это есть.(2)собственные функции - да пожалуйста.
|
||||
|
4
Garykom
гуру
25.03.26
✎
02:01
|
(3) Дык в (2) как раз сначала создание хранимки на SQL
А затем вызов ее |
||||
|
5
bolder
25.03.26
✎
08:51
|
(4) Ну ОК.Отстал от жизни.Из (0):
"В зависимости от того, какой объект СУБД описывает создаваемая объект в «1С:Предприятие», следует корректно установить свойство Вид таблицы. Если свойство установлено в значение Таблица ‑ то объект конфигурации будет выступать аналогом реальной таблицы базы данных или представления (view). В остальных случаях свойство Вид таблицы следует установить в значение Выражение. Если таблица внешнего источника данных имеет вид Таблица, то в свойство Имя в источнике данных необходимо указать имя реальной таблицы или не параметризованного представления, например dbo.ErrorLog. Для таблицы вида Выражение, следует указать свойство Выражение в источнике данных. В простейшем случае это будет вызов функции, возвращающей табличные данные, например dbo.ufnGetContactInformation(&1). Если в это поле записывается выражение, то рекомендуется указать его в скобках, для минимизации различных конфликтов при реальном выполнении запроса к СУБД." В таком виде ВИД еще не использовал... В (2) отличный пример скалярной функции. |
||||
|
6
dimasad
25.03.26
✎
12:03
|
(2) Когда Функция возвращает значение - понятно (с таким игрался).
У меня даже не вьюшка поэтому стопанул на проблеме как получить таблицу... инфы очень мало. Код процедуры в MSSQL^ IS NOT NULL DROP TABLE #FinalReport; CREATE TABLE #FinalReport ( [КАТЕГОРИЯ уровень 1] NVARCHAR(600), [Месяц] NVARCHAR(50), ............... [Дополнительно] FLOAT ); -- ============================================================================ -- Предварительная загрузка справочников, не зависящих от месяца -- ============================================================================ IF OBJECT_ID('tempdb..#AllCategories') IS NOT NULL DROP TABLE #AllCategories; SELECT ............... -- ============================================================================ -- Цикл по месяцам от @data_start до @data_end -- ============================================================================ DECLARE @dt1 DATETIME = @data_start; DECLARE @dt2 DATETIME; DECLARE @CurrentMonth DATETIME; WHILE @dt1 <= @data_end BEGIN SET @dt2 = EOMONTH(@dt1); SET @CurrentMonth = @dt1; -- ============================================================================ -- Получаем обороты за текущий месяц -- ============================================================================ IF OBJECT_ID('tempdb..#Footing') IS NOT NULL DROP TABLE #Footing; SELECT ............... -- ============================================================================ -- Список договоров месяца для получения истории категорий -- ============================================================================ IF OBJECT_ID('tempdb..#ContractList') IS NOT NULL DROP TABLE #ContractList; SELECT DISTINCT ДогНомЗап AS Договор ............... -- ============================================================================ -- История категорий для договоров месяца -- ============================================================================ IF OBJECT_ID('tempdb..#Categories') IS NOT NULL DROP TABLE #Categories; CREATE TABLE #Categories ( ............... -- Индексы на #Categories для быстрого поиска CREATE CLUSTERED INDEX IX_MonthCategories_Contract ON #Categories (Договор, ДатНач, ДатКнц); CREATE INDEX IX_MonthCategories_Dates ON #Categories (Договор, ДатКнц DESC) INCLUDE (идКатегории); -- ============================================================================ -- Основная таблица с данными договоров за месяц + категории -- ============================================================================ IF OBJECT_ID('tempdb..#data') IS NOT NULL DROP TABLE #data; SELECT ............... -- ============================================================================ -- Вставка результатов месяца в итоговую таблицу -- ============================================================================ INSERT INTO #FinalReport SELECT ............... -- ============================================================================ -- Итоги -- ============================================================================ SELECT [ИНН], [Договор], ............... [Дополнительно] FROM #FinalReport ORDER BY [Договор], [Месяц], [КАТЕГОРИЯ] END |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |