Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2016, 15:24   #1
Razmir
 
Аватар для Razmir
 
Регистрация: 08.06.2011
Сообщений: 9
По умолчанию Делфи и 1С

Доброго времени суток. Пытаюсь связать 1С и Дельфи. Нашел пример для подключения к 1С:

Код:
function ConnectTo1C8_Application(s1cAppProgID,
                                  InitLine : string;
                                  Visible : boolean) : Variant;
//Соединение с 1Cv8 (OLE)
//s1cAppProgID - имя 1Cv8, как сервера OLE Automation "V8.Application" (может быть пустым))
//InitLine - строка инициализации
//Visible - если TRUE, то после запуска 1Cv8 окно программы ставновится видимым
//Возвращаемое значение : ссылка на 1Cv8, как сервер OLE Automation
//                        или значение Unassigned (в случае неудачи)
Var
  s1CResOpen : integer;
begin
  Result:=Unassigned;
  s1cAppProgID:=Trim(s1cAppProgID);
  if Length(s1cAppProgID)<=0 then s1cAppProgID:='V83.Application';
  InitLine:=Trim(InitLine);
  if Length(s1cAppProgID)>0 then begin
     //Создаем соединение (соотв.COM-объект)
     Result := CreateOleObject(s1cAppProgID);
     //Проверяем корректность соединения
     if YesLinkToVariant(Result) then begin
        //Инициализация системы 1Cv8
        s1CResOpen:=Result.Connect(InitLine);
        //Видимость главного окна 1Cv8
        Result.Visible:=Visible;
     end;
  end;
end;
затем вызов:

Код:
  s1C8_ole:=ConnectTo1C8_Application(Trim(Edit_1C8_Name.Text),
                                     Trim('Srvr="'+s+'";'+
                                          'Ref="'+r+'";'+
                                          'Usr="'+u+'";'+
                                          'Pwd="'+p+'";'),
                                     CheckBox1.isChecked);
Получение данных из справочника:

Код:
procedure TForm1.SpeedButton2Click(Sender: TObject);
//Прочитать информацию из справочника КнигиВидеоАудио
Var
  Sel_ole, //результат выборки из справочника
  SbCnt_ole  : Variant; //ссылка на объект "Справочники.КнигиВидеоАудио"
  Yes : byte;
begin
  SbCnt_ole:=UnAssigned;
  Sel_ole:=UnAssigned;
  ListBox1.Items.Clear;

  //Проверяем, существует ли соединение с 1Cv8
  if YesLinkToVariant(s1C8_ole) then begin

     //Получаем ссылку на объект типа Справочник -  "КнигиВидеоАудио"
     SbCnt_ole:=s1C8_ole.Справочники.КнигиВидеоАудио;

     //Производим выборку из справочника КнигиВидеоАудио
     Sel_ole := SbCnt_ole.Выбрать();

     //Перебор элементов выборки
     while Sel_ole.Следующий() do
      begin

       Yes:=0;
       //Отбираем все
       if ComboBox1.ItemIndex<=0 then Yes:=1;

       if ComboBox1.ItemIndex=1 then begin
          //Отбираем только элементы
          if not Sel_ole.ЭтоГруппа then Yes:=1;
       end;

       if ComboBox1.ItemIndex>=2 then begin
          //Отбираем только группы
          if Sel_ole.ЭтоГруппа then Yes:=1;
       end;

       if Yes>0 then begin
          if not Sel_ole.ЭтоГруппа then begin
             //Это элемент справочника
             ListBox1.Items.Add('    '+Trim(Sel_ole.Код)+'='+Trim(Sel_ole.Наименование));
          end
          else begin
             //Это элемент группа справочника
             ListBox1.Items.Add('=> '+Trim(Sel_ole.Код)+'='+Trim(Sel_ole.Наименование));
          end;
       end;

     end;

  end
  else begin
     ShowMessage('Сначала нужно установить соединение с 1Cv8 !');
  end;
end;
Весь код работает, но вот как работать с Документами найти не могу ни примеров, ни объяснений. Как сформировать документ на определенную дату, с определенными условиями и получить данные в приложение. Спасибо.
Razmir вне форума Ответить с цитированием
Старый 13.10.2016, 17:43   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну а как бы в 1С делал? Например запросом по условию выдернул ссылки на документы и по ссылкам получил бы объекты со всеми полями. Либо в запросе непосредственно нужные поля документов вытянул
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.10.2016, 17:45   #3
Razmir
 
Аватар для Razmir
 
Регистрация: 08.06.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ну а как бы в 1С делал? Например запросом по условию выдернул ссылки на документы и по ссылкам получил бы объекты со всеми полями. Либо в запросе непосредственно нужные поля документов вытянул
В том то и дело, что в 1С не шарю, а на работе систему учета наваяли через одно место, одно и то же действие 10 раз приходится делать. Уйму времени отнимает. Вот хочу с помощью делфи автоматизировать.
Razmir вне форума Ответить с цитированием
Старый 13.10.2016, 17:52   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Что-то придумал не понятное. В 1С и своих средств и возможностей для этого предостаточно. Зачем там еще примочки на делфях? Если хочешь продолжать в том же духе найти инфу про объект запрос и как с ним работать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.10.2016, 17:57   #5
Razmir
 
Аватар для Razmir
 
Регистрация: 08.06.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Что-то придумал не понятное. В 1С и своих средств и возможностей для этого предостаточно. Зачем там еще примочки на делфях? Если хочешь продолжать в том же духе найти инфу про объект запрос и как с ним работать
Я понимаю, что правильней было бы 1С изучить, но на это нет времени. Шеф считает, что раз я хоть немного знаю какой то язык программирования, то само собой за неделю должен изучить влегкую 1С. Поэтому и думаю, что пока научиться загружать-обрабатывать-выгружать данные на делфи, а со временем изучить 1с
Razmir вне форума Ответить с цитированием
Старый 13.10.2016, 17:59   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Гы, я в прошлом году так и влез в эту гадость. Сел и стал писать на первой же неделе с помощью гугла, поначалу медленно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.10.2016, 20:12   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Razmir, у меня нет знаний и опыта работы с 1С
НО! я на 99.9% уверен, что намного быстрее, проще и, главное, правильнее!,
будет изучать 1С и делать запросы внутри средствами самой 1C
внутренние справочники 1C имеют сложные взаимосвязи, автоматические имена таблиц и полей, Вы больше сил и времени потратите на изучение структуры.
Сам 1С будет выучить легче (больше учебников/курсов) и быстрее.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.10.2016, 20:30   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Это точно, было бы прикольно изучать возможности офиса посредством обращения через его оле-сервера из делфи. Так и здесь, только еще сложней. Может и не сложней, но по крайней мере так думаю
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.10.2016 в 20:33.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование GDI+ в делфи 7. Необходимо через GDI+ в делфи 7 получить из файла формата jpg файл формата bmp DenIvan Компоненты Delphi 7 27.02.2015 11:31
Бросок к горизонту(паскаль+-делфи.(может ли кто помочь сделать с Паскаля АВС на Делфи?) extrimal Помощь студентам 8 24.03.2013 23:51
Делфи kn-09 Общие вопросы Delphi 4 02.06.2010 22:52
Делфи natasxa Помощь студентам 2 01.05.2010 23:04
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37