|
Сформировать отчет по СОМ | ☑ | ||
---|---|---|---|---|
0
Sasha_H
22.06.12
✎
10:55
|
Всем привет. Вот обмен по СОМ писал, а еще захотело руководство для удобства, чтобы можно было на справочнике номенклатура нажать кнопочку "остатки другой базы". Чтобы была возможность получить вывод штатного отчета АнализДоступностиНаСкладах с установленным отбором по номенклатуре.
Подскажите пожалуйста как это можно реализовать? |
|||
1
Рэйв
22.06.12
✎
10:56
|
делаешь запросы и реализуешь отчет на месте в вызывающей базе.
|
|||
2
pumbaEO
22.06.12
✎
10:57
|
имхо web-сервис более правильное и логичное решение.
|
|||
3
Sasha_H
22.06.12
✎
10:59
|
(2) надо минимальной кровью все реализовать, веб сервисы это немножко не туда.
|
|||
4
Sasha_H
22.06.12
✎
11:01
|
(1) то есть я никак не могу
УдаленныйРезультат = БазаСОМ.Отчеты.АнализДоступности.СформироватьОтчет(ТабДок); !? или что-то вэтом роде, просто возможно решал кто-то уже схожую задачу. |
|||
5
Pro-tone
модератор
22.06.12
✎
11:10
|
(4) это совсем никуда не годится. Делай запрос к внешней базе. Результат запроса обходи в текущей, и заполняй таблицу значений данными. Потом в СКД источник - внешний объект цепляй эту ТЗ. И строй красивый отчет.
|
|||
6
Sasha_H
22.06.12
✎
11:14
|
(5) это я понимаю, просто там запросы кислые так не охота это все переписывать. Просо я где-то читал, что как-то так можно сделать. а вот найти теперь не могу :(
|
|||
7
Pro-tone
модератор
22.06.12
✎
11:20
|
(6) скопируй текст запроса тогда в текущую базу из того отчета
|
|||
8
ukolabrother
22.06.12
✎
11:22
|
(0) запрос формируешь в базе источнике в консоли запросов так как тебе надо, в базе приемнике выполняешь его. в (5) все описано
|
|||
9
DailyLookingOn Sunset
22.06.12
✎
11:38
|
Формируешь по Com отчет, получившийся табдокумент сохраняешь в файл.
В текущей базе открываешь. |
|||
10
Sasha_H
22.06.12
✎
12:23
|
Base_COM = ВнешнееСоединение.Base_COM;
ОтчетСОМ = Base_COM.Отчеты.АнализДоступностиТоваровНаСкладах.Создать(); ОтчетСОМ.УстановитьНачальныеНастройки(); ОтборыСОМ = ОтчетСОМ.УниверсальныйОтчет.ПостроительОтчета.Отбор; ЭлемОтбораСОМ = ОтборыСОМ.Добавить("Номенклатура"); ЭлемОтбораСОМ.Использование = Истина; ЭлемОтбораСОМ.Значение = ВыбНоменклатура; ОтчетСОМ.УниверсальныйОтчет.СформироватьОтчет(ЭлементыФормы.РезультатОтчета); {Форма.Форма.Форма(45)}: Метод объекта не обнаружен (УстановитьНачальныеНастройки) ОтчетСОМ.УстановитьНачальныеНастройки(); Падает даже при вызове "УстановитьНачальныеНастройки" хотя в отчете эта процедура Экспорт! |
|||
11
Shurjk
22.06.12
✎
12:25
|
(0) Используешь отчет в вызываемой базе - и передаешь из него таблицу в ком объект, или там просто цифру с остатками.
ЗЫ ох и тормозит же все это дело. |
|||
12
Sasha_H
22.06.12
✎
12:28
|
(11) можно подробней, а то не понял ход ваших мыслей...
|
|||
13
Sasha_H
22.06.12
✎
12:31
|
Это в текущей баз отрабатывает и результат выводится на в Табличный документ обработки:
Отчет = Отчеты.АнализДоступностиТоваровНаСкладах.Создать(); Отчет.УстановитьНачальныеНастройки(); Отборы = Отчет.УниверсальныйОтчет.ПостроительОтчета.Отбор; ЭлемОтбора = Отборы.Добавить("Номенклатура"); ЭлемОтбора.Использование = Истина; ЭлемОтбора.Значение = ВыбНоменклатура; Отчет.УниверсальныйОтчет.СформироватьОтчет(ЭлементыФормы.РезультатОтчета); а вот через СОМ не видит экспортных функций и процедур. Я вот только не помню, есть же возможность открывать интерактивно как документ так и отчет удаленной базе. я просто не доконца прошариваю разницу в технологиях ОЛЕ автомейшен :) и СОМ. |
|||
14
Shurjk
22.06.12
✎
12:31
|
(12) Вызываешь функцию которая запускает отчет во второй базе - эта же функция возвращает в ком объект таблицу.
|
|||
15
Sasha_H
22.06.12
✎
12:34
|
(14) то-есть необходимо создать общий модуль с внешним соединением и там разместить функцию которая возвратит результат табличного документа?
но тут надо предвидеть еще структура входящих параметров и скорей всего придется строковой ГУИД передавать? |
|||
16
Sasha_H
22.06.12
✎
12:46
|
Создал общий модуль в Базе СОМ "ERP_ПолучитьДанныеОтчетов"
Функция РезультатОтчетаАнализДоступностиТовараНаСкладах(НомУникКод) Экспорт ТабДок = Новый ТабличныйДокумент; ВыбНоменклатура = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(НомУникКод)); Отчет = Отчеты.АнализДоступностиТоваровНаСкладах.Создать(); Отчет.УстановитьНачальныеНастройки(); Отборы = Отчет.УниверсальныйОтчет.ПостроительОтчета.Отбор; ЭлемОтбора = Отборы.Добавить("Номенклатура"); ЭлемОтбора.Использование = Истина; ЭлемОтбора.Значение = ВыбНоменклатура; Отчет.УниверсальныйОтчет.СформироватьОтчет(ТабДок); Возврат ТабДок; КонецФункции Вызов: НомУникКод = Строка(ВыбНоменклатура.УникальныйИдентификатор()); ТабДок = Base_COM.ERP_ПолучитьДанныеОтчетов.РезультатОтчетаАнализДоступностиТовараНаСкладах(НомУникКод); Падение: {Форма.Форма.Форма(56)}: Ошибка при вызове метода контекста (РезультатОтчетаАнализДоступностиТовараНаСкладах) ТабДок = Base_COM.ERP_ПолучитьДанныеОтчетов.РезультатОтчетаАнализДоступностиТовараНаСкладах(НомУникКод); по причине: Произошла исключительная ситуация (1C:Enterprise 8.2.15.294): {ОбщийМодуль.ERP_ПолучитьДанныеОтчетов(9)}: Метод объекта не обнаружен (УстановитьНачальныеНастройки) Что происходит!? |
|||
17
Sasha_H
22.06.12
✎
12:57
|
апну. ребят...
|
|||
18
Рэйв
22.06.12
✎
13:04
|
сделал бы свой отчет с нужными запросами к СОМ базе и не парился.
|
|||
19
Sasha_H
22.06.12
✎
13:04
|
Ну сами же писали сформируй отчет на СОМ базе и отправь в СОЬ, не получается... Где я накосячил?
|
|||
20
Sasha_H
22.06.12
✎
13:05
|
(18) Это да. Но группировки обходить в результатах это тоже не так и просто чтобы подсунуть данные в СКД.
|
|||
21
Рэйв
22.06.12
✎
13:07
|
(19)Не все процедуры отрабатывают по СОМ. потому что некоторые из них лезут в места, которые по COM недоступны или используют команды, которые недопустимы. Например достаточно там быть Сообщить() и вызов вывалится с ошибкой.
|
|||
22
Рэйв
22.06.12
✎
13:07
|
(19)Поэтому быстроее тебе самому написать
|
|||
23
Sasha_H
22.06.12
✎
15:02
|
Итак всю эту тему сделал чере ОЛЕ. Но вот никак не получается отобразить на форме резульат табличного документа:
ТабДок = ЗначениеИзСтрокиВнутр(Base_OLE.ERP_ПолучитьДанныеОтчетов.РезультатОтчетаАнализДоступностиТовараНаСкладах(НомУникКод)); // получаем печатную форму из удаленной базы ТабДок.Вывести(ЭлементыФормы.ТабРезультатОтчета); ЭлементыФормы.ТабРезультатОтчета.Показать(); //ТабДок.Показать(); //ТабДок.Показать(); - если это отремарить то открывается табличный документ в новом окне, в чем прикол?! |
|||
24
Sasha_H
22.06.12
✎
15:06
|
опять апну, почему не выходит отобразить тип данных "Табличный документ" в поле табличного документа на форме?
|
|||
25
Sasha_H
22.06.12
✎
15:08
|
Тьфу ты.. все получилось. Я не оттуда сделал Вывести :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |