Имя: Пароль:
1C
1C 7.7
v7: Модуль документа. Не определяется сумма на остатке
,
0 Лалым
 
02.02.17
17:38
Есть расходная накладная и ее модуль проведения.
В нем определяем остаток на складе считаем цену себестоимости.
Все работало штатно до определенного момента "Пропала" сумма остатка,
тоесть количество видит а сумма ноль
Кусочек модуля:
        Если БухИтогиТМЦ.ПолучитьСубконто(1,,ТМЦ) > 0 Тогда //С позиционироваться на нужное ТМЦ после применение "ИспользоватьСубконто"
            ОстКвоТМЦ = БухИтогиТМЦ.СКД("К");
            ОстСуммаТМЦ = БухИтогиТМЦ.СКД();      
            Сообщить(" на остатке - " + ОстКвоТМЦ + "     на сумму - " + ОстСуммаТМЦ);
            Если ОстКвоТМЦ <> 0 тогда
                Себестоимость = Кво * (ОстСуммаТМЦ/ОстКвоТМЦ);
            КонецЕсли;
        Иначе
            Себестоимость = Кво * ТМЦ.ПриходнаяЦена.Получить(ДатаДок);
            //(!!!!!!!)В ТМЦ добавлено пустое значение.
        КонецЕсли;
1 vicof
 
02.02.17
17:39
"считаем цену себестоимости"
Внушает
2 vicof
 
02.02.17
17:39
Итоги пересчитай
3 Лалым
 
02.02.17
17:44
(2)Пересчитывал
базу тестировал
4 Злопчинский
 
02.02.17
17:44
как вариант: поменяли на 41 счете местами субконто
было: Номенклатура, МестоХранения
стало: МестоХранения, Номенклатура

по местам харнения суммовой отчет не ведется... (_._)
5 Злопчинский
 
02.02.17
17:46
показывай инициализацию БухИтогиТМЦ
6 Злопчинский
 
02.02.17
17:48
и.. это.. я считаю что кошернее - ну в смысле готичнее - взять пропорционально количеству
Себестоимость = ОстСуммаТМЦ * Кво/ОстКвоТМЦ;
7 Лалым
 
02.02.17
17:51
БухИтогиТМЦ = СоздатьОбъект("БухгалтерскиеИтоги");
    БухИтогиТМЦ.ИспользоватьСубконто(ВидыСубконто.ТМЦ, спТМЦ, 1);
    БухИтогиТМЦ.ВыполнитьЗапрос(ТекущийДокумент(),ТекущийДокумент(),);
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 цикл  
         ПроводкиСтрока();
    КонецЦикла;
8 Лалым
 
02.02.17
17:55
(4) Места хранения вообще нет
Причем вот дотыкался если сделать непроведенной накладную например 49 то 50 определить сумму и все будет в прядке, и 49 после нее тоже провдется нормально
бред какойто
9 vcv
 
02.02.17
18:02
(8) Бери итоги не СКД, а СНД.
СКД - конечно сальдо. Получается с учетом проводок проведённого документа.
10 Лалым
 
02.02.17
18:06
(9)щас проверю но количество почемуто берет а сумму нет
вот этоа строка
    Сообщить(" на остатке - " + ОстКвоТМЦ + "     на сумму - " + ОстСуммаТМЦ);
мне пишет
на остатке - 9  на сумму 0
11 Лалым
 
02.02.17
18:10
(9) никакого эффекта не дала смена конечного на начальное
12 Birmingem
 
02.02.17
18:38
А по какому счету берутся остатки? В запросе счета нет,  после получения субконто, хорошо бы еще и на конкретном счете остановиться.
Возможно по этой ТМЦ на одном счете минусовый остаток, а на другом счете плюсовый.

Еще проверь, на счетах где есть субконто ТМЦ галочка "Учет по сумме" стоит?
13 Лалым
 
02.02.17
18:49
(12) 1.Счет учета есть и определяется он точно.
2. Количество определяется точно  какое есть на момент проведения
3. минусовый остаток чичас проверим
14 Лалым
 
02.02.17
18:57
(12)
Вот проведена одна накладная
http://ipic.su/img/img7/fs/AS1.1486050892.jpg
обороты остатки в порядке списано правильно
вот проведена вторая
http://ipic.su/img/img7/fs/AS2.1486050977.jpg
Уже количество ушло провелось а сумма не списалась
15 Лалым
 
02.02.17
19:09
Накладная первая все нашла все посчитала все списала как надо
следующай за ней накладная не обнаружила суммму и списала только количество,
16 Pit0n_08
 
02.02.17
19:19
Счет учета 26 и аналитика (субконто) ТМЦ??
17 Pit0n_08
 
02.02.17
19:22
(14) А если карточку счета 26 или отчет по проводкам посмотреть?
18 Лалым
 
02.02.17
19:30
(16) Все то же самое
щас вот сдела эксперимент по этому товару
есть четыре накладных сделал все непроведенными и начал проводить "сзади" т.е. 54 затем 53 потом 50 и наконец 49
все проводки были в порядке
на остатке оставался 1 блокнот на сумму 20 р
делаю новую накладную  втавляю туда оставшийся блокнот списывается только количество а деньги остаются на 26
19 Лалым
 
02.02.17
19:34
Все отчеты создаются  в том виде в котором находится состояние счетов
ошибка при проведении
в модуле иногда определяются  суммы на остатке иногда не определяются
как бы после проведения одной из накладный ломается механизм
20 Лалым
 
02.02.17
19:42
любая накладная "старше" проведенной ранее не находит сумму на остатке
Если провдедена 49 то никакая другая уже не находит
убираю проведение, провожу 50 после этого могу провести  только 49
ну и тем же макаром все другие варианты
21 HawkEye
 
02.02.17
20:41
(0) мне всегда интересно, как вы определяете, что ошибка в том куске кода, который показываете?
22 Лалым
 
02.02.17
20:43
(21) ну тот кусок который не дает требуемого результата.
23 HawkEye
 
02.02.17
21:40
(22) ну тогда может достаточно было бы написать, что
ОстСуммаТМЦ = БухИтогиТМЦ.СКД();

возвращает 0... не?
24 Лалым
 
02.02.17
22:05
(28) Может. А что это меняет?
25 HawkEye
 
02.02.17
22:12
(24) практически все....
но в принципе тут все дело в желании получить ответ )))
26 Лалым
 
02.02.17
22:21
(25)
//**************
Перем БухИтогиТМЦ, Кво;
//**********************************
Процедура ПроводкиСтрока()      
    СчетТМЦ = ТМЦ.СчетУчета;      
//    Сообщить(СчетТМЦ);
    Коэфициент = ЕдИзм.Коэфициент;
    Кво = Количество * Коэфициент;
    Если  ТМЦ.ВидТМЦ = Перечисление.ВидТМЦ.Товар Тогда
        Себестоимость = 0;
        ОстКвоТМЦ = 0;
        ОстСуммаТМЦ = 0;
        Если БухИтогиТМЦ.ПолучитьСубконто(1,,ТМЦ) > 0 Тогда //С позиционироваться на нужное ТМЦ после применение "ИспользоватьСубконто"
            ОстКвоТМЦ = БухИтогиТМЦ.СНД("К");
            ОстСуммаТМЦ = БухИтогиТМЦ.СНД();      
            Сообщить(" на остатке - " + ОстКвоТМЦ + "     на сумму - " + ОстСуммаТМЦ);
            Если ОстКвоТМЦ <> 0 тогда
                Себестоимость = ОстСуммаТМЦ * Кво/ОстКвоТМЦ;
            КонецЕсли;
        Иначе
            Себестоимость = Кво * ТМЦ.ПриходнаяЦена.Получить(ДатаДок);
            //(!!!!!!!)В ТМЦ добавлено пустое значение.
        КонецЕсли;
        
        Если (ОстКвоТМЦ < Кво) Тогда
            Если Константа.РазрешитьОтрицОстатки = "Нет" Тогда
                Сообщить(Строка(ТекущийДокумент()) + ": не проведен!", "!!!");
                неПроводитьДокумент();    
            КонецЕсли;    
            Сообщить("Товара '"+ТМЦ+"' недостаточно для списания (в наличии " + Строка(ОстКвоТМЦ) + ", требуется " + Строка(Кво) + "!", "!");
        КонецЕсли;
        Проводка1(Контекст,"90",Строка(СчетТМЦ), ТМЦ,ТМЦ,Кво,Себестоимость);    
        Проводка1(Контекст,"36","70",Покупатель,ТМЦ,Количество,Сумма-Скидка);        
    Иначе
        Себестоимость = 0;
        Себестоимость = Количество * ТМЦ.ПриходнаяЦена.Получить(ДатаДок);
        Проводка1(Контекст,"90","29", ТМЦ,ТМЦ,Количество,Себестоимость);    
        Проводка1(Контекст,"36","70",Покупатель,ТМЦ,Количество,Сумма-Скидка);        
    КонецЕсли;
КонецПроцедуры        
//************************************************************************
Процедура ОбработкаПроведения()
    Если Покупатель.Выбран() = 0 тогда
        Сообщить("Не выбрано поле Покупатель","!");
        неПроводитьДокумент();
    КонецЕсли;
    спТМЦ = СоздатьОбъект("СписокЗначений");
    Пока ПолучитьСтроку() = 1 цикл
        Если ТМЦ.Выбран() = 0 тогда
            Сообщить("В таблице не выбрано значение ТМЦ","!");
            неПроводитьДокумент();
        КонецЕсли;
        Если ЕдИзм.Выбран() = 0 тогда
            Сообщить("В таблице не выбрана единица измерения ","!");
            неПроводитьДокумент();    
        КонецЕсли;
        спТМЦ.ДобавитьЗначение(ТМЦ);
    КонецЦикла;
    
    БухИтогиТМЦ = СоздатьОбъект("БухгалтерскиеИтоги");
    БухИтогиТМЦ.ИспользоватьСубконто(ВидыСубконто.ТМЦ, спТМЦ, 1);
    БухИтогиТМЦ.ВыполнитьЗапрос(ТекущийДокумент(),ТекущийДокумент(),);
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 цикл  
         ПроводкиСтрока();
    КонецЦикла;  
    Проводка1(Контекст,"31","36", ,Покупатель,,Оплачено);    
    
    Операция.СуммаОперации = Итог("Сумма");
    Операция.Записать();
КонецПроцедуры
//************************************************************************
Вот весь модуль
27 Лалым
 
02.02.17
22:25
Желание есть, не былло бы не писал сюда.
Вообщето самое главное желание разобраться как такое чудо возможно.
Проведении раннее стоящего в последовательности документа ломает проведение последующих
28 Лалым
 
02.02.17
23:07
(12) все таки где то тут собака порылась переписал модуль проведения, бухитоги создаю в каждой строке чтобы к счету привязать и все стало на места.
29 vcv
 
03.02.17
05:16
(11) "никакого эффекта не дала смена конечного на начальное"
Наверное документ не проведён. Попробуй перепровести проведённый.
30 Лалым
 
03.02.17
07:53
(29) да все уже решилось см (28)