Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
28 Сен 2020, 18:28
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Выгрузка через OLE соединение  (Прочитано 12144 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн СерьезныйЧеловек

  • ***
  • Сообщений: 165
  • РЕПУТАЦИЯ: 12
  • КПД: 7%
  • Регистрация: 2010-08-13
  • Сайт: 
Еще на один вопрос моя душа требует ответа :D
Как з УТ в БП выгрузить документ Реализация товаров и услуг. Уже все перерыл нигде не могу найти хотя бы пример, везде только всякая вода, типа оле - это технология и бла бла бла.... Если есть какой примерчик можете выложить или отправить или показать.


Оффлайн Dvdovin

  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 2
  • КПД: 6%
  • Регистрация: 2010-09-09
  • Сайт: 
А можете уточнить вопрос? просто если я вас правельно понял, то я нашёл один примерчик. Только он не через ОЛЕ:


Как из одной базы перенести документ в другую базу?
Необходимо экземпляр документа РеализацияТоваровУслуг (ссылка на который выбирается в диалоге создаваемой обработки) перенести в другую базу данных. Структура конфигураций идентична. Справочники (и другие сопутствующие объекты) синхронизированы по значениям внутренних идентификаторов.
Для выгрузки потребуется выполнить следующий фрагмент кода (листинг 9.5):
Листинг 9.5. Выгрузка данных в XML
// Выгрузить в файл xml.
ЗаписьXML = Новый ЗаписьXML();

ЗаписьXML.ОткрытьФайл("c:\doc.xml");
ЗаписьXML.ЗаписатьНачалоЭлемента("Root");

// Получить объект по ссылке.
ВыгружаемыйОбъект = Документ.ПолучитьОбъект();

// С помощью средств сериализации записать объект в файл.
ЗаписатьXML(ЗаписьXML,ВыгружаемыйОбъект);
   
ЗаписьXML.ЗаписатьКонецЭлемента();

ЗаписьXML.Закрыть();

При выгрузке создаем элемент Root исходя из соображений, что в XML-документе должен быть только один корневой узел, а в общем случае (но не в нашем) выгружаться может не один объект.
Для загрузки выгруженного значения используем следующий фрагмент кода (листинг 9.6):
Листинг 9.6. Загрузка данных из XML
ЧтениеXML = Новый ЧтениеXML();

ЧтениеXML.ОткрытьФайл("c:\doc.xml");

// Текущим становится элемент Root.
ЧтениеXML.Прочитать();

// Текущим становится элемент с документом.
ЧтениеXML.Прочитать();

// Проверить, сможет ли с данным значением "справиться"
// система сериализации в данной базе.
Если ВозможностьЧтенияXML(ЧтениеXML) Тогда

   // Получить ДокументОбъект.РеализацияТоваровУслуг
   ЗагружаемыйОбъект = ПрочитатьXML(ЧтениеXML);
   ЗагружаемыйОбъект.Записать();

КонецЕсли;   

ЧтениеXML.Закрыть();

Оффлайн СерьезныйЧеловек

  • ***
  • Сообщений: 165
  • РЕПУТАЦИЯ: 12
  • КПД: 7%
  • Регистрация: 2010-08-13
  • Сайт: 
Мне надо по заданию из ут в бп используя OLE соединение выгрузить документы Реализация товаров и услуг. Вот все что написано.

Оффлайн Dvdovin

  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 2
  • КПД: 6%
  • Регистрация: 2010-09-09
  • Сайт: 
 // Присоединение к базе 1С через OLE.
БазаОле=СоздатьОбъект("V77.Application"); // Получаем доступ к OLE объекту 1С
// Локальная версия (на одного пользователя):   V77L.Application
// Сетевая версия:   V77.Application
// Версия SQL:   V77S.Application


КаталогБазыОЛе  = "C:\program files\1cv77\МояБаза\";
ПользовательОле = "Администратор";
ПарольОле       = "qwerty";
МонопольныйРежимOLE = " /m"; // для немонопольного запуска указать пустую строку!
ЗапускБезЗаставки = 1;       // для появления заставки (например, чтобы наблюдать
                             // процесс запуска базы OLE визуально) поставьте здесь "0"
РезультатПодключения = БазаОле.Initialize ( БазаОле.RMTrade , "/d" +
                       СокрЛП(КаталогБазыОле) + " /n" + СокрЛП(ПользовательОле)+
                       " /p" + СокрЛП(ПарольОле) + МонопольныйРежимOLE,
                       ?(ЗапускБезЗаставки = 1,"NO_SPLASH_SHOW",""));
Если РезультатПодключения = 0 Тогда
     Предупреждение("Не удалось подключится к указанной базе - проверьте вводные!");
КонецЕсли;





Б) Доступ к справочникам и документам базы OLE (через функцию "CreateObject"):СпрOLE = БазаОле.CreateObject("Справочник.Фирмы"); // "СоздатьОбъект" в OLE не работает!
ДокOLE = БазаОле.CreateObject("Документ.РасходнаяНакладная");


После создания объекта справочника или документа к ним применимы все методы, касающиеся таких объектов в 1С:СпрОле.ВыбратьЭлементы();
Пока СпрОле.ПолучитьЭлемент()=1 Цикл
    Сообщить(Спр.Наименование);
КонецЦикла;


Заметьте, что если вместо "Сообщить(Спр.Наименование)" вы укажете "Сообщить(Спр.ТекущийЭлемент())", то вместо строкового/числового представления этого элемента программа выдаст вам в окошке сообщение "OLE". Именно это я и имел в виду, когда говорил, что напрямую мало что можно перенести. Т.е. не будут работать следующие методы (ошибки 1С не будет, но и результат работы будет нулевой). Рассмотрим следующий пример: СпрOLE = БазаОле.CreateObject("Справочник.Фирмы");  // это справочник в базе OLE
Док = СоздатьОбъект("Документ.РасходнаяНакладная"); // а это документ в местной базе
Док.Новый();                                        // создаем новый документ в местной базе
СпрOLE.НайтиПоКоду(1,0);                  // спозиционируем в базе OLE
                                                           // на фирме с кодом "1".
Док.Фирма = СпрOLE.ТекущийЭлемент(); // такой метод не сработает, т.к. справа от "=" стоит
                                                                // объект не местной базы, и местная база 1С его не понимает!


Однако,  сработает следующий метод:Спр = СоздатьОбъект("Справочник.Фирмы");                   // создаем объект справочника местной базы
Спр.НайтиПоНаименованию(СпрОле.Наименование,0,0); // Или Спр.найтиПоКоду(СпрОле.Код,0);
                                                         // т.е. СпрОле.Код и Спр.наименование
                                                         // являются обычными числовыми/строковыми
                                                         // значениями, которые понимает местная база!
Док.Фирма = Спр.ТекущийЭлемент(); // Вот теперь все в порядке, т.к. с обоих сторон метода
                                                          // стоят объекты только местной базы!


Отсюда вывод: возможность доступа к объектам базы 1С через OLE требуется, в основном, только для определенной задачи - получить доступ к реквизитам определенного элемента справочника или документа. Однако, не забываем, что объекты базы OLE поддерживают все методы работы с ними, в т.ч. и "Новый()", т.е. приведем пример противоположный предыдущему:ДокОле = CreateObject("Документ.РасходнаяНакладная"); // Создаем документ в базе OLE
ДокОле.Новый();
Спр = СоздатьОбъект("Справочник.Фирмы"); // В местной базе получаем доступ к справочнику
Спр.НайтиПоКоду(1,0);                                  // Находим в местной базе фирму с кодом 1 (если есть)
ДокОле.Фирма = Спр.ТекущийЭлемент();      // такой метод не сработает


Однако,  сработает следующий метод:СпрОле = БазаОле.CreateObject("Справочник.Фирмы"); // создаем объект справочника базы OLE
СпрОле.НайтиПоНаименованию(Спр.Наименование,0,0);  // Или СпрОле.найтиПоКоду(Спр.Код,0);
// т.е. Спр.Код и Спр.Наименование являются обычными числовыми/строковыми значениями,
// которые понимает база OLE!
ДокОле.Фирма = СпрОле.ТекущийЭлемент(); // Вот теперь все в порядке, т.к. с обоих сторон
                                                                     // метода стоят объекты базы OLE!
ДокОле.Записать();                                        // запишем документ в базе OLE
Если ДокОле.Провести()=0 тогда
     Сообщить("Не смогли провести документ!");
КонецЕсли;

Оффлайн Dvdovin

  • *
  • Сообщений: 36
  • РЕПУТАЦИЯ: 2
  • КПД: 6%
  • Регистрация: 2010-09-09
  • Сайт: 
Правда это для семёрки, но я думаю что для 8 будет примерно тоже самое

Оффлайн СерьезныйЧеловек

  • ***
  • Сообщений: 165
  • РЕПУТАЦИЯ: 12
  • КПД: 7%
  • Регистрация: 2010-08-13
  • Сайт: 
Спасибо большое всем, попробую сегодня проверить, потом отпишусь подошел код или нет ;)


Теги:
 

Как объединить объект в реквизите формы с типом "ДокументОбъект" и объект формы, созданной через "ПолучитьФорму()"?

Автор acces969Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 1474
Последний ответ 06 Авг 2017, 21:22
от alex0402
Помогите выразить код Объект.Наименование = Объект.Подразделение + " " + Объект.Должность + " " + Объект.ФизическоеЛицо через строки.

Автор LedgikРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 1139
Последний ответ 05 Мар 2019, 19:28
от Ledgik
выгрузка из "Платежные документы" выборочно в "Бухгалтерию предприятия"

Автор hkvРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 7139
Последний ответ 09 Окт 2014, 15:58
от дфтын
Выгрузка Бух учет из "Зарплаты и управления персоналом 8" в "1С:Бухгалтерию 8"

Автор KazakOFFРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 4365
Последний ответ 10 Ноя 2015, 16:20
от vitasw
Модуль "выгрузка в банк"

Автор Dima IgnatovРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 1962
Последний ответ 11 Май 2016, 13:23
от Rasty

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
72 Сообщений
oooo800
33 Сообщений
Дмитрий Джей Дмитрий Джей
30 Сообщений
IL2016
29 Сообщений
antoneus antoneus
25 Сообщений
LexaK
23 Сообщений
DmitriyF DmitriyF
16 Сообщений
Ann_
16 Сообщений
мадам брошкина
13 Сообщений
alexandr_ll
12 Сообщений

* Кто онлайн

  • Точка Гостей: 554
  • Точка Скрытых: 0
  • Точка Пользователей: 5
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal