Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];

Вниз

Связь Delphi - 1C   Найти похожие ветки 

 
kyn66 ©   (2007-10-22 12:19) [0]

Уважаемые, подскажите, есть-ли какая особенность для связи Delphi с БД 1С ?


 
Reindeer Moss Eater ©   (2007-10-22 12:50) [1]

а есть такая БД?


 
Desdechado ©   (2007-10-22 13:15) [2]

Особенность в том, что никакой связи не существует.


 
kyn66 ©   (2007-10-22 13:18) [3]

Спрошу по другому... Могу-ли я брать данные из таблиц или(БД) 1С ?


 
Reindeer Moss Eater ©   (2007-10-22 13:24) [4]

А что Конституция по этому поводу говорит?


 
Сергей М. ©   (2007-10-22 13:26) [5]


> Могу-ли я брать данные из таблиц или(БД) 1С ?
>


Можешь, ибо разрешено все что не запрещено)


 
Desdechado ©   (2007-10-22 13:27) [6]

Да. При понимании структуры, наличии прав и соответствующих драйверов.


 
NNH ©   (2007-10-22 13:29) [7]

В книге  TRANSACT-SQL (примерно так она называется) есть отдельная глава по связям с 1С. Я не читал эту главу, но она там есть :-) Может пригодится тебе


 
kyn66 ©   (2007-10-22 13:29) [8]


> Да. При понимании структуры, наличии прав и соответствующих
> драйверов.


Вот это я и хотел услышать. А теперь можно ближе к теме и по пожробнее? Каким образом это делается? Могет где примеры какие есть?


 
Reindeer Moss Eater ©   (2007-10-22 13:31) [9]

Примеры в папке Demos\Db у Delphi


 
BoxTer   (2007-10-22 13:31) [10]


var   onesobj: Olevariant;
      spr: Olevariant;
begin
 onesobj:=createoleobject("V77S.Application"); //Создаем OLE-объект
 onesobj.initialize(onesobj.rmtrade,"/D\\Путь_К_Базе\ /NИмяПользователя /PЕгоПароль","");
.....
spr:=main.onesobj.CreateObject("Справочник.Материалы");
 try //вставка нового значения
   Spr.New;
     Spr.SetAttrib("Наименование",EditName.Text);
     Spr.SetAttrib("НомНомер",EditNomNomer.Text);
     Spr.SetAttrib("ГОСТ",EditTYGost.Text);
     Spr.SetAttrib("Размер",EditRazmer.Text);
     Spr.SetAttrib("Сорт",EditSort.Text);      
     Spr.SetAttrib("Марка",EditMarka.Text);
     Spr.SetAttrib("Фирма",sprF.CurrentItem);
     Spr.SetAttrib("ЕдиницаИзмерения",sprE.CurrentItem);
    Spr.Write;
 except
    MessageDlg("Произошла ошибка при вставке нового элемента",mtError,[mbOk],0);
    exit;
 end;
 // или редактирование существующего

 try
  if Spr.FindByCode(CodeZ,0)<>1 then Begin
          MessageDlg("Запись не найдена. Сохранение не произошло!",mtWarning,[mbOk],0);
          exit;
  end;
     Spr.SetAttrib("Наименование",EditName.Text);
     Spr.SetAttrib("НомНомер",EditNomNomer.Text);
     Spr.SetAttrib("ГОСТ",EditTYGost.Text);
     Spr.SetAttrib("Размер",EditRazmer.Text);
     Spr.SetAttrib("Сорт",EditSort.Text);      
     Spr.SetAttrib("Марка",EditMarka.Text);
     Spr.SetAttrib("Фирма",sprF.CurrentItem);
     Spr.SetAttrib("ЕдиницаИзмерения",sprE.CurrentItem);
    Spr.Write;
 except
    MessageDlg("Произошла ошибка при обновлении элемента",mtError,[mbOk],0);
    exit;
 end;



 
BoxTer   (2007-10-22 13:35) [11]

(смена аттрибута)

 try
   spr:=onesobj.CreateObject("Справочник.Материалы");
   if Spr.FindByCode(qryMaterial.FieldByName("Code").asString,0)<>1 then Begin
      showmessage("Не смог найти!");
      exit;
   end;
   sprD:=onesobj.CreateObject("Справочник.Материалы");
   if sprD.FindByDescr("Удаленные",0)=1 then Begin
     Spr.SetAttrib("Родитель",sprD.CurrentItem);
     Spr.Write;
   end else showmessage("Не удалено!");
 except
    MessageDlg("Произошла ошибка при переносе элемента справочника!",mtError,[mbOk],0);
    exit;
 end;



 
BoxTer   (2007-10-22 13:39) [12]

Кстати, 1С должен быть установлен на клиентской машине (или хотяб зарегин класс)


 
kyn66 ©   (2007-10-22 13:50) [13]

Это добавление, я так понимаю.Взять что -липо по такому-же пути, тока использовать getAttrib. А что такое sprF и sprE ?


 
BoxTer   (2007-10-22 13:59) [14]

Не обращай внимания, это такие же объекты-справочники 1С
Я просто взял кусок из кода и вставил сюда.


 
kyn66 ©   (2007-10-22 14:37) [15]


> Кстати, 1С должен быть установлен на клиентской машине (или
> хотяб зарегин класс)

а где его взять, чтоб зарегить (класс)


 
Сергей М. ©   (2007-10-22 15:29) [16]


> kyn66 ©   (22.10.07 14:37) [15]


> где его взять


Ты что, с луны свалился ?)


 
Anatoly Podgoretsky ©   (2007-10-22 16:49) [17]

> kyn66  (22.10.2007 12:19:00)  [0]

Простая OLE а остальное шаманство


 
atruhin ©   (2007-10-23 07:16) [18]

Работать через OLE.
Для более сложных случаев удобнее написать внешнюю обработку на 1С, а из Delphi
использовать ее. Если объему выгрузки загрузки большие, проще через XML,
т.е. внешняя обработка создает XML файл, а твоя программа его загружеат.
Кстати в примере из [10] BoxTer   (22.10.07 13:31)
можно использовать:
вместо Spr.SetAttrib("Наименование",EditName.Text);
напрямую Spr.Наименование := EditName.Text;


 
kyn66 ©   (2007-10-23 10:15) [19]


> Ты что, с луны свалился ?)

Да нет, просто с 1С сталкиваюсь впервые. Вот и спрашиваю, как зарегить класс(я так понимаю некие dll), чтобы не устанавливать 1 С на машину


 
Сергей М. ©   (2007-10-23 10:52) [20]


> kyn66 ©   (23.10.07 10:15) [19]


> с 1С сталкиваюсь впервые


К нему, так же как и к любому другому ПО, каксаемо "где взять" применимо "купи, найди, роди, укради")


> как зарегить класс..  чтобы не устанавливать 1 С на машину


А что толку его "регить", если, как ты говоришь, на машине не будет самого модуля, реализующего фабрику класса ?


 
kyn66 ©   (2007-10-23 13:23) [21]

А можно без утомительных пустых слов конкретно рассказать, как сделать так, чтобы заработало обращение к таблицам 1С


 
Сергей М. ©   (2007-10-23 14:05) [22]


> kyn66 ©   (23.10.07 13:23) [21]


Ну если уж [10] и [11] для тебя оказались "пустыми словами", то куда уж нам, крестьянам, в лаптях да по асфальту)


> как сделать так, чтобы заработало


На машине д.б. проинсталлировано как положено ПО "1С:Чего-то там".
Что еще не понятно ?


 
kyn66 ©   (2007-10-23 15:17) [23]


>  [10] и [11]

Как раз все толково показано.

> onesobj:=createoleobject("V77S.Application"); //Создаем
> OLE-объект

В этот момент возникает ошибка. Я и спрашиваю, как прописать класс без установки 1С ? Возможно вааще такое? Или если нужно работать с прогой, то всем обязалом нужно ставить 1С ?


 
Anatoly Podgoretsky ©   (2007-10-23 15:30) [24]

> kyn66  (23.10.2007 15:17:23)  [23]

Всем


 
kyn66 ©   (2007-10-23 15:46) [25]

Ну вот я себе поставил ща 1С. На этой строке onesobj:=createoleobject("V77S.Application"); вылетает ошибка :
http://yurec66.narod.ru/Vopros/err.png


 
Виталий Панасенко(дом)   (2007-10-23 16:03) [26]

Версия хоть 7,7  ? или этого то же не видно из строки подключения ? поставил "восьмерку", или 7,5...


 
kyn66 ©   (2007-10-23 16:05) [27]

7.7 Предприятие локальная.


 
kyn66 ©   (2007-10-23 16:08) [28]

точнее для SQL


 
Сергей М. ©   (2007-10-23 16:14) [29]


> kyn66 ©   (23.10.07 15:46) [25]


Значит класс не зарегистрирован.


 
kyn66 ©   (2007-10-23 16:20) [30]

Пардон, ешшо раз попробывал запустить - пошло! Хочу отследить чего кидает в win32/ Могет достаточно будет dll-к накидать и будет работать?


 
Сергей М. ©   (2007-10-23 16:22) [31]


> отследить чего кидает в win32


Какой еще "win32" ? Причем здесь win32 ?


> Могет достаточно будет dll-к накидать


За каким лешим она нужна ?)


 
BoxTer   (2007-10-24 07:39) [32]

Криво встала 1С
Вот ветки реестра, попробуй установи их и ребутни, должно помочь:
http://www.rapidshare.ru/441634


 
kyn66 ©   (2007-10-24 11:07) [33]

Вот спасибо, вот человек доходчиво объяснил. Сразу видно, что в рестре идут изменения. Boxter - Спасибо ешшо раз.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.008 c
2-1203185365
guav
2008-02-16 21:09
2008.03.16
Хитрые структуры данных.


6-1182176178
reLaxxx
2007-06-18 18:16
2008.03.16
Соединение с FTP через прокси? пробовал Инди, почему-то зависает


15-1202215404
Reindeer Moss Eater
2008-02-05 15:43
2008.03.16
Миллион лицензий


15-1202380777
kyn66
2008-02-07 13:39
2008.03.16
Пропало окно отладки Watches


15-1202197190
Шмелъ
2008-02-05 10:39
2008.03.16
Оффтоп. Linux. /dev/null





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский