Имя: Пароль:
1C
1С v8
Проведение по FIFO
0 sidalexsandr
 
20.12.15
18:09
Надо чтобы производился контроль достаточности на указанном складе если не хватает то ошибка иначе списать по методу FIFO.
Вот структура Регистра.Партии
Измерения:
ДокПартии
Склад
Номенклатура
Ресурсы:
Количество
Цена
Сумма
1 Чайник Рассела
 
20.12.15
18:10
500000 руб.
2 ДенисЧ
 
20.12.15
18:11
75 000 евро.
3 GROOVY
 
20.12.15
18:14
(0) А стоимость партии точно у вас от склада зависит?
4 GROOVY
 
20.12.15
18:14
550000р.
5 SmallDog
 
20.12.15
18:16
покажу дорогу: 200 000
6 GROOVY
 
20.12.15
18:16
И судя по задаче и структуре регистра приведенной очень не эффективно используются индексы.
7 ДенисЧ
 
20.12.15
18:17
(6) а вдруг они документы продают, а не товары?
8 SmallDog
 
20.12.15
18:17
да? зачем в регистре сумма?
9 SmallDog
 
20.12.15
18:19
и причем здесь фифо?
10 Nuobu
 
20.12.15
18:23
(0) Опять тестовое задание?
11 Zamestas
 
20.12.15
18:23
(0) Нах там столько измерений то?
12 Garykom
 
гуру
20.12.15
18:25
(8) с суммой в регистре (правильной) очень быстро и удобно получать итоговую сумму по складу

но минус что только одну сумму (в типовых несколько видов цен обычно) и что это за сумма хз
13 Garykom
 
гуру
20.12.15
18:26
Готов потратить время за 1 000 000... конечный результат не гарантирую

"ДокПартии" - гыгы... а если в одном доке пришла одна и та же номенклатура двумя разными строками с разными ценами?
14 Keyn
 
20.12.15
18:58
Ты задаешь вопрос, который уже не раз обсуждался, поэтому над тобой и прикалываются. И даже в задании ты умудрился сделать ошибку(. Забей в поиске чистов или гилев и там они все доступно и качественно объясняют.
15 GROOVY
 
20.12.15
19:07
(14) Не надо меня забивать.
16 shuhard_серый
 
20.12.15
19:08
(13) открой типовые УПП или ERP и ты найдешь в них в измерении Рг партий документ оприходования, ни каких проблем для Рг накопления это не представляет, это же не Рг сведений и будет в нём 10 шт по 20 рублей и 1 шт. по 25
17 Garykom
 
гуру
20.12.15
19:15
(16) даунизм некоторых разработчиков (в т.ч. некоторых из типовых) каким образом относится к реальности?
18 sidalexsandr
 
20.12.15
19:17
ВЫБРАТЬ
    ПартииОстатки.ДокПартии.Ссылка КАК ДокПартииСсылка,
    ПартииОстатки.Склад,
    ПартииОстатки.Номенклатура КАК Номенклатура,
    ПартииОстатки.КоличествоОстаток КАК КоличествоОстаток,
    ПартииОстатки.ЦенаОстаток КАК ЦенаОстаток,
    ПартииОстатки.СуммаОстаток КАК СуммаОстаток
ИЗ
    РегистрНакопления.Партии.Остатки КАК ПартииОстатки
ИТОГИ
    СУММА(КоличествоОстаток),
    СУММА(ЦенаОстаток),
    СУММА(СуммаОстаток)
ПО
    Номенклатура,
    ДокПартииСсылка
19 shuhard_серый
 
20.12.15
19:19
(17) даун в данном случае ты, с партиями в типовых всё ОК
20 Garykom
 
гуру
20.12.15
19:25
(19) угу просто тогда какой смысл этих партий? =документ?
если все равно усреднили закупочную цену...
21 Zamestas
 
20.12.15
19:29
(20) В общей массе и документ прокатывает, что бы проникнуться нужен алкоголь.
22 Serginio1
 
20.12.15
19:31
23 Это_mike
 
20.12.15
19:36
Про ТСа все уже забыли :-)
Ну и правильно. Если он за 10 лет не понял - ему уже ничего не поможет.
24 Забияка
 
20.12.15
19:37
(17), (19)Эк вас колбасит - понятием партии является документ поступления или оприходования. У ТС проблема с методологией.. Чего спорить то? (0) А LIFO  не катит или не знакомо? :) Настройки отрицательных остатков стандартны..
25 MishaD
 
20.12.15
19:37
(16) есть подозрение, что этот документ там вовсе не для партий, хотя честно скажу УПП и подобное не видел. А для отслеживания оплат, если предприятие на упрощенку.
26 Serginio1
 
20.12.15
19:40
22+ Если, что пример обработки здесь http://files.rsdn.ru/19608/SpisaniePartiy.zip
27 Garykom
 
гуру
20.12.15
20:08
(21) зачем алкоголь если и таблеток хватает?
28 Garykom
 
гуру
20.12.15
20:10
(24) если в одном документе поступления или оприходования одинаковый товар встречается в двух строчках (позициях) с разной ценой
это одна партия или все таки 2 разные?
29 SmallDog
 
20.12.15
20:13
что париться?
топикстратер просто проверял: что будет если написать какую-нибудь фигню и нажать на кнопку
30 Zamestas
 
20.12.15
20:20
(27) На таблетках еще больше нюансов.
31 Забияка
 
20.12.15
21:07
(28)Это одна партия.. К чему вопрос? Если честно, не понял.
32 sidalexsandr
 
20.12.15
21:10
Проведение по FIFO сделал. Покритикуйте.
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ПартииОстатки.ДокПартии.Ссылка КАК ДокПартииСсылка,
        |    ПартииОстатки.Склад,
        |    ПартииОстатки.Номенклатура КАК Номенклатура,
        |    ПартииОстатки.КоличествоОстаток КАК Остаток,
        |    ПартииОстатки.ЦенаОстаток КАК ЦенаОстаток,
        |    ПартииОстатки.СуммаОстаток КАК СуммаОстаток
        |ИЗ
        |    РегистрНакопления.Партии.Остатки КАК ПартииОстатки
        |ГДЕ
        |    ПартииОстатки.Склад = &ВыбСклад
        |ИТОГИ
        |    СУММА(Остаток),
        |    СУММА(ЦенаОстаток),
        |    СУММА(СуммаОстаток)
        |ПО
        |    Номенклатура,
        |    ДокПартииСсылка";

    Запрос.УстановитьПараметр("ВыбСклад", Склад);
    Результат = Запрос.Выполнить();
    Движения.Партии.Очистить();

    Для Каждого ТекСтрокаТовары Из Товары Цикл
        
        
        ВыборкаНоменклатура = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        
        Пока ВыборкаНоменклатура.Следующий() Цикл
            Если ВыборкаНоменклатура.Номенклатура = ТекСтрокаТовары.Номенклатура Тогда
                // Вставить обработку выборки ВыборкаНоменклатура
                Для Каждого ТекСтрокаТовары Из Товары Цикл
                    
                    НеХватка = ВыборкаНоменклатура.Остаток - ТекСтрокаТовары.Количество;
                    Если НеХватка < 0 Тогда
                        Сообщить("Товар "+ВыборкаНоменклатура.Номенклатура+" НеХватка "+НеХватка);
                        Отказ = Истина;
                    КонецЕсли;    
                    
                КонецЦикла;                  
                
                ВыборкаДокПартииСсылка = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                
                Пока ВыборкаДокПартииСсылка.Следующий() Цикл
                    // Вставить обработку выборки ВыборкаДокПартииСсылка
                    
                    ВыборкаДетальныеЗаписи = ВыборкаДокПартииСсылка.Выбрать();
                    НеСписанныйОстаток = 0;
                    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                        // Если здесь значит товар на остатке спишем его по партии                    
                        // регистр ОстаткиТоваров Расход
                        
                        Движения.Партии.Записывать = Истина;
                        Для Каждого ТекСтрокаТовары Из Товары Цикл
                            Движение = Движения.Партии.Добавить();
                            Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
                            Движение.Период = Дата;
                            Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
                            
                            Если ТекСтрокаТовары.Количество <= ВыборкаДетальныеЗаписи.Остаток Тогда
                                Движение.Количество = ТекСтрокаТовары.Количество;
                                Движение.Цена = ВыборкаДетальныеЗаписи.ЦенаОстаток;
                                Движение.Сумма = ТекСтрокаТовары.Количество * ВыборкаДетальныеЗаписи.ЦенаОстаток;
                                Движение.ДокПартии = ВыборкаДетальныеЗаписи.ДокПартииСсылка;
                            Иначе
                                Движение.Количество = ВыборкаДетальныеЗаписи.Остаток;
                                НеСписанныйОстаток = ТекСтрокаТовары.Количество - ВыборкаДетальныеЗаписи.Остаток;
                                Движение.Цена = ВыборкаДетальныеЗаписи.ЦенаОстаток;
                                Движение.Сумма = ВыборкаДетальныеЗаписи.Остаток * ВыборкаДетальныеЗаписи.ЦенаОстаток;
                                Движение.ДокПартии = ВыборкаДетальныеЗаписи.ДокПартииСсылка;
                            КонецЕсли;    
                            
                        КонецЦикла;
                    КонецЦикла;
                КонецЦикла;
            КонецЕсли;    
        КонецЦикла;
    КонецЦикла;
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
33 Garykom
 
гуру
20.12.15
21:10
(31) тогда нафига партия=документ, когда можно партия=дата поступления ?
34 Забияка
 
20.12.15
21:11
(33) Не тупи - граница времени одинакова..
35 Garykom
 
гуру
20.12.15
21:12
(33)+ но когда нибудь может и поймете... ))

когда "по среднему" максимальная наценка скажем не превышена, а вот по конкретной строке очень даже и штраф тоже конкретный дадут
36 Забияка
 
20.12.15
21:13
(32)Сортировка где?
37 Garykom
 
гуру
20.12.15
21:13
(34) дело не в границе времени, а получении "точной" закупочной цены
38 sidalexsandr
 
20.12.15
21:13
Сам пока нашел косяк. Если надо списать 200. Есть две приходных накладных на 100 и на 200.То документ списывает
100
потом ещё
200 (здесь должно было быть 100)
39 Забияка
 
20.12.15
21:14
(35)Епть.. Еще про учетную политику поговорим? Вводную посмотри. Про учетную цену никто вообще не говорил.
40 Garykom
 
гуру
20.12.15
21:15
(38) с наскока одолеть партии )) нуну

к примеру что будет если сначала сделать приход 100, потом расход 100, а потом задним числом поправить приход на 50 + 50 ?
41 Garykom
 
гуру
20.12.15
21:16
(39) не говорим, но подразумеваем
иначе зачем вообще нужны эти партии?
42 Забияка
 
20.12.15
21:16
+(40)А у вас методика списания, думаю, партионка?
43 Забияка
 
20.12.15
21:17
(41)С партиями это в политику:)
44 Defender aka LINN
 
21.12.15
07:59
Цена в ресурсе - это пять
45 Serginio1
 
21.12.15
09:46
(32) Советую посмотреть (22) (26). Это универсальное решение для списания по партиям.
Главное не забыть указать сортировку.
46 ЧеловекДуши
 
21.12.15
09:57
(0) ФИ-ФО, это не сбыточная фантазия пендантиста :)

Если БД, используется для Управленческого учета, то просто запретить лазить руками в прошлые периоды.

Если еще и бухия там же, то забей...
Придется тупо перепроводить документы, а лучше просто переписывать движения документов :)
47 ЧеловекДуши
 
21.12.15
09:58
(32) Отстой... Если это в документе. :)
48 HeKrendel
 
21.12.15
09:59
(46) ФИФО, это суровые будни фармацевтов и пищевиков.
Причем не проблемы в программе, а реальные проблемы по учету на складе. Это вам не в регистрах ковыряться ;-)
49 ЧеловекДуши
 
21.12.15
09:59
+(32) Что ты будешь делать с текущими операциями?
Которые появляются в данный момент?
Или у вас это будет типо запускаться раз в сутки по ночам?
А как же Бекапы? :)
50 ЧеловекДуши
 
21.12.15
10:01
(48) Так тогда и списывай сперва старые партии, потом до новых дотянетесь :)
51 sidalexsandr
 
21.12.15
10:24
(36) Спасибо. Допишу Сгруппировать по ДокПартииСсылка.Ссылка ВОЗР
52 sidalexsandr
 
21.12.15
10:25
Ешё надо LIFO для него Сгруппировать по ДокПартииСсылка.Ссылка УБЫВ
53 sidalexsandr
 
21.12.15
10:31
(3) Дат наверно зависит от склада, хотя я точно не знаю.
54 Тoлько_
Просмотр
 
21.12.15
11:13
Омг, на что ушло 10 лет стажа?
55 Serginio1
 
21.12.15
11:18
(52) А почему не хочешь воспользоваться (45)
56 sidalexsandr
 
21.12.15
20:38
(55) Слишко большой объем кода для банального проведения по FIFO.
57 Serginio1
 
21.12.15
22:03
(56) Как раз там кода значительно меньше. При этом ты этот код можешь использовать повторно.
Я применяю группировку через день, а что касается проведения по FIFO или LIFO то код универсален. Тебе только нужно сделать запрос и нужную сортировку.