|
Как обойтись без запроса | ☑ | ||
---|---|---|---|---|
0
kible
25.10.11
✎
14:37
|
Запрос выполняется в цикле. Можно ли обойтись без запроса?
Функция НайтиЭлементСправочника(СтрокаТЧ) Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | СпособыОтраженияЗарплатыВРеглУчете.Ссылка |ИЗ | Справочник.СпособыОтраженияЗарплатыВРеглУчете КАК СпособыОтраженияЗарплатыВРеглУчете |ГДЕ | СпособыОтраженияЗарплатыВРеглУчете.СчетДт = &СчетДт | И СпособыОтраженияЗарплатыВРеглУчете.СубконтоДт1 = &СубконтоДт1 | И СпособыОтраженияЗарплатыВРеглУчете.СчетКт = &СчетКт | И СпособыОтраженияЗарплатыВРеглУчете.СубконтоКт1 = &СубконтоКт1 | И СпособыОтраженияЗарплатыВРеглУчете.СубконтоКт2 = &СубконтоКт2 | И СпособыОтраженияЗарплатыВРеглУчете.СубконтоКт3 = &СубконтоКт3 | И СпособыОтраженияЗарплатыВРеглУчете.СчетДтНУ = &СчетДтНУ | И СпособыОтраженияЗарплатыВРеглУчете.СубконтоДтНУ1 = &СубконтоДтНУ1 | И СпособыОтраженияЗарплатыВРеглУчете.СчетКтНУ = &СчетКтНУ | И СпособыОтраженияЗарплатыВРеглУчете.СубконтоКтНУ1 = &СубконтоКтНУ1 | И СпособыОтраженияЗарплатыВРеглУчете.СубконтоКтНУ2 = &СубконтоКтНУ2 | И СпособыОтраженияЗарплатыВРеглУчете.СубконтоКтНУ3 = &СубконтоКтНУ3"; Запрос.УстановитьПараметр("СубконтоДт1", СтрокаТЧ.Сорудник); Запрос.УстановитьПараметр("СубконтоДтНУ1", СтрокаТЧ.Сорудник); Запрос.УстановитьПараметр("СубконтоКт1", СтрокаТЧ.СубконтоБУ1); Запрос.УстановитьПараметр("СубконтоКт2", СтрокаТЧ.СубконтоБУ2); Запрос.УстановитьПараметр("СубконтоКт3", СтрокаТЧ.СубконтоБУ3); Запрос.УстановитьПараметр("СубконтоКтНУ1", СтрокаТЧ.СубконтоНУ1); Запрос.УстановитьПараметр("СубконтоКтНУ2", СтрокаТЧ.СубконтоНУ2); Запрос.УстановитьПараметр("СубконтоКтНУ3", СтрокаТЧ.СубконтоНУ3); Запрос.УстановитьПараметр("СчетДт", ПланыСчетов.Типовой.КраткосрочнаяЗадолженностьПоОплатеТруда); Запрос.УстановитьПараметр("СчетДтНУ", ПланыСчетов.Налоговый.ВзаиморасчетыСРаботниками); Запрос.УстановитьПараметр("СчетКт", СтрокаТЧ.СчетБУ); Запрос.УстановитьПараметр("СчетКтНУ", СтрокаТЧ.СчетНУ); РезультатЗапроса = Запрос.Выполнить(); Возврат РезультатЗапроса; КонецФункции //НайтиЭлементСправочника |
|||
1
qeos
25.10.11
✎
14:39
|
можно
|
|||
2
Wobland
25.10.11
✎
14:39
|
(0) можно
|
|||
3
ДенисЧ
25.10.11
✎
14:39
|
Выгрузить ТЧ во временную таблицу и сджойниться с ней?
|
|||
4
kible
25.10.11
✎
14:39
|
(1) Как сделать такое?
|
|||
5
Reset
25.10.11
✎
14:39
|
Можно даже без цикла обойтись
|
|||
6
Пришел в тапках
25.10.11
✎
14:39
|
(0)можно
|
|||
7
qeos
25.10.11
✎
14:40
|
(5) +
|
|||
8
Рэйв
25.10.11
✎
14:40
|
Имхо, нельзя.
Набор параметров через И для каждого сотрудника может быть разный. |
|||
9
Рэйв
25.10.11
✎
14:41
|
+ для каждой строки ТЗ тоесть
|
|||
10
kible
25.10.11
✎
14:42
|
(8) Будет разный. Смысл запроса в том чтобы проверить есть ли в справочнике элемент с параметрами какждой строки.
|
|||
11
Рэйв
25.10.11
✎
14:43
|
(10)А как ты набор параметров каждой строки для списка передашь?
|
|||
12
Рэйв
25.10.11
✎
14:43
|
+(11)Там жесткая И, не ИЛИ
|
|||
13
kible
25.10.11
✎
14:44
|
(11) Для какого списка?
|
|||
14
Рэйв
25.10.11
✎
14:45
|
(13)ТЧ перебирается в цикле.Если убирать из цикла запрос -то будет один список
|
|||
15
luckyluke
25.10.11
✎
14:48
|
(0) чем тебе (3) не нравится?
|
|||
16
kible
25.10.11
✎
14:49
|
(14) Ну да. Так я и спрашиваю можно ли реализовать другим способом. Можно было бы сделать без запроса, если были бы реквизиты справочника индексируемые.
|
|||
17
qeos
25.10.11
✎
14:52
|
не удивлючь если гдето в коде используется
Если НайтиЭлементСправочника(СтрокаТЧ).Количество() > 0... |
|||
18
mishgan75
25.10.11
✎
14:53
|
а почему так категорично "Без Запроса". Может быть надо решить задачу без Запроса В ЦИКЛЕ?
|
|||
19
kible
25.10.11
✎
14:59
|
(17) Не используется.
(18) Да вопрос не правильно поставлен. Нужно без запроса в цикле. |
|||
20
qeos
25.10.11
✎
15:00
|
(19) попробуй использовать НайтиПоРеквизитам
|
|||
21
kible
25.10.11
✎
15:08
|
(3), (15) Как-то так получается.
Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | РазовыеУдержанияУниверсальныйСотрудники.СчетБУ, | РазовыеУдержанияУниверсальныйСотрудники.СубконтоБУ1, | РазовыеУдержанияУниверсальныйСотрудники.СубконтоБУ2, | РазовыеУдержанияУниверсальныйСотрудники.СубконтоБУ3, | РазовыеУдержанияУниверсальныйСотрудники.СчетНУ, | РазовыеУдержанияУниверсальныйСотрудники.СубконтоНУ1, | РазовыеУдержанияУниверсальныйСотрудники.СубконтоНУ2, | РазовыеУдержанияУниверсальныйСотрудники.СубконтоНУ3, | ЕСТЬNULL(СпособыОтраженияЗарплатыВРеглУчете.Ссылка, &ПустаяСсылка) КАК СпособОтражения |ИЗ | Документ.РазовыеУдержанияУниверсальный.Сотрудники КАК РазовыеУдержанияУниверсальныйСотрудники | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпособыОтраженияЗарплатыВРеглУчете КАК СпособыОтраженияЗарплатыВРеглУчете | ПО РазовыеУдержанияУниверсальныйСотрудники.СчетБУ = СпособыОтраженияЗарплатыВРеглУчете.СчетКт | И РазовыеУдержанияУниверсальныйСотрудники.СубконтоБУ1 = СпособыОтраженияЗарплатыВРеглУчете.СубконтоКт1 | И РазовыеУдержанияУниверсальныйСотрудники.СубконтоБУ2 = СпособыОтраженияЗарплатыВРеглУчете.СубконтоКт2 | И РазовыеУдержанияУниверсальныйСотрудники.СубконтоБУ3 = СпособыОтраженияЗарплатыВРеглУчете.СубконтоКт3 | И РазовыеУдержанияУниверсальныйСотрудники.СчетНУ = СпособыОтраженияЗарплатыВРеглУчете.СчетКтНУ | И РазовыеУдержанияУниверсальныйСотрудники.СубконтоНУ1 = СпособыОтраженияЗарплатыВРеглУчете.СубконтоКтНУ1 | И РазовыеУдержанияУниверсальныйСотрудники.СубконтоНУ2 = СпособыОтраженияЗарплатыВРеглУчете.СубконтоКтНУ2 | И РазовыеУдержанияУниверсальныйСотрудники.СубконтоНУ3 = СпособыОтраженияЗарплатыВРеглУчете.СубконтоКтНУ3 | И РазовыеУдержанияУниверсальныйСотрудники.Сорудник = СпособыОтраженияЗарплатыВРеглУчете.СубконтоДт1 | И РазовыеУдержанияУниверсальныйСотрудники.Сорудник = СпособыОтраженияЗарплатыВРеглУчете.СубконтоДтНУ1 | И (&СчетЗП = СпособыОтраженияЗарплатыВРеглУчете.СчетДт) | И (&СчетЗПНУ = СпособыОтраженияЗарплатыВРеглУчете.СчетДтНУ) |ГДЕ | РазовыеУдержанияУниверсальныйСотрудники.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("ПустаяСсылка", <ПустаяСсылка>); Запрос.УстановитьПараметр("Ссылка", <Ссылка>); //Разовые удержания (универсальный) Запрос.УстановитьПараметр("СчетЗП", <СчетЗП>); //Типовой план счетов бухгалтерского учета Запрос.УстановитьПараметр("СчетЗПНУ", <СчетЗПНУ>); //Налоговый план счетов РезультатЗапроса = Запрос.Выполнить(); |
|||
22
mishgan75
25.10.11
✎
15:08
|
тогда 2 варианта. Первый самый простой для Вас:
1. Получаете таблицу в одним запросом с СпособыОтраженияЗарплатыВРеглУчете.СубконтоДт1 В (&СубконтоДт1) где СубконтоДт1 это список сотрудников. (можно ограничить списком др параметров) 2. а далее либо с помощью простой структуры, либо при помощи построителя переберите таблицу в цикле и получите требуемые значения для каждой строки. Второй вариант посложнее уже предлагал ДенисЧ. Но для этого вам надо литературу почитать. Рейва не слушайте он чет не понял про временные таблицы |
|||
23
Рэйв
25.10.11
✎
15:10
|
(22)Ладно, постою в сторонке , посмотрю что получится:-))
|
|||
24
kible
25.10.11
✎
15:16
|
(21)+ Вроде бы работает из без временных таблиц.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |