1с 77 подключение к другой базе
Связь программы 1С Предприятие 7.7 с другой базой 1С (OLE)
Страшно не люблю этого делать, но иногда всё-таки приходится связываться из 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С для 7.7
Через OLE
Используется объект V77.Application, не самый быстрый, но универсальный способ.
Пример:
Подключении по сети происходит медленнее, чем локальное, «удаленный» вызов используется редко.
Обратите внимание, что впрямую присвоение к «местному» свойству возможно только для примитивных типов, объектные (Например СпрOle, ТекущийЭлемент()), не имеют в текущей базы «сущности». При передаче числовых значений используйте округление, так как возможно передача вот таких значений «1,00000000001» для них операция сравнения будет выдавать различие.
Подключение напрямую к базе данных
Является альтернативным способом, для его осуществления требуется разбор таблиц, опираясь на файл 1Cv7.DD.
Способ позволяет очень быстро оперировать большими объемами данными, но требуется глубокая отладка таких подключений.
Пример рассматривать не будем, так как это объемная тема, а для большинства 7.7. уже прошлое.
Подключение к платформе 8.1, 8.2, 8.3
Совместимый вариант: Com-Соединение
Является аналогом OLE, принцип работы очень схож, но это более быстрая технология.
Минус этих технологий — долгое подключение, поэтому при регулярном использовании Com-соединение «кэшируется».
Пример подключения из 7.7 к 8.2
Пример подключения из 8.3 к 8.3
Примеры приведены в учебных целях, выдергиванием из готовых решений, код частично менялся, но должен быть работоспособен.
- Технология работы с объектами во втором пример также может быть использована для объекта «Запрос».
- В целом способ стабильный, обычно проблемы только с начальной настройкой на 64-битных системах.
- Работает только в системах «Windows»
- Универсальны и не требуют доработки конфигураций
- Не доступен для базовых версиях (лицензионное ограничение)
Web-сервисы
Пример работы (не получится проверить, показывает общую технологию подключения, создания объектов и обращения к методам сервиса)
Для отладки подключения рекомендую использовать приложение SOAPUi
- современная универсальная технология подключения к 1С и сторонним сервисам
- требуется доработка 1С
- управление данными для передачи
- требуется публикация на стороннем сервисе (в дальнейшем на сервер от 1С, Платформа 8.4)
Пример работы будет рассмотрен в отдельной статье
REST-интерфейс
Использовать автоматический стандартный интерфейс OData прикладного решения просто:
Более подробный обзор и примеры работы на сайте 1С
Заключение
Существует много способов подключения к 1С и из 1С.
Выбор любого производится анализом возможностей доработки, доступности базы из вне, наличием вэб-серверов, операционной системы
Не экономьте на рекламе, охране и страховании.
— Генри Форд
Простенькие учебные функции (с описанием) для работы с базой 1С 7.7 через OLE.
Полностью средствами 1С, т.е. не требуют никаких внешних компонент.
Пользоваться можно бесплатно:-)
Вставляете в глобальный модуль и пользуетесь.
Цель: обучение, готовая иллюстрация подходов, возможность сразу использовать или, если нужно, доработать под свои цели.
Специальные предложения
Если в гл81Сv77_СобратьСтрокуИнициализации()
строку
txtСтрока = txtСтрока+"/D "+txtПуть+" ";
поменять на строку
txtСтрока = txtСтрока+"/D """+txtПуть+""" ";
то будут нормально восприниматься пути с пробелами ))
Просмотры 29822
Загрузки 0
Рейтинг 45
Создание 06.08.08 14:34
Обновление 06.01.09 16:31
№ Публикации 57211
Тип файла Нет файла
Конфигурация Конфигурации 1cv7
Операционная система Не имеет значения
Страна Россия
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)
Код открыт Не указано
Курс представляет собой отработанные и проверенные личным опытом основателей Школы инструменты решения вопросов с подчиненными, коллегами, заказчиком и руководством.
См. также
1С 7.7 и новый 1С:Контрагент
Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.
25.04.2022 351 zhenyat 1
Печать таблицы значений в 1С 7.7 при отладке
Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.
30.06.2021 2038 Zoltan_Black 11
Заполнение реквизитов документов из предыдущего документа
Функция для автоматического заполнения реквизитов документов.
04.02.2019 5851 drevilo 2
Проверка часового пояса
При использовании терминалок для удаленных баз, иногда при входе в базу данных необходимо исключить возможность входа пользователей с компьютеров с другим часовым поясом. Например, работают в Новосибирской базе с временем UTC +6 и пытаются зайти в базу с UTC +3.
16.05.2016 11822 kudenzov 3
Процедура расшифровки ячейки таблицы в отчетах 1С 7.7
Хочу поделиться с вами универсальной процедурой для расшифровки ячеек печатной формы отчетов в 1С 7.7.
24.09.2015 19339 Anzhey 14
Универсальный способ сравнения таблиц
На эту тему уже есть статьи, но этот способ нигде не описан. Хотя я его использую с тех пор, как занимаюсь программированием. Его преимущество в простоте и универсальности: можно применять на 1С, SQL, а также в любом другом языке программирования.
05.07.2015 20165 json 3
Числа прописью в родительном падеже в 7.7? Легко!
Вывод числительных прописью в родительном падеже штатными средствами в три строчки кода.
20.06.2015 13487 gimalaj 3
Исправление в типовой комплексной конфигурации глобальной функции глВсеРеквизитыДокументаЗаполнены()
В типовых конфигурациях глобальная функция глВсеРеквизитыДокументаЗаполнены() не работает с реквизитами табличной части. Данная статья содержит текст исправленной функции, корректно проверяющей табличную часть.
20.08.2014 8380 hvv2002 0
Проверка ИНН v.7.7
Проверка ИНН, есть наверняка куча аналогов, для v.8.x точно есть и не один.
08.03.2014 9943 kras_71 0
Полезные функции. Склонение (должность и фамилия подписантов). Любой язык
Уехал директор в командировку, отпуск. , оставил доверенность на хозяйственные операции на другого сотрудника. Все договора и другие документы в обмороке - "подписант" теперь другой, по тексту тоже много правок. Пересмотрел много публикаций, вариантов много, не приглянулось. Сделал свой "Баян" . У меня всего-то крутится пять фигурантов . Нет простого, наглядного и всепогодного варианта без языкового барьера. Всем процессом управляет пользователь.
03.03.2014 18571 kompas-dm 5
Устранение проблемы при работе с полем, которое ограничено маской ввода
Для поля, у которого установлена маска ввода, перед программной инициализацией необходимо начальное значение преобразовать к значению в соответствии с маской, иначе буду потеряны символы в местах разделителях. В данной публикации приведена функция, которая универсально выполняет данное действие.
08.08.2012 17318 www2000 4
Скрытие помеченных на удаление в справочнике
Корректно скрываем помеченных на удаление в справочнике, с иерархией и без. Вроде простая и нужная вещь, но почему-то нигде не встречалась
08.08.2012 15005 mikukrnet 7
Исправление и проведение документов
Исправление и проведение документов, например, счетов-фактур, введенных на основании документов реализации, можно организовать многими способами. Описан сравнительно простой подход, реализованный и работающий несколько лет в реальной бухгалтерии 1Cv7.7. Без внешних компонентов.
23.07.2012 13774 BorisBelov 11
Получение характеристик и управление текущим процессом 1С на основе WMI
Функционал для работы из 1С с текущим процессом класса Win32_Process. Пример получает текущее значение ОЗУ занятое процессом 1С. По описанной методике можно получать значения пиковых нагрузок на ОЗУ, время запуска текущей сессии 1С с точностью до миллисекунд. Определять загрузку активного ядра процессом и даже поменять приоритет самого процесса.
09.07.2012 21926 dusha0020 8
Доработка ТиС 9.2 на предмет запрета одинаковых (дублей) артикулов
Проверка уникальности артикула
03.07.2012 11362 atb123 11
Функция проверки валидности e-mail с использованием регулярных выражений RegExp (7.7)
Функция проверки валидности e-mail с использованием регулярных выражений RegExp (7.7). Данную функцию можно вставить в Глобальный модуль и пользоваться, например, при вводе или сохранении e-mail.
30.10.2011 11499 zaursoft 11
Неправильное изменение категории плательщика ПФР при проведении справки МСЭК
В ЗиК (релиз 314) при проведении документа "Справка МСЭК" вкралась ошибка: проведение некорректно изменяет категорию плательщика ПФР на "Работник сельскохозяйственной организации - инвалид", затем на "Работник колхоза, совхоза и другого сельскохозяйственного предприятия". Связано это с разными типами ожидаемого и возвращаемого перечисления в функции "глКатегорияПФР": "КатегорияПлательщикаПФ" и "КатегорииЗастрахованныхЛицПФР". Решение: изменить функцию "глКатегорияПФР" (около 2932-й строки).
17.10.2011 6597 Krokokot 3
Хитрость. Использование БУЛЕВО при OLE обмене/подключении из 7.7 к 8
Как известно, при OLE обмене доступны только типы СТРОКА, ЧИСЛО, ДАТА. А вот БУЛЕВО (ИСТИНА, ЛОЖЬ) использовать при подключении из 7.7 к 8 не получается. Как же быть? Есть хитрость, как использовать тип булево в семерке при обмене с 1С8! :)
28.09.2011 17344 dnikolaev 8
Дата запрета редактирования
Очень часто необходимо постоянно закрывать период для редактирования документов. Вот как я вышла из этой ситуации.
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине.
Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)):
Код 1C v 8.2 УП
Похожие FAQ
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Посмотреть все результаты поиска похожих
Еще в этой же категории
Как найти документ по уникальному идентификатору через com соединение? 3
Потребовалось написать небольшую синхронизацию данных в дополнении к стандартной УТ-БП, нужно по уникальному идентификатору искать документы: Стандартное Соединение.Справочники.Номенклатура.ПолучитьСсылку(УИ); Выдает ошибку <Форма.Форма.Форма(301Работа с MySQL из 1С через ODBC 0
В статье описан процесс работы с MySQL базой из 1С через ODBC. Первое что следует обязательно учесть это версия драйвера, для того чтобы все корректно работало вам потребуется драйвер версии 3.51 (с драйвером 5-ой версии я пробился пол дня пытая Посмотреть все в категории COM-объекты, WMI, WSH
В диспетчере задач видно 1С 7.7 запускается под пользователем под которым запущен сервер 1С предприятия, грузится(т.е. количество используемой памяти процессом 1CV77S.exe увеличивается и заканчивается ничем, т.е.
Методы решения
1. Запуск сервера 1С под учетной записью "Локальная система"
Минус данная учетная запись не имеет доступа к сети. т.е. файловая часть базы 7.7 может располагаться только на компьютере где выполняется сервер 1С предприятия.
2. Изменение настроек в реестре
SharedSection=1024,3072,512 вот здесь редактируем 3 значение я поставил 8192 (было 512 кб). Важно чтобы 2 и 3 значение не привысило 48 мб.
Специальные предложения
Странно, у меня при вызове OLE в функции с директивой НаСервере сразу выдает ошибку
V7 = New COMObject("V77.Application");
по причине:
-2147467262(0x80004002): Интерфейс не поддерживается
Хотя все тоже самое с директивой НаКлиенте отрабатывает отлично
Релиз 8.3.11.3034
Сервер 1С, на другой машине, правильно?
На сервере надо установить 7.7, запустить под административными правами(для регистрации COM объекта 1C 7.7) и должно заработать
Мне вот в таких разработках непонятны изначально заложенные проблемы - как преобразовывать несуществующие типы одной платформы - в другой?
А это все в корне меняет.
Мне вот в таких разработках непонятны изначально заложенные проблемы - как преобразовывать несуществующие типы одной платформы - в другой?
Базовые типы преобразуются (число, строка, дата), а остальное существует на только на "той" стороне. Т.е. ссылка на контрагента в 8 <> ссылка на контрагента в 7.7, но код, наименование, внутренний идентификатор(как строка) все доступно
Просмотры 18797
Загрузки 0
Рейтинг 6
Создание 28.06.16 10:46
Обновление 28.06.16 10:46
№ Публикации 533600
Тип файла Нет файла
Конфигурация Не имеет значения
Операционная система Windows
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)
Код открыт Не указано
См. также
Как я начал администрировать сервер 1С: Предприятие 8.3 с телефона Промо
Развитие инструментов управления кластером серверов 1С:Предприятие 8.3.
14.04.2017 68963 user700211_a.straltsou 30
Ферма ОДИНа или как управлять множеством Серверов 1С: Предприятие из одной точки
У Вас много серверов приложений 1С Предприятие разных версий и их надо мониторить и администрировать. Новое приложение для управления фермой ОДИНа как раз для тебя.
26.08.2021 1430 khorevaa 8
Легкий способ регистрации библиотеки COMCNTR.DLL (для COM-соединения)
Устали от командных строк, нюансов с разрядностью 32х/64х или ручного создания V83COMConnector в службе компонентов? Предлагаю простой способ регистрации библиотеки COMCNTR.DLL.
22.12.2020 35514 vakrikun 32
Выгрузка в dt на сервере 1С по расписанию с завершением соединений и подключением к консоли сервера через com
Была задача настроить по расписанию выгрузку серверной базы в dt, готового решения не нашел, делюсь, может, кому пригодится.
16.04.2020 10808 karamazoff 49
Копирование числовых ячеек из 1С в Excel Промо
15.01.2019 38355 itriot11 27
Пошаговая инструкция по установке веб-сервера Apache и завязка с 1С
Данная статья больше предназначена для начинающих администраторов, но «бывалые» тоже могут освежить свои знания и в этой статье в деталях расскажу, как устанавливать Apache и использовать веб-сервер для работы с 1С.
Читайте также: