Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Расчет себестоимости в бухе используя БИ.СКД("С") /БИ.СКД("К")

v7: Расчет себестоимости в бухе используя БИ.СКД("С") /БИ.СКД("К")
Я
   Amig0_0
 
10.02.20 - 21:31
Добрый вечер товарищи программисты!)

Бухгалтер попросил сделать отчет о доходах в бухе 2.5. По документам РасходнаяНакладная.
Себестоимость решил рассчитать как в подборе партий. Она там считается так:
БИ.СКД("С")/БИ.СКД("К")

// ПРИМЕР

БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто(ВидыСубконто.Номенклатура,ВладелецПартии,2);
БИ.ИспользоватьСубконто(ВидыСубконто.МестаХранения,Склад,2);
БИ.ИспользоватьСубконто(ВидыСубконто.Партии,,1);  
БИ.ВыполнитьЗапрос(,Форма.Параметр.Получить("Док"),"21,41.1,41.2,41.3,41.4,43",,,1,,"СК");

    БИ.ВыбратьСубконто(3);
    Пока БИ.ПолучитьСубконто(3) = 1 Цикл  
        Если БИ.СКД("К")>0 Тогда
            Таблица.НоваяСтрока();
            Таблица.Себестоимость = БИ.СКД("С")/БИ.СКД("К");

                   ****

Сделал так.
Выбрав товары по документам у меня на рукав все три субконто: Товар, Склад, Партия. Я хочу взять СКД() суммы/количества по конкретной партии, но выбрать не получается.
С компонентой БУ практически не работал. Не понимаю что сделал не так.


ТЗ.ВыбратьСтроки(); // Расчет Себестоимости
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
        Себестоимость = 0;
        Себестоимость1 = 0;
        Док = ТЗ.Док;
        докПартии = ТЗ.Партия.Накладная;
        
        БИ = СоздатьОбъект("БухгалтерскиеИтоги");
        БИ.ИспользоватьСубконто(ВидыСубконто.Номенклатура    ,ТЗ.Товар    ,2);
        БИ.ИспользоватьСубконто(ВидыСубконто.МестаХранения    ,ТЗ.Склад    ,2);
        БИ.ИспользоватьСубконто(ВидыСубконто.Партии        ,ТЗ.Партия    ,1);  

        БИ.ВыполнитьЗапрос(докПартии.ДатаДок-1,Док-1,"41.1",,,1,,"СК");
        
        БИ.ВыбратьСубконто(3);
        Если БИ.ПолучитьСубконто(3,,ТЗ.Партия) = 1 Тогда
            Если БИ.СКД("К") <> 0 Тогда
                Себестоимость = Окр(БИ.СКД("С")/БИ.СКД("К"),2,1);
            Иначе
                Себестоимость = 0;
            КонецЕсли;
        Иначе
            //Сообщить(" док: " + СокрЛП(Док) + " тов: " + СокрЛП(ТЗ.Товар));
            Себестоимость = 0;
        КонецЕсли;


                   ****

БИ.СКД("К") то Ноль, но отрицательное. Там по ходу путаница с перепроведением расходных накладных.
Я подумал что в таком случае будет целесообразно брать не СКД(), а Дебетовй оборот по всем трем судконто по сумме/количеству за весь период. В таком случае результат будет правильным.
И в большинстве случаев это отрабатывает правильно, но в некоторых суммы не правильны...
Сложно даже объяснить, пишу что бы мысли упорядочить, мало ли, кто-то сталкивался с подобными задачами и может дать дельный совет!
Заранее спасибо!
 
 
   HawkEye
 
1 - 10.02.20 - 22:24
(0) дельный совет - приведи в порядок движения и не будет вопросов...

что мешает посмотреть откуда взялся минус по партии на 41-ом?

зы. сальдо есть производное от оборота, с чего обороту быть правильным, если сальдо не правильное?
   Vol71
 
2 - 10.02.20 - 23:13
+(1) А оборотки по счетам что показывают?
   Карст
 
3 - 11.02.20 - 00:27
количество берется по тому субконто где при обходе оно есть плюсик в плане счетов что учет ведется , так же как и сумма
   Amig0_0
 
4 - 11.02.20 - 14:34
(1) (2) (3)
Спасибо всем, уважаемые!
Вчера разобрался.
Главная проблема в наличии отрицательных остатков. Выкрутился. Описывать не буду - колхоз)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.