Имя: Пароль:
1C
1С v8
Как это работает?
0 John342
 
05.06.20
23:27
Добрый вечер, товарищи!

Кто может мне объяснить, как работает следующий случай?

В динамический список добавляю элементарный запрос, получающий данные из одного реквизита документа:

ВЫБРАТЬ
       ДЗ.Номер
ИЗ
       Документ.ЗаказКлиента КАК ДЗ

Этот запрос в динамическом списке обрабатывается на ура. Все номера выводятся в динамическом списке.

Пытаюсь этот же запрос обработать программно:

Запрос = новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
|       ДЗ.Номер
|ИЗ
|       Документ.ЗаказКлиента КАК ДЗ";
Запрос.Выполнить();

Запрос возвращает null.

Почему запрос обрабатывается не так, как в динамическом списке?
1 xoma1c
 
05.06.20
23:36
(0) А вот чисто интересно, ты хочешь все номера документов получить? А сколько доков в базе? Если база рабочая и пухлая, то зачем все собирать-то, тормозить же начет?
2 Надо работать
 
05.06.20
23:37
(0) это магия
3 John342
 
05.06.20
23:39
(1) На самом деле, номеров немного. База тестовая. И задание тоже тестовое. Да и мне бы просто добиться того, чтоб хоть какие-то данные были получены.
4 AlvlSpb
 
05.06.20
23:45
(0) А если Запрос.Выполнить().Выгрузить();?
5 AlvlSpb
 
05.06.20
23:46
(0) Вернее и точнее Результат = Запрос.Выполнить().Выгрузить(); П
6 xoma1c
 
05.06.20
23:48
(3) Методика может быть такая - берешь и смотришь в консоли запрос. Если в консоли зафигачилось, то значит запрос хороший, а дальше код нехороший.
7 John342
 
05.06.20
23:50
(5) Без изменений.
8 xoma1c
 
05.06.20
23:52
(7) а дальше то что? Должен быть обход получившейся таблицы, дальше какой код?

//Запрос к регистру бухгалтерии  
   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   ХозрасчетыОстатки.Субконто2 КАК Договор,
      |   ХозрасчетыОстатки.Субконто3 КАК РасходнаяНакладная,
      |   ЕСТЬNULL(ХозрасчетыОстатки.ОтгрузкаОстатокДт, 0) КАК ДолгКонтрагента,
      |   ЕСТЬNULL(ХозрасчетыОстатки.ОплатаОстатокДт, 0) КАК ОплаченоКонтрагентом
      |ИЗ
      |   РегистрБухгалтерии.Хозрасчеты.Остатки(&МоментВремени, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчеты.Покупатели), &ВидыСубконто, Субконто1 = &Контрагент) КАК ХозрасчетыОстатки
      |
      |УПОРЯДОЧИТЬ ПО
      |   ХозрасчетыОстатки.Субконто2.ДатаОкончания,
      |   ХозрасчетыОстатки.Субконто3.МоментВремени";
   Запрос.УстановитьПараметр("ВидыСубконто", ПланыСчетов.Хозрасчеты.Покупатели.ВидыСубконто.ВыгрузитьКолонку("ВидСубконто"));
   Запрос.УстановитьПараметр("Контрагент", Контрагент);
   Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
//Какая то ошибка в запросе, во всех полях null
   Результат = Запрос.Выполнить();
  
   Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
      //Проверка не больше ли сумма оплаты, чем долг
      //Запрос возвращает null, поэтому я не уверен можно ли использовать Итог
   Если Сумма > (Выборка.ДолгКонтрагента.Итог - Выборка.ОплаченоКонтрагентом.Итог) Тогда
      Сообщить("Сумма оплаты " + Строка(Сумма)+ " превышает долг конрагента "+Строка(Выборка.ДолгКонтрагента.Итог - Выборка.ОплаченоКонтрагентом.Итог));
      Отказ = Истина;
   КонецЕсли; траляля....
9 xoma1c
 
05.06.20
23:56
(7)  Пока Выборка.Следующий() Цикл
10 John342
 
05.06.20
23:57
(8) У меня дальше кода никакого. Да, по консоли проверил запрос. Он корректен.
11 AlvlSpb
 
05.06.20
23:58
(0) Покажи всю процедуру с запросом
12 John342
 
05.06.20
23:59
процедура ЗаполнениеТаблицы()Экспорт
    Запрос = Новый Запрос;
    Документы.ЗаказКлиента.ПолучитьСсылку();
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ЗакКлнт.Номер
    |ИЗ
    |    Документ.ЗаказКлиента КАК ЗакКлнт";
    Рез = Запрос.Выполнить().Выгрузить();    
конецпроцедуры
13 xoma1c
 
06.06.20
00:00
(10) дальше надо фигачить обход таблицы, ибо получена она. Конструктором сделай, чтоб текст кода с обходом результата
14 xoma1c
 
06.06.20
00:04
15 John342
 
06.06.20
00:09
(14) Спасибо Вам огромное! Боже, оно заработало!
16 mikecool
 
06.06.20
00:22
(15) Аминь, сын мой
17 Chameleon1980
 
06.06.20
04:42
{0} на какой строке и как ты определил, что что-то возвращает нулл?
18 John342
 
06.06.20
18:29
(17) в табло поставил результирующую переменную, там тип значения null. Я ориентировался на это.
19 Ненавижу 1С
 
гуру
06.06.20
19:54
(18)null или неопределено?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший