1c и Delphi

Тема в разделе "1C и всё что с ней связано", создана пользователем -, 12 сен 2011.

  1. Гость

    Репутация:
    0
    Доброго времени суток! я в 1С не силен но вот столкнулся с такой проблемой: имеется конфигурация 7.7 мне необходимо из делфи подключится к БД и выбрать все документы по реквизиту шапки "склад", а затем выбрать данные из табличной части, собсно подключение происходит нормально, а вот считать данные и условие проверки не выходит, подскажите как реализовать или дайте ссылочки где почитать инфу
     
  2. Дайнеко

    Дайнеко Well-Known Member

    Репутация:
    0
    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    А как подключился? Если открыл файлы DBF, то нужно кропотливо разбираться со структурой файлов. Если через OLE, то без нания языка 1С не обойтись.
     
  3. Гость

    Репутация:
    0
    подключаюсь через OLE, можно ссылочку как работать с базой 1с через открытие DBF файлов?
     
  4. Гость

    Репутация:
    0
    даблпост
     
  5. vitfil

    vitfil IT-интегратор

    Репутация:
    0
    Регистрация:
    2 апр 2004
    Сообщения:
    2.062
    Симпатии:
    0
    Структура таблиц описана в файле .DD или .DDS но вам это вряд ли поможет. Обычно это находят поиском.
     
  6. Allexei

    Allexei Well-Known Member

    Репутация:
    0
    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    1
    Проще разобраться с работой по Оле. С циклами знакомы? Значит справитесь. Работа с Оле -
    http://lmgtfy.com/?q=1%D0%A1+7.7+%D0%BF%D0...D0%BF%D0%BE+OLE.

    В VB с 1С работал- ничего сложного, думаю с Дельфином то же самое.
     
  7. Гость

    Репутация:
    0
    непосредственно само подключение прошло нормально и список документов проссмотреть получается, мне хотелось бы чтобы подсказали синтаксис 1с который помог бы мне выбрать данные описанные в 1 посте
     
  8. Allexei

    Allexei Well-Known Member

    Репутация:
    0
    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    1
    Самое простое. Подключился к 1С, есть переменная ОдинС котороя содержит подключение:
    1. Создадим выборку документов по складу:
    Select= ОдинС77.CreateObject("Запрос");
    2. Определим запрос к нашей базе
    TEXT= "
    |Период с '"+Date1+"' по '"+Date2+"';
    |Обрабатывать НеПомеченныеНаУдаление;
    |ТекущийДокумент = Документ.ОтчетККМ.ТекущийДокумент;
    |НомерДок = Документ.ОтчетККМ.НомерДок;
    |ДатаДок = Документ.ОтчетККМ.ДатаДок;
    |Склад= Документ.ОтчетККМ.Склад.Код;
    |Группировка НомерДок;
    |Условие (Склад= """+ CODE+ """);";
    Date1 и Date2 - периоды выборки, CODE - код интересуемого склада
    3.Попробуем выполнить запрос
    IF (Select.Выполнить(TEXT) = 0) Then
    showMessage( "Не могу выполнить запрос к документам в 1С 7.7"); return 0;
    endif
    4. Если же запрос выполнился пройдемся по документам и строкам
    while Select.Группировка(1) = 1 {
    DOC= Select.ТекущийДокумент;
    DOC.ВыбратьСтроки();
    while DOC.ПолучитьСтроку() = 1 {
    Tovar=DOC.Номенклатура;
    }
    }
    --------------------
    Должно быть примерно так. Код не проверял так как на си ни дельфина на работе нет
     
  9. Гость

    Репутация:
    0
    procedure TForm1.Button3Click(Sender: TObject);
    begin
    select:=ole1c.CreateObject('Запрос');
    textquery:='|Период с 01.05.11 по 01.09.11;';
    textquery:=textquery+'|Обрабатывать НеПомеченныеНаУдаление;';
    textquery:=textquery+'|ТекущийДокумент = Документ.ОтчетККМ.ТекущийДокумент;';
    textquery:=textquery+'|НомерДок = Документ.ОтчетККМ.НомерДок;';
    textquery:=textquery+'|ДатаДок = Документ.ОтчетККМ.ДатаДок;';
    textquery:=textquery+'|Склад= Документ.ОтчетККМ.Склад.Код;';
    textquery:=textquery+'|Группировка НомерДок;';
    if select.Выполнить(textquery)=0 then
    showmessage('ошибка!');
    while select.Группировка(1) = 1 do begin
    doc:=select.ТекущийДокумент;
    doc.ПолучитьСтроку();
    while doc.Номенклатура()=1 do
    listbox2.items.add(Doc.Номенклатура);
    end;
    end;
    при выполнении выдает ошибку:
     

    Вложения:

    • 1c и Delphi
      ______.jpg
      Размер файла:
      54,7 КБ
      Просмотров:
      70
  10. Allexei

    Allexei Well-Known Member

    Репутация:
    0
    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    1
    Попробуй в начале в 1С 77 конструктором запроса создать запрос, а потом его перенести в твою программу.
     
  11. Гость

    Репутация:
    0
    с датой разобрался выкидываает ошибку о несоответствии типов на этой строке

    Код:
    doc.ПолучитьСтроку();
     
  12. Paume

    Paume Well-Known Member

    Репутация:
    0
    Регистрация:
    15 дек 2010
    Сообщения:
    107
    Симпатии:
    0
    Между этими строчками нужно вставить
    doc.ВыбратьСтроки();
    А потом в цикле doc.ПолучитьСтроку();
    Смотри первый пример
     
  13. Гость

    Репутация:
    0
    Код:
    while select.Группировка(1) = 1 do begin
    doc:=select.ТекущийДокумент;
    doc.ВыбратьСтроки();
    doc.ПолучитьСтроку();
    while doc.Номенклатура()=1 do
    ....
    end;
    doc.ВыбратьСтроки(); все равно здесь ошибка выскакивает несооответствие типов
     
  14. Paume

    Paume Well-Known Member

    Репутация:
    0
    Регистрация:
    15 дек 2010
    Сообщения:
    107
    Симпатии:
    0
    doc.ВыбратьСтроки();
    while doc.ПолучитьСтроку()=1 do
    НазваниеВашейПеременной:=doc.Номенклатура;
    end;

    Попробуйте еще скобки убрать...
     
  15. Гость

    Репутация:
    0
    doc.ВыбратьСтроки();
    на это строке ошибку выдает убрать скобки не помогает
     
  16. Paume

    Paume Well-Known Member

    Репутация:
    0
    Регистрация:
    15 дек 2010
    Сообщения:
    107
    Симпатии:
    0
    Что конкретно вам нужно в запросе получить?
    Может, стоит не документы перебирать, а в них еще цикл по номенклатуре делать, а сразу в запросе эту номенклатуру доставать?
    Т.е. запрос перепишите по-другому. Тогда не нужно будет вообще использовать выбратьстроки() и получитьстроку().

    Посмотрите здесь:
    http://forum-1c.ru/index.php?topic=6861
     
  17. Гость

    Репутация:
    0
    спасибо уже разобрался)
     
  18. KiR

    KiR НЕ шибка опытный програмер)

    Репутация:
    0
    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    doc:=select.ТекущийДокумент;
    а двоеточие после doc точно нужно?
     
  19. Allexei

    Allexei Well-Known Member

    Репутация:
    0
    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    1
    Это же ПАСКАЛЬ! Операция присваивания, если без двоеточия то это операция сравнения.
     
  20. Paume

    Paume Well-Known Member

    Репутация:
    0
    Регистрация:
    15 дек 2010
    Сообщения:
    107
    Симпатии:
    0
    Так поделитесь опытом - в чем же все-таки дело было?
     
Загрузка...
Похожие Темы - Delphi
  1. Stupak
    Ответов:
    0
    Просмотров:
    141
  2. cybert
    Ответов:
    0
    Просмотров:
    618
  3. Shouldercannon
    Ответов:
    0
    Просмотров:
    654
  4. antares
    Ответов:
    0
    Просмотров:
    898
  5. Луиза
    Ответов:
    0
    Просмотров:
    441

Поделиться этой страницей