8.х Отчет через OLE дает другие данные, чем в 1С

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Kapibara, 12 янв 2012.

  1. TopicStarter Overlay
    Kapibara
    Offline

    Kapibara

    Регистрация:
    12 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Искал похожее, не нашел, сильно не бейте.

    Запрос в отчете 1с 8.2:

    Код:
    ВЫБРАТЬ
    
    СчетНаОплатуПокупателю.Дата,
    
    СчетНаОплатуПокупателю.Номер,
    
    СчетНаОплатуПокупателю.Товары.(
    
    Номенклатура.НоменклатурнаяГруппа.Код
    
    Сумма,
    
    ПроцентСкидкиНаценки
    
    ),
    
    СчетНаОплатуПокупателю.Организация.Наименование,
    
    СчетНаОплатуПокупателю.Ответственный.Наименование,
    
    СчетНаОплатуПокупателю.Контрагент.Наименование
    
    ИЗ
    
    Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
    
    
    
    
    
    Результат правильный.

    Но когда запрашиваешь то же самое через Delphi + OLE, данные из полей табличной части:
    Номенклатура.НоменклатурнаяГруппа.Код
    Сумма,
    ПроцентСкидкиНаценки


    выглядят, как &00A8C02 (шестнадцатиричные данные). И Delphi выдает ошибку "Could not convert type (dispatched) into type (OLEstr)"

    [​IMG]

    Преобразования типа *Выразить* и *ДанныеВЧисло* - не помогают.

    Кто сталкивался? помогите пжалста...

    Вложения:

    • 1233333.jpg
      1233333.jpg
      Размер файла:
      22,6 КБ
      Просмотров:
      6
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    В этом месте, при выполнении в 1С получается "выборка" (выборка из выборки).
    Код:
    СчетНаОплатуПокупателю.Товары.(
    Номенклатура.НоменклатурнаяГруппа.Код
    Сумма,
    ПроцентСкидкиНаценки
    ),
    
    
    
    Delphi не знает такой тип данных.

    Переписать запрос в таком виде:
    Код:
    "ВЫБРАТЬ
    СчетНаОплатуПокупателюТовары.Ссылка.Дата,
    СчетНаОплатуПокупателюТовары.Ссылка.Номер,
    СчетНаОплатуПокупателюТовары.Номенклатура.НоменклатурнаяГруппа.Код,
    СчетНаОплатуПокупателюТовары.Сумма,
    СчетНаОплатуПокупателюТовары.ПроцентСкидкиНаценки,
    СчетНаОплатуПокупателюТовары.Ссылка.Организация.Наименование,
    СчетНаОплатуПокупателюТовары.Ссылка.Ответственный.Наименование,
    СчетНаОплатуПокупателюТовары.Ссылка.Контрагент.Наименование
    ИЗ
    Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплатуПокупателюТовары"
    
    
    
  3. TopicStarter Overlay
    Kapibara
    Offline

    Kapibara

    Регистрация:
    12 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    То же самое. Вариантов много перепробовал.

    Думаю, это из-за обращения к табличной части. :angry:
    И еще кое-что: Каждый раз шестнадцатиричные данные разные. Как будто динамическая ссылка.

    Работало только в таком варианте, но я не знаю как связать таблицы:
    Код:
    Выбрать
    СчетНаОплатуПокупателю1.Дата,
    СчетНаОплатуПокупателю1.Номер,
    СчетТабл.Номенклатура1.НоменклатурнаяГруппа.Код,
    СчетТабл.Сумма,
    СчетТабл.ПроцентСкидкиНаценки,
    СчетНаОплатуПокупателю1.Организация.Наименование,
    СчетНаОплатуПокупателю1.Ответственный.Наименование,
    СчетНаОплатуПокупателю1.Контрагент.Наименование
    
    ИЗ Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю1, Документ.СчетНаОплатуПокупателю.Товары Как СчетТабл
    
    ГДЕ *КАК установить связь???* СчетНаОплатуПокупателю1.Номер = СчетТабл.(как сослаться на уровень вверх?).Номер
    
    
    
    
  4. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а вы уверены, что ваш запрос работает?

    вы пишите
    Код:
    Из Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю1
    
    
    
    , а в Выбрать просто четНаОплатуПокупателю

    З.Ы. Поправили, снимаю вопрос...
  5. TopicStarter Overlay
    Kapibara
    Offline

    Kapibara

    Регистрация:
    12 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Код:
    Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю1, Документ.СчетНаОплатуПокупателю.Товары Как СчетТабл
    
    ГДЕ *КАК установить связь???* СчетНаОплатуПокупателю1.Номер = СчетТабл.(как сослаться на уровень вверх?).Номер 
    
    как сослаться на уровень вверх?
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Kapibara, ищите ошибку либо в том как вы переписали запрос, либо в коде в Delphi. Тот запрос, который я написал выше - рабочий 100%. Проверено.

    Посмотреть вложение 9678

    Вложения:

    • скрин.PNG
      скрин.PNG
      Размер файла:
      138,6 КБ
      Просмотров:
      48
  7. TopicStarter Overlay
    Kapibara
    Offline

    Kapibara

    Регистрация:
    12 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    В 1с у меня тоже работает.
    Фигня в том, что в 8 не напрямую к таблицам обращения идут, а через хитрую попу. И возможно 1с сама подставляет альясы и запрос в оригинале выглядит иначе.

    Спасибо.

    Посмотри мое сообщение выше, может там подскажешь? *как оформить ГДЕ, чтобы связать две таблицы*
  8. TopicStarter Overlay
    Kapibara
    Offline

    Kapibara

    Регистрация:
    12 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Заработало. :angry:
    Нужно было обращаться к Товарам, а у остаьных писать *.Ссылка.*

    Ура мастерам бита и байта!:)

    *меня не повесят завтра...*
  9. TopicStarter Overlay
    Kapibara
    Offline

    Kapibara

    Регистрация:
    12 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Вы в первом сообщении сразу правильно написали, т.е. через ссылки.
    Я просто проглядел.

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