Имя: Пароль:
1C
1С v8
Подбор количества в запросе
0 Конфигуратор1с
 
04.02.13
16:44
Есть у меня такая табличка Документ Номерстроки товар количество, и есть Товар Количество, где количество - сколько нужно подобрать. Задача в том что бы подобрать нужное количество товара вместе с строками и документами.  то ест допустим имеем таблицу

Носки мужские 5 штук
Носки детские 2 штуки

И набор документов
Расходная№1 Носки муж. №стр1 2шт
Расходная№1 Носки муж. №стр2 2шт
Расходная№2 Носки муж. №стр1 5шт
Расходная№3 Носки муж. №стр1 3шт

То на выход должно получится
Расходная№1 Носки муж. №стр1 2шт
Расходная№1 Носки муж. №стр2 2шт
Расходная№2 Носки муж. №стр1 1шт
1 Конфигуратор1с
 
04.02.13
16:44
(0) Смотрел в строну нарастающего итога, но тут нет даты, точнее она вместе  с строками есть
2 Kashemir
 
04.02.13
16:45
(1) Ну так считай что номер строки это доп. детализации даты - дальше по образцу
3 Kashemir
 
04.02.13
16:46
+(2) Твоя полная дата = ДатаВремяДокумента+СсылкаНаДокумент+НомерСтрока
4 Classic
 
04.02.13
16:48
(0)
зачем тебе дата?
5 Конфигуратор1с
 
04.02.13
16:49
(4) а как получить наростающий итог то?
(3) щас попробую.СПС
6 Fragster
 
гуру
04.02.13
16:51
быстрее всего - через Итоги По (здесь поля определяющие партию и количество необходимое последней группировкой). И обход по группировкам, в детальных записях заполняешь что там тебе нужно
7 Fragster
 
гуру
04.02.13
16:51
FIFO неэффективно делать в запросе
8 Classic
 
04.02.13
16:52
(3)
В запросе он такое врядли осилит. Особенно ссылку не прибавит

(5)
Вторую табличку соединяешь с собой по
ВЫБОР КОГДА Т1.Ссылка = Т2.Ссылка ТОГДА Т1.НомерСтроки >= Т2.НомерСтроки ИНАЧЕ Т1.Ссылка > Т2.Ссылка КОНЕЦ
9 Kashemir
 
04.02.13
16:57
(5) ВЫБРАТЬ
   НаборДокументов.Документ,
   НаборДокументов.Товар,
   НаборДокументов.Количество,
   НаборДокументов.НомерСтроки,
   СУММА(НаборДокументов1.Количество) КАК НарастающийИтог
ИЗ
   НаборДокументов КАК НаборДокументов
       ЛЕВОЕ СОЕДИНЕНИЕ НаборДокументов КАК НаборДокументов1
       ПО (НаборДокументов.Документ.Дата < НаборДокументов1.Документ.Дата
               ИЛИ НаборДокументов.Документ.Дата = НаборДокументов1.Документ.Дата
                   И НаборДокументов.Документ < НаборДокументов1.Документ
               ИЛИ НаборДокументов.Документ.Дата = НаборДокументов1.Документ.Дата
                   И НаборДокументов.Документ = НаборДокументов1.Документ
                   И НаборДокументов.НомерСтроки <= НаборДокументов1.НомерСтроки)

СГРУППИРОВАТЬ ПО
   НаборДокументов.Документ,
   НаборДокументов.Количество,
   НаборДокументов.Товар,
   НаборДокументов.НомерСтроки
10 Defender aka LINN
 
04.02.13
16:59
(0) Вспотеешь такое в запросе делать, да и работать (если вообще будет) будет неторопливо что ппц.
11 Конфигуратор1с
 
04.02.13
16:59
(8) (9) спасибо большое
12 Конфигуратор1с
 
04.02.13
16:59
(10) так а если документов немного не больше 200 строк?
13 Fragster
 
гуру
04.02.13
17:00
(12) это сейчас немного
14 Kashemir
 
04.02.13
17:01
(12) Это лишь детализация измерения - 200 вариантов не так много. Индексация поможет
15 Конфигуратор1с
 
04.02.13
17:02
(13) Вот не надо пугать ребенка. Что, реально тормоза будут?
16 Classic
 
04.02.13
17:03
(15)
Сам подумай. Ты таблицу с N строками соединяешь грубо говоря с такой же. На выходе получаешь N*N строк
17 Kashemir
 
04.02.13
17:03
(15) Да вряд ли у тебя там что-то настолько громадное еще и на слабом железе
18 Kashemir
 
04.02.13
17:04
(16) Не - на выходе он получает таблицу той же размерности. Вот соединений в процессе будет н*н.
19 Classic
 
04.02.13
17:04
(18)
Ну да. Я про промежуточный результат говорил
20 Classic
 
04.02.13
17:04
Точнее N(N+1)/2 но это уже мелочи
21 Конфигуратор1с
 
04.02.13
17:05
(17) ну железо реально слабовато(надеюсь админ не читает эту ветку). На отчетах сервак падает периодически (
22 Kashemir
 
04.02.13
17:05
(21) Тут процессорные ресурсы прежде всего пострадают
23 Kashemir
 
04.02.13
17:05
На самом деле не зная какого размера твои таблицы сложно сказать, кроме того ты же наверняка какие-то отборы будет пользовать
24 Kashemir
 
04.02.13
17:07
Вобщем я такие конструкции довольно активно использую. Практически все написанные мной дебиторки работают на таких запросах, правда с ограничением на глубину вложенности - типа за круг набирает на месяц документов - распределяет - если не все набралось - запускается на новый круг дорасчета.
25 Конфигуратор1с
 
04.02.13
17:12
(24) спасибо. буду думать. Рисковать или нет. Но текст себе сохраню на будущее
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший