Связь программы 1С с другой базой 1ССтрашно не люблю этого делать, но иногда всё-таки приходится связываться из 1С с другой базой 1С. Из моего опыта это приходилось делать в таких случаях: - Консолидация данных.
- Перенесение данных из одной конфигурации в другую.
- Вытаскивание данных, которые безвозвратно утеряны в рабочей базе, из архивной базы.
На этой странице я расскажу о методе соединения из одной базы 1С с другой базой 1С, а также приведу примеры программного кода, с помощью которого можно производить обмен данными. Подключиться или соединиться с другой базой 1С:Предприятие 7.7//подключение к другой базе 1С:Предприятие через OLE Функция гБаза_Подключить(Оле,Путь,Логин,Пароль,ФлагХорошо=0) Экспорт Если ПустаяСтрока(Путь)=1 Тогда Предупреждение("Не указан Путь к базе!"); Возврат(0); ИначеЕсли ФС.СуществуетФайл(Путь+"\1Cv7.MD")=0 Тогда Предупреждение("База данных по указанному пути не обнаружена!"); Возврат(0); КонецЕсли; //строка запуска Оле=СоздатьОбъект("V1CEnterprise.Application"); СтрокаЗапуска="/d"+Путь; Если ПустаяСтрока(Логин)=0 Тогда СтрокаЗапуска=СтрокаЗапуска+" /n"+Логин; Если ПустаяСтрока(Пароль)=0 Тогда СтрокаЗапуска=СтрокаЗапуска+" /p"+Пароль; КонецЕсли; КонецЕсли; //подключение Удача=Оле.Initialize(Оле.RMTrade,СтрокаЗапуска,); Если Удача=0 Тогда Предупреждение("Ошибка соединения!"); Возврат(0); ИначеЕсли ФлагХорошо=1 Тогда Предупреждение("Соединение выполнено успешно"); КонецЕсли; Возврат(1); КонецФункции Импорт данных в 1С из другой базы 1СДовольно часто возникает необходимость передать данные из одной базы в другую. Именно для таких целей можно использовать нижеприведённые примеры, в которых показано, как получать некоторые данные из базы, с которой установлено соединение посредством механизма OLE Automation. //получение значения субконто текущей базы из запроса к бухгалтерским итогам другой базы через OLE //аргументы: Б - бухгалтерские итоги, Номер - номер субконто в выборке Функция Субконто_Получить(Б,Номер) Значение=Б.Субконто(Номер); //тип Ч=СчетПоКоду(Б.Счет.Код); Тип=Ч.ВидСубконто(Номер).ТипСубконто(); Если Найти("Число,Строка,Дата",Тип)>0 Тогда Возврат(Значение); ИначеЕсли Значение.Выбран()=0 Тогда Сообщить(Ч.Код+": Не выбрано значение "+Тип,"!"); Возврат ПолучитьПустоеЗначение(Тип); КонецЕсли; //вид Позиция=Найти(Тип,"."); Если Позиция>0 Тогда Вид=Сред(Тип,Позиция+1); Тип=Лев(Тип,Позиция-1); Иначе Вид=Значение.Вид(); КонецЕсли; ТипВид=Тип+"."+Вид; //поиск Если Тип="Справочник" Тогда Если Метаданные.Справочник(Вид).ДлинаКода=0 Тогда Сообщить(Ч.Код+": "+ТипВид+": Коды не используются","!"); Возврат ПолучитьПустоеЗначение(ТипВид); ИначеЕсли Метаданные.Справочник(Вид).Владелец.Выбран()=1 Тогда Сообщить(Ч.Код+": "+ТипВид+": Не найден элемент по владельцу","!"); Возврат ПолучитьПустоеЗначение(ТипВид); КонецЕсли; //поиск ТекКод=Значение.ПолныйКод(); С=СоздатьОбъект(ТипВид); Если С.НайтиПоКоду(ТекКод,2)=1 Тогда Возврат(С.ТекущийЭлемент()); Иначе Сообщить(Ч.Код+": Не найдено: "+ТипВид+".ПолныйКод="+ТекКод,"!"); Возврат ПолучитьПустоеЗначение(ТипВид); КонецЕсли; ИначеЕсли Тип="Документ" Тогда ТекНомер=СокрЛП(Значение.НомерДок); ТекДата=Значение.ДатаДок; //поиск Г=СоздатьОбъект(ТипВид); Если Г.НайтиПоНомеру(ТекНомер,ТекДата)=1 Тогда Возврат(Г.ТекущийДокумент()); Иначе Сообщить(Ч.Код+": Не найдено: "+ТипВид+": "+ТекНомер+" ("+ТекДата+")","!"); Возврат ПолучитьПустоеЗначение(ТипВид); КонецЕсли; ИначеЕсли Тип="Перечисление" Тогда К=СоздатьОбъект(ТипВид); Возврат К.ЗначениеПоИдентификатору(Значение.Идентификатор()); КонецЕсли; КонецФункции //получение элемента справочника текущей базы //аргументы: Значение - элемент справочника базы, с которой выполнено соединение через OLE Функция Справочник_Получить(Значение) Справочник=Значение.Вид(); ТекКод=Значение.ПолныйКод(); Если ПустаяСтрока(ТекКод)=1 Тогда Возврат ПолучитьПустоеЗначение("Справочник."+Справочник); КонецЕсли; //справочник С=СоздатьОбъект("Справочник."+Справочник); Если С.НайтиПоКоду(ТекКод,2)=1 Тогда Возврат(С.ТекущийЭлемент()); Иначе Сообщить("Не найдено: Справочник."+Справочник+".ПолныйКод="+Значение.ПолныйКод()); Возврат ПолучитьПустоеЗначение("Справочник."+Справочник); КонецЕсли; КонецФункции РезюмеВ статье представлены образцы программного кода, который используется для установления связи между двумя базами данных, обслуживаемыми программой "1С:Предприятие".
- Дополнительная информация по теме кодирования в 1С:
-
- Смотрите также:
- Обработки для 1С
- Отчёты для 1С
- Скачать программы для 1С
- Как заработать в Интернете
|