Имя: Пароль:
1C
 
Помогите программно рассчитать себестоимость 1с 8.2 бп
0 sevensword
 
05.10.15
14:55
Собственно пробую рассчитать себестоимость для записи в проводку, но где ошибаюсь, в проводке в строке сумма пусто.что не так?

Процедура ОбработкаПроведения(Отказ, Режим)
           //остатки по 41 счету
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    ХозрасчетныйОстатки.Счет,
    |    ХозрасчетныйОстатки.Организация,
    |    ХозрасчетныйОстатки.Субконто2 КАК Номенклатура,
    |    ХозрасчетныйОстатки.Субконто3 КАК Склад,
    |    ХозрасчетныйОстатки.СуммаОстатокДт КАК Сумма,
    |    ХозрасчетныйОстатки.КоличествоОстатокДт КАК Количество
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Позиция,Счет.Код = ""41.01"", ,Субконто3 В (&Склад))  КАК ХозрасчетныйОстатки  
    |УПОРЯДОЧИТЬ ПО
    |    Номенклатура,
    |    Склад";
    Запрос.УстановитьПараметр("Организация",    Склад.Организация);     //Организации
    Запрос.УстановитьПараметр("Позиция",    МоментВремени());     //Дата
    Запрос.УстановитьПараметр("Склад",    Склад);     // АЗС
//    Запрос.УстановитьПараметр("Номенклатура",Номенклатура);     // АЗС

    Остатки41 = Запрос.Выполнить().Выгрузить();
    Проводки = Движения.Хозрасчетный;        
    ДатаДок      = Дата;    
    
    Для каждого СтрокаТаблицы Из отгрузка Цикл
        
        Себестоимость=0;
            Если СтрокаТаблицы.Номенклатура= Справочники.Номенклатура.ПустаяСсылка() Тогда  
            Возврат;   // номенклатура не может быть пустой!!!
        Конецесли;
            СтрокаОст =    Остатки41.Найти(СтрокаТаблицы.Номенклатура);
            Себестоимость = СтрокаТаблицы.Количество*?(СтрокаОст.Количество=0,0,СтрокаОст.Сумма/СтрокаОст.Количество);
            Проводка = Проводки.Добавить();
            Проводка.Период      = ДатаДок;            
            Проводка.СчетДт      = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");
            Проводка.Организация = Склад.Организация;
            Проводка.СчетКт             = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");
            Проводка.Сумма = Себестоимость;
            Проводка.КоличествоКт = СтрокаТаблицы.Количество;
    
            конеццикла;
    КонецПроцедуры
1 vicof
 
05.10.15
15:04
отладчик для лохов?
2 Tatitutu
 
05.10.15
15:18
Проводка.СчетДт      = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");
            Проводка.Организация = Склад.Организация;
            Проводка.СчетКт             = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");

это - "5" !!!

Садись - двойка.
Переписывай - все не так
3 hhhh
 
05.10.15
15:24
(2) вроде так
4 Cyberhawk
 
05.10.15
15:26
Для каждого СтрокаТаблицы Из отгрузка Цикл
        
        Себестоимость=0;
....
            Проводка.Сумма = Себестоимость;
Мда
5 Tatitutu
 
05.10.15
15:30
(4) ну это нет...
он потом пытается реабалититироваться

Себестоимость = СтрокаТаблицы.Количество*?(СтрокаОст.Количество=0,0,СтрокаОст.Сумма/СтрокаОст.Количество);
6 ВРедная
 
05.10.15
15:31
(0) Как насчет того, чтобы глянуть в эту таблицу Остатки41 в отладчике?
Что там вообще у тебя сформировалось
7 sevensword
 
05.10.15
17:20
(6)в том то и дело через отладчик показывает что в себестоимости есть данные а выводит 0
8 piter3
 
05.10.15
17:21
(7) на этапе
Себестоимость = СтрокаТаблицы.Количество*?(СтрокаОст.Количество=0,0,СтрокаОст.Сумма/СтрокаОст.Количество); ?
9 sevensword
 
05.10.15
17:25
себестоимость=207185,02 число
10 sevensword
 
05.10.15
17:36
всем спасибо , дело не в себестоимости а в некоректном выводе проводки
11 piter3
 
05.10.15
17:36
а где говоришь записать у тебя?
12 Тoлько_
Просмотр
 
05.10.15
17:42
(0) Забыл в начале Движения.Хозрасчетный.Записывать = Истина;

Ну и если режим обычного приложения, то и Движения.Хозрасчетный.Очистить();

И в проводках забыл субконто заполнить.

И блокировку забыл перед получением остатков...