Справка
OLE (англ. Object Linking and Embedding) — технология связывания и внедрения объектов в другие документы и объекты, разработанная корпорацией Майкрософт.
В 1996 году Microsoft переименовала технологию в ActiveX.
Более подробно пишет Википедия: https://ru.wikipedia.org/wiki/Object_Linking_and_Embedding
Вступление
Сейчас у вас есть база на платформе 1С 8.Х, а также база на платформе 1С 7.7. И вам нужно их подружить.
В интернете есть информация по взаимодействию, но вся она разбросана. И мало того никто не учитывает, что сейчас сервера идут 64-битные, а клиенты 32-битные.
Итак давайте знакомить платформу 8 с 7. Для этого нам нужно использовать OLE Automation сервер.
По этому вопросу уже есть готовая публикация, привожу для примера: OLE в 1С-Предприятии.
Подготовка технической части
Будем рассматривать пример на базе Windows Server 2012 R2, где уставновлена платформа 1С 8.Х для сервера 64-битная, для клиента 32-битная. Также нужно установить последний релиз платформы 1С 7.7 у нас 7.70.027.
Рабочая база 1С 7.7 расположена на другом сервере, вариант установки SQL.
Поэтому на нашем сервере также выбираем вариант установки SQL.
Установка 1С 7.7:
Устанавливаем под администратором:
Перезагружаемся.
Далее чтобы 1С 7.7 прописалась в реестре важно запустить ее также под администратором, создать пустую базу и зайти в нее.
Перезагружаемся.
Так же скорее всего вам понадобится подменить в папке (BIN) "BkEnd.dll" и добавить туда пустой файл "OrdNoChk.prm" (файлы внизу публикации).
Далее важно, чтобы у вас в реестре появились записи:
V77.GeneralPropPage
V77.Application
V77S.Application и прочие.
А также как минимум DCOM (нужно проверить, за давностью установки, не уверен в надобности).
Пуск - Выполнить - DCOMCNFG.
Там разворачиваем "Службы компонентов" - "Компьютеры" - "Мой компьютер" - "Настройка DCOM":
V77.GeneralPropPage
Если их нет, значит у вас что-то с доступом. Настраиваем и начинаем заново установку.
Настройка Windows Server 2012 R2
Для открытия 1С 7.7 по OLE на сервере потребует больше, чем по умолчанию, памяти для запуска приложений в "не интерактивном" режиме (т.е. в регламентном задании) для этого в реестре нужно изменить/добавить запись:
HKEY_LOCAL_MACHINE>SYSTEM>CurrentControlSet>Control>Session Manager>SubSystems
Меняем значение Windows, было:
%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512
Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3
ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16
SharedSection=1024,3072,512
Вот здесь редактируем 3 значение, мы поставили 5 мб (было 512 кб). Важно чтобы 2 и 3 значение не превысило 48 мб.
Этот параметр отвечает в Windows за "кучу" для неинтерактивного сеанса.
Про изменение "кучи" подробно написали в статье: http://www.techarp.com/showarticle.aspx?artno=238&pgno=1
Первый нюанс с "кучей" решили, теперь осталось разобраться с правами у пользователя, который запускает службу "Агент сервера 1С:Предприятия 8.Х (x86-64)"
Если у вас служба настроена в таком режиме, то потребуется прописать в реестре путь до базы 1С 7.7:
KEY_USERS\S-1-5-18\Software\1C\1Cv7\7.7\Titles
Для каждой новой базы, нужно создать новую запись(New->String value или Создать->Строковый параметр):
Name: Путь_и_Имя_базы
Type: REG_SZ
Data: Ваше_название_для_базы
В итоге код для системной учетной записи заработает.
Но в этом случае сеть не доступна (нам такой вариант не подходит).
В таком случае нужно выбрать конкретного пользователя и проверить чтобы у него был доступ на сеть!
Так же у этого пользователя должна быть прописана база в реестре или вы можете зайти интерактивно под этим пользователем и добавить в список нужную сетевую базу 1С 7.7.
Делаем регламентное задание
Систему к работе мы подготовили теперь дело за малым написать код!
Создаем регламентное задание и определяем процедуру в которой записан код:
Попытка
v7=Новый COMОбъект("V77.Application");
Исключение
v7=Новый COMОбъект("V1CEnterprise.Application");
КонецПопытки;
КаталогБазыОЛе = "\\ВашСервер\D$\КаталогНаДискеДВашейБазы\";//пример сетевого каталог на диске D
ПользовательОле = "Пользователь1С8СозданныйВ1С7";
ПарольОле = "ПарольПользователяОле";
МонопольныйРежимOLE = "";
//МонопольныйРежимOLE = " /m";
//для немонопольного запуска указать пустую строку!
ЗапускБезЗаставки = 1;
// для появления заставки поставьте "0"
РезультатПодключения = v7.Initialize (v7.RMTrade,"/d"+Сокрлп(КаталогБазыОле)+" /n"+Сокрлп(ПользовательОле)+" /p"+Сокрлп(ПарольОле)+МонопольныйРежимOLE, ?(ЗапускБезЗаставки=1,"NO_SPLASH_SHOW",""));
Если РезультатПодключения=1 Тогда
Сообщить("Соединение установлено");
Иначе
Сообщить(""+КаталогБазыОле);
Сообщить("Соединение не установлено");
КонецЕсли;
Все, подключение работает!
Теперь можете написать код в 1С 7.7 при старте системы или опишите на языке 1С 7.7 нужный алгоритм прямо в 1С 8.Х.