Имя: Пароль:
1C
1С v8
Небольшой вопрос по реализации списания партий.
🠗 (Лефмихалыч 15.03.2013 12:05)
0 SeiOkami
 
15.03.13
10:52
Здравствуйте все!

Это простенькая самописка. У меня вопросик по реализации списания партий. Мне интересно, как это сделать лучше и оптимальней. Так сказать "по правильному" =)

Имеется учетная политика (ФИФО или ЛИФО). Имеются документы Приходники. Это и есть документы партий. Имеются документы Расходники, которые эти партии и списывают. В расходниках можно указать в ТЧ документ партии (приходник) и тогда списание должно быть сначала по этой партии, а затем уже (если не хватает) по другим партиям с учетом учетной политики, установленной на текущий период.

Как это правильно организовать? Загвоздка именно в списании сначала по партиям с документов в ТЧ, а потом других.

P.S.: Не надо сразу тупыми комментами закидывать. Как попало я бы уже это сделал. Мне интересно метод, который был бы "истинно верным" =)
1 Лефмихалыч
 
15.03.13
10:56
А с допрасходами вопросов не возникло что ли?
2 SeiOkami
 
15.03.13
10:56
(1), Что?
3 Лефмихалыч
 
15.03.13
10:58
(2) вероятно я обознался
4 Defender aka LINN
 
15.03.13
10:58
(1) Он еще не дочитал :)
5 SeiOkami
 
15.03.13
11:12
Есть какие нибудь предложения?

Понятно, мне чистый код не нужен) Просто знать сам "алгоритм" =)
6 Лефмихалыч
 
15.03.13
11:14
(5) правильно - одним запросом
7 SeiOkami
 
15.03.13
11:22
(6) тоже так подумал, но не вникну, как в этом запросе учитывать уже списанную номенклатуру из партий в ТЧ (
8 Лефмихалыч
 
15.03.13
11:25
(7) а не надо это учитывать. Это оычный почти запрос для получения партий, просто партии должны быть отсортированы сначала по приоритету, а уже потом по учетной политике. Процедура списания такая же, как по простому фифо/либо в том порядке, в котором партии отсортировались в запросе
9 SeiOkami
 
15.03.13
11:29
(8), а что выйдет, если мы сначала списали номенклатуру из партии, которая в ТЧ, а затем, в попытке "добора" не достающего количества спишем из этой же партии повторно?
10 Лефмихалыч
 
15.03.13
11:32
(9) такого быть не должно и не может. В выборке партий у тебя одна партия должна встречаться один и только один раз.
11 SeiOkami
 
15.03.13
11:38
Т.е. что-то вроде этого?


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

СГРУППИРОВАТЬ ПО
   РасходнаяНакладнаяТовары.Номенклатура,
   РасходнаяНакладнаяТовары.ДокументПартии
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыКСписанию.Номенклатура КАК Номенклатура,
   ТоварыКСписанию.Количество КАК КоличествоСписать,
   ОстаткиНоменклатурыОстатки.ДокументПартии,
   ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокПартии,
   ВЫБОР
       КОГДА ТоварыКСписанию.ДокументПартии = ОстаткиНоменклатурыОстатки.ДокументПартии
           ТОГДА ИСТИНА
       ИНАЧЕ ЛОЖЬ
   КОНЕЦ КАК ПартияИзТЧ
ИЗ
   ТоварыКСписанию КАК ТоварыКСписанию
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
               &ДатаДокумента,
               Номенклатура В
                   (ВЫБРАТЬ
                       ТоварыКСписанию.Номенклатура
                   ИЗ
                       ТоварыКСписанию КАК ТоварыКСписанию)) КАК ОстаткиНоменклатурыОстатки
       ПО ТоварыКСписанию.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура

УПОРЯДОЧИТЬ ПО
   ПартияИзТЧ УБЫВ,
   ОстаткиНоменклатурыОстатки.ДокументПартии.Дата
ИТОГИ ПО
   Номенклатура
12 Лефмихалыч
 
15.03.13
11:39
(11) что-то вроде, только работающее
13 SeiOkami
 
15.03.13
11:41
Понятно, буду пробовать. Спасибо =)
14 Лефмихалыч
 
15.03.13
11:51
Кстати, смысл этого задания в его самостоятельном решении
15 SeiOkami
 
15.03.13
11:56
(14), конечно, я не спорю. Я и не хотел, чтобы мне написали решение. Просто просил совета. А то я бы тут запрос сейчас нагромоздил... =)
16 Defender aka LINN
 
15.03.13
11:57
(15) Ты бы посмотрел, у кого ты его спросил :)))
17 SeiOkami
 
15.03.13
11:59
Упс, тогда всё ясно)
18 Baracus
 
15.03.13
12:00
(17), как думаешь, перезвонят?:)
19 SeiOkami
 
15.03.13
12:02
(18), ну дело не в этом. Мне то самому интересно как эту задачку наикрасивейши решить. А остальное уже на втором плане)
20 TarasKa
 
15.03.13
12:03
(18) Почему бы и нет, если решит хорошо =)
P.S. Какое-то Тандер-пати получилось)))
21 Baracus
 
15.03.13
12:03
(19) Волчья мудрость :)
22 Poysoner
 
15.03.13
12:04
(20) Карпаратиффка)
23 Лефмихалыч
 
15.03.13
12:04
(20) ага, не хватает только представителей сопровождения
24 Джинн
 
15.03.13
12:29
(0) Добавить в набор списываемых партий реквизит Приоритет. Для указанной партии приоритет 0. Для остальных 1. Сортировка Приоритет-ДатаПартии. Списываем последовательно.
AdBlock убивает бесплатный контент. 1Сергей