Имя: Пароль:
1C
1C 7.7
v7: Расчет себестоимости в бухе используя БИ.СКД("С") /БИ.СКД("К")
,
0 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;
        КонецЕсли;


                   ****

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

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

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