![]() |
![]() |
|
Поиск строки в таблице значений по двум параметрам | ☑ | ||
---|---|---|---|---|
0
Vika_22
05.03.11
✎
11:42
|
Доброго всем дня.
Возникла такая задачка: Необходимо реализовать поиск строки в таблице значений по двум параметрам. То есть, допустим, структура таблицы значений: 1.Тип 2.Проба 3.Расход, необходимо найти строку соответствующего Типа и Пробе. P.S. Сама продумываю алгоритм с использованием Найти и сдвига строки. |
|||
1
1Сергей
05.03.11
✎
11:43
|
(0) добавь колонку ТипПроба. Типа индекса. По ней ищи
|
|||
2
azernot
05.03.11
✎
11:44
|
Сортировка по 2 реквизитам, поиск 1-го, перебор строк начиная с найденной для поиска 2-го до момента изменния первого. Это так, навскидку.
|
|||
3
ДенисЧ
05.03.11
✎
11:44
|
ключевую составную колонку добавь...
|
|||
4
AeDen
05.03.11
✎
11:44
|
1. Индексированная таблица.
2. Создать свой "индекс" (служебную колонку, которая будет содержать сумму необходимых полей), искать по нему. |
|||
5
andrewks
05.03.11
✎
11:47
|
(1) не типа индекса, а типа ключа )
|
|||
6
1Сергей
05.03.11
✎
11:51
|
(5) не знаю, мы академиев не кончали, выражовываемся как могём
|
|||
7
Vika_22
05.03.11
✎
11:52
|
(1)Это как я понимаю надо перебрать всю таблицу значений и создать новую колонку, в которой будет значение "ТипПроба".
То есть, например, у меня таблица значений: новая-------925-----10--------новая925 новая-------963-----20--------новая963 пробная----925-----15--------пробная925 Нее, мне не подходит, мне тогда надо будет оббежать циклом таблицу значений, в которой я ищу, а также оббежать таблицу значений, откуда я беру значения поиска (в ней, кстати, тоже надо будет ключ добавить). А объединить две таблицы значений никак нельзя? |
|||
8
1Сергей
05.03.11
✎
11:53
|
(7) откуда взялась таблица? может на этапе её формирования создавать ключ?
|
|||
9
1Сергей
05.03.11
✎
11:54
|
(7) в общем, если не подходит, тогда (4).1
|
|||
10
AeDen
05.03.11
✎
11:57
|
(7) Почему нельзя? Можно. Если оне одинаковые.
|
|||
11
povar
05.03.11
✎
11:58
|
"а также оббежать таблицу значений, откуда я беру значения поиска (в ней, кстати, тоже надо будет ключ добавить). "
не надо |
|||
12
Vika_22
05.03.11
✎
11:59
|
(8)У меня может быть две таблицы значений, они являются выгрузками из двух запросов. В одном запросе: тип----проба---приход; в другом запросе: тип----проба---расход
Вот надо бы объединить. |
|||
13
Vika_22
05.03.11
✎
12:00
|
(11) Да. Точно не надо)
|
|||
14
povar
05.03.11
✎
12:00
|
(12) а в одном запросе разве нельзя получить и + и - ?
|
|||
15
1Сергей
05.03.11
✎
12:00
|
(12) тогда еще проще
|
|||
16
1Сергей
05.03.11
✎
12:01
|
ТЗ.КоличествоСтрок(...
ТЗ.Загрузить(... ТЗ.Свернуть(... |
|||
17
Vika_22
05.03.11
✎
12:01
|
(10) А точно, можно же «закинуть» одну таблицу значений в другую, а затем все свернуть)))
|
|||
18
Vika_22
05.03.11
✎
12:09
|
Спасибо Всем)
|
|||
19
Vika_22
05.03.11
✎
12:11
|
(17) Мне удобнее использовать Выгрузить
|
|||
20
Vika_22
05.03.11
✎
12:13
|
(19) Хотя без разницы вроде
|
|||
21
1Сергей
05.03.11
✎
12:16
|
(20) Загрузить быстрее
|
|||
22
povar
05.03.11
✎
12:17
|
зачем два запроса, чтобы получить Приход и Расход ?
|
|||
23
Ёпрст
гуру
05.03.11
✎
12:19
|
(21) Выгрузить быстрее..
|
|||
24
Ёпрст
гуру
05.03.11
✎
12:19
|
(19) и правильно делаешь.
|
|||
25
Злопчинский
05.03.11
✎
12:20
|
А Заполнить, говорят, еще быстрее
|
|||
26
1Сергей
05.03.11
✎
12:20
|
(23) а, точно
(21) сторно |
|||
27
Vika_22
05.03.11
✎
12:21
|
(22) Приход берется по регистру, расход по документам. Скрестить никак нельзя, поскольку расход нужен только по одному виду документов, а приход по всем, кроме того в котором расход.
|
|||
28
Ёпрст
гуру
05.03.11
✎
12:23
|
(27) ты напиши оба текста запроса, а мы посмотрим..
Мот вообще всё что ты делаешь нужно коту под хвост.. :) |
|||
29
povar
05.03.11
✎
12:25
|
(27) нее, в консерватории надо менять, что то...
|
|||
30
Vika_22
05.03.11
✎
12:27
|
(28) ЗАПРОС1:
ТекстЗапроса = "//{{ЗАПРОС |Период с (ДатаНачала) по (ДатаКонца); |Номенклатура = Регистр.Производство.Номенклатура; |Количество = Регистр.Производство.Количество; |ОбщВес = Регистр.Производство.ОбщВес; |ОбщВесЧист = Регистр.Производство.ОбщВесЧист; |Фирма = Регистр.Производство.Фирма; |Склад = Регистр.Производство.Склад; |Тип = Регистр.Производство.Номенклатура.ТипНоменклатуры; |Проба = Регистр.Производство.Номенклатура.Проба; |Функция НачОстКоличество = НачОст(Количество); |Функция НачОстОбщВес = НачОст(ОбщВес); |Функция НачОстОбщВесЧист = НачОст(ОбщВесЧист); |Функция ПриходКоличество = Приход(Количество); |Функция ПриходОбщВес = Приход(ОбщВес); |Функция ПриходОбщВесЧист = Приход(ОбщВесЧист); |Функция КонОстКоличество = КонОст(Количество); |Функция КонОстОбщВес = КонОст(ОбщВес); |Функция КонОстОбщВесЧист = КонОст(ОбщВесЧист); |Группировка Тип; |Группировка Проба; |Условие(Фирма = ВыбФирма); |Условие(Склад = ВыбСклад); |"//}}ЗАПРОС ; ЗАПРОС2: "//{{ЗАПРОС(Расход) |Период с (ДатаНачала) по (ДатаКонца); |ОбрабатыватьДокументы Проведенные; |Фирма = Документ.Наряд.Фирма; |Склад = Документ.Наряд.СкладПолучатель; |ВидДокумента = Документ.Наряд.ВидДокумента; |Номенклатура = Документ.Наряд.Номенклатура; |Тип = Документ.Наряд.Номенклатура.ТипНоменклатуры; |Проба = Документ.Наряд.Номенклатура.Проба; |Количество = Документ.Наряд.Количество; |ОбщВес = Документ.Наряд.ОбщВес; |ОбщВесЧист = Документ.Наряд.ОбщВесЧист; |Функция РасходКоличество = Сумма(Количество); |Функция РасходОбщВес = Сумма(ОбщВес); |Функция РасходОбщВесЧист = Сумма(ОбщВесЧист); |Группировка Тип; |Группировка Проба; |Условие (СокрЛП(ВидДокумента) = ""Выполнение наряда""); |Условие (Фирма = ВыбФирма); |Условие (Склад = ВыбСклад); |"//}}ЗАПРОС |
|||
31
Ёпрст
гуру
05.03.11
✎
12:29
|
(30) документ Наряд, толкает регистр.Производство при проведении ??
|
|||
32
Vika_22
05.03.11
✎
12:31
|
(31)Да. У него два вида: "Заказ-наряд"; "Выполнение наряда".
|
|||
33
Ёпрст
гуру
05.03.11
✎
12:38
|
(32) расход делает ?
Тогда так: второй запрос выкидываешь, в первый добавляешь: |Док = Регистр.Производство.ТекущийДокумент; |Функция РасходКоличество = Расход(Количество) Когда(Док.Вид() = ""Наряд""); |Функция РасходОбщВес = Расход(ОбщВес) Когда(Док.Вид() = ""Наряд""); |Функция РасходОбщВесЧист = Расход(ОбщВесЧист) Когда(Док.Вид() = ""Наряд""); |
|||
34
Ёпрст
гуру
05.03.11
✎
12:39
|
+35 ну, можешь еще условие на ВидДокумента = ""Выполнение наряда"" туда воткнуть..
|
|||
35
Vika_22
05.03.11
✎
14:05
|
(33) и (34) Данный вариант мне не подходит, поскольку Приход, остатки определяются по складу, который записан в регистре, а вот Расходы определяются по складу, который не записан в регистре.
|
|||
36
Ёпрст
гуру
05.03.11
✎
14:19
|
(35)Ну и бери склад с документа наряд:
|СкладПолучатель = Регистр.Производство.ТекущийДокумент.Наряд.СкладПолучатель; или имей его в результатах обхода группировок. |
|||
37
Vika_22
09.03.11
✎
11:30
|
В общем, сделала, работает, забыла поблагодарить за участие)
Спасибо Всем. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |