Добрый день!
У меня стоит следующая задача, хочу посоветоваться как реализовать. Есть 4 серверных базы 1С:БП 2.0 на платформе 8.2.17.169.
Каждый день ночью необходимо получать список платежных поручений за предыдущий день из каждой базы, после чего записывать их в единый файл, например excel. Т.е. сформировать таблицу с колонками "Дата, Номер, Контрагент, Сумма, Назначение платежа" из всех 4 баз. После этого отправить этот файл на почту. Основной вопрос: каким способом можно получать данные из баз?

Пока пришло в голову сделать так: Создать обработку, которая по COM соединению к каждой базе запросом получает нужные данные и записывать их в ТЗ. Потом выгрузить эту ТЗ в файл и отправить по почте. Обработку запускать просто из пустой базы с помощью планировщика заданий Windows. Как такой вариант? Может есть красивее?:)
---
zlakizla,

Dim oShell, WS1C

Prg1C82 = "C:\Program Files (x86)\1cv82\8.2.19.106\bin\1сv8.exe"
Prg1C83 = "C:\Program Files (x86)\1cv8\8.3.5.1146\bin\1cv8.exe"

Set oShell = WScript.CreateObject ("WSCript.shell")

Set WS1C = oShell.Exec(Prg1C82+" ENTERPRISE /S "+server1c\base1+" /N "+User+" /P "+Psw+" /WA- /AU- /DisableStartupMessages /Execute"+EpfUpload)

Do While WS1C.Status = 0
WScript.Sleep 100
Loop

Set WS1C = oShell.Exec(Prg1C82+" ENTERPRISE /S "+server1c\base2+" /N "+User+" /P "+Psw+" /WA- /AU- /DisableStartupMessages /Execute"+EpfUpload)

Do While WS1C.Status = 0
WScript.Sleep 100
Loop

Set WS1C = oShell.Exec(Prg1C82+" ENTERPRISE /S "+server1c\base3+" /N "+User+" /P "+Psw+" /WA- /AU- /DisableStartupMessages /Execute"+EpfUpload)

Do While WS1C.Status = 0
WScript.Sleep 100
Loop

Set WS1C = oShell.Exec(Prg1C83+" ENTERPRISE /S "+server1c\base4+" /N "+User+" /P "+Psw+" /WA- /AU- /DisableStartupMessages /Execute"+EpfUpload)

Do While WS1C.Status = 0
WScript.Sleep 100
Loop

Set WS1C = oShell.Exec(Prg1C82+" ENTERPRISE /S "+server1c\base1+" /N "+User+" /P "+Psw+" /WA- /AU- /DisableStartupMessages /Execute"+UnionFiles)

Do While WS1C.Status = 0
WScript.Sleep 100
Loop

Как то так... Код изображен для наглядности
---
zlakizla, Обработку запускать просто из пустой базы Зачем нужна эта пустая база? Запускайте в одной из 4 существующих.
с помощью планировщика заданий Windows Базы же серверные, значит можно обойтись регл.заданием, запущенным в одной из них.
По поводу сбора данных, вариант нормальный.
---
zlakizla, Рациональных вариантов всего два: 1. Если базы на поддержке и не хочется менять конфигурацию, Ваш вариант вполне жизнеспособный, только не нужна ни какая база "пустая база" запускайте планировщиком существующую (чтоб не плодить лишние базы). 2. Если не принципиальны изменения в конфе, создайте рег. задание и пусть оно собирает данные и отправляет файл (Ответ №3). Поэтому Вам выбирать по какому пути идти.
---
в одной из серверных баз добавляете регламентное задание, которое по расписанию по ком коннектится к остальным трем базам, собирает данные в ТЗ, выводит в табличный документ, сохраняет в эксель и отправляет на почту
---
А если платформы баз разные, варианты, предложенные HitGroove, сработают?
---
Roksana777, Вообще не вопрос! Рисуем скрипт и засовываем в шедулер. Что то типа:

Описание переменных констант.....

Sub UpLoadPlategka()

 Set WS1C = oShell.Exec(Prg1C8+" ENTERPRISE /S "+DataBaseUT+" /N "+UserUT+" /P "+PswUD+" /WA- /AU- /DisableStartupMessages /Execute"+EpfUpload)

 Do While WS1C.Status = 0
            WScript.Sleep 100
 Loop

End Sub

Вызываем подпрограмму столько раз сколько нужно. На выходе получаем 4 файлика (если уж платформы разные). И потом объединяем файлики в один (хоть 1С-ными средствами, хоть сторонними).
---
HitGroove, Немного не понял про то, если разные платформы. У меня 3 Бухгалтерии на 8.2 17.169 и одна на 8.3.5
---
zlakizla, указать нужный путь к исполнительному файлу для соответствующей базы.
---
zlakizla,

Dim oShell, WS1C

Prg1C82 = "C:\Program Files (x86)\1cv82\8.2.19.106\bin\1сv8.exe"
Prg1C83 = "C:\Program Files (x86)\1cv8\8.3.5.1146\bin\1cv8.exe"

Set oShell = WScript.CreateObject ("WSCript.shell")

Set WS1C = oShell.Exec(Prg1C82+" ENTERPRISE /S "+server1c\base1+" /N "+User+" /P "+Psw+" /WA- /AU- /DisableStartupMessages /Execute"+EpfUpload)

Do While WS1C.Status = 0
WScript.Sleep 100
Loop

Set WS1C = oShell.Exec(Prg1C82+" ENTERPRISE /S "+server1c\base2+" /N "+User+" /P "+Psw+" /WA- /AU- /DisableStartupMessages /Execute"+EpfUpload)

Do While WS1C.Status = 0
WScript.Sleep 100
Loop

Set WS1C = oShell.Exec(Prg1C82+" ENTERPRISE /S "+server1c\base3+" /N "+User+" /P "+Psw+" /WA- /AU- /DisableStartupMessages /Execute"+EpfUpload)

Do While WS1C.Status = 0
WScript.Sleep 100
Loop

Set WS1C = oShell.Exec(Prg1C83+" ENTERPRISE /S "+server1c\base4+" /N "+User+" /P "+Psw+" /WA- /AU- /DisableStartupMessages /Execute"+EpfUpload)

Do While WS1C.Status = 0
WScript.Sleep 100
Loop

Set WS1C = oShell.Exec(Prg1C82+" ENTERPRISE /S "+server1c\base1+" /N "+User+" /P "+Psw+" /WA- /AU- /DisableStartupMessages /Execute"+UnionFiles)

Do While WS1C.Status = 0
WScript.Sleep 100
Loop

Как то так... Код изображен для наглядности
---
Если говорить о "красивее", то это вариант (12) HitGroove.
Много вариантов перебирал в голове, но тут уж действительно и просто, и удобно.
---
zlakizla,
На сколько я понял по первому посту, конфигурация у Вас одна, но платформы разные. Зачем нужен этот зоопарк? Если конфигурация одна (даже если в каждой из них свои дописки), то гораздо правильней все запускать под одной платформой. Так гемороя при сопровождении намного меньше.

А по поводу решения изначальной задачи для (1) могу посоветовать следующее:
1-й вариант. В каждой из баз запускать регламентное задание по заполнению екселя нужными данными с разбегом 10-15 минут. Из первой БД файл сформируется с нуля, со второй, третьей допишется нужная информация, а из четвёртой допишется информация и произойдёт отправка по почте.
2-й вариант. В трёх БД одновременно формировать РАЗНЫЕ файлы с нужной информацией, в четвёртой с некоторой задержкой собрать информацию из этих файлов, добавить свою и отправить по почте.
3-й вариант. Во всех четырёх базах одновременно сформировать РАЗНЫЕ файлы, а затем (с некоторой задержкой) каким-то сторонним средством собрать всё в кучку и сделать отправку. Этим "сторонним средством" может быть что-то системное, не имеющее к 1С никакого отношения (например, таблица ексель со скриптом, собирающим нужную информацию, запускающуюся по расписанию винды), а может быть и ещё одно регламентированное задание в одной из баз, ориентированное только на "склейку" данных из разных файлов и отправку результата.

Эти варианты имеют ряд преимуществ перед другими предложениями в этой ветке:
1. Не нужны никакие ком/оле соединения (обязательно будут проблемы при "зоопарке" платформ - при очередной смене платформы запутаетесь что и где запускать, т.к. это всегда придется отслеживать вручную).
2. Без разницы где и какая платформа и/или конфигурация.

Из предложенных мной вариантов лично мне больше нравится 3-й.
---
выбирай
1.КОМ/Оле с помощью обработки
2.Выгружать доки по плану обмена с помощью правил
3.Поднять веб сервисы
4.Обмен через текстовики/JSONы
5.Напрямую читать данные из таблиц
---
+ могу расписать каждый из вариантов более подробно, плюсы/минусы
---
GunnyBear, Коллега не соглашусь! Да для разнообразия варианты подойдет, но из пушки по воробьям... Как то не скромно в кризис!