Имя: Пароль:
1C
1C 7.7
v7: Расчет остатков
,
0 mpbakunov
 
15.11.12
16:59
Доброго дня!

есть такой код, который выполнятся в функции глобального мудуля из процедуры проведения документа:

// рассчитаем итоги запросом
       Если ПустоеЗначение(Субконто1) = 0 Тогда
           Ит.ИспользоватьСубконто(Счет.ВидСубконто(1),Субконто1,2);
       КонецЕсли;
       Если ПустоеЗначение(Субконто2) = 0 Тогда
           Ит.ИспользоватьСубконто(Счет.ВидСубконто(2),Субконто2,2);
       КонецЕсли;
       Если ПустоеЗначение(Субконто3) = 0 Тогда
           Ит.ИспользоватьСубконто(Счет.ВидСубконто(3),Субконто3,2);
       КонецЕсли;
       Ит.ВыполнитьЗапрос(,Конт.ТекущийДокумент(),Счет,,ТаблицаСчетов.Валюта);
       //Ит.ВыполнитьЗапрос(,28/10/12,Счет,,ТаблицаСчетов.Валюта);
       
       // определим курс и кратность валюты
       Курс = Валюта.Курс.Получить(Конт.ДатаДок);
       Кратность = глПолучитьКратность(Валюта,Конт.ДатаДок);
       
       // определим курсовую разницу по бухг. учету
       ОстатокГрн = Ит.СКД("С") - Ит.СКК("С");
       ОстатокВал = Ит.СКД("В") - Ит.СКК("В");


сразу скажу что счет=362. Движение по нему со значенимя указанными в субконто 1 и 2 взятыми из полей контрагента и договора Расходной накладной возникают только при проведении этой накладной (дата которой 29/10/12), что и видно и по ОСВ - нет движений если документ не проведен. Однако при отладке кода переменные ОстатокГрн и ОстатокВал заполняются не нулевыми значениями. Почему?
1 dedmoroz777
 
15.11.12
17:19
Потому что Ит.СКД("С") - Ит.СКК("С") не равно 0. Ваш кэп
2 mpbakunov
 
15.11.12
17:23
я знаю! Но вопрос как раз в том что все слагаемые должны были равняться 0. Так как движений по 362 счету по данному контрагенту и указанному договору до РН не было!!!
3 zak555
 
16.11.12
00:31
потому что раньше при просмотре осв документ был непроведён
4 mpbakunov
 
16.11.12
10:10
(3) да, но  почему именно в момент ПРОВЕДЕНИЯ этого единственного документа при отладке я получаю не нулевые значения остатков на позицию документа
5 zak555
 
16.11.12
10:11
(4) т.е. после того, как документ проведётся -- у него нет проводок ?
6 mpbakunov
 
16.11.12
10:13
(5) есть!!! но в момент проведения проводки только формируются! и откуда беруться значения не пойму!
7 zak555
 
16.11.12
10:14
(6) Операция.Записать()
или

Операция.ЗаписатьПроводки()
8 mpbakunov
 
16.11.12
10:23
(7) Процедура ОбработкаПроведения()
9 IvaneS
 
16.11.12
10:38
(8)В модуле проведения функция вызывается после Записать()?
10 mpbakunov
 
16.11.12
10:39
самое интересное, что если я в коде ставлю вместо Конт.ТекущийДокумент() дату 29/10/12 равную дате документа или даже 30/10/12, тогда ОстатокГрн = ОстатокВал = 0; Только если в методе ВыполнитьЗапрос в значении КонецПериода=Конт.ТекущийДокумент(), каким то образом переменные ОстатокГрн и ОстатокВал в момент проведения не нулевые!
11 zak555
 
16.11.12
10:39
(8) и ?
12 zak555
 
16.11.12
10:40
(10) чакру чистил ?
13 mpbakunov
 
16.11.12
10:43
да, заметил, что перед расчетом итогов есть стока Конт.Операция.ЗаписатьПроводки(); :)
14 zak555
 
16.11.12
10:46
вопрос решён ?
15 IvaneS
 
16.11.12
10:53
Замолчал... значет, прояснение появился...
16 mpbakunov
 
16.11.12
11:11
да, спасибо всем.
Закон Брукера: Даже маленькая практика стоит большой теории.