|
Таблица значений - вычесть значения 1й ТЗ из 2й без обхода строк, можно ? | ☑ | ||
---|---|---|---|---|
0
Холст
16.03.12
✎
03:56
|
сабж
есть ТЗ1 и ТЗ2 с колонками Товар/Остаток в ТЗ1 Товар1 остаток 10 Товар2 остаток 23 в ТЗ2 Товар1 остаток 4 Товар2 остаток 6 значения остатков ТЗ2 надо вычесть из соотв значений остатка ТЗ1 т.е. получить новую ТЗ Товар1 остаток 6 (10 минус 4) Товар2 остаток 17 как это сделать без обхода ТЗ ? |
|||
1
shadow_sw
16.03.12
✎
04:50
|
как вариант - выгрузить все в третью ТЗ, остатки ТЗ2 ставить отрицательными, свернуть по товару
|
|||
2
Попытка1С
16.03.12
✎
06:42
|
У тебя вроде индексированная есть, вот юзай.
Разность / Difference Синтаксис: Разность(ТЗ2, ИндексТекущейТЗ, ИндексТЗ2 [, флДобавлятьСтрокиТЗ2 = 1]) Параметры: ТЗ2 - тип: ИндексированннаяТаблица. Таблица, с которой строится разность. ИндексТекущейТЗ - тип: Строка, Число. Имя или номер индекса в текущей таблицы. ИндексВторойТЗ - тип: Строка, Число. Имя или номер индекса в ТЗ2. флДобавлятьСтрокиТЗ2 - тип: Число. Флаг добавления строк ТЗ2 в результат. Описание: разность двух таблиц по ключевым полям. Результатом является таблица, в которой присутствуют строки текущей ТЗ, которых нет в ТЗ2, и строки ТЗ2, которых нет в текущей ТЗ (с учетом флДобавлятьСтрокиТЗ2). Совпадение строк определяется по индексам ИндексТекущейТЗ и ИндексТЗ2. Количество колонок в индексах должно быть одинаковым. |
|||
3
Рэйв
16.03.12
✎
06:49
|
(2)>>Результатом является таблица, в которой присутствуют строки текущей ТЗ, которых нет в ТЗ2, и строки ТЗ2, которых нет в текущей ТЗ
Там немного другая разность имеется в виду:-) |
|||
4
Рэйв
16.03.12
✎
06:51
|
(0)Таблицы в запрос и там вычитать.
|
|||
5
Рэйв
16.03.12
✎
06:51
|
+(4)С соединением по товару естественно
|
|||
6
Kassius
16.03.12
✎
06:52
|
(0) всегда делал как в (1), зачем придумывать велосипед.
|
|||
7
Песец
16.03.12
✎
07:02
|
(0) Штатно без обхода в семерке никак.
Я бы сделал так: Создать тз3 с тремя колонками 1. Товар 2. Остаток1 3. Остаток2 Загрузить из тз1 в Товар, Остаток1 Загрузить из тз2 в Товар, Остаток2 Свернуть по Товар суммируя Остаток1, Остаток2 Имеем всегда под рукой Товар и (Остаток1-Остаток2) Но если надо например загружать тз в тч документа "Товар, Сумма", то без обхода никак. Например, создать колонку "Сумма" и обойти тз проставив разницу. |
|||
8
dk
16.03.12
✎
07:29
|
можно было бы легко, штатно, без обхода, если в ТЗ2 отрицательные значения
т.е. потребуется 1 обход ТЗ2 для смены знака остатков |
|||
9
Ёпрст
16.03.12
✎
08:11
|
(7) ну-ну
|
|||
10
Ёпрст
16.03.12
✎
08:13
|
(0) можно
|
|||
11
Ёпрст
16.03.12
✎
08:13
|
и без обхода строк вообще, если что
|
|||
12
andrewks
16.03.12
✎
08:16
|
(11) как с минусом без обхода решить?
|
|||
13
Песец
16.03.12
✎
08:19
|
(10) Давайте все хором: "Про-сим! Про-сим! Про-сим!" :)
|
|||
14
povar
16.03.12
✎
08:19
|
Заполнить
|
|||
15
andrewks
16.03.12
✎
08:19
|
(14) -> (12)
|
|||
16
povar
16.03.12
✎
08:20
|
(15) имеешь ввиду как минус проставить без лбхода ?
|
|||
17
andrewks
16.03.12
✎
08:21
|
(16) ага
|
|||
18
povar
16.03.12
✎
08:22
|
(17) тоже элементарно
|
|||
19
andrewks
16.03.12
✎
08:27
|
(18) временная ТЗ + ЗанчениеВСтрокуВнутр()?
|
|||
20
Холст
16.03.12
✎
09:21
|
была мысль с помощью ЗначениеВСтрокуВнутр + СтрЗаменить (вот здесь покопаться какой фрагмент менять) + ЗначениеИзСтрокиВнутр, но что-то сомнения по поводу быстродействия этого варианта, особенно на ТЗ в 3тыс строк
|
|||
21
Mikeware
16.03.12
✎
09:27
|
заинтриговали
|
|||
22
ЧеловекДуши
16.03.12
✎
09:35
|
Бред :)
|
|||
23
Попытка1С
16.03.12
✎
09:41
|
ТЗ в 3 тыс ни о чем вообще.
|
|||
24
povar
16.03.12
✎
09:59
|
(20) это даже не таблица, а так, табличка... )
|
|||
25
aka MIK
16.03.12
✎
15:07
|
Так как поменять знак?
|
|||
26
Ёпрст
16.03.12
✎
15:13
|
(25) в строке заменить
|
|||
27
aka MIK
16.03.12
✎
15:35
|
Дык кода получится в 5 раз больше чем перебором, х-ня какая-то
|
|||
28
Ёпрст
16.03.12
✎
15:36
|
(27) ? Да ну ?
выгрзуить, стрЗаменить, Заполнить-свернуть |
|||
29
Mikeware
16.03.12
✎
15:38
|
(28) выгрузить одну колонку? :-)
|
|||
30
aka MIK
16.03.12
✎
15:44
|
(28) И что ты стрзаменишь? Без регвыражений
Например, колонка шириной 10, числа в строках 1 и 574 |
|||
31
Ёпрст
16.03.12
✎
15:57
|
(30) ну п..ц
Выгрузить 1 колонку в СписокЗначений, далее значениВСтроку, далее СтрЗаменить("""Число""",","""Число""",-") далее обратно в список и в Заполнить всё |
|||
32
Ёпрст
16.03.12
✎
15:58
|
если там были отрицательные, то действий немного больше
|
|||
33
Ёпрст
16.03.12
✎
15:59
|
заменить минус на любой знак, далее проставить минус, далее прибить знак.
|
|||
34
МихаилМ
16.03.12
✎
16:08
|
предлогаю фантастический вариант.
сам проверять сейчас не буду использовать объект АнализДанных думаю его можно научить делать прогноз, что Х будет -Х или может там есть обучение с учителем. на большой выборке обучения погрешность стремится к 0 |
|||
35
МихаилМ
16.03.12
✎
16:10
|
Ошибся - думал тема по восьмерке.
|
|||
36
aka MIK
16.03.12
✎
16:39
|
(31) Колонка таблицы списком не заполняется :) А напрямую обрабатывать значениевстрокувнутр(ТЗ) геморно из-за пробелов в представлении числа
|
|||
37
Ёпрст
16.03.12
✎
16:51
|
(36) с абрикоса упал ?
Заполнить(<?>,,,); Синтаксис: Заполнить(<Знач>,<НачСтрока>,<КонСтрока>,<Колонки>) Назначение: Заполнить соответствующие ячейки таблицы значений переданным значением. Параметры: <Знач> - значение одиночное или !!!!!!!список значений!!!!!!! или таблица значений. |
|||
38
Ёпрст
16.03.12
✎
16:52
|
(36) ЗначениеВСтроку<>ЗначениеВСтрокуВнутр, читай внимательнее
|
|||
39
aka MIK
16.03.12
✎
17:45
|
(37) А ты попробуй :) Это тебе не восьмерка
(38) Без разницы |
|||
40
Ёпрст
16.03.12
✎
22:58
|
(39) Ты взаправду, или придуряешься ?
|
|||
41
Ёпрст
16.03.12
✎
23:38
|
Наслаждайся
//******************************************* Процедура Сформировать() Перем Т; ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Было"); ТЗ.НоваяКолонка("Стало"); //заполнение ТЗ Для к = 1 по 5 Цикл ТЗ.НоваяСтрока(); ТЗ.Было = к; КонецЦикла; Для к = 1 по 5 Цикл ТЗ.НоваяСтрока(); ТЗ.Было = -к; КонецЦикла; //собственно замена знака ТЗ.Выгрузить(Т,,,"Было"); ТЗ.Заполнить(ЗначениеИзСтроки(СтрЗаменить(СтрЗаменить(СтрЗаменить(ЗначениеВСтроку(Т),"""Число"",""-","#"),"""Число"",""","""Число"",""-"),"#","""Число"",""")),,,"Стало"); ТЗ.ВыбратьСтроку(); КонецПроцедуры |
|||
42
Креатив
17.03.12
✎
09:19
|
Вот извращены.)))
|
|||
43
aka MIK
19.03.12
✎
18:46
|
(41) если перед ТЗ.Выгрузить(Т,,,"Было");
поставить Т=СоздатьОбъект("СписокЗначений"); то нифига не заполнит. Такой вот глючок-с :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |