Форум: "Базы";
Текущий архив: 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.007 c