Имя: Пароль:
1C
1С v8
HELP: дозаполнение ТЧ проводками !!!
,
0 листопад
 
12.09.12
15:52
ЗУП, 2.5.54.1

Надо добавить проводки в документ "Отражение зарплаты в рег.учете". На форме документа "ОтражениеЗПвРегУчете" создала кнопку, на ней процедуру, которая ищет определенную проводку в ТЧ и если находит ее, то создает новую. Подскажите, почему проводка новая не создается? Вот код:


Счет96 = ПланыСчетов.Хозрасчетный.РезервыПредстоящихРасходов;
Счет70 = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда;
Счет26 = ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы;

ТабЧасть = ДокументОбъект.ОтражениеВУчете;

Для каждого Строка Из ТабЧасть Цикл
   
   Если Строка.СчетДт = Счет96 И Строка.СчетКт = Счет70 Тогда
       Если ТипЗнч(Строка.СубконтоДт1)=Тип("СправочникСсылка.Резервы") И ЗначениеЗаполнено(Строка.СубконтоДт1) И НРег(Строка.СубконтоДт1.Наименование)="Оценочные (премия)" Тогда
           
           Проводка = ДокументОбъект.Движения.БУОсновныеНачисления.Добавить();
           Проводка.СчетДт = Счет26;
           Проводка.СчетКт = Счет70;
           Проводка.СуммаНУ = Строка.Сумма;
           ДокументОбъект.Движения.БУОсновныеНачисления.Записать();
           
       КонецЕсли;
   КонецЕсли;
   
КонецЦикла;
1 Maxus43
 
12.09.12
15:54
дак добавлять надо в ТЧ, а не в ДокументОбъект.Движения
2 DrShad
 
12.09.12
15:55
а нельзя просто не начислять резервы?
3 листопад
 
12.09.12
15:56
(1) Это как?
4 Maxus43
 
12.09.12
15:56
(3)
Если Строка.СчетДт = Счет96 И Строка.СчетКт = Счет70 Тогда

       Если ТипЗнч(Строка.СубконтоДт1)=Тип("СправочникСсылка.Резервы") И ЗначениеЗаполнено(Строка.СубконтоДт1) И НРег(Строка.СубконтоДт1.Наименование)="Оценочные (премия)" Тогда
           
           Проводка = ТабЧасть.Добавить();
           Проводка.СчетДт = Счет26;
           Проводка.СчетКт = Счет70;
           Проводка.СуммаНУ = Строка.Сумма;
           ДокументОбъект.Движения.БУОсновныеНачисления.Записать();
           
       КонецЕсли;
   КонецЕсли;
5 Maxus43
 
12.09.12
15:57
(4) + ДокументОбъект.Движения.БУОсновныеНачисления.Записать(); - удалить ещё
6 листопад
 
12.09.12
16:15
(4), (5) - не помогло! Проводка так и не создается!!!
7 Maxus43
 
12.09.12
16:21
(6) проводка при проведении создаётся
8 листопад
 
12.09.12
16:28
(7) провела док-т, все равно не создается...
9 Maxus43
 
12.09.12
16:30
(8) в ТЧ то добавилась строка?
10 листопад
 
12.09.12
16:33
(9) нет.
11 Maxus43
 
12.09.12
16:37
(10) ну с этим надо разбираться, а не с проводками
12 листопад
 
12.09.12
16:47
(11) Хелп ми!!!
13 Maxus43
 
12.09.12
16:48
шо такое ДокументОбъект? весь код выложи...
ТабЧасть = ЭтотОбъект.ОтражениеВУчете;
14 salvator
 
12.09.12
16:49
(13) +1 c языка снял
15 листопад
 
12.09.12
16:52
(13) Это весь код в (0).
ТабЧасть = ДокументОбъект.ОтражениеВУчете;
16 Maxus43
 
12.09.12
16:54
(15) ТабЧасть = ЭтотОбъект.ОтражениеВУчете;
17 salvator
 
12.09.12
16:54
(15) Ты вызываешь процедуру из формы открытого документа. В данном случае, чтобы обратиться к объекту, нужно написать ЭтотОбъект.
Соответсвенно,
ТабЧасть = ЭтотОбъект.ОтражениеВУчете;
18 листопад
 
12.09.12
17:01
(17) Поправила, все равно строчка новая не создается!!!!!!!!!!!!!!!
19 Maxus43
 
12.09.12
17:12
значит не работает условие:
Если Строка.СчетДт = Счет96 И Строка.СчетКт = Счет70 Тогда
       Если ТипЗнч(Строка.СубконтоДт1)=Тип("СправочникСсылка.Резервы") И ЗначениеЗаполнено(Строка.СубконтоДт1) И НРег(Строка.СубконтоДт1.Наименование)="Оценочные (премия)" Тогда

вот и всё
20 salvator
 
12.09.12
17:12
(18) Может, условие не проходит?
ЗУП под рукой нет, но возможно нужно писать не
Если ТипЗнч(Строка.СубконтоДт1)=Тип("СправочникСсылка.Резервы")
а
Если ТипЗнч(Строка.СубконтоДт1)=Тип("ПланВидовХарактеристикСсылка.ВидыСубконто.Резервы")
21 Maxus43
 
12.09.12
17:14
(20) не, тип у значения определяется, это вроде правильно.
(18) отладчиком пользоваться умеем?
22 Aleks73
 
12.09.12
17:16
если с отладчиком совсем туго, можно в конфигураторе сообщения тестовые рассыпать.
23 листопад
 
13.09.12
10:42
(19) Вы правы! Закомментировала это условие, строчки в ТЧ создались.

(20) Условие все-таки надо вставить, поэтому пишу:

Если ТипЗнч(Строка.СубконтоДт1)=Тип("ПланВидовХарактеристикСсылка.ВидыСубконтоХозрасчетные.Резервы") И ЗначениеЗаполнено(Строка.СубконтоДт1) И НРег(Строка.СубконтоДт1.Наименование)="Оценочные (премия)" Тогда


Выдает сообщение об ошибке, что тип не определен:

Документ.ОтражениеЗарплатыВРеглУчете.Форма.ФормаДокумента.Форма(1697)}: Тип не определен (ПланВидовХарактеристикСсылка.ВидыСубконтоХозрасчетные.Резервы)
           Если ТипЗнч(Строка.СубконтоДт1)=Тип("ПланВидовХарактеристикСсылка.ВидыСубконтоХозрасчетные.Резервы") И ЗначениеЗаполнено(Строка.СубконтоДт1) И НРег(Строка.СубконтоДт1.Наименование)="Оценочные (премия)" Тогда
24 листопад
 
13.09.12
11:34
HELP ME!!!

Строчки в ТЧ опять не добавляются:

Счет96 = ПланыСчетов.Хозрасчетный.РезервыПредстоящихРасходов;
   Счет70 = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда;
   Счет26 = ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы;
   
   НужноеСубконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию("Резервы");
   
   ТабЧасть = ЭтотОбъект.ОтражениеВУчете;
   
   Для каждого Строка Из ТабЧасть Цикл
       
       Если Строка.СчетДт = Счет96 И Строка.СчетКт = Счет70 Тогда
           Если Строка.СубконтоДт1 = НужноеСубконто И НРег(Строка.СубконтоДт1.Наименование)="Оценочные (премия)"  Тогда
               
               Сообщить ("НАШЕЛ!!!");
               
               Проводка = ТабЧасть.Добавить();
               Проводка.СчетДт = Счет26;
               Проводка.СчетКт = Счет70;
               Проводка.СуммаНУ = Строка.Сумма;
               
           КонецЕсли;
       КонецЕсли;
       
   КонецЦикла;
25 листопад
 
13.09.12
11:36
+(24) Т.е. мне надо, чтобы если в ТЧ документа находится проводка Дт96 (субконто "Оценочные (премия)") - Кт70, то создавалась проводка Дт26 - Кт70 с суммой по НУ.
26 листопад
 
13.09.12
11:54
Ап!
27 листопад
 
13.09.12
12:33
UP!
Ну подскажите же, как добавить условие, если проводка в ТЧ:
Дт96 (субконто "Оценочные (премия)") - Кт70 Тогда...
28 sanja26
 
13.09.12
12:53
Может

Если ТипЗнч(Строка.СубконтоДт1) = Тип(НужноеСубконто) И Строка.СубконтоДт1=Справочники.Резервы.НайтиПонаименованию("Оценочные(Премия)")  Тогда
29 листопад
 
13.09.12
14:03
(28) Ошибку выдает:

Тип не определен (Резервы)
Если ТипЗнч(Строка.СубконтоДт1) = Тип(НужноеСубконто) И Строка.СубконтоДт1=Справочники.Резервы.НайтиПонаименованию("Оценочные (премия)")  Тогда
30 sanja26
 
13.09.12
14:56
(29) попробуй оставить только 2-ю часть условия

Строка.СубконтоДт1=Справочники.Резервы.НайтиПонаименованию("Оценочные(Премия)")
31 sanja26
 
13.09.12
14:57
для плана видовХарактеристик ТИп "ВидыСубконто", поэтому ошибка (29)
32 salvator
 
13.09.12
15:01
(29) Че за переменная "НужноеСубконто"?
33 листопад
 
13.09.12
15:11
Всем СПАСИБО! Проблему решила так:


Счет96 = ПланыСчетов.Хозрасчетный.РезервыПредстоящихРасходов;
   Счет70 = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда;
   Счет26 = ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы;
   
   Субконто96 = Справочники.Резервы.НайтиПоНаименованию("Оценочные (премия)");
   Субконто26 = Справочники.СтатьиЗатрат.НайтиПоНаименованию("Зарплата", Истина);
   
   ТабЧасть = ЭтотОбъект.ОтражениеВУчете;
   
   Для каждого Строка Из ТабЧасть Цикл
       
       Если Строка.СчетДт = Счет96 И Строка.СчетКт = Счет70 Тогда
           Если Строка.СубконтоДт1 = Субконто96 Тогда
               Сообщить ("НАШЛА!!!");
               
               Проводка = ТабЧасть.Добавить();
               Проводка.СчетДт = Счет26;
               
               //вот здесь как установить нужное субконто у счета 26
               Если Проводка.СубконтоДт1 = Субконто26 Тогда
                   Сообщить("Нашла субконто!!!");
               КонецЕсли;
               
               Проводка.СчетКт = Счет70;
               Проводка.СуммаНУ = Строка.Сумма;
               
           КонецЕсли;
       КонецЕсли;
       
   КонецЦикла;



Новые строчки в ТЧ - создаются!!! Но теперь, как у счета26 проставить субконто Справочники.СтатьиЗатрат "Зарплата"??? Сейчас это субконто -пустое.
34 salvator
 
13.09.12
15:13
+32
Да и вообще, зачем проверять на заполненность, соответствие типов, если в целом нужно проверить на конкретное значение в субконтоДт1?
Пишите просто
Если Строка.СчетДт = СчетТакойТо И Строка.СчетКт = СчетСякойТо И Строка.СубконтоДт1 = Справочник.МойСправочник.НАйтиПоКоду("11111") Тогда
... создаем проводку...
35 salvator
 
13.09.12
15:15
(33) Есть универсальные процедуры установки субконто. В БП - УстановитьСубконто()
36 sanja26
 
13.09.12
15:19
так 96 или 26?)
37 sanja26
 
13.09.12
15:21
а понял... проверь тип субконтоДт1 после смены счета
38 листопад
 
13.09.12
15:33
(35) В том то и дело, что эта процедура пишется не в БП, а в ЗУП! Поэтому универсальные процедуры для БП - здесь не срабатывают!!!
39 salvator
 
13.09.12
15:37
(38) Я не говорю, что нужно использовать эту процедуру. Вероятно, в ЗУП есть аналогичная.
40 листопад
 
13.09.12
15:40
(39) - я не нашла, поэтому и пишу на форум.
41 sanja26
 
13.09.12
15:47
(40) теперь посмотри в отладчике Проводка.СубконтоДт1
42 листопад
 
13.09.12
15:50
(41) Тема перешла на решение другой проблемы, поэтому я создала новую тему, уже именно по второму вопросу. Там я написала, что в отладчике показывает. Посмотрите, пож-та!!!
v8: ЗУП: программно заполнить субконто в проводке !!!!!