Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) По 8 (число прочтений - 14323 )
U_zer
Экс-Участник


По 8
07. Октября 2008 :: 09:46
Печать  
Всем привет!
Может подскажет кто, есть ли описалово+примеры по работе в 1С 8 через ОЛЕ?
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: По 8
Ответ #1 - 07. Октября 2008 :: 11:32
Печать  
поиск
на http://itland.ru/ слова "V8.Application"
  
Наверх
 
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: По 8
Ответ #2 - 07. Октября 2008 :: 11:33
Печать  
А что нужно работа 1с8 как сервера автоматизации или обращение из 1с8 к другим программам?
  

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: По 8
Ответ #3 - 07. Октября 2008 :: 14:05
Печать  
Alex_Bob писал(а) 07. Октября 2008 :: 11:33:
А что нужно работа 1с8 как сервера автоматизации или обращение из 1с8 к другим программам?


из 1с8 к другим программам
  
Наверх
 
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: По 8
Ответ #4 - 08. Октября 2008 :: 04:52
Печать  
Вот пример из книги Михайлова "1С:Предприятие 7.7/8.0 Системное программирование"
Код
Выбрать все
objIE = New ComObject("InternetExplorer.Application");
objIE.Visible = Ложь; //Отключаем видимость
objIE.Silent = Ложь;
objIE.Navigate(Адрес);
Сообщить("Идет загрузка страницы. Ждите...");
Пока objIE.readyState<4 Цикл // Ждем пока загрузится страница
КонецЦикла;
objDoc = objIE.Document;
Для Каждого a Из objDoc.all.Tags("A") Цикл //Перебираем все ссылки  
    Сообщить(a.href);
КонецЦикла;
objIE.Quit(); //Закрываем приложение
objIE = Неопределено;
 

  

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: По 8
Ответ #5 - 08. Октября 2008 :: 04:57
Печать  
Alex_Bob писал(а) 08. Октября 2008 :: 04:52:
Код
Выбрать все
...
Сообщить("Идет загрузка страницы. Ждите...");
Пока objIE.readyState<4 Цикл // Ждем пока загрузится страница
КонецЦикла;
 




ОФФ: интересно а вот 1С-овцы специально потенциально бесконечные циклы используют, меня учили в таких случаях дополнительно "отваливаться по таймауту"
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: По 8
Ответ #6 - 08. Октября 2008 :: 05:01
Печать  
Alex_Bob писал(а) 07. Октября 2008 :: 11:33:
А что нужно работа 1с8 как сервера автоматизации или обращение из 1с8 к другим программам?


я всё таки обращу внимание на web-службы - пример взаимодействия чистой воды Улыбка


  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
U_zer
Экс-Участник


Re: По 8
Ответ #7 - 08. Октября 2008 :: 06:41
Печать  
lustin писал(а) 08. Октября 2008 :: 05:01:
Alex_Bob писал(а) 07. Октября 2008 :: 11:33:
А что нужно работа 1с8 как сервера автоматизации или обращение из 1с8 к другим программам?


я всё таки обращу внимание на web-службы - пример взаимодействия чистой воды Улыбка




Так, стоп!  Улыбка Меня на данный момент интересуют примеры (простые) реализации OLE доступа из 8 к 77. Поиск по предложенной ссылке мало что дал. Мне нужно нечто типа фака, как сделать подключение, как то-се ... Кстати, а есть возможность заюзать 1С++ из OLE?
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: По 8
Ответ #8 - 08. Октября 2008 :: 08:22
Печать  
Цитата:
lustin писал(а) 08. Октября 2008 :: 05:01:
Alex_Bob писал(а) 07. Октября 2008 :: 11:33:
А что нужно работа 1с8 как сервера автоматизации или обращение из 1с8 к другим программам?


я всё таки обращу внимание на web-службы - пример взаимодействия чистой воды Улыбка




Так, стоп!  Улыбка Меня на данный момент интересуют примеры (простые) реализации OLE доступа из 8 к 77. Поиск по предложенной ссылке мало что дал. Мне нужно нечто типа фака, как сделать подключение, как то-се ... Кстати, а есть возможность заюзать 1С++ из OLE?

Пример
Код
Выбрать все
 V77 = Новый COMОбъект("V77M.Application");

	Если  V77.Initialize(V77.RMTrade,"ИсточникСтр","") Тогда
	       Сообщить("Успех");
		   ЗаполнитьОснованиеРеализации(V77);

	Иначе  Предупреждение("Ошибка открытия информационной базы");
           Возврат;

	КонецЕсли;
 

Код
Выбрать все
Процедура ЗаполнитьОснованиеРеализации(V77)
	 Накл= V77.EvalExpr("CreateObject(""Документ.РасходнаяНакладная"")");
	 ДокОсн= V77.EvalExpr("CreateObject(""Документ"")");

	 Накл.ВыбратьДокументы();
	 Пока Накл.ПолучитьДокумент()=1 Цикл
		 Номер=СокрЛП(Накл.НомерДок);
		  ДокСоотв=Документы.РеализацияТоваров.НайтиПоНомеру(СокрЛП(Номер), Накл.ДатаДок);  
		   Если Накл.Проведен()=0 Тогда
		     Продолжить;

		 КонецЕсли;
        Если ДокСоотв=Документы.РеализацияТоваров.ПустаяСсылка() Тогда  
	         Сообщить("! для "+Накл.Вид()+" "+Накл.НомерДок+" не найдено соответстствие");
             Продолжить;

		 КонецЕсли;
		Если Накл.ДокументОснование.Выбран()=0 Тогда
			Продолжить;
		КонецЕсли;
// и т.д.
 



Самое быстрое через ADO, например к ДБФ
Код
Выбрать все
ADO= Новый COMОбъект( "ADODB.Connection" );
ADO.Open("
    |Provider=VFPOLEDB.1;
    |Deleted=Yes;
    |Null = Yes;
    |Exclusive = No;
    |SourceType = DBF;
    |Data Source=" + КаталогИБСтрокой + ";
    |Mode=ReadWrite;
    |Extended Properties="""";
    |User ID="""";
    |Password="""";
    |Mask Password=False;
    |Collating Sequence=MACHINE;
    |DSN="""""); 


и далее как Fez описывал.
Запрос можно подготовить с помощью 1С++
(Писать с использованием $, далее через Отладка(1) получить реальные имена таблиц и этот запрос использовать в ADO)
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: По 8
Ответ #9 - 08. Октября 2008 :: 08:28
Печать  
О! Спасибо! Буду изучать ...
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: По 8
Ответ #10 - 08. Октября 2008 :: 09:24
Печать  
Я в шоке!

Код
Выбрать все
	V7 = Новый ComОбъект("V77s.Application");
    Открыта = V7.Initialize(V7.RMTrade,"/d\\d2enkor\Work_2008","NO_SPLASH_SHOW");
	Если Открыта Тогда
		Запрос = V7.CreateObject("OdbcRecordSet");
		ТЗ = "
		|select СпрТ.id [Элем $Справочник.Города]
		|from $Справочник.Города СпрТ (nolock)
		|where СпрТ.isMark = 0";
		ТЗн = Запрос.ВыполнитьИнструкцию(ТЗ);
		ТЗн.ВыбратьСтроки();
		Пока ТЗн.ПолучитьСтроку()= 1 Цикл
			Сообщить(ТЗн.Элем.Наименование+" "+Формат(Тзн.Элем.Код, "Ч(0)9.0"))
		КонецЦикла
	КонецЕсли;

 



Работает!!!!!!
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: По 8
Ответ #11 - 08. Октября 2008 :: 09:33
Печать  
kiruha писал(а) 08. Октября 2008 :: 08:22:
Самое быстрое через ADO, например к ДБФ

А смысл? можно и через ОЛЕ 1С++ юзать Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: По 8
Ответ #12 - 08. Октября 2008 :: 09:35
Печать  
Цитата:
Я в шоке!

Код
Выбрать все
	V7 = Новый ComОбъект("V77s.Application");
    Открыта = V7.Initialize(V7.RMTrade,"/d\\d2enkor\Work_2008","NO_SPLASH_SHOW");
	Если Открыта Тогда
		Запрос = V7.CreateObject("OdbcRecordSet");
		ТЗ = "
		|select СпрТ.id [Элем $Справочник.Города]
		|from $Справочник.Города СпрТ (nolock)
		|where СпрТ.isMark = 0";
		ТЗн = Запрос.ВыполнитьИнструкцию(ТЗ);
		ТЗн.ВыбратьСтроки();
		Пока ТЗн.ПолучитьСтроку()= 1 Цикл
			Сообщить(ТЗн.Элем.Наименование+" "+Формат(Тзн.Элем.Код, "Ч(0)9.0"))
		КонецЦикла
	КонецЕсли;

 



Работает!!!!!!

Вот я про это и написал Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: По 8
Ответ #13 - 08. Октября 2008 :: 09:45
Печать  
artbear писал(а) 08. Октября 2008 :: 09:33:
kiruha писал(а) 08. Октября 2008 :: 08:22:
Самое быстрое через ADO, например к ДБФ

А смысл? можно и через ОЛЕ 1С++ юзать Улыбка


Круто !

P.S.
А ТЗ то все равно не передашь нормально Печаль (в смысле только с построчным обходом)
Разве что через временную таблицу
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: По 8
Ответ #14 - 08. Октября 2008 :: 10:25
Печать  
kiruha писал(а) 08. Октября 2008 :: 09:45:
artbear писал(а) 08. Октября 2008 :: 09:33:
kiruha писал(а) 08. Октября 2008 :: 08:22:
Самое быстрое через ADO, например к ДБФ

А смысл? можно и через ОЛЕ 1С++ юзать Улыбка


Круто !

P.S.
А ТЗ то все равно не передашь нормально Печаль (в смысле только с построчным обходом)
Разве что через временную таблицу


Код
Выбрать все
		Запрос = V7.CreateObject("OdbcRecordSet");
		VT = V7.CreateObject("Addin.ValTable");
ТЗ = "
		|select СпрТ.id [Элем $Справочник.Города]
		|from $Справочник.Города СпрТ (nolock)
		|where СпрТ.isMark = 0";
				 VT.Загрузить(Запрос.ВыполнитьИнструкцию(ТЗ));
			Тзн = VT.ПолучитьИтоги("Элем","");		Тзн.ВыбратьСтроки();
		Пока Тзн.ПолучитьСтроку()= 1 Цикл
			Сообщить(Тзн.Элем.Наименование+" "+Формат(Число(Тзн.Элем.Код), "ЧЦ=9;ЦДЦ=0;ЧН=0;"))
		КонецЦикла
 



И группируй как хочешь, думаю, что и ИТЗ сработает.
Только что-то Формат(Число(Тзн.Элем.Код), "ЧЦ=9;ЦДЦ=0;ЧН=0;"))
не пашет, мне надо чтобы было "00000000234", а выводит "234".
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать