Имя: Пароль:
1C
1C 7.7
v7: Проводка по одному счету
,
0 AliAksA
 
05.07.18
09:35
Приветствую всех.

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

Заранее благодарю
1 HawkEye
 
05.07.18
09:43
(0) про аналитические счета ты не в курсе, да?
2 Остап Сулейманович
 
05.07.18
09:44
(0) В синтетических итогах ничего не поменяется. В аналитических может. Если дебетовое и кредитовое субконто отличаются.
Плюс появится движение, которое не изменит остатки.

Может иметь смысл в случае (например) "перекидки долга", "изменить МОЛ" ...
3 AliAksA
 
05.07.18
09:48
(1)и (2) аналитика не меняется - её тупо нет
но это нашел в банковской выписке - счет 57.2 "Денежные средства для приобретения валюты"
изменилась только движуха - для чего это?
а что если счет например, активный?
4 Остап Сулейманович
 
05.07.18
09:54
(3) Если на счете не ведется аналитика - тогда не понятно.

"это нашел в банковской выписке" - это как? В коде проведения? Или в зарегистрированных проводках?
5 AliAksA
 
05.07.18
10:00
(4) и проводки нашел и в коде проведения потом, естно
6 Остап Сулейманович
 
05.07.18
10:10
(5) Код кинь на посмотреть. Может и разберемся.
А так - вполне возможно, что просто не проверялась такая ситуация. И программист считал, что такой операции быть не может. А тому, кто настраивал операцию "приобретения валюты" было пофик. Или не понимал, что делает.
7 AliAksA
 
05.07.18
10:12
Процедура ПроводкаПоСчету57_2(перДК="", перСодержание="", перСчет="",
    перСуб1="", перСуб2="", перСуб3="", перСумма=0, перВалюта="", перВалСумма=0)
    
    Операция.НоваяПроводка();
    Операция.СодержаниеПроводки    = перСодержание;
    Операция.ПервичныйДокумент  = ПервичныйДакумент;
    Если перДК = "Дебет" Тогда
        Операция.Дебет.Счет        = Счет57_2;
        Операция.Кредит.Счет    = перСчет;
        Операция.Кредит.Субконто(1, перСуб1);
        Операция.Кредит.Субконто(2, перСуб2);
        Операция.Кредит.Субконто(3, перСуб3);
    ИначеЕсли перДК = "Кредит" Тогда
        Операция.Кредит.Счет    = Счет57_2;
        Операция.Дебет.Счет        = перСчет;
        Операция.Дебет.Субконто(1, перСуб1);
        Операция.Дебет.Субконто(2, перСуб2);
        Операция.Дебет.Субконто(3, перСуб3);
    КонецЕсли;
    Операция.Сумма = перСумма;
    
    Если перСчет.Валютный = 1 Тогда
        текВалюта = ?(ПустоеЗначение(перВалюта)=1, Константа.ОсновнаяВалюта, перВалюта);
        Если текВалюта <> Константа.ОсновнаяВалюта Тогда
            Операция.Валюта        = перВалюта;
            Операция.ВалСумма    = перВалСумма;
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры // ПроводкаПоСчету57_2(...)
8 AliAksA
 
05.07.18
10:12
Процедура ПрямаяПокупкаВалюты()
    
    КредитСумма = глОкрСумм(Приход*КурсВалюты, ДатаДок);
    ПроводкаПоСчету57_2("Кредит", СокрЛП(ВидДвижения),
        КоррСчет, Субконто1, Субконто2, Субконто3,
        КредитСумма, Валюта, Приход);
        
    ДебетСумма = глОкрСумм(Приход*ОснКурс, ДатаДок);
    Если БанкСчетГруппы5Х = 1 Тогда
        
        ПроводкаПоСчету57_2("Дебет", СокрЛП(ВидДвижения),
            БанковскийСчет.Счет, БанковскийСчет, ВидДвижения, "",
            ДебетСумма, Валюта, Приход);
            
    ИначеЕсли БанкСчетГруппы6Х = 1 Тогда
            
        ПроводкаПоСчету57_2("Дебет", СокрЛП(ВидДвижения),
            БанковскийСчет.Счет, Контрагент, Договор, БанковскийСчет,
            ДебетСумма, Валюта, Приход);
        
    КонецЕсли;
    
    КурсоваяРазница57_2(КредитСумма-ДебетСумма);
    
КонецПроцедуры // ПрямаяПокупкаВалюты()
9 Злопчинский
 
05.07.18
10:15
Самописка.
Код по стилю написания - не типовой для бухии.
10 AliAksA
 
05.07.18
10:17
(9) да тут жесть какая самописка, особенно для конверсионной оплаты с продажей другой валюты по указанному курсу)
11 AliAksA
 
05.07.18
10:18
(9) к стилю привык - правится легко - очень хорошо реализован процедурный метод программированя: процедурки небольшие и легко читабельные
12 AliAksA
 
05.07.18
10:19
(9) например, основная процедура:

Процедура ОбработкаПроведения()
    
    ОснКурс = глКурсДляВалюты(Валюта, ДатаДок);
    БанкСчетГруппы5Х = БанковскийСчет.Счет.ПринадлежитГруппе(СчетПоКоду("51"))
                     + БанковскийСчет.Счет.ПринадлежитГруппе(СчетПоКоду("52"))
                     + БанковскийСчет.Счет.ПринадлежитГруппе(СчетПоКоду("55"));
    БанкСчетГруппы6Х = БанковскийСчет.Счет.ПринадлежитГруппе(СчетПоКоду("66"))
                     + БанковскийСчет.Счет.ПринадлежитГруппе(СчетПоКоду("67"));
    
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
        ПервичныйДакумент = глПредставлениеПервичногоДокумента(Контекст);
    
        Если ТипДвижения = Перечисление.ТипыДвиженийДС.ПрямаяПокупкаВалюты Тогда
            ПрямаяПокупкаВалюты();
        ИначеЕсли ТипДвижения = Перечисление.ТипыДвиженийДС.ПоступлениеОтПокупателя Тогда
            ПоступленияПоСчету622();
        ИначеЕсли ТипДвижения = Перечисление.ТипыДвиженийДС.ПоступлениеОтПокупателя2 Тогда
            ПоступленияПрочие();
        ИначеЕсли ТипДвижения = Перечисление.ТипыДвиженийДС.ПоступлениеЧерезСчет Тогда
            ПоступлениеЧерезСчет();
        ИначеЕсли ТипДвижения = Перечисление.ТипыДвиженийДС.ПрочиеПоступления Тогда
            ПрочиеПоступления();
        ИначеЕсли ТипДвижения = Перечисление.ТипыДвиженийДС.ПрямаяОплатаПоставщику Тогда
            Если ПустоеЗначение(Субконто2) = 1 Тогда
                ПрямаяОплатаАвто();
            Иначе
                ПрямаяОплатаФикс();
            КонецЕсли;
        ИначеЕсли ТипДвижения = Перечисление.ТипыДвиженийДС.ОбычнаяОплатаПоставщику Тогда
            Если ПустоеЗначение(Субконто2) = 1 Тогда
                ОбычнаяОплатаАвто();
            Иначе
                ОбычнаяОплатаФикс();
            КонецЕсли;
        ИначеЕсли ТипДвижения = Перечисление.ТипыДвиженийДС.КонверсОплатаПоставщику Тогда
            Если ПустоеЗначение(Субконто2) = 1 Тогда
                КонверсОплатаАвто();
            Иначе
                КонверсОплатаФикс();
            КонецЕсли;
        ИначеЕсли ТипДвижения = Перечисление.ТипыДвиженийДС.ПереводПродажаВалюты Тогда
            Если ПустоеЗначение(Субконто2) = 1 Тогда
                ПродажаВалютыАвто();
            Иначе
                ПродажаВалютыФикс();
            КонецЕсли;
        ИначеЕсли ТипДвижения = Перечисление.ТипыДвиженийДС.ПереводПокупкаВалюта Тогда
            Если ПустоеЗначение(Субконто2) = 1 Тогда
                КонверсОплатаАвто();
            Иначе
                КонверсОплатаФикс();
            КонецЕсли;
        КонецЕсли;
        
        Операция.ЗаписатьПроводки();
    КонецЦикла;
    Операция.Записать();
    
    ОтметкаПлатДоков(1);
    
КонецПроцедуры // ОбработкаПроведения()
13 Остап Сулейманович
 
05.07.18
10:20
(7) Имхается мне, что проблема в БанковскийСчет.Счет.

1. Скорее всего в том, что для валютных счетов (банковских) счет учета (бухгалтерский) совпадает со счетом учета рублевым.

2. На подобного рода бухгалтерских счетах должна вестить аналитика. Как минимум в разрезе банковских счетов. Либо валют (если уж на одном счете несколько валют учитываются).
14 Остап Сулейманович
 
05.07.18
10:23
+ (13) Опять же. Кто то врет.
В (3) - "аналитика не меняется - её тупо нет"
А в (7) -
  Операция.Кредит.Субконто(1, перСуб1);
  Операция.Кредит.Субконто(2, перСуб2);
  Операция.Кредит.Субконто(3, перСуб3);

ЗЫ. ТС утроил тупой троллинг?
15 Карст
 
05.07.18
10:25
банковский счет привязан к переводам в пути ))))) жесть жестяная
16 AliAksA
 
05.07.18
10:28
(14) а кто-то может кто-то недалекий или невнимательно смотрит ?)
в (7) у счета 57_2 нет аналитики, а то что указал используется и для других счетов, у которых есть аналитика - процедура универсальная, вызывается из нескольких мест:

Процедура КонверсОплатаФикс()
    
    ДебетСумма = глОкрСумм(Расход*ОснКурс, ДатаДок);
    Если БанкСчетГруппы5Х = 1 Тогда
        
        ПроводкаПоСчету57_2("Дебет", СокрЛП(ВидДвижения),
            БанковскийСчет.Счет, БанковскийСчет, ВидДвижения, ,
            ДебетСумма, Валюта, Расход);
        
    ИначеЕсли БанкСчетГруппы6Х = 1 Тогда
            
        ПроводкаПоСчету57_2("Дебет", СокрЛП(ВидДвижения),
            БанковскийСчет.Счет, Контрагент, Договор, БанковскийСчет,
            ДебетСумма, Валюта, Расход);
        
    КонецЕсли;
        
    ТекОстаток = ?(Оператор=Перечисление.Операторы.Разделить, Расход/КурсВалюты, Расход*КурсВалюты);
    ТекОстаток = глОкрСумм(ТекОстаток, ДатаДок, КонвВалюта);
    ТекКурс = глКурсДляВалюты(КонвВалюта, ДатаДок);
    КредитСумма = глОкрСумм(ТекОстаток*ТекКурс, ДатаДок);
    
    ПроводкаПоСчету57_2("Кредит", СокрЛП(ВидДвижения),
        КоррСчет, Субконто1, Субконто2, Субконто3,
        КредитСумма, КонвВалюта, ТекОстаток);
    
    КурсоваяРазница57_2(КредитСумма-ДебетСумма);
    ПереоценкаОстатков(Субконто2, ТекОстаток);
    
КонецПроцедуры // КонверсОплатаФикс()
17 Остап Сулейманович
 
05.07.18
10:36
(16) Проводка с 57.2 на 57.2 возможна только если в БанковскийСчет.Счет указан 57.2. Тогда вполне себе может получиться проводка Дт 57.2 - Кт 57.2 А это означает, что тот кто проставлял счета учета банковским счетам либо нифига не понимал, что делает. Либо на тот момент был под веществами. Если так сделал.
18 AliAksA
 
05.07.18
10:42
(17) нет такого, чтобы БанковскийСчет.Счет = 57.2, а вот в табличной части у КоррСчет = 57.2 - есть такое,
поэтому в проводках - одна пустышка: 57.2 -> 57.2, а вторая - нормальная: 57.2 -> 66.3 "Расчеты по % по краткоср. кредитам и займам"
19 AliAksA
 
05.07.18
10:44
+(18) тут бухи видать в неадеквате выбрали не тот тип движения или что-то подстраивали под себя - допустим им именно нужна была лишь одна вторая проводка
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.