Имя: Пароль:
1C
1C 7.7
v7: Почему бух итоги разные?
,
0 sysadminlk
 
14.02.14
10:57
Функция ПолучитьОстакиПоЗП()
    
    ДатаДок = ТекущаяДата();
    
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");      
    Ит.ИспользоватьСубконто(ВидыСубконто.Сотрудники,,1);
    Ит.ИспользоватьСубконто(ВидыСубконто.Подразделение,,1);
    Ит.ВыполнитьЗапрос(ДатаДок, ДатаДок, СчетПоКоду("70"),,Константа.НацВалюта);
    
    Сообщить(Ит.СКД(2));
    Сообщить(Ит.СКК(2));
    
    Сообщить(Ит.СКД());
    Сообщить(Ит.СКК());
    
    ИтогСумма = 0;  
    ИтогДО = 0;
    ИтогКО = 0;
    ИтогНач = 0;
    ИтогОстКон = 0;
    ИтогОстНач = 0;
    
    Ит.ВыбратьСубконто(2);
    Пока Ит.ПолучитьСубконто(2) = 1 Цикл
        
        Ит.ВыбратьСубконто(1);
        Пока Ит.ПолучитьСубконто(1) = 1 Цикл            
            Сотрудник = Ит.Субконто(1);
            Если Ит.СНК(2) > 0 тогда
                ОстНач = Ит.СНК(2);
            Иначе                  
                ОстНач = (-1) * Ит.СНД(2);
            КонецЕсли;
            
            Если Ит.СКК(2) > 0 тогда
                ОстКон = Ит.СКК(2);
            Иначе                  
                ОстКон = (-1) * Ит.СКД(2);
            КонецЕсли;
            
            ИтогОстКон=ИтогОстКон+ОстКон;
            ИтогОстНач=ИтогОстНач+ОстНач;
            
            ИтогСумма = ИтогСумма + Ит.СКК(2);  
            ИтогДО = ИтогДО + Ит.ДО(2);
            ИтогКО = ИтогКО + Ит.КО(2);
            ИтогНач = ИтогНач + Ит.СНК(2);
        КонецЦикла;
    КонецЦикла;
    
    Сообщить("");
    Сообщить(ИтогОстНач);
    Сообщить(ИтогОстКон);
    Сообщить("");
    Сообщить(ИтогСумма);
    Сообщить(ИтогДО);
    Сообщить(ИтогКО);
    Сообщить(ИтогНач);
    
КонецФункции
1 sysadminlk
 
14.02.14
10:58
результат:
0
300535.64
0
8236.34

300535.64
300535.64

315369.36
0
0
315369.36
2 zak555
 
14.02.14
11:00
зачем рассчитывать итоге в одном порядке, а обходить в другом ?
3 sysadminlk
 
14.02.14
11:01
почему ИтогОстКон не равно ИтогСумма
4 sysadminlk
 
14.02.14
11:01
(2) а как надо?
5 zak555
 
14.02.14
11:03
(4) обычно выбирается первая аналитика, потов вторая
6 sysadminlk
 
14.02.14
11:09
(5) так чтоли:


Функция ПолучитьОстакиПоЗП()
    
    ДатаДок = ТекущаяДата();
    
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");      
    Ит.ИспользоватьСубконто(ВидыСубконто.Подразделение,,1);
    Ит.ИспользоватьСубконто(ВидыСубконто.Сотрудники,,1);
    Ит.ВыполнитьЗапрос(ДатаДок, ДатаДок, СчетПоКоду("70"),,Константа.НацВалюта);
    
    Сообщить("Ит.СКД(2)    "+Ит.СКД(2));
    Сообщить("Ит.СКК(2)    "+Ит.СКК(2));
    Сообщить("");
    Сообщить("Ит.СКД()    "+Ит.СКД());
    Сообщить("Ит.СКК()    "+Ит.СКК());
    
    ИтогСумма = 0;  
    ИтогДО = 0;
    ИтогКО = 0;
    ИтогНач = 0;
    ИтогОстКон = 0;
    ИтогОстНач = 0;
    
    Ит.ВыбратьСубконто(1);
    Пока Ит.ПолучитьСубконто(1) = 1 Цикл
        
        Ит.ВыбратьСубконто(2);
        Пока Ит.ПолучитьСубконто(2) = 1 Цикл            
            Сотрудник = Ит.Субконто(2);
            Если Ит.СНК(2) > 0 тогда
                ОстНач = Ит.СНК(2);
            Иначе                  
                ОстНач = (-1) * Ит.СНД(2);
            КонецЕсли;
            
            Если Ит.СКК(2) > 0 тогда
                ОстКон = Ит.СКК(2);
            Иначе                  
                ОстКон = (-1) * Ит.СКД(2);
            КонецЕсли;
            
            ИтогОстКон=ИтогОстКон+ОстКон;
            ИтогОстНач=ИтогОстНач+ОстНач;
            
            ИтогСумма = ИтогСумма + Ит.СКК(2);  
            ИтогДО = ИтогДО + Ит.ДО(2);
            ИтогКО = ИтогКО + Ит.КО(2);
            ИтогНач = ИтогНач + Ит.СНК(2);
        КонецЦикла;
    КонецЦикла;
    
    Сообщить("");
    Сообщить("ИтогОстНач    "+ИтогОстНач);
    Сообщить("ИтогОстКон    "+ИтогОстКон);
    Сообщить("");
    Сообщить("ИтогСумма    "+ИтогСумма);
    Сообщить("ИтогДО    "+ИтогДО);
    Сообщить("ИтогКО    "+ИтогКО);
    Сообщить("ИтогНач    "+ИтогНач);
    
КонецФункции
7 sysadminlk
 
14.02.14
11:09
рез:

Ит.СКД(2)    0
Ит.СКК(2)    300535.64

Ит.СКД()    0
Ит.СКК()    8236.34

ИтогОстНач    300535.64
ИтогОстКон    300535.64

ИтогСумма    315369.36
ИтогДО    0
ИтогКО    0
ИтогНач    315369.36
8 zak555
 
14.02.14
11:09
(6) да
9 zak555
 
14.02.14
11:10
(7) а теперь посмотри сальдо развернутое
10 sysadminlk
 
14.02.14
11:16
Ит.СКД(2)    0
Ит.СКК(2)    300535.64

Ит.СКД()    0
Ит.СКК()    8236.34

Ит.СКДРС(2)    14833.72
Ит.СККРС(2)    315369.36

Ит.СКДРС()    510.81
Ит.СККРС()    8747.15

ИтогОстНач    300535.64
ИтогОстКон    300535.64

ИтогНач    315369.36
ИтогДО    0
ИтогКО    0
ИтогСумма    315369.36
11 sysadminlk
 
14.02.14
11:17
спасибо
теперь бы где-то почитать что такое развернутое сальдо
12 zak555
 
14.02.14
11:21
(11) тут всё просто

если ты укажешь только

Ит = СоздатьОбъект("БухгалтерскиеИтоги");

Ит.ВыполнитьЗапрос(ДатаДок, ДатаДок, СчетПоКоду("70"),,Константа.НацВалюта);


то СККРС(2) вернёт тебе "свёрнутый" итог
для того, чтобы его развернуть, нужно указать по какой аналитике разворачивать


Ит = СоздатьОбъект("БухгалтерскиеИтоги");      
Ит.ИспользоватьСубконто(ВидыСубконто.Подразделение,,1);
Ит.ИспользоватьСубконто(ВидыСубконто.Сотрудники,,1);
Ит.ВыполнитьЗапрос(ДатаДок, ДатаДок, СчетПоКоду("70"),,Константа.НацВалюта);

СККРС(2) -- вернёт развёрнутое
13 sysadminlk
 
14.02.14
13:03
А как можно посмотреть остатки не на определенную дату, а на определенное время?
14 sysadminlk
 
14.02.14
13:04
к примеру остатки по кассы на 23.03.2007 на 14:05:03
15 Avganec
 
14.02.14
13:05
(0) в если поиграться датой итогов? я не помню как это точно называлось, но в операции->управления итогами там можно было указывать текущий квартал работы. бывает что слетают именно эти итоги. поэтому поигравщись сменой кварталов, можно добиться пересчета косячного периода и все будет пучком.
16 NS
 
14.02.14
13:07
(14) Сформировать позицию.
17 NS
 
14.02.14
13:08
СформироватьПозициюДокумента(<?>,,,,);
Синтаксис:
СформироватьПозициюДокумента(<Дата>,<Час>,<Мин>,<Сек>,<ФлагКонцаСекунды>)
Назначение:
Формирует и возвращает позицию документа согласно переданным параметрам.
Параметры:
<Дата> - дата, на которую формируется позиция документа,
<Час> - час, на который формируется позиция документа,
<Мин> - минута, на которую формируется позиция документа,
<Сек> - секунда, на которую формируется позиция документа.
<ФлагКонцаСекунды> - необязательный параметр. Число: 1 - позиция будет браться от следующей секунды. 0 - позиция от указан-ной секунды. Значение по умолчанию - 0.
18 zak555
 
14.02.14
13:08
(16) только у позиций есть косяк
19 NS
 
14.02.14
13:09
(18) Ты лучше скажи где нет косяка :)
20 zak555
 
14.02.14
13:10
(19) в 8ке ? =)
21 sysadminlk
 
14.02.14
13:15
Не понимаю как в запросе СформироватьПозициюДокумента
Ит.ВыполнитьЗапрос(ДатаДок, ДатаДок, СчетПоКоду("70"),,Константа.НацВалюта);

мне же с бух итогов нужно вытащить
22 NS
 
14.02.14
13:17
(21) Вопрос не понял.
Как вместо ДатаДок поставить в запрос сформированную позицию документа или сам документ? Ну напиши вместо "ДатаДок" - "текпозиция".
23 sysadminlk
 
14.02.14
13:20
ВР = СформироватьПозициюДокумента(ТекущийДокумент());
    Сообщить(ВР);  
    Сообщить(ТипЗначенияСтр(ВР));
    Ит.ВыполнитьЗапрос(ВР, ВР, СчетПоКоду("50"),,,,4);

типо того?
24 NS
 
14.02.14
13:22
(23) Для начала нажимаем мужика в кепке, и ищем выполнитьзапрос, либо правая клавиша на выполнитьзапрос в коде, и поиск в синтаксис-помощнике.
25 NS
 
14.02.14
13:23
На всякий случай, если у тебя СП украли -
"ВыполнитьЗапрос(<НачалоПериода>,<КонецПериода>,<Счет>,<КоррСчет>,<Валюта>,<ТипИтогов>,<Периодичность>,<ТипСуммы>)
Назначение:
Выполнить отбор и расчет итогов по параметрам.
Возвращает число 1 -  запрос выполнен; 0 -  запрос не выполнен.
Параметры:
<НачалоПериода> - дата, документ или позиция начала периода запроса.
<КонецПериода> - дата, документ или позиция конца периода запроса."
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.