Имя: Пароль:
1C
1С v8
Получение разницы между данными ТЗ
, ,
0 Валидатор
 
10.01.14
17:45
Есть 1 ТаблицаЗначений, с 2 колонками: номенклатура и количество
есть 2 ТаблицаЗначений, с такими же колонками
Как получить разнциу между ними?
То есть в первой таблице: (Таблица сколько нужно данных)
Номенклатура         Количество
стул                      5

Во второй (таблица сколько есть на остатках товаров)
Номенклатура         Количество
стул                      3

и нужно чтобы в результате я получил
Стул                  2 (то есть сколько нужно еще)
1 МойКодУныл
 
10.01.14
17:46
запросом.:)
2 ДенисЧ
 
10.01.14
17:46
(1) Это моя реплика!
3 МойКодУныл
 
10.01.14
17:46
(2) я ее нагло украл!.
4 Валидатор
 
10.01.14
17:47
блин мужики помогите с запросом)
5 ДенисЧ
 
10.01.14
17:49
(4) Помещаешь тз в вт, потом эти вт внутрене соединяешь и вычитаешь.
6 МихаилМ
 
10.01.14
17:54
(0)
в поиск обсуждалось десятки раз

(1) попробуте в файловой версии запросом сравнить 2 тз
по 50000 строк

тоже в клиент серверном варианте на клиенте

да и на сервере даже при использовании shared memory (ms sql)
ждать.
7 Wobland
 
10.01.14
18:01
(5) а чего бы не полно?
//вот сейчас автор не понимает, я уверен
8 Валидатор
 
10.01.14
18:02
Кол=ТаблицаТоваров.Количество();

    н=1;
    Пока н <= Кол цикл
        Стр = ТаблицаТоваров.Получить(Кол-н);
        
        СтрОстатки = Остатки.Найти(Стр.Номенклатура, "Номенклатура");
        Если СтрОстатки<>Неопределено
            И СтрОстатки.Остаток>0 тогда
            
            Если СтрОстатки.Остаток>=Стр.Количество тогда
                
                
                ТаблицаТоваров.Удалить(Стр);
            Иначе
                
                Стр.Количество = Стр.Количество-СтрОстатки.Остаток;
                                
                СтрОстатки.Остаток= СтрОстатки.Остаток-Стр.Количество;
            КонецЕсли;    
            
            
        КонецЕсли;        
        
        н=н+1;
    КонецЦикла;

так сделал)
9 SUA
 
10.01.14
18:19
(6) в клиент-серверноим? на клиенте? запросом?
10 ТогдаКонецЕсли
 
10.01.14
18:55
К первой таблице присоединяешь вторую с отрицательными значениями количества(добавлением строк).
Сворачиваешь по номенклатуре. Там, где не ноль - там разница.
11 mistеr
 
10.01.14
19:59
(10) +1. Запрос это слишком IMHO.
12 К_Дач
 
10.01.14
20:07
(10) +1. из результата сворачивания сразу выбрать где не ноль. Самый норм вариант. Эх, вот бы на клюшках такое)))
13 2S
 
10.01.14
20:09
(12) легко
14 К_Дач
 
10.01.14
20:12
(13) работа с ВТ на клюшках - легко? ну-ну))
15 2S
 
10.01.14
20:14
нах ВТ на клюшках, сабж решается элементарно
16 К_Дач
 
10.01.14
20:15
(15) да это ежу понятно, я то про (10)
17 К_Дач
 
10.01.14
20:18
банан 15
ананас 10
киви -5
апельсин -10

Выбери на 7.7 строки с минусом без цикла))
18 2S
 
10.01.14
20:23
как это связано с 10? там тоже выборку если без запроса
19 К_Дач
 
10.01.14
20:24
Свернуть в запросе - результат в вт - из вт выбрать нужное. Вот про что имею ввиду
20 2S
 
10.01.14
20:25
не ломай мне мозг
21 vde69
 
модератор
10.01.14
20:27
22 МихаилМ
 
10.01.14
20:28
(17)
элементарно : сортировка + метод вилки.
23 К_Дач
 
10.01.14
20:37
(22) ну напиши код, мне даже интересно
24 hhhh
 
10.01.14
20:53
(22) ну запросом на порядок проще. Главное не забыть проиндексировать таблицы, чтобы результат мгновенно получать.
25 МихаилМ
 
10.01.14
21:11
(24)

ну поробуйте в клиент серверной базе сравнить 2 тз по 50000 строк.

и забудьте про "проще"
26 hhhh
 
10.01.14
21:15
(25) так вы индексировавои временные таблицы или нет? Разница ведь в десятки тысяч раз.
27 МихаилМ
 
10.01.14
23:58
(26)
не индексировал.
время на передачу данных на сервер и обратно  не сопоставимо с временем обработки  (сервер 1с - мс скл; 2тз 50000 и 30000 строк   ) те данные предаютя обрабатываются и возвращаются
но разница в скорости ~ 500 раз. 5 сек и 20 мин.


с толстого клиента больше (5000,3000) передать не удалось

файловый вриант умирал   еще на меньших объемах.


1с  8.2.18.61
28 МихаилМ
 
11.01.14
00:00
+(27)
тоже с СКД : время на обработку не сопоставимо с временем вывода в ТЗ
29 Torquader
 
11.01.14
01:53
(25) Так эти 50000 строк ещё откуда-то взять надо - они из воздуха не появятся - лучше оптимизировать ещё до процесса рождения ТаблицыЗначений.
30 mistеr
 
11.01.14
13:27
(29) +10
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший