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

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

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
Просмотров: 248
Последний ответ 06 Авг 2017, 21:22
от alex0402
выгрузка из "Платежные документы" выборочно в "Бухгалтерию предприятия"

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

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

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

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

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

Ответов: 3
Просмотров: 948
Последний ответ 11 Май 2016, 13:23
от Rasty
Здравствуйте!!! Необходимо востановить ИБ на определенную дату. Копии через конфигуратор на эту дату не сделали, но есть файл в формате CD в rar (Это программа сама сделала резервную копию). Возможно ли востановит ее в 1с и работать (как при загрузке копи

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

Ответов: 1
Просмотров: 1879
Последний ответ 24 Май 2016, 17:17
от Kironten

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
157 Сообщений
ilyay ilyay
66 Сообщений
alex0402
53 Сообщений
AIFrame
51 Сообщений
andron81_81
44 Сообщений
oleg-x
44 Сообщений
BuhRust
33 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
Golickoff Golickoff
31 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal