|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
Мэс33
18.06.13
✎
15:58
|
Всем привет.
Вопрос по запросу к регистру накопления. Ситуация такая, как пример: - в регистре "СуперРегистр" есть два измерения: КлассификаторЧегоЛибо (справочник "КлассификаторЧегоЛибо") и НекийНомерДоговора (тип "Число") - и есть ресурс: ну скажем "Количество" (тип тоже "Число") И к примеру есть в регистре записи (по порядку: измерение1 / измерение2 / значение1): : ТТТТ : 100 : 333 : NNNN : 200 : 444 : ТТТТ : 100 : 555 : NNNN : 200 : 666 Нужно запросом вытащить остатки по регистру по следующим значениям измерений: (TTTT + 100) и (NNN + 200). Как это сделать? Не соображу. Если в запросе написать типа ----------------------------- ИЗ РегистрНакопления.СуперРегистр.Остатки( , НекийНомерДоговора В (&НекийНомерДоговора ) И КлассификаторЧегоЛибо В (&КлассификаторЧегоЛибо)) КАК СуперРегистрОстатки ----------------------------- То выйдут все записи, а нужны только две.. Что делоть? Спасибо. |
|||
1
lEvGl
гуру
18.06.13
✎
16:01
|
что значит ТТТТ + 100 ? Сумма остатков по измерению ТТТТ?
|
|||
2
salvator
18.06.13
✎
16:03
|
ИЗ
РегистрНакопления.СуперРегистр.Остатки( , (НекийНомерДоговора = &НомерДоговора100 И КлассификаторЧегоЛибо = &КлассификаторТТТТ) ИЛИ (НекийНомерДоговора = &НомерДоговора200 И КлассификаторЧегоЛибо = &КлассификаторNNNN)) КАК СуперРегистрОстатки |
|||
3
DarKySiK
18.06.13
✎
16:03
|
(0) в значениях параметров точно в все нормально?
|
|||
4
Мэс33
18.06.13
✎
16:05
|
(1) То есть, чел к примеру в табличной части документа заполнил:
ТТТТ :: 100 NNNN :: 200 Мне надо по ним проверить остатки. |
|||
5
Мэс33
18.06.13
✎
16:06
|
(2) Это было бы гуд, если бы значений было ограниченное количество. На самом деле их миллионы. Миллионы номеров документов и около 20 классификаторов. И более того, в живой базе 5 измерений, а не два, которые я привел в качестве примера.
|
|||
6
salvator
18.06.13
✎
16:09
|
(5) И как соответствие "классификатор - номер документа" определять?
|
|||
7
Мэс33
18.06.13
✎
16:09
|
(6) Вот в этом-то и вопрос. Как лучше сделать.
|
|||
8
DarKySiK
18.06.13
✎
16:13
|
(7) а получить таблицу соответствий реально?
|
|||
9
DarKySiK
18.06.13
✎
16:14
|
(8) я имею в виду таблицу, которую можно во временную таблицу запихать
|
|||
10
salvator
18.06.13
✎
16:14
|
(7) Интересный ты. А как ты хочешь получить информацию по остаткам, если не знаешь как получить это соответствие?
|
|||
11
Мэс33
18.06.13
✎
16:16
|
(10) Я не знаю, как получить соответствие (а его наверное и не получишь), потому и обратился за помощью.
|
|||
12
Мэс33
18.06.13
✎
16:18
|
Фактически - этот модуль ведет учет БСО, но сами БСО создавать не стали, а просто гуляют номера БСО туда-сюда. Модуль уже написан, достался в наследство. Поэтому тяжело создать соответствие - так как номера БСО получаются не уникальными.
|
|||
13
DarKySiK
18.06.13
✎
16:19
|
(4) тьфу ты... не увидела.. Ну можно сначала отобрать остатки как в (0), а потом внутренним соединением с табличной частью :) Долго, а что делать:)
|
|||
14
salvator
18.06.13
✎
16:19
|
(11) Ну ты же написал в примере:
для TTTT - 100 для NNNN - 200. Значит должна быть какая-то логика. Иначе как программе втолковать, что от нее требуется? :) |
|||
15
Мэс33
18.06.13
✎
16:19
|
В настоящий момент проверка на остатки есть, но написано не оптимально и банальное проведение списания БСО вешает всех пользователей, не смотря на то, что к документу привязан один регистр.
|
|||
16
Мэс33
18.06.13
✎
16:21
|
(14) Логика простая:
по ТТТТ - 100 найти остаток 333, и по NNNN - 200 найти остаток 666. Если искать по отдельности, сначала первую комбинацию, потом вторую - то нет проблем. А нужно сразу "одним махом" :-) |
|||
17
Мэс33
18.06.13
✎
16:25
|
(13) Долго - не то слово.
|
|||
18
Мэс33
18.06.13
✎
16:25
|
(17) Хотя и быстрее будет текущего решения.
|
|||
19
Мэс33
18.06.13
✎
16:25
|
(18) в смысле имеющегося решения
|
|||
20
viktor_vv
18.06.13
✎
16:35
|
(19) Я так понял вот здесь появляется соотвествие
(4) ТТТТ :: 100 Тогда поясни в каком виде это вносится, в отдельные реквизиты табличной части , или в один в виде строки? |
|||
21
Мэс33
18.06.13
✎
16:36
|
(20) В отдельные реквизиты табличной части.
|
|||
22
viktor_vv
18.06.13
✎
16:36
|
(20)+ И что значат эти точечки ?
|
|||
23
Мэс33
18.06.13
✎
16:37
|
(22) Ничего не значат, просто я не знаю как тут на форуме таблицу нарисовать. Теги html не поддерживаются ведь?
|
|||
24
Мэс33
18.06.13
✎
16:38
|
Повторю вопрос:
В регистре накопления лежат данные: : ТТТТ : 100 : 333 : NNNN : 200 : 444 : ТТТТ : 100 : 555 : NNNN : 200 : 666 В документе забили такие данные: : ТТТТ : 100 : <Остаток1> : NNNN : 200 : <Остаток2> Надо по ним проверить остатки. |
|||
25
viktor_vv
18.06.13
✎
16:40
|
Если в лоб, то
ИЗ Документ.ГдеВноситсяСоотвествие.ТабличнаяЧасть КАК табЧасть Левое соединение РегистрНакопления.СуперРегистр.Остатки( , ) КАК СуперРегистрОстатки ПО табЧасть.ИдентификаторРеквизитаКлассификаторЧегоЛибо = СуперРегистрОстатки.КлассификаторЧегоЛибо И табЧасть.ИдентификаторНомерДоговра = СуперРегистрОстатки.НомерДоговра |
|||
26
viktor_vv
18.06.13
✎
16:41
|
(25) +
ГДЕ табЧасть.Ссылка = &СсылкаНаДокумент |
|||
27
Мэс33
18.06.13
✎
16:43
|
(26) В чем минус этого решения?
|
|||
28
viktor_vv
18.06.13
✎
16:44
|
Ну и в параметры можно таки прилепить условие на измерения из документа, как выше было.
НекийНомерДоговора В (&НекийНомерДоговора ) И КлассификаторЧегоЛибо В (&КлассификаторЧегоЛибо) только в &НекийНомерДоговора и &КлассификаторЧегоЛибо выгрузить соотвествующую колонки табчасти. |
|||
29
viktor_vv
18.06.13
✎
16:44
|
(27) Да просто без условия на измерения в параметрах виртуальной таблицы.
В (28) написал уточнение. |
|||
30
Мэс33
18.06.13
✎
16:46
|
(29) Так, спасибо за совет.
Попробуем завтра днем изменить запрос. Просто там параметров 5, а не 2 (я просто пример привел). В табличной части по факту указывается не чисто номер, а диапазон ("с номер1 по номер2"). Но это не проблема. Примерный путь решения понял, попробуем. |
|||
31
viktor_vv
18.06.13
✎
16:47
|
И учитывая (24) Сразу в запросе проверяй равенство, и отбирай только отличающиеся, если надо.
Если формируешь из формы документа, проверяй модифицированность, чтобы выполнять запрос, только если записан последний вариант документа. |
|||
32
Мэс33
18.06.13
✎
16:52
|
(31) Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |