Имя: Пароль:
1C
1С v8
Остатки на даты из ТЧ
0 Марина Викторовна
 
27.10.11
11:18
Наверное уже рассматривалось, но я для себя решения не нашла(
У меня документ, в ТЧ номенклатура и дата отгрузки. Как получить остатки номенклатуры на каждую дату указанную в тч? даты разные
1 ptiz
 
27.10.11
11:19
Запросами.
2 Ненавижу 1С
 
гуру
27.10.11
11:19
3 DrShad
 
27.10.11
11:20
(0) срочно замуж
4 Mort
 
27.10.11
11:25
5 Ненавижу 1С
 
гуру
27.10.11
11:26
(4) немного не то
6 Mort
 
27.10.11
11:28
(5) Какая разница курсы валют или остатки? Остатки нужны не на каждую дату как в (2), а по определенному набору из запроса.
7 ptiz
 
27.10.11
11:30
Подытожу.
Берешь остатки на мин.дату из таблицы
+ прибавляешь количество из таблицы движений (от мин.даты) соединяя движения с таблицей товаров условием по: движения.товар = таблица.товар и движения.Период < таблца.ДатаВремяОстатков
8 Ненавижу 1С
 
гуру
27.10.11
11:30
(6) для начального уровня это разные вещи ))
9 Марина Викторовна
 
27.10.11
11:32
Я счас вот так сделала

ВЫБРАТЬ
   ЗаказКлиентаТовары.Номенклатура,
   МАКСИМУМ(ЗаказКлиентаТовары.Количество) КАК Количество,
   ЗаказКлиентаТовары.ДатаОтгрузки,
   ЗаказКлиентаТовары.Склад,
   СУММА(СвободныеОстатки.ВНаличии - СвободныеОстатки.ВРезерве) КАК Поле1
ИЗ
   Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки КАК СвободныеОстатки
       ПО ЗаказКлиентаТовары.ДатаОтгрузки > СвободныеОстатки.Период
           И ЗаказКлиентаТовары.Номенклатура = СвободныеОстатки.Номенклатура
           И ЗаказКлиентаТовары.Склад = СвободныеОстатки.Склад
ГДЕ
   ЗаказКлиентаТовары.Ссылка = &Ссылка
   И СвободныеОстатки.Регистратор <> &Ссылка

СГРУППИРОВАТЬ ПО
   ЗаказКлиентаТовары.Номенклатура,
   ЗаказКлиентаТовары.ДатаОтгрузки,
   ЗаказКлиентаТовары.Склад

вроде показывает то что нужно, но мне кажется, это как то криво(
10 Марина Викторовна
 
27.10.11
11:32
(3) а че замуж-то??
11 Марина Викторовна
 
27.10.11
11:33
а нет, так не выйдет.... док мб и не проведен еще
12 DrShad
 
27.10.11
11:34
(9) уверена что он именно то показывает?
13 Марина Викторовна
 
27.10.11
11:39
Номенклатура    Количество    ДатаОтгрузки    Склад    Поле1    
ТОвар1             12           30.10.2011    Склад   564    
Товар2             1           27.10.2011    Склад    80    

Количество это по документу, дата из тч, поле 1 это своб остаток.
товар1 на приходе было 600, 27,10 заказ на 36 шт - правильно
товар 2 приход 100, 26 заказ на 20 ши - тож правильно

это что все выходит?
14 ptiz
 
27.10.11
11:44
(13) Правильно. Только алгоритм этот будет всё медленнее и медленнее со временем, т.к. лопатит все движения.
15 Gisborn
 
27.10.11
11:45
Нет. Что-то не так. Ты берешь записи регистра накопления РегистрНакопления.СвободныеОстатки. А их там по условию ЗаказКлиентаТовары.ДатаОтгрузки > СвободныеОстатки.Период будет все больше и больше. Смотри (4), (6)
16 Марина Викторовна
 
27.10.11
12:07
полные остатки по периоду почитала, ниче нового не придумала(
17 ptiz
 
27.10.11
12:13
А (7) не подошло?
Можно и с другой стороны зайти: взять актуальные остатки (т.е. не указывая параметр даты остатков в вирт.таблице .Остатки() ) и вычесть движения позднее ЗаказКлиентаТовары.ДатаОтгрузки.

Кстати, в алгоритме (9) не очень красиво будет в поле Количество, если в документе окажется несколько строк с одним товаром.
18 Марина Викторовна
 
27.10.11
13:07
(17) я тоже подумала про неск строк, оно не работает если неск одинаковых товаров в одну дату идет...
я не совсем поняла как (7) деалется
19 Марина Викторовна
 
27.10.11
13:41
Можно (7) поподробнее? Я хочу разобраться раз других вариантов нет, а вообще это в итоге должна быть печ форма к заказу
20 ptiz
 
27.10.11
15:05
Получаем 2 таблицы:
1 - остатки на минимальную дату из таб.части, эту дату надо передать в запрос как параметр
2 - движения, аналогично тому, как вы уже сделали. Отличие в том, что движения берем не с "начала времен", а за период после даты остатков

Потом складываем одно с другим через "объединить все" и группируем по товарам. На выходе получается таблица с остатками на нужный момент. И её остается только присоединить к таблице документа.
21 braynt
 
27.10.11
15:07
в СКД проще всего. Связать два набора
22 Марина Викторовна
 
27.10.11
17:43
|ЗаказКлиентаТовары.Номенклатура,
   |ЗаказКлиентаТовары.ДатаОтгрузки,
   |ЗаказКлиентаТовары.Склад,
   |ЗаказКлиентаТовары.Количество
|ПОМЕСТИТЬ ВТТовары
|ИЗ
|    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
|ГДЕ
|    ЗаказКлиентаТовары.Ссылка в (&МассивОбъектов)

|СГРУППИРОВАТЬ ПО
|    ЗаказКлиентаТовары.Номенклатура,
|    ЗаказКлиентаТовары.Количество,
|    ЗаказКлиентаТовары.ДатаОтгрузки,
|    ЗаказКлиентаТовары.Склад
|;

|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ВТТовары.Номенклатура КАК Номенклатура,
|    ВТТовары.ДатаОтгрузки,
|    ВТТовары.Склад,
|    ВТТовары.Количество,
|    СУММА(ВЫБОР
|            КОГДА СвободныеОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
|                ТОГДА СвободныеОстатки.ВНаличии
|            ИНАЧЕ -СвободныеОстатки.ВНаличии
|        КОНЕЦ) - СУММА(ВЫБОР
|            КОГДА СвободныеОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
|                ТОГДА СвободныеОстатки.ВРезерве
|            ИНАЧЕ -СвободныеОстатки.ВРезерве
|        КОНЕЦ) КАК остаток
|    ИЗ
|    ВТТовары КАК ВТТовары
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки КАК СвободныеОстатки
|        ПО ВТТовары.Номенклатура = СвободныеОстатки.Номенклатура
|            И ВТТовары.Склад = СвободныеОстатки.Склад
|            И ВТТовары.ДатаОтгрузки > СвободныеОстатки.Период
|ГДЕ
|    СвободныеОстатки.Регистратор не в (&МассивОбъектов)
|
|СГРУППИРОВАТЬ ПО
|    ВТТовары.Номенклатура,
|    ВТТовары.ДатаОтгрузки,
|    ВТТовары.Склад,
|    ВТТовары.Количество
   

|УПОРЯДОЧИТЬ ПО
|    Номенклатура";

вот так сделала вроде работает все
Основная теорема систематики: Новые системы плодят новые проблемы.