|
v7: Непонятка в алгоритме | ☑ | ||
---|---|---|---|---|
0
espanol
20.03.12
✎
17:07
|
РезультатЗапроса.ВыбратьСтроки();
Пока РезультатЗапроса.ПолучитьСтроку() = 1 Цикл ТабЗнач1.ВыбратьСтроки(); Пока ТабЗнач1.ПолучитьСтроку() = 1 Цикл Если (СокрЛП(РезультатЗапроса.НомерПоКаталогу) = СокрЛП(ТабЗнач1.НомерПоКаталогу)) И (СокрЛП(РезультатЗапроса.ПодразделениеКод) = СокрЛП(ТабЗнач1.ПодразделениеКод)) Тогда Если РезультатЗапроса.Количество - ТабЗнач1.Количество > 0 Тогда ТабЗнач2.НоваяСтрока(); ТабЗнач2.Склад = РезультатЗапроса.ПодразделениеНаименование; ТабЗнач2.ПодразделениеКод = РезультатЗапроса.ПодразделениеКод; ТабЗнач2.НомерПоКаталогу = РезультатЗапроса.НомерПоКаталогу; ТабЗнач2.Кратность = 1; ТабЗнач2.Цена = ТабЗнач1.Цена; НовоеКоличество = РезультатЗапроса.Количество-ТабЗнач1.Количество; НоваяСумма = ((НовоеКоличество)*РезультатЗапроса.Сумма)/РезультатЗапроса.Количество; НоваяНДС = ((НовоеКоличество)*РезультатЗапроса.СуммаНДС)/РезультатЗапроса.Количество; ТабЗнач2.Количество = НовоеКоличество; ТабЗнач2.Сумма = НоваяСумма; ТабЗнач2.СуммаВсего = НоваяСумма; ТабЗнач2.СуммаНДС = НоваяНДС; КонецЕсли; Нашелся = 1; КонецЕсли; КонецЦикла; Если Нашелся = 0 Тогда ТабЗнач2.НоваяСтрока(); ТабЗнач2.Склад = РезультатЗапроса.ПодразделениеНаименование; ТабЗнач2.ПодразделениеКод = РезультатЗапроса.ПодразделениеКод; ТабЗнач2.НомерПоКаталогу = РезультатЗапроса.НомерПоКаталогу; ТабЗнач2.Кратность = 1; ТабЗнач2.Цена = ТабЗнач1.Цена; ТабЗнач2.Количество = РезультатЗапроса.Количество; ТабЗнач2.Сумма = РезультатЗапроса.Сумма; ТабЗнач2.СуммаВсего = РезультатЗапроса.СуммаВсего; ТабЗнач2.СуммаНДС = РезультатЗапроса.СуммаНДС; КонецЕсли; Нашелся = 0; КонецЦикла; Помогите с семерошным алгоритмом, а немного не догоняю логики 7.7. Первая ТЗ (РезультатЗапроса) содержит список всех товаров, вторая ТЗ (ТабЗнач1) содержит список товаров, количество которых необходимо вычесть из первой ТЗ. Выбираем первую номенклатуру из РезультатЗапроса и смотрим в ТабЗнач1, если находит эту номенклатуру, да еще и в томже подразделении, то уменьшаем количество и записываем в ТабЗнач2. Если количество <= 0 то эту номенклатуру переносить уже не надо, если не находим товаров, то записываем его в ТабЗнач2. Почему то алгоритм дает сбой и в остатках количество на 5 больше чем должно быть. Вот в чем ошибка? |
|||
1
zak555
20.03.12
✎
17:13
|
> Помогите с семерошным алгоритмом, а немного не догоняю логики 7.7.
ту что 7, что 8 - одно и тоже |
|||
2
zak555
20.03.12
✎
17:14
|
лучше распиши, что хочешь в итоге
|
|||
3
espanol
20.03.12
✎
17:14
|
(1) в 8 чета подобное прокатило на ура... хз в чем проблема, может в самом улгоритме есть уязвимое место, но я его не вижу
|
|||
4
espanol
20.03.12
✎
17:15
|
(2) просто может кто посмотрит свежими глазами и увидит какой недочет в алгоритме, а то я уже замучался
|
|||
5
ale-sarin
20.03.12
✎
17:16
|
(3) Этот код почти без изменений будет и в 8-ке работать. А арифметика в 7-ке и в 8-ке одинаковая, как и в дугих программах, и даже на калькуляторе.
|
|||
6
МихаилМ
20.03.12
✎
17:16
|
Пока РезультатЗапроса.ПолучитьСтроку() = 1 Цикл
ТабЗнач1.ВыбратьСтроки(); после этого животному, которое это написало , нажно дать по копчику |
|||
7
espanol
20.03.12
✎
17:18
|
(6) а что тут не так?
|
|||
8
zak555
20.03.12
✎
17:19
|
(4) что хочешь в конечном счёте ?
откуда у тебя в голове родилось (0) ? |
|||
9
espanol
20.03.12
✎
17:21
|
(8) ну я же в (0) описал....
в ТЗ1 есть все товары в ТЗ2 есть часто товаров надо в ТЗ1 найти товары из ТЗ2 и получить разницу Н1 - 10 Н2 - 6 Н2 - 20 Результат: Н1 - 10 Н2 - 14 Это если просто описать смысл |
|||
10
zak555
20.03.12
✎
17:22
|
(9) что делать , если в ТЗ1 нет товаров ?
|
|||
11
espanol
20.03.12
✎
17:23
|
Такого не бывает в данном примере, ну если и будет то перед алгоритмом можно поставить условие Если ТЗ1.КоличествоСтрок() > 0 Тогда
|
|||
12
zak555
20.03.12
✎
17:24
|
выгружай ТЧ в ТЗ
сворачивай по товару так же выгрузи СЗ по нему делай запрос по СЗ и обход по нему + сравнивай/делай операции с ТЗ в итоге твой результат |
|||
13
espanol
20.03.12
✎
17:25
|
(12) сопсно я это и сделол ) но гдето утечка, вот и написал на форум чтобы посмотрели где может быть она
|
|||
14
zak555
20.03.12
✎
17:26
|
(13) в (0) не (12)
|
|||
15
catena
20.03.12
✎
17:36
|
Если Нашелся = 0 Тогда
............. ТабЗнач2.Цена = ТабЗнач1.Цена; ............. КонецЕсли; А ниче, что ты уже вышел из выборки ТабЗнач1? Будет цена из последней строки. А почему нельзя слить две таблицы в одну (вторую с минусом в количестве), потом свернуть и отрезать отрицательные количества? |
|||
16
zak555
20.03.12
✎
17:38
|
(15) > А почему нельзя слить
нельзя, тем более сливать |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |