Имя: Пароль:
1C
 
Остатки по зарплате
0 костя
 
14.05.04
18:21
И снова о наболевшем. Так и не услышал ответа на вопрос

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

В таблице (в Конфигураторе)в колонке Сальдо на начало в ячейку ставлю <Остаток #18.2,>
1 427
 
14.05.04
18:52
На.уй.... Уже отвечал на этот вопрос ....
2 staer
 
14.05.04
18:56
Если бы знал, то ответил бы. А так просто ббросилось в глаза. В ячейке
<Остаток#N18.2>, Даст эта N,что-то или не даст, не знаю
3 костя
 
14.05.04
19:00
427
только хамить не надо!
объяснил бы лучше
4 Gavrila
 
14.05.04
19:53
(3) А чего ветки то плодить? (с) GrayT, BorisG
Ветки плодить нехорошо (с) Волшебник
5 костя
 
14.05.04
20:00
а они со своими ветками

помогли бы лучше
6 Gavrila
 
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) - рассчитывать суммы и количество.
При указании параметра строкой в ней указываються все символы, которые обозначают типы сумм, которые нужно рассчитывать. По умолчанию рассчитываются все типы сумм.
Замечание:
Подробнее см. в документации в гл. ''Работа с бухгалтерскими итогами''
:)
7 костя
 
14.05.04
20:11
(6)
Спасибо, сейчас попробую
8 костя
 
14.05.04
20:23
(6)
попробовал - показывает ту же сумму, что и начислено, а задолженость за прошлый месяц не показывает
?
9 Gavrila
 
14.05.04
20:35
(8)Есть значит Дат1 и Дата2 в запросе, значит:
начальный остаток - СН-ы там всякие, покажет остаток на начало Дата1;
конечный остаток - СК-ы там всякие, покажет остаток на конец Дата2;
а дальше по логике запроса и хранения данных :))
10 костя
 
14.05.04
20:50
(9)но если я правильно понимаю, то в  у меня верно
Нач.ВыполнитьЗапрос(НачМесяца(ДатаПериода),ДатаДок,СчетПоКоду("661"));

запрашивается дата остаков (начало месяца)на которую необходимо отобразить эти самые остатки?
или чего-то в нем поменять с датами исходя из того, что ты написал?
11 Gavrila
 
14.05.04
20:56
(10) если ты написал это Остаток=Нач.СНД() , то наверное неправильно, т.к. насколько помню в укр бухии (?) сч.661 - это пассивный счет, значит остаток должен быть по кредиту: Остаток=Нач.СНК(), я правильно тебя понял ?
12 костя
 
14.05.04
21:01
(10)да уж так и пишу - Остаток=Нач.СНК(), а он начисленную з/п показывает
13 Gavrila
 
14.05.04
21:06
(12) проверь по сч.661 (по оборотке по счету исходной) остаток на дату "НачМесяца(ДатаПериода)"
14 костя
 
14.05.04
21:16
проверял - оборотка показывает кредитовый остаток на начало месяца
15 костя
 
14.05.04
21:32
блин, свет отключили - UPS запищал. Gavrila будь другом, не бросай ветку, помоги. я позже посмотрю
16 Gavrila
 
15.05.04
13:10
(15) пиши чем все закончилось, я еще два дня на работе - потом в отпуск :)
17 GrayT
 
15.05.04
15:10
(4)А я то тут при чем? Я не модератор. BorisG, кажеться тоже.
(5)Какими своими? Вы о чем любезный?
Лучше покажи как обращаешься к результатам бух. запроса.
18 Gavrila
 
15.05.04
15:15
(17.1) просто цитатки :)
19 GrayT
 
15.05.04
15:22
"А-а-а-а-а". "Семен Семеныч" (с) Брилиантовая рука - тоже цитата :)
Ладно, ждем Костю.
20 BorisG
 
15.05.04
15:40
(17) Почему "кажется"? Список модераторов на страничке "О формуме":
http://www.forum.mista.ru/about.htm
Их там и так, вместе с комодераторами аж 14 ;-)))
21 костя
 
15.05.04
18:05
перепробовал разные варианты - либо нули отображаются, либо начисленная з/п
22 427
 
15.05.04
18:40
Достал ты уже....

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

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

тогда напишу бухзапрос...
23 Gavrila
 
15.05.04
18:48
(21) Какая конфигурация? Релиз?
(22) канечна укр. :)
24 костя
 
15.05.04
19:01
счет 661 активно-пассивный, исп. два субконто - сотрудники и периоды (месяц начисл з/п)
по кредиту отображается начисленная з/п, по дебету - выплаченная з/п

начисления - Дт 23(92,91)(производство, админперсонал) Кт 661
выплата - Дт 661  Кт 301 (каса)
25 костя
 
15.05.04
19:06
кон-фа "Бухгалтерия" релиз 015
26 Gavrila
 
15.05.04
19:17
(25) Полное название конфигурации с релизом конфигурации?
015 релиз - незнаю, неслышал :), может это релиз платформы ты мне говоришь? :))
27 костя
 
15.05.04
19:29
а это что-то даст?
28 Gavrila
 
15.05.04
19:46
(27) точность ответов
29 костя
 
15.05.04
20:02
1С Бухгалтерия 7.7 (АКС.Бухгалтерия) релиз от 14,02,04 (без номера)
30 427
 
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) ты совершенно прав - Периоды - это справочник с реквизитами ДатаНач  ДатаКон
32 костя
 
15.05.04
21:01
(30) СПАСИБО ! разбираюсь...
33 427
 
15.05.04
21:11
В коде, который написан в (0) - две ошибки

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

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

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

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

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

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