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

Автор Тема: Работа с запросом  (Прочитано 1954 раз)

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

Оффлайн sail

  • **
  • Сообщений: 91
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-12-08
  • Сайт: 
  • Профессия: Программист 8.1
Добрый день! Подскажите, пожалуйста: нужно из журнала расчетов Зарплата выбрать все начисления, при этом пользователь выбирает подразделение, по которому надо выбрать значения и указывает виды расчетов, которые нужно исключить из результата. результатом всего будет таблица : ФИО сотрудника из заданного подразделения, всего начислено по данному сотруднику без учета начислений, указанных пользователем. Я делаю запрос

   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)   
   |Период С {ДатаАктуальности} По {КонПериода};


   |ВидРасч = ЖурналРасчетов.Зарплата.ВидРасч; 
   |Вид = ЖурналРасчетов.Зарплата.Вид;


   |Результат = ЖурналРасчетов.Зарплата.Результат;
   |Подр = ЖурналРасчетов.Зарплата.Объект.Подразделение;
   |Объект = ЖурналРасчетов.Зарплата.Объект;
   |Условие(Результат<>0);
   |Условие(ВидРасч.входитвгруппу(Группарасчетов.Всеначисления)=1);
      |Группировка Объект без групп;
   
   |"//}}ЗАПРОС
   ;
   Если Подразделение.Выбран()=1 Тогда
      ТекстЗапроса = ТекстЗапроса + "
      |Условие (ПринадлПодмножеству(Подр, Подразделение) = 1);";
   КонецЕсли;
   Если ИсключитьВидРасч.РазмерСписка() > 0 Тогда
      ТекстЗапроса=ТекстЗапроса+"


   |Функция РезультатСумма = Сумма(Результат) Когда (ИсключитьВидРасч.Принадлежит(ВидРасч) = 0);";
   КонецЕсли;


но почему-то в таблицу выводит всю сумму начислений, т.е. не отнимает суммы по тем видам расчета, которые я задаю.


Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
|Условие (ПринадлПодмножеству(Подр, Подразделение) = 1)

лучше использовать элементарные условия. просто с такими сложными условия часто теряется
смысл использования запросов. и может как раз такие условия, в том числе в функции с ключевым словом Когда, как раз и неправильно отрабатывают у вас.

Оффлайн sail

  • **
  • Сообщений: 91
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-12-08
  • Сайт: 
  • Профессия: Программист 8.1
Т.е. прямо написать оператор условие
| Условие (ИсключитьВидРасч.Принадлежит(ВидРасч) = 0);
Так?

Оффлайн Кошки рулят

  • ***
  • Сообщений: 109
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-01-07
  • Сайт: 
т.е. не отнимает суммы по тем видам расчета, которые я задаю

Пиши по русскому языку.

Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
Т.е. прямо написать оператор условие
| Условие (ИсключитьВидРасч.Принадлежит(ВидРасч) = 0);
Так?

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

Ну а чтобы подобное условие переложить в текст запроса 1с, то это должно выглядеть так:

|Условие (НЕ(ВидРасч в ИсключитьВидРасч));


Оффлайн sail

  • **
  • Сообщений: 91
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-12-08
  • Сайт: 
  • Профессия: Программист 8.1
Подставила такое условие в запрос, но все равно включаются не нужные виды расчетов.

Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
Подставила такое условие в запрос, но все равно включаются не нужные виды расчетов.

в списке "ИсключитьВидРасч" точно правильные данные?

Оффлайн sail

  • **
  • Сообщений: 91
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-12-08
  • Сайт: 
  • Профессия: Программист 8.1
Да, они выбираются из справочника и в журнале они есть.

Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
Да, они выбираются из справочника и в журнале они есть.

визуально могут и не отличаться, но типы могут быть разные.

ну дальше мне сложно что-то подсказать, это нужно на месте разбираться и отладчиком смотреть.



Добавлено: 11 Июн 2014, 10:04

попробуйте с условием

|Условие (ВидРасч в ИсключитьВидРасч);

ну т.е. без ключевого слова НЕ.

Если запрос будет пустой, значит все таки что-то не то со списком ИсключитьВидРасч.

Последний раз редактировалось: Herby; 11 Июн 2014, 10:04. Причина: Объединение сообщений

Оффлайн Кошки рулят

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


Теги:
 


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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
175 Сообщений
ilyay ilyay
69 Сообщений
oleg-x
48 Сообщений
alex0402
44 Сообщений
AIFrame
39 Сообщений
andron81_81
38 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
31 Сообщений
BuhRust
30 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal