Имя: Пароль:
1C
1C 7.7
v7: Количество на вспомогательном счете
0 AliAksA
 
29.07.15
14:15
Привет всем!
слепил нижеприведенный код - получился спор по поводу зависания количества на вспомогательном счете.
СчетУчета = 41.4 - Товары на складе общепита
Пожалуйста, выразите ваше мнение по данной ситуации, заранее благодарю.

Недостача = ПолучитьПустоеЗначение("Справочник.ПрочиеДоходыИРасходы");
    ПрочиеДиР = СоздатьОбъект("Справочник.ПрочиеДоходыИРасходы");
    ПрочиеДиР.НайтиПоКоду("000519",0);
    Если ПрочиеДиР.Выбран() = 1 Тогда
        Недостача = ПрочиеДиР.ТекущийЭлемент();
    КонецЕсли;
    
    Излишек = ПолучитьПустоеЗначение("Справочник.ПрочиеДоходыИРасходы");
    ПрочиеДиР = СоздатьОбъект("Справочник.ПрочиеДоходыИРасходы");
    ПрочиеДиР.НайтиПоКоду("000520",0);
    Если ПрочиеДиР.Выбран() = 1 Тогда
        Излишек = ПрочиеДиР.ТекущийЭлемент();
    КонецЕсли;
    
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
        
        СуммаОтклона = ОтклКолво + ОтклСумма;
        Если СуммаОтклона = 0 Тогда
            Продолжить;
        ИначеЕсли СуммаОтклона > 0 Тогда
            
            Операция.НоваяПроводка();
            Операция.Дебет.Счет = СчетПоКоду("90.13");
            Операция.Дебет.Субконто(1,Недостача);
            Операция.Кредит.Счет = СчетУчета;
            Операция.Кредит.Субконто(1,Материал);
            Операция.Кредит.Субконто(2,МестоХранения);
            Операция.Сумма = ОтклСумма;
            Операция.СодержаниеПроводки = "Инвентаризация товаров, тары общепита";
            
            Операция.НоваяПроводка();
            Операция.Дебет.Счет = СчетПоКоду("00");
            Операция.Кредит.Счет = СчетУчета;
            Операция.Кредит.Субконто(1,Материал);
            Операция.Кредит.Субконто(2,МестоХранения);
            Операция.Количество = ОтклКолво;
            Операция.СодержаниеПроводки = "Инвентаризация товаров, тары общепита";
            
        ИначеЕсли СуммаОтклона < 0 Тогда
            
            Операция.НоваяПроводка();
            Операция.Кредит.Счет = СчетПоКоду("90.12");
            Операция.Кредит.Субконто(1,Излишек);
            Операция.Дебет.Счет = СчетУчета;
            Операция.Дебет.Субконто(1,Материал);
            Операция.Дебет.Субконто(2,МестоХранения);
            Операция.Сумма = -ОтклСумма;
            Операция.СодержаниеПроводки = "Инвентаризация товаров, тары общепита";
            
            Операция.НоваяПроводка();
            Операция.Кредит.Счет = СчетПоКоду("00");
            Операция.Кредит.Субконто(1,Излишек);
            Операция.Дебет.Счет = СчетУчета;
            Операция.Дебет.Субконто(1,Материал);
            Операция.Дебет.Субконто(2,МестоХранения);
            Операция.Количество = -ОтклКолво;
            Операция.СодержаниеПроводки = "Инвентаризация товаров, тары общепита";
        
        КонецЕсли;
        
        Операция.НоваяПроводка();
        Операция.Кредит.Счет = СчетПоКоду("ПАР");
        Операция.Кредит.Субконто(1,МестоХранения);
        Операция.Кредит.Субконто(2,Материал);
        Операция.Кредит.Субконто(3,Партия);
        Операция.Сумма = ОтклСумма;
        Операция.Количество = ОтклКолво;
        Операция.СодержаниеПроводки = "Инвентаризация товаров, тары общепита";
        
    КонецЦикла;
    Операция.Записать();
1 Кукурикин
 
29.07.15
14:40
Минусы то зачем?
Допустим
Д00 К41.1 +200
Д41.1 К00 -200
Конченое сальдо по "00" будет: 200-(-200) = 400. Не?
2 AliAksA
 
29.07.15
14:45
(1) Нет, смотри внимательно код: одна вычисляемая колонка отклонений обрабатывается: недостача с плюсом, излишек - с минусом.
3 HawkEye
 
29.07.15
20:13
(1) на кой черт проводка 00 - СчетУчета (СчетУчета - 00) с количеством?

и вообще 90 по кредиту в корреспонденции с 41 - колхоз колхозный какой-то...
4 HawkEye
 
29.07.15
20:16
+3 не (1) конечно,а (0) )))
5 HawkEye
 
29.07.15
20:22
(0) ну и это
Недостача = ПолучитьПустоеЗначение("Справочник.ПрочиеДоходыИРасходы");
    ПрочиеДиР = СоздатьОбъект("Справочник.ПрочиеДоходыИРасходы");
    ПрочиеДиР.НайтиПоКоду("000519",0);
    Если ПрочиеДиР.Выбран() = 1 Тогда
        Недостача = ПрочиеДиР.ТекущийЭлемент();
    КонецЕсли;

конечно пишется по другому..
как-то так:

Недостача= СоздатьОбъект("Справочник.ПрочиеДоходыИРасходы");
Недостача.НайтиПоКоду("000519",0);

только мне кажется есть элемент не найдется - надо что-то делать, а не плодить проводки с пустыми значениями.
6 Aleksey
 
29.07.15
20:26
(5) Да только тебе. Кому надо зайдет поправить
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс