Последнее обновление: 23 мая 2015 в 14:58
Подпишись на RSS
rss Подпишитесь на RSS, чтобы всегда быть в курсе событий.
5 октября 2010 ·

Иногда возникает необходимость запретить редактирование документов отдельными пользователями более определенного количества дней назад. Проблема решается очень просто.


18 января 2010 ·

Много мне пишут по теме свертка 1с, методика свертки, быстрое удаление документов в 1С, задают много вопросов, попробую ответить на основные из них. 1. Что такое свертка и зачем она нужна? Обработка свертки базы 1С представляет собой выгрузку остатков по складам, взаиморасчетов, остатков по кассе и банку, взаиморасчетов в подотчетных лиц. Далее очистка базы данных […]


Метки

Метки записей
вирус эмулирует нажатие Win office 2003 Интерент Файлы 1С автозапуск Деньги Ошибки 1С переустановка windows Структура 1С LiveCD Dr.Web печать от поставщика Asus Eee Командная строка скачать конвертер office 2003-2007 Взлом Вся сбились номера документов СМС оплата XPE автоматизация бесплатно Интересные места Свертка 1С Программы новости Оборудование сертфикаты Вопросы Делаем LiveCD Юмор СМС удаление документов узнать пароль Программы для 1С Автомобили гаджеты Добавить новую метку Экстремальные игры Жизнь Установка Windows Спорт Windows XP Скачать 1С сверка базы 1С Вирусы свертка в картинках office 2007 Экономика homachi локальная сеть через интернет HP Pavilion dv6000 Мужчина и женщина Взлом 1 Спутниковое ТВ Oracle реестр Кино взломать пароль Отзывы Работа свертка Система День жестянщика Отношения Финансы антивирус удаляем пароли просроченная дебиторская задолженность антивирусы перенумарация Бухгалтерия Взлом 1С связь партии программы для слепых Проблемы контент-провайдер Обработки Свертка базы 1С Интернет мошенничество Драйвера 1с и MySQL ZverCD восстановить нумерацию вирус SMS Новая форма счет-Фактуры свертка торговли дравер MySQL скачать Zver DVD Отчет Методика свертки 1С Удаление партий перенос документов вирус Свертка по партиям Интренет Анализ ПДЗ Фото редактирование DBF Видео открыть xlsx docx Игры Drivers Лирика Сайты jaws Драйвер ODBC скачать портативный аккумулятор Загрузка с компакт - диска Подключить 1С к MySQL сайт Армия 1с реестр расчет ПЗД Оптимизация уменьшить размер базы Альпинизм Обзоры заблокирован код защита Документы на почту Печатные формы Пошаговая свертка пакетный запуск 1С
27 мая 2010

Как подключить 1с 8 к 1с 7.7 через OLE

Автор статьи: , 27 мая 2010 в рубрике . Метки: , , . Просмотров: 18 292

Давно не писал обмены данными между базами данных. Подзабыл как это делается :-).

А тут задачку подкинули. Пока вспоминал про обмены между базами данных решил статейку написать.

Итак, цель — подключиться к 1с 7.7 из 1с 8 с помощью внешней обработки, вытащить какие-то данные из семерки.

Создаем внешнюю обрабтку в восьмерке

epf Как подключить 1с 8 к 1с 7.7 через OLE

Создаем внешнюю обработку в 1С8


На форму добавляем поля Путь к базе, Пользователь, Пароль, а так же кнопу Подключиться

Авторские права на предоставленный материал принадлежат автору сайта http://extremallife.ru

forma Как подключить 1с 8 к 1с 7.7 через OLE

Создаем элементы формы

На кнопку Путь к базе вешаем код для того чтобы выбор каталога, в котором находится база 1с 7.7 был интерактивным.

connect Как подключить 1с 8 к 1с 7.7 через OLE

Выбираем базу-источник


Процедура ИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
Диалог.Заголовок = "Укажите путь к базе ...";
Если Не Диалог.Выбрать() Тогда
Возврат;
КонецЕсли;
ПутьКБазе = Диалог.Каталог;
КонецПроцедуры

А на кнопку Подключиться код

Процедура ПодключитьБазу()
База="";
База=Новый COMОбъект("V77.Application");
Попытка
СтрокаПодключения = "/D"""+СокрЛП(ПутьКБазе)+""" /N"""+СокрЛП(Пользователь)+""" /P"""+СокрЛП(Пароль)+"""";
Открыта=База.Initialize(База.RMTrade,СтрокаПодключения,"NO_SPLASH_SHOW");
Если Открыта Тогда
ЕстьПодключение = Истина;
Иначе
Предупреждение("Ошибка при подключении!");
ЕстьПодключение = Ложь;
КонецЕсли;
Исключение
Предупреждение("Ошибка при подключении!");
ЕстьПодключение = Ложь;
КонецПопытки;
КонецПроцедуры


Ключевыми переменными здесь является СтрокаПодключения, в которой мы передаем параметры запуска 1с 7.7

Если ошибок не возникло, значит база 1с 7.7 подключена успешно и мы можем обращаться к ее объектам через объект База

Например создадим на форме таблицу значений и заполним ее данными из подключенной базы. Мне конкретно нужна информация о приходных кассовых ордерах (ПКО).

Для этого добавляем кнопку ( в моем случае — Заполнить) и вешаем на нее процедуру:


Процедура ЗаполнитьТаблицуПараметров()
ПКО = База.CreateObject("Документ.ПКО");
ПКО.ВыбратьДокументы(НачДата,КонДата);
Пока ПКО.ПолучитьДокумент() = 1 ЦиклНоваяСтр = ТЗ.Добавить();
НоваяСтр.ТипДок = "ПКО";
НоваяСтр.НомерДок = ПКО.НомерДок;
НоваяСтр.ДатаДок = ПКО.ДатаДок;
НоваяСтр.Контрагент = СокрЛП(ПКО.Контрагент.Наименование);
НоваяСтр.Код7 = СокрЛП(ПКО.Контрагент.Код);НоваяСтр.Сумма = Число(ПКО.СуммаВзаиморасчетов);
КонецЦикла;
КонецПроцедуры

Результатом будет заполнение Таблицы необходимыми нам параметрами, в моем случае это Номер Документа (ПКО.НомерДок), Дата документа (ПКО.ДатаДок), Наименование контарента (СокрЛП(ПКО.Контрагент.Наименование)), Код контрагента (ПКО.Контрагент.Код) и сумма приходника (ПКО.СуммаВзаиморасчетов).

zapoln Как подключить 1с 8 к 1с 7.7 через OLE

Заполненная таблица значений

Таким образом мы можем вытаскивать из базы — источника любые данные и даже выполнять в ней запросы.

Например мне необходимо сопоставить контарагентов в 7ке и 8ке. Для этого я создаю дополнительный реквизит в 7.7, где будет храниться восьмерошный код контрагента.

При заполнении табличной части считываем год из источника, выбираем элемент справочника Контрагенты, который соотвествует ему в в 8ке (для этого в таблице значений добавил дополнительное поле (Контрагент8).

kontr Как подключить 1с 8 к 1с 7.7 через OLE

Выбираем контагента

И пишем в источник код элемента справочника Контрагенты (который выбрали только что) нажатием Заполнить коды 7.7, повесив на нее процедуру:


Процедура ЗаполнитьКодыВ77(Кнопка)
Для Каждого ТекСтрока Из ТЗ Цикл
Если СокрЛП(ТекСтрока.КодКонтр) = "" Тогда
Продолжить;
КонецЕсли;
ОлеКонтр = База.CreateObject("Справочник.Контрагенты");
ОлеКонтр.ВыбратьЭлементы();
ОлеКонтр.НайтиПоКоду(ТекСтрока.Код7);
ОлеКонтр.Код8 = Текстрока.КодКонтр;
ОлеКонтр.Записать();
Сообщить("Изменен код для " + ОлеКонтр.Наименование);
КонецЦикла;
КонецПроцедуры

save Как подключить 1с 8 к 1с 7.7 через OLE

Записали информацию в базу - источник

Все готово. Код записан в 1с 7.7 базу — источник.

Общие принципы такие.




К записи "Как подключить 1с 8 к 1с 7.7 через OLE" 11 комментариев

Классная статья. Хочу решить подобную задачу.Проблема в том, что база, к которой я хочу подключиться, лежит на удаленном компьютере. Как настроить соединение с этой базой — ума не приложу. Может подскажете, как это сделать?

Ответить

admin Reply:

Удаленные компьютер — он в твоей локальной сети? Если да, то проблем нет — расшаривай папку с базай и подключайся на здоровье.

Ответить

Это бы все было так просто… Нет, это реально удаленный комп в интернете. Я работаю с базой на том компе через удаленный рабочий стол. Хочу соединяться с той базой «тихо», через OLE. Т.е имею ip того, компа, пароль на доступ к нему, директорию в которой лежит база. База, к которой надо соединиться -Торговля 9.2 + SQL.Как это сделать?

Ответить

В теории точно также.
Не практике интернет бывает нестабильным и низкоскоростным…
А тебе надо только считывать информацию или еще и писать в базу?

Ответить

Нужно только считывать, интернет-канал толстый, проблем со скоростью нет.Я так понял, что директория, где лежит база, должна быть расшарена для интернета? Если это так, то как нужно расшаривать и как  будет выглядеть примерный путь до базы?

Ответить

Честно говоря не знаю, по идее для интернета все должно быть расшарено точно так как для локалки.
Как вариант можно использовать Hamachi — бесплатная программа для организации локальной сети через интернет. В этом случае даже «белый» IP не нужен.
Сам использую Hamachi для подключения к «терминалке» клиентов,  у которых нет внешних IP адресов.
Работает отлично. Даже медиаплеер видит компы клиента, которые находятся на другом конце города.
Про хамачи — http://extremallife.ru/work/program/homachi-network

Ответить

Что такое Hamachi я знаю, это реально хорошая идея, спасибо за подсказку, наверное так и попробую.

Ответить

За статью спасибо, но для каждой строки в цикле создавать экземпляр справочника это феерично)) Вот это:Для Каждого ТекСтрока Из ТЗ ЦиклЕсли СокрЛП(ТекСтрока.КодКонтр) = «» ТогдаПродолжить;КонецЕсли;ОлеКонтр = База.CreateObject(«Справочник.Контрагенты»);ОлеКонтр.ВыбратьЭлементы();

Ответить

А если база находиться в Серверном варианте этот способ прокатит?

Ответить

Дмитрий Reply:

Здравствуйте, прочитал ваше сообщение на сайте по поводу того как подключиться к серверной базе 7.7 SQL через OLE? меня тоже давно мучает этот вопрос, я слышал, что нужно дополнительно указывать имя сервера и имя базы SQL? но пока ответа так и не нашол. Вы уже разобрались с данным вопросом? Подскажите пожалуйста, если ответ нашли. Спасибо.

Ответить

Спасибо за пример.Вопрос:  как вытащить из 1с7.7 в 1с8  ПЕРИОДИЧЕСКИЙ реквизит?Возможно проблема в том, что формат даты в 8ке отличается от формата даты в 7ке…

Ответить


Оставить комментарий

*

Блог программиста 1С. Программирование 1С
Если Вас что-то заинтересовало или возникли вопросы, пишите.
petr@evseev.ru
Skype - evseev_petr
ICQ - 262808698

Сохраните меня в социальных сервисах

Комментарии

Присоединяйтесь к обсуждению
  • Леха: Мало того, что это говно-антивирус требует .Net Framework не ниже 4.0, так он еще пожирает ресурсы компьютера,...
  • tommy: AVG равно еще хуже Касперского . Иди в жопу с ним
  • просто_чайник: Не люблю этот антивирус. Заметил такую особенность. Если обновить базы в начале работы, довольно часто...
  • Елена: Самое главное. Файл для совместной работы открыть нельзя! Если надо что-то отредактировать — только...
  • Виктор: Поставили мне на работе эту замечательную программку. Работать невозможно, ужасные тормоза. Стали...

Избранное видео

Ссылки