Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как это работает?

Как это работает?
Я
   John342
 
05.06.20 - 23:27
Добрый вечер, товарищи!

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

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

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

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

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

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

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

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

//Запрос к регистру бухгалтерии   

   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   ХозрасчетыОстатки.Субконто2 КАК Договор,
      |   ХозрасчетыОстатки.Субконто3 КАК РасходнаяНакладная,
      |   ЕСТЬNULL(ХозрасчетыОстатки.ОтгрузкаОстатокДт, 0) КАК ДолгКонтрагента,
      |   ЕСТЬNULL(ХозрасчетыОстатки.ОплатаОстатокДт, 0) КАК ОплаченоКонтрагентом
      |ИЗ
      |   РегистрБухгалтерии.Хозрасчеты.Остатки(&МоментВремени, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчеты.Покупатели), &ВидыСубконто, Субконто1 = &Контрагент) КАК ХозрасчетыОстатки
      |
      |УПОРЯДОЧИТЬ ПО
      |   ХозрасчетыОстатки.Субконто2.ДатаОкончания,
      |   ХозрасчетыОстатки.Субконто3.МоментВремени";
   Запрос.УстановитьПараметр("ВидыСубконто", ПланыСчетов.Хозрасчеты.Покупатели.ВидыСубконто.ВыгрузитьКолонку("ВидСубконто"));
   Запрос.УстановитьПараметр("Контрагент", Контрагент);
   Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
//Какая то ошибка в запросе, во всех полях null

   Результат = Запрос.Выполнить();
   
   Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
      //Проверка не больше ли сумма оплаты, чем долг

      //Запрос возвращает null, поэтому я не уверен можно ли использовать Итог

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.