@immelnikoff
Изучаю БД

Как в 1С запросом получить значение поле Документа, если это поле имеет ссылочный тип?

Имеется следующий код на Python, который цепляется к базе 1С через COM-соединение:
#coding=cp1251
import pythoncom
import win32com.client
V83_CONN_STRING = 'File="C:\\Users\\user\\Documents\\InfoBase\\";Usr="Иванов Иван";Pwd="123456";'
pythoncom.CoInitialize()
V83 = win32com.client.Dispatch("V83.COMConnector").Connect(V83_CONN_STRING)
q = '''
ВЫБРАТЬ
  ДатаЗапуска КАК DATESTART,
  Комментарий КАК KOMMENT,
  Организация КАК ORG
ИЗ
  Документ.ЗаказНаПроизводство
ГДЕ ДатаЗапуска МЕЖДУ ДАТАВРЕМЯ(2018, 12, 1, 0, 0, 0) И ДАТАВРЕМЯ(2018, 12, 5, 0, 0, 0)
'''
query = V83.NewObject("Query", q)
sel = query.Execute().Choose()
while sel.next():
    print(sel.DATESTART)
    print(sel.KOMMENT)
    print(sel.ORG)

Поля ДатаЗапуска и Комментарий имеют имеют типы Дата и Строка соответственно и нормально выводятся на печать. А поле Организация имеет тип СправочникСсылка.Организации и соответствующий print() выводит >.
Как же мне получить значения таких полей Документа?
И второй вопрос. Как получить значения полей табличной части Документа?
  • Вопрос задан
  • 633 просмотра
Решения вопроса 1
nki
@nki
bezkart.ru готовая система лояльности
Организация имеет тип СправочникСсылка.Организации и соответствующий print() выводит >.

Если вас устроит название организации, то сделайте так;
Организация.Наименование КАК ORG

Как получить значения полей табличной части Документа?

ВЫБРАТЬ *
ИЗ Документ.ТабличнаяЧасть КАК ДокТЧ
ГДЕ ДокТЧ.Ссылка = &СсылкаНаДокумент

Думаю, что идея понятна. Документ и ТабличнаяЧасть замените на нужные вам названия.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Dementor
программист, архитектор, аналитик
Выше Константин все правильно написал. Организация из ЗаказНаПроизводство - это не строка, а внутренний ссылочный тип, которому нет соответствия в питоне и потому с этим значением стандартный вывод не справляется.

Подозреваю, что это будет COM-объект. Если моя гипотеза правильна, то должно сработать:
print(sel.ORG.Description)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы