Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.16;
Скачать: CL | DM;

Вниз

Связь 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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.014 c
11-1186028971
sunwise
2007-08-02 08:29
2008.03.16
Как дождаться исполнения консольного приложения? Подскажите.


2-1203325043
Thrasher
2008-02-18 11:57
2008.03.16
Открыть файл.


2-1203123909
Artem
2008-02-16 04:05
2008.03.16
Изменение текста в WebBrowser без сохранения на диск


2-1203455145
{RASkov}
2008-02-20 00:05
2008.03.16
MessageBox + MB_HELP


2-1203055696
кекс
2008-02-15 09:08
2008.03.16
"Дерево" для данных