powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Получить номер договора из Реализация ТМЗ и услуг
7 сообщений из 7, страница 1 из 1
Получить номер договора из Реализация ТМЗ и услуг
    #38265474
Квази
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема с возвратом значения в OLE-клиента.

Запрос первоначальный:
Код: sql
1.
ВЫБРАТЬ 	Дата, 	ДоговорКонтрагента, Контрагент, СуммаДокумента ИЗ	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг



Вываливается ошибка, о том, что поля ДоговорКонтрагента и Контрагент не удается преобразовать в соответствующие типы ( Could not convert variant of type(Dispatch) into type (String) ). Причина видимо в том, что эти значения берутся из соответствующих справочников. В справочнике контрагентов соответствующий реквизит называется НаименованиеПолное. Правим запрос:
Код: sql
1.
ВЫБРАТЬ 	Дата, 	ДоговорКонтрагента, Контрагент.НаименованиеПолное, СуммаДокумента ИЗ	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг


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


Запрос отрабатывается нормально, но поля НомерДоговора пустые (хотя в справочнике значения есть). В чем может быть проблема?
...
Рейтинг: 0 / 0
Получить номер договора из Реализация ТМЗ и услуг
    #38265505
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квази, Видимо реквизит справочника называется не "НомерДоговора". Попробуйте выполнить запрос в самой 1С что он вернет?
...
Рейтинг: 0 / 0
Получить номер договора из Реализация ТМЗ и услуг
    #38266169
Квази
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyZКвази, Видимо реквизит справочника называется не "НомерДоговора". Попробуйте выполнить запрос в самой 1С что он вернет?

Выполнял. В 1с нормально выполняется этот запрос:
Код: sql
1.
2.
ВЫБРАТЬ РеализацияТоваровУслуг.Дата, 	РеализацияТоваровУслуг.ДоговорКонтрагента, 	РеализацияТоваровУслуг.Контрагент, 	РеализацияТоваровУслуг.СуммаДокумента
 ИЗ 	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг


Но он выдает ошибку при преобразовании данных в Delphi - видимо потому, что РеализацияТоваровУслуг.ДоговорКонтрагента, РеализацияТоваровУслуг.Контрагент это не простые типы данных, а ссылки на значения справочников.

Если в Delphi запрос переписать с использованием ссылок на справочники

Код: sql
1.
2.
ВЫБРАТЬ РеализацияТоваровУслуг.Дата, 	ДоговорКонтрагента.НомерДоговора, 	Контрагент.ПолноеНаименование, 	РеализацияТоваровУслуг.СуммаДокумента
 ИЗ 	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг


то столбец Контрагент выводится в Delphi нормально, а столбец НомерДоговора выходит пустой.
...
Рейтинг: 0 / 0
Получить номер договора из Реализация ТМЗ и услуг
    #38266197
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квази,
у вас два разных текста запроса приведены. А что даст выполнение второго варианта (того, который через com-подключение пустое поле выдает) непосредственно в Консоли Запросов 1С? А то циклиться на "в 1с ЭТО выполняется, а через дельфи - нет,поэтому дельфям подсовываем другой текст" можно бесконечно. Сравнивайте уж максимально идентичные тексты.
...
Рейтинг: 0 / 0
Получить номер договора из Реализация ТМЗ и услуг
    #38267346
Квази
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pailКвази,
у вас два разных текста запроса приведены. А что даст выполнение второго варианта (того, который через com-подключение пустое поле выдает) непосредственно в Консоли Запросов 1С? А то циклиться на "в 1с ЭТО выполняется, а через дельфи - нет,поэтому дельфям подсовываем другой текст" можно бесконечно. Сравнивайте уж максимально идентичные тексты.
Совершенно верно, тексты запросов разные. Ибо запрос:
Код: sql
1.
ВЫБРАТЬ 	Дата, 	ДоговорыКонтрагентов.НомерДоговора, Контрагент.НаименованиеПолное, СуммаДокумента ИЗ	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг


который в Delphi отрабатывает без ошибок, но возвращает пустое поле НомерДоговора, при выполнении в консоли выдает ошибку о том, что не найдено поле ДоговорыКонтрагентов.НомерДоговора.
В общем причина проблемы видимо в том, что Delphi не распознает сложные типы 1С и потому в запросе надо явно указывать ссылку на источник, который этот тип возвращает.
...
Рейтинг: 0 / 0
Получить номер договора из Реализация ТМЗ и услуг
    #38267586
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квази, а вас не смущает, что в "родной" среде запрос выдает ошибку? Добейтесь, что бы запрос в "родной" среде возвращал валидные данные тех типов, которые можно передать через OLE. Тогда и вашей системе он будет нормально работать.
...
Рейтинг: 0 / 0
Получить номер договора из Реализация ТМЗ и услуг
    #38267643
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё у вас правильно и корректно отрабатывает.
1С в представлении ссылок подставляет "Основное представление" элемента, по этому вы запрашивая РеализацияТоваровУслуг.ДоговорКонтрагента видите значение "стандартный реквизит" Код.
Вы же из дельфи запрашиваете реквизит НомерДоговора, который у вас не заполнен.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Получить номер договора из Реализация ТМЗ и услуг
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]