Вход | Регистрация


1С:Предприятие ::

Метки: бухгалтерский учет

Остатки по зарплате

Я
   костя
14.05.04 - 18:21
И снова о наболевшем. Так и не услышал ответа на вопрос

1С 7.7 стандартная кон-фа. Расчетно-сальдовая ведомость по з/п подгружается из внешнего файла (mxl). Добавил в оборотку столбец \"Сальдо на начало\" в котором по идее должна отображаться информация о состоянии взаиморасчетов организации с сотрудником (ему должны - он должен), а вот с кодом в модуле формы никак не выходит - в столбце нули и хоть тресни.
код таков
Нач.СоздатьОбъект("БухИтоги") 
Нач.Использовать Субконто(ВидыСубконто.Сотрудники,Сотрудник,2); 
Нач.Использовать Субконто(ВидыСубконто.Периоды,ПериодДок,2); 
Нач.ВыполнитьЗапрос(НачМесяца(ДатаПериода),ДатаДок,СчетПоКоду("661"),,2); 
Остаток=Нач.СНД() 

В таблице (в Конфигураторе)в колонке Сальдо на начало в ячейку ставлю <Остаток #18.2,>
 
  Рекламное место пустует
   staer
2 - 14.05.04 - 18:56
Если бы знал, то ответил бы. А так просто ббросилось в глаза. В ячейке
<Остаток#N18.2>, Даст эта N,что-то или не даст, не знаю
   Gavrila
 
6 - 14.05.04 - 20:09
(5) Здсь у тебя Нач.ВыполнитьЗапрос(НачМесяца(ДатаПериода),ДатаДок,СчетПоКоду("661"),,2); 5-й параметр должен быть ВАЛЮТА, а ты передаешь 2 - шо цэ такэ?
если тип итогов, то он является 6-м параметром... попробуй это
Нач.ВыполнитьЗапрос(НачМесяца(ДатаПериода),ДатаДок,СчетПоКоду("661"));
читай ЖКК:
ВыполнитьЗапрос(<?>,,,,,,,)
Синтаксис:
ВыполнитьЗапрос(<НачалоПериода>,<КонецПериода>,<Счет>,<КоррСчет>,<Валюта>,<ТипИтогов>,<Периодичность>,<ТипСуммы>)
Назначение:
Выполнить отбор и расчет итогов по параметрам.
Возвращает число 1 -  запрос выполнен; 0 -  запрос не выполнен.
Параметры:
<НачалоПериода> - дата, документ или позиция начала периода запроса.
<КонецПериода> - дата, документ или позиция конца периода запроса.
<Счет> - необязательный параметр. Счета, для которых будут отбираться итоги в запросе. Задается значением типа ''Счет'' или объектом типа ''СписокЗначений'', содержащим значения типа ''Счет'',  либо строкой содержащей список кодов счетов, разделенных символом '','' или '';''. Если параметр не указан, отбор будет выполняться по всем счетам.
<КоррСчет> - необязательный параметр. Значение типа ''Счет'' - корреспондирующий счет, в корреспонденции с которым будут отбираться итоги счета, указанного в параметре <Счет>. Задается значением типа ''Счет'' или объектом типа ''СписокЗначений'', содержащим значения типа ''Счет'',  либо строкой содержащей список кодов счетов, разделенных символом '','' или '';''. Если параметр не указан, будут отбираться итоги в корреспонденции со всеми счетами.
<Валюта> - зачение типа ''Справочник.Валюты''. Если параметр не указан итоги выдаются без учета валюты.
<ТипИтогов> - число - тип отбираемых итогов. Может принимать следующие значения: 1 - остатки и обороты по счету в целом; 2 - обороты между счетами; 3 - первое и второе вместе. По умолчанию: 1.
<Периодичность> - число или символьная строка (см. документацию).Позволяет получить дополнительный разрез итогов по периодам.  По умолчанию периодичность не задана.
<ТипСуммы> - число или строка - тип рассчитываемых итогов. Может принимать следующие значения (в скобках указаны строковые синонимы):
1 (''C'', ''S'') рассчитывать суммы;
2 (''В'', ''C'') рассчитывать валютные суммы;
4 (''К'', ''A'') рассчитывать количество.
Если требуется одновременно рассчитывать разные суммы, значение параметра получается путем сложения допустимых значений, например: 5 (1+4) - рассчитывать суммы и количество.
При указании параметра строкой в ней указываються все символы, которые обозначают типы сумм, которые нужно рассчитывать. По умолчанию рассчитываются все типы сумм.
Замечание:
Подробнее см. в документации в гл. ''Работа с бухгалтерскими итогами''
:)
   костя
8 - 14.05.04 - 20:23
(6)
попробовал - показывает ту же сумму, что и начислено, а задолженость за прошлый месяц не показывает
?
   Gavrila
 
9 - 14.05.04 - 20:35
(8)Есть значит Дат1 и Дата2 в запросе, значит:
начальный остаток - СН-ы там всякие, покажет остаток на начало Дата1;
конечный остаток - СК-ы там всякие, покажет остаток на конец Дата2;
а дальше по логике запроса и хранения данных :))
   костя
10 - 14.05.04 - 20:50
(9)но если я правильно понимаю, то в  у меня верно
Нач.ВыполнитьЗапрос(НачМесяца(ДатаПериода),ДатаДок,СчетПоКоду("661")); 

запрашивается дата остаков (начало месяца)на которую необходимо отобразить эти самые остатки?
или чего-то в нем поменять с датами исходя из того, что ты написал?
 
  Рекламное место пустует
   Gavrila
 
11 - 14.05.04 - 20:56
(10) если ты написал это Остаток=Нач.СНД() , то наверное неправильно, т.к. насколько помню в укр бухии (?) сч.661 - это пассивный счет, значит остаток должен быть по кредиту: Остаток=Нач.СНК(), я правильно тебя понял ?
   костя
12 - 14.05.04 - 21:01
(10)да уж так и пишу - Остаток=Нач.СНК(), а он начисленную з/п показывает
   Gavrila
 
13 - 14.05.04 - 21:06
(12) проверь по сч.661 (по оборотке по счету исходной) остаток на дату "НачМесяца(ДатаПериода)"
   костя
14 - 14.05.04 - 21:16
проверял - оборотка показывает кредитовый остаток на начало месяца
   костя
21 - 15.05.04 - 18:05
перепробовал разные варианты - либо нули отображаются, либо начисленная з/п
   427
 
22 - 15.05.04 - 18:40
Достал ты уже....

Я тя явно украинский план счетов... Я его не знаю....

Опиши - какой счет 661 (активный, пассивный) какие субконто
Какими проводками (дебет, кредит) начисляется ЗП.... и выплачивается...

тогда напишу бухзапрос...
   костя
24 - 15.05.04 - 19:01
счет 661 активно-пассивный, исп. два субконто - сотрудники и периоды (месяц начисл з/п)
по кредиту отображается начисленная з/п, по дебету - выплаченная з/п

начисления - Дт 23(92,91)(производство, админперсонал) Кт 661
выплата - Дт 661  Кт 301 (каса)
   костя
29 - 15.05.04 - 20:02
1С Бухгалтерия 7.7 (АКС.Бухгалтерия) релиз от 14,02,04 (без номера)
   427
 
30 - 15.05.04 - 20:38
Я не знаю, что такое ПЕРИОД .... И какое у него представление
Допустим, это справочник, с реквизитами - НачДата и КонДата
в этом предположении написан пример
    
Если же Период - это просто ДАТА, то тогда запрос строится по другому
тогда надо знать, какими датами делаются начисления....


так что уточни, какой тип субконто Период
    
    
    тз = CreateObject("ValueTable");
    тз.NewColumn( "Сотрудники","Reference.Сотрудники"  ,  ,  ,  "Сотрудники"  ,   ,   ,  );   
    тз.NewColumn( "Период","Reference.Периоды"  ,  ,  ,  ""  ,   ,   ,  );   
    тз.NewColumn( "СуммаНаНачало"   ,"Число"      ,15 , 2,  "ОстатокНаНачалоСумма"  ,   ,   ,  );  
    тз.NewColumn( "СуммаНаКонец"    ,"Число"      ,15 , 2,  "ОстатокНаКонецСумма"  ,   ,   ,  );  
    тз.NewColumn( "СуммаПриход"     ,"Число"      ,15 , 2,  "ПриходСумма"  ,   ,   ,  );  
    тз.NewColumn( "СуммаРасход"     ,"Число"      ,15 , 2,  "РасходСумма"  ,   ,   ,  );    
    
   //===================================================================

    Би = CreateObject("BookkeepingTotals");
    
    if Сотрудники.Selected() = 1 
         then    Би.UseSubconto(SubcontoKinds.Сотрудники, Сотрудники, 2); 
        else    Би.UseSubconto(SubcontoKinds.Сотрудники,    , 1);    
    endIf; 
    if Период.Selected() <> 1 then 
        DoMessageBox ("Не выбран период"); 
        return;
     иначе    Би.UseSubconto(SubcontoKinds.Периоды, Период, 2); 
    endIf;          
            
   //==============================================                                                                               

   // пример запроса фактически за один период

   // если надо, к примеру, за квартал - небольшая доработка нужна

   // если за один период - цикл по второму субконто не нужен 

   // приведен только для общего случая - когда несколько периодов

            
    
    Би.DoQuery(Период.НачДата , Период.КонДата , AccountByCode("661"),   ,  , 3,  , "СК");  
   //==============================================================

    if Би.SelectSubconto(1) =1 then                //  выбрать Сотрудники

        while Би.GetSubconto(1) = 1 do             //  получить Сотрудники

           //==============================================

           // итоги по Сотрудник

           //==============================================

            тз.NewLine();
            тз.Сотрудники  =  Би.Subconto(1);        //  итоги по Сотрудники

           //----   суммы  -----------------------------------------

           // Сумма на начало - 

           // если 0 - нет долгов

           // меньше 0 - долг за предприятием

           // больше 0 - сотру повезло.... ему переплатили .... т.е. долг за сотром

           //-------------------------------------------------------

           // аналогично конец периода

                                        
           // итоги по первому субконто - сумма за все периоды 

                    
            
           //-------------------------------------------------------

           // именно в этой точке надо смотреть остатки на начало 

           // текущего периода.... Как можно заметить, здесь 

           // ЕЩЕ НЕ АНАЛИЗИРУЕТСЯ субконто ПЕРИОД

            
            тз.СуммаНаНачало          =  Би.СНД ("С")-Би.СНК ("С");  
            тз.СуммаНаКонец           =  Би.СКД ("С")-Би.СКК ("С");            
            тз.ПриходСумма          =  Би.ДО ("С");  // выплаты         

            тз.РасходСумма          =  Би.КО ("С");  // начисления

            
            
            if Би.SelectSubconto(2) =1 then                // выбрать 

                while Би.GetSubconto(2) = 1 do             // получить 

                   // по сотру с разбиением на периоды

                    тз.NewLine();
                    тз.Сотрудники  =  Би.Subconto(1);         
                    тз.СрокиУплаты  =  Би.Subconto(2);        
                    
                   //----   суммы  ---------------------------------

                   // в данной точке СуммаНаНачало ВСЕГДА (!!!!) равна

                   // НУЛЮ !!!  И анализировать ее могут только идиоты

                   //

                   // Сумма на конец отражает состояние ЗП на конец 

                   // периода

                   //-----------------------------------------------

                    тз.СуммаНаНачало          = Би.СНД ("С")-Би.СНК ("С");             
                    тз.СуммаНаКонец           = Би.СКД ("С")-Би.СКК ("С");            
                    тз.ПриходСумма           = Би.ДО ("С");            
                    тз.РасходСумма         = Би.КО ("С");
                    
                endDo;// перебор по СрокиУплаты 

            endIf;
        endDo;    // перебор по Сотрудники 

    EndIf;
   //==============================================================

    
    
    if тз.LinesCnt() <> 0 then
       //-----------------------------------------

        for Индекс = 1 to тз.LinesCnt() do // цикл по ТЗ  тз

            тз.GetLineByNumber(Индекс);
            if тз.Период.Selected()  <> 1 then
               //---------------------------------------------------

               // расскажем об итогах

               //---------------------------------------------------

                Message ("-----------------------------");
                Message ("Сотр  ----"+тз.Сотрудник);
                
                if тз.СуммаНаНачало > 0 then 
                    Message ("Долг за сотром ---   "+тз.СуммаНаНачало);
                elsIf тз.СуммаНаНачало < 0 then
                    Message ("Долг за конторой ---   "+Строка(0-тз.СуммаНаНачало));
                else
                    Message ("Этот идиот получил все и не имеет долгов"); 
                endIf;  
                
                Message ("Начислено "+тз.РасходСумма);
                Message ("Выплачено "+тз.ПриходСумма);
                
                if тз.СуммаНаКонец > 0 then 
                    Message ("Долг за сотром после выплаты ---   "+тз.СуммаНаНачало);
                elsIf тз.СуммаНаКонец < 0 then
                    Message ("Долг за конторой после выплаты ---   "+Строка(0-тз.СуммаНаНачало));
                else
                    Message ("Этот идиот получил все и не имеет долгов после выплаты"); 
                endIf;  
                
                
            else
               // период выбран - данные по начислениям/выплатам за выбранный период

               //

                .................
               
                
            endIf; 
        endDo;   
       //-----------------------------------------

    endIf;
   костя
31 - 15.05.04 - 20:53
(427) ты совершенно прав - Периоды - это справочник с реквизитами ДатаНач  ДатаКон
   427
 
33 - 15.05.04 - 21:11
В коде, который написан в (0) - две ошибки

Одна техническая.... в параметре ...
Вторая - идеологическая... по причине непонимания работы запросов и БИ в частности

Исправление любой одной из них не позволит получить требуемый результат

P.S. насчет справочника - ну это и предполагалось... В общем то практически единственный вариант...

В советах Гаврилы (примерного сына) ... нет указаний на техническую ошибку ... про идеологическую он вообще не допер ...
 
  Рекламное место пустует
   Gavrila
 
35 - 16.05.04 - 13:29
(33) были указания на техн. ошибку, были... (6), хотя может ты про другое - тогда поясни :)
а идеологические ошибки "допирать" - это еще и опыт работы с бухией нужен, которого нет к сожалению :)
   427
 
36 - 16.05.04 - 13:54
Пардон... насчет 2 (кстати, 1 надоть) - было замечание...

А опыт работы с бухией тут ни при чем... Нет понимания идеологии работы не самой бухии... А работы БИ... А это две большие разницы.... как говорят в Одессе...

Подумай, почему "в данной точке СуммаНаНачало ВСЕГДА (!!!!) равна НУЛЮ !!!"



Список тем форума
Рекламное место пустует  
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует