|
Сформировать и выгрузить в EXCEL отчет из другой базы по COM соединению | ☑ | ||
---|---|---|---|---|
0
maslov_ilya
21.12.21
✎
16:50
|
Добрый день!
С COMобъект до этого знаком был только поверхностно. Задача: Имеются базы: УПП 1.3, БУХ 3.0 (серверные) Необходимо находясь в УПП 1.3 во внешней обработке, по кнопке выгрузить в EXCEL отчет (к примеру ОСВ), установив отборы (Период, Организация), и сохранить в папку. Прочитал несколько ТОПиков и статей. Сделал тестовый вариант обработки для того чтобы разобраться и получить хотя бы данные из другой базы для начала. За основу взял пример из статьи: https://infostart.ru/1c/articles/827371/ Но... 1. Когда пытаюсь установить параметры, получаю ошибку: Ошибка при вызове метода контекста (УстановитьЗначениеПараметра) {ВнешняяОбработка.АвтоматическоеФормированиеОтчетов.Форма.Форма.Форма(16)}: КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", НачалоМесяца(МесяцРасчета)); по причине: Произошла исключительная ситуация (1C:Enterprise 8.3.19.1150): Параметр с указанным именем не найден 2. Закомментил строки установки параметров. Код выполняется без ошибок но ТЗ пустая, без данных. КОД ОБРАБОТКИ: Процедура КнопкаВыполнитьНажатие(Кнопка) БазаИсточник = ПодключитьсяКбазе(); ПапкаОтчетов = "T:\**********\ТестВыгрузкиОтчетов\Отчет.XLSX"; Если ТипЗнч(БазаИсточник) <> Тип("Неопределено") Тогда МесяцРасчета = Дата(2021,11,01); СхемаКомпоновкиДанных = БазаИсточник.Отчеты.ОборотноСальдоваяВедомость.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); КомпоновщикНастроекНастройки = БазаИсточник.NewObject("КомпоновщикНастроекКомпоновкиДанных"); ИсточникДоступныхНастроекКомпоновкиДанных = БазаИсточник.NewObject("ИсточникДоступныхНастроекКомпоновкиДанных",СхемаКомпоновкиДанных); КомпоновщикНастроекНастройки.Инициализировать(ИсточникДоступныхНастроекКомпоновкиДанных); КомпоновщикНастроекНастройки.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", НачалоМесяца(МесяцРасчета)); КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода", КонецМесяца(МесяцРасчета)); КомпоновщикМакета = БазаИсточник.NewObject("КомпоновщикМакетаКомпоновкиДанных"); МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроекНастройки.Настройки,,,БазаИсточник.NewObject("ОписаниеТипов", "ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений").Типы().Получить(0)); ПроцессорКомпоновкиДанных = БазаИсточник.NewObject("ПроцессорКомпоновкиДанных"); ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных); ПроцессорВывода = БазаИсточник.NewObject("ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений"); ДанныеТЗ = БазаИсточник.NewObject("ТаблицаЗначений"); ПроцессорВывода.УстановитьОбъект(ДанныеТЗ); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); Для каждого СтрокаТаблицы из ДанныеТЗ Цикл а = 1; КонецЦикла; КонецЕсли; КонецПроцедуры Функция ПодключитьсяКбазе() экспорт Путь = "*******"; БазаДанных = "******"; Пользователь = "******"; Пароль = "****"; ПараметрыПодключенияИБ = "srvr='" + СокрЛП(Путь) + "'; ref='" + СокрЛП(БазаДанных) + "'; usr='" + СокрЛП(Пользователь) + "'; pwd='" + СокрЛП(Пароль) + "';"; V83COMCon = Новый COMобъект("V83.COMConnector"); Попытка Возврат V83COMCon.Connect(ПараметрыПодключенияИБ); Исключение Сообщить(ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; КонецФункции |
|||
1
DrShad
21.12.21
✎
17:25
|
продолжайте наблюдения и держите нас в курсе*
|
|||
2
maslov_ilya
21.12.21
✎
17:46
|
(1) XD
Вообщем, я сейчас уже сильно склоняюсь, что стоит покопаться в типовом механизме "Рассылка отчетов" в БП 3.0. Попробовать подсунуть туда необходимые отчеты (т.к. например ОСВ и обороты счета там нельзя выбрать) и настроить расписание. А в УПП перенести эту подсистему из БСП. |
|||
3
FIXXXL
21.12.21
✎
18:08
|
(2) может проще веб(хттп)-сервис на стороне БП сделать, который в БП сформирует отчет и сольет его куда надо, или вернет ответом в УПП
|
|||
4
Гений 1С
гуру
21.12.21
✎
18:11
|
(3) браво! но для этого нужно иметь IIS или Апач (Веб-сервер)
(2) а в чем вопрос, че не получается та? |
|||
5
FIXXXL
21.12.21
✎
18:11
|
(4) давно надо иметь веб-сервер
а не костылять на СОМе |
|||
6
hhhh
22.12.21
✎
01:16
|
(2) вообще-то НачалоПериода и КонецПериода - это же не даты должны быть, а переменные типа СтандартныйПериод. А вы туда даты суете.
|
|||
7
Мимохожий Однако
22.12.21
✎
06:46
|
(0) Судя по ошибке нет параметра МесяцРасчета. Отладчик на строке с ошибкой показывает содержание выражения КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных?
|
|||
8
Pprog151713
22.12.21
✎
08:29
|
Что тока для обмена не сделают. И ком, и файл, и СКД, и запрос с ошибкой. Все для обмена. :) А обмен на чем - то одном не пробовали ?
|
|||
9
osa1C
22.12.21
✎
08:34
|
(0) не особо читая подробности скажу.... что стоит сначала по Com в текущей базе создать ТЧ и только потом выгружать ее в Excel. По моему это проще
|
|||
10
lEvGl
гуру
22.12.21
✎
08:49
|
(4) он есть в винде, даже качать ничего не надо, если на машине сервер 1с, то уж ис там точно найдется
(0) формируйте табдок таким же кодом на стороне бп, возвращайте в упп, он сериализуется. вызов процедуры хоть комом, хоть сервисом |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |