Имя: Пароль:
1C
1С v8
LIFO списание
0 ТеньПустоты
 
13.08.12
01:25
Гспода пыдаюсь реализовать лифо списание.
вот что получается




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

Запрос.УстановитьПараметр("ВидДвижения",  ВидДвиженияНакопления.Приход);
           Запрос.УстановитьПараметр("Ссылка", Ссылка);
           Запрос.УстановитьПараметр("Номенклатура", номенклтр.Номенклатура);
           
           Результат = Запрос.Выполнить();
           
           ВыборкаДетальныеЗаписи = Результат.Выбрать();
           
           УжеСписано = 0; //тут будем хранить число списанных.
           
           Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
               
               //проверим хватит ли нам этой партии
               
               Если ВыборкаДетальныеЗаписи.КоличествоОстаток < ВыборкаДетальныеЗаписи.Количество Тогда
                   
                   ВременнаяСумма = ВременнаяСумма + ВыборкаДетальныеЗаписи.Сумма;  //сумма списания
                   УжеСписано = УжеСписано + ВыборкаДетальныеЗаписи.Количество;
               Иначе
                   Движение = Движения.ОстаткиНоменклатуры.Добавить();
                   Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
                   Движение.Период          = Дата;
                   Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
                   Движение.Количество    = ВыборкаДетальныеЗаписи.Количество;
                   Движение.Сумма  = ВременнаяСумма + ВыборкаДетальныеЗаписи.Сумма/ВыборкаДетальныеЗаписи.КоличествоОстаток * (ВыборкаДетальныеЗаписи.Количество-УжеСписано);    
               КонецЕсли;    
           КонецЦикла;



То бишь беру строчку из расходной, соединяю её с приходными, то бишь партиями из регистра.

А потом если в расходной партии больше чем в поступлении то берем следующую партию


Итак вопросы:

1. Я правильно делаю лифо?
1.2 если рне правильно то напишите как надо правильно

2. А вопрос вот в чем
ВременнаяСумма = ВременнаяСумма + ВыборкаДетальныеЗаписи.Сумма;  //сумма списания

Не хочет выборку в число перегонять. Как же всё таки перегнать??
1 Aleksey
 
13.08.12
01:30
А ничего что нет такого метода списания как ЛИФО?
2 Aleksey
 
13.08.12
01:30
Хотя странна не указанна, может у вас еще и осталось
3 FlashC
 
13.08.12
01:40
(1) метод то есть (точнее остался), видимо нужен зачем то...
(0) "А потом если в расходной партии больше чем в поступлении то берем следующую партию" это что, ЛИФО по вашему??? при чём тут "БОЛЬШЕ"?
Уж если по какой то причине хотите реализовать ЛИФО, так определение посмотрите...
4 Aleksey
 
13.08.12
01:41
(3) Где остался?
http://www.buh.ru/document-1182
5 FlashC
 
13.08.12
01:49
(4) то что отменили и достаточно давно - не лишает права использовать его для собственных нужд, например для личных амбиций)имею ввиду метод, а не правило, согласованное с НК/ПБУ!
6 hohol
 
13.08.12
01:56
2. А вопрос вот в чем
ВременнаяСумма = ВременнаяСумма + ВыборкаДетальныеЗаписи.Сумма;  //сумма списания

Не хочет выборку в число перегонять. Как же всё таки перегнать??

потому что нужно в запросе писать
ЕстьNULL(ОстаткиНоменклатуры.Количество,0)
а не так как у тебя.

Правильно ли все или нет. Хз. твоей же конфигурации вообще никто не видит, но упорядочить твои остатки надо по возрастанию.

зы

Забаньте уже этого дибила Алексея. Он вообще не в теме. Причем тут бух ру? Может он ячейки адресного хранения перебирает по лифо.
7 hohol
 
13.08.12
01:59
Алгоритм точно не рабочий. Не понятно причем тут Вид движения?
8 ТеньПустоты
 
13.08.12
01:59
омг (3) ну смотри, я же списываю начиная с последней поступившей партии! Вот тебе надо списать 10 по лифо. а у тебя в посленей партии только 9 вот ты и сначала всю партию списываешь в которой 9 а потом из следцющей выбираешь 1.


(6) а причем тут осттки и сумма?? я  не про количество спросил
9 ТеньПустоты
 
13.08.12
02:00
(7) вид двидения для того чтобы выбрать только ПРИХОД. ну партии это е приходная накладная
10 hohol
 
13.08.12
02:02
(8) а я вообще про цифири в запросе. Нужно писать isNull(ЗначениечислаизЗапроса,0)
11 ТеньПустоты
 
13.08.12
02:03
товарищи а есть у кого нибудь готовый FIFO??
12 hohol
 
13.08.12
02:04
(9) приход - это оборот ты выберешь, а тебе остаток нужен.
Если приходная  - это партия, то тогда где выборка этого измерения.

зы
сфизди уже методичку по платформе
13 ТеньПустоты
 
13.08.12
02:05
дай сайт пожалуста где её сфиздить
14 hohol
 
13.08.12
02:06
перебор тоже не рабочий.
параметры Запрос.УстановитьПараметр("Номенклатура", номенклтр.Номенклатура); - бред. У тебя одна номенклатура в документе будет?
15 hohol
 
13.08.12
02:06
(13) gogle.ru  подготовка к экзамену по платформе
16 ТеньПустоты
 
13.08.12
02:07
(14) там это всё в цикле перебора строк
17 hohol
 
13.08.12
02:09
(16) если ты одну номенклатуру в параметр передашь, то отберет тебе только одну номенклатуру, например только "утюг", а все "чайники" точно не попадут.
18 hohol
 
13.08.12
02:09
Цикл у тебя тоже бредовый.
19 FlashC
 
13.08.12
02:11
когда в условии ставишь "<" будет момент, когда словишь деление на ноль!
20 FlashC
 
13.08.12
02:11
"" = меньше
21 ТеньПустоты
 
13.08.12
02:12
та это я всё понял но изначально на вопрос никто не ответил.


Господа, помогите методичку найти, не могу найти где её скачать
22 hohol
 
13.08.12
02:13
(21) щас докиздишься, что ветку закроют. )))))
23 ТеньПустоты
 
13.08.12
02:16
слышь че а может и не надо ничего проверять хватает или не хватает??
может сразу умножать количество на цену, равную сумма партии деленная на коичетво в партии??
24 hohol
 
13.08.12
02:16
во первых приход - это бред.
Нужно в регистре измерение завести.
Номенклатура, Партия, Количество, Стоимость
Где Партия вид  = Приходная накладная.
25 hohol
 
13.08.12
02:17
(23) садись 2.
26 ТеньПустоты
 
13.08.12
02:19
обидели ребенка
27 hohol
 
13.08.12
02:20
ладно, удачной подготовки. я спать.


я вот за 10 сек нашел решение в инете
http://yandex.ua/yandsearch?text=Выборка.Партия&lr=11469&ncrnd=6879
28 hohol
 
13.08.12
02:20
вторая ссылка
29 hohol
 
13.08.12
02:24
30 hohol
 
13.08.12
02:25
правда не разбирал, правильно или нет. Но похоже на правильно.
Я когда сдавал временных таблиц в помине не было, у нас другой запрос был, с вложенными запросами.
31 ТеньПустоты
 
13.08.12
02:25
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=557706

а это не подходит что ле??
32 ТеньПустоты
 
13.08.12
02:26
временные таблицы точно нужны
33 ТеньПустоты
 
13.08.12
02:28
бред где он в расходной накладной нашёл поле партия??
34 FlashC
 
13.08.12
02:32
а "ЧУТП" (что ушло то и пришло) - намного актуальнее, например переработка на стороне, когда нужен чёткий контроль и сумм и количества. Про УПП не скажу, а в v7ПУБ убого всё (это мягко сказано)
35 ТеньПустоты
 
13.08.12
02:53
в манду млять заебал меня фифо лифо поебень ебаная, бред офисных жителей, нахуя я сюда подался только
36 mistеr
 
13.08.12
03:11
(35) Еще не поздно сесть за руль старой девятки.
37 Красный рассвет
 
13.08.12
06:18
(35) Лучший пост года б/п
38 rphosts
 
13.08.12
06:28
(33) а оно не там а в настройке учётной политике, например получается так:
ВидСписания=РегистрыСведений.УчетнаяПолитика.Получить(НачалоГода(Дата), ).ВидСписания;

в коде же всё это есть!

(35)сильно сказано! С чуством!
39 DrShad
 
13.08.12
06:39
в (0) полный бред там ни ФИФО ни ЛИФО, ни даже средней не пахнет!
40 DrShad
 
13.08.12
06:39
(35) еще можно устроиться в охрану супермаркета
41 rphosts
 
13.08.12
06:45
(40) без лицензии в охрану давно не берут
42 hohol
 
13.08.12
11:32
(37) +1.