Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
21 Июл 2017, 01:35
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Null в результате запроса.  (Прочитано 973 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Iwrestledabear

  • *
  • Сообщений: 1
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2016-01-21
  • Сайт: 
  • Профессия: Ученик 1С
Собственно, вот. Задача 2.2 1с специалист. Виновник проблемы вот этот код. В результате запроса Null при любом варианте. Вдруг кто-нибудь сможет помочь.


Процедура ОбработкаПроведения(Отказ, РежимПроведения)
   Движения.Хозрасчеты.Записывать = Истина;

   //Блокировки
   Блокировка = Новый БлокировкаДанных;
   ЭлементБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Хозрасчеты");
   ЭлементБлокировки.УстановитьЗначение("Счет",ПланыСчетов.Хозрасчеты.Покупатели);
   ЭлементБлокировки.УстановитьЗначение("Субконто1",Контрагент);
   ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
   Блокировка.Заблокировать();

   Движения.Хозрасчеты.Записать();

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

КонецПроцедуры


Оффлайн Андрей Сисюкин

  • *
  • Сообщений: 21
  • РЕПУТАЦИЯ: 9
  • КПД: 43%
  • Регистрация: 2015-12-17
    • Skype: dark_daedal
  • Сайт: 
  • Профессия: Разработчик 1С
   Открываешь выборку и сразу обращаешься к ней, без позиционирования на первую запись!  (выборка.Следующий())

    Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
      //Проверка не больше ли сумма оплаты, чем долг
      //Запрос возвращает null, поэтому я не уверен можно ли использовать Итог
   Если Сумма > (Выборка.ДолгКонтрагента.Итог - Выборка.ОплаченоКонтрагентом.Итог) Тогда

Добавлено: 22 Янв 2016, 06:31

Да, личное мнение:
С такой конструкцией ты вряд ли сдашь экзамен:
Запрос.УстановитьПараметр("ВидыСубконто", ПланыСчетов.Хозрасчеты.Покупатели.ВидыСубконто.ВыгрузитьКолонку("ВидСубконто"));

Это в даном случае ты знаешь ,что у тебя за субконто, и проверил ка они выгружаются.. А если их 100 штук? и в хаотическом порядке?

Оффлайн Iwrestledabear

  • *
  • Сообщений: 1
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2016-01-21
  • Сайт: 
  • Профессия: Ученик 1С
Спасибо за совет, однако не стоит всерьез воспринимать допущенные мной недочеты, я только начинаю учиться.
Скажите самое главное, запрос составлен верно?
   Открываешь выборку и сразу обращаешься к ней, без позиционирования на первую запись!  (выборка.Следующий())

    Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
      //Проверка не больше ли сумма оплаты, чем долг
      //Запрос возвращает null, поэтому я не уверен можно ли использовать Итог
   Если Сумма > (Выборка.ДолгКонтрагента.Итог - Выборка.ОплаченоКонтрагентом.Итог) Тогда

Добавлено: 22 Янв 2016, 06:31

Да, личное мнение:
С такой конструкцией ты вряд ли сдашь экзамен:
Запрос.УстановитьПараметр("ВидыСубконто", ПланыСчетов.Хозрасчеты.Покупатели.ВидыСубконто.ВыгрузитьКолонку("ВидСубконто"));

Это в даном случае ты знаешь ,что у тебя за субконто, и проверил ка они выгружаются.. А если их 100 штук? и в хаотическом порядке?

Оффлайн Андрей Сисюкин

  • *
  • Сообщений: 21
  • РЕПУТАЦИЯ: 9
  • КПД: 43%
  • Регистрация: 2015-12-17
    • Skype: dark_daedal
  • Сайт: 
  • Профессия: Разработчик 1С
Спасибо за совет, однако не стоит всерьез воспринимать допущенные мной недочеты, я только начинаю учиться.
Скажите самое главное, запрос составлен верно?
В принципе, да. Но конкретно в данном случае устанавливать виды субконто не обязательно. Выборка идёт только с одного счета.
Данный параметр, а точнее, список параметров, пригождается, когда выбираешь данные с нескольких счетов, а на них, скажем, "контрагент" - это разный номер субконто. Тогда ставишь в массив его первым и обращаешься к контрагенту как к первому субконто.

Ну и вопрос в необходимости блокировки.
Если смотреть на подходы 1С в последнее время - они везде избегают исключительности и блокировок..


Теги:
 

Из запроса не выводятся значения полей - выводятся пустые значения

Автор Alex1111Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 24
Просмотров: 10623
Последний ответ 14 Июн 2012, 17:44
от Alex1111
"ПОДОБНО" в условие связи запроса

Автор Станиславъ ЗверевъРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 8
Просмотров: 2188
Последний ответ 11 Май 2016, 15:29
от LexaK
Возможно ли языком запросов без конкатенации текста запроса и без СКД преобразовать строки таблицы в столбцы (колонки) выходной таблицы?

Автор acces969Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 201
Последний ответ 29 Май 2017, 15:29
от alex0402
Ошибка при выполнении запроса - "неоднозначное поле"

Автор Marta_LiРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 11005
Последний ответ 21 Апр 2011, 16:00
от Marta_Li
Где найти вкладку "Параметры", в конструкторе запроса при создании динамического списка?

Автор друганРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 502
Последний ответ 09 Мар 2017, 14:48
от LexaK

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

oleg-x
122 Сообщений
alex0402
104 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
73 Сообщений
ilyay ilyay
50 Сообщений
Golickoff Golickoff
49 Сообщений
AIFrame
43 Сообщений
ab30ru
38 Сообщений
wise wise
36 Сообщений
Амал
32 Сообщений
Dethmontt Dethmontt
25 Сообщений

* Кто онлайн

  • Точка Гостей: 184
  • Точка Скрытых: 0
  • Точка Пользователей: 9
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal