Имя: Пароль:
1C
1С v8
Движения по регистру накопления по подписке
0 Roman Igorevich
 
18.09.12
08:05
Создал новый регистр накопления. Через подписку на два дока добавил движения. Но на ТН движений в итоге нет, хотя через отладку все нужные строки проходит

Процедура ЗатратыПоОбъектамОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
   ТипИсточника = ТипЗнч(Источник.Ссылка);
   Если ЗначениеЗаполнено(Источник.ОбъектСписания) Тогда
       НаборЗаписей = РегистрыНакопления.ЗатратыПоОбъектам.СоздатьНаборЗаписей();
       НаборЗаписей.Отбор.Регистратор.Установить(Источник.Ссылка);
       Движение = НаборЗаписей.Добавить();
       Движение.Объект = Источник.ОбъектСписания;
       Движение.Период = Источник.Дата;
       Движение.Регистратор = Источник.Ссылка;
       Если ТипИсточника = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
           Движение.Сумма = Источник.Услуги.Итог("Сумма");
       ИначеЕсли ТипИсточника = Тип("ДокументСсылка.ТребованиеНакладная") Тогда
           ХозДвижения = Источник.Движения.Хозрасчетный;
           ОбщаяСумма = 0;
           Для Каждого Строка из ХозДвижения Цикл
               ОбщаяСумма = ОбщаяСумма + Строка.Сумма;
           КонецЦикла;
           Движение.Сумма = ОбщаяСумма;
       КонецЕсли;
       НаборЗаписей.Записать();
   КонецЕсли;
КонецПроцедуры
1 Roman Igorevich
 
18.09.12
08:06
По ТУ движение есть.
2 rbcvg
 
18.09.12
08:08
Что есть ТН и ТУ?
3 Roman Igorevich
 
18.09.12
08:09
ПоступлениеТоваровУслуг
ТребованиеНакладная
4 golden-pack
 
18.09.12
08:31
(3) вот лол
5 golden-pack
 
18.09.12
08:34
ПТиУ, РТиУ, ТН - вот верные сокращения
6 Roman Igorevich
 
18.09.12
08:39
http://s3.hostingkartinok.com/uploads/images/2012/09/17b460e2824fd21df80157a6452d24c8.jpg

вот так выглядит отладка, когда провожу тн, а в итоге движений Нет)
7 ОбычныйЧеловек
 
18.09.12
09:01
(6) Подписка на соьытие "обработка проведения" ? Других подписок случайно нету - которые затирают добавленые тобой движения? И вообще конфа у тебя какая?
8 Roman Igorevich
 
18.09.12
09:10
Подписка на обработку проведения. Подписка еще одна есть - но она на проводки доков по Ндс, не пересекается. Конфигурация бухгалтерия 2.0.39.6 - с добавленым справочником объектов, в т.ч. на формы ПТиУ и ТН.
9 ОбычныйЧеловек
 
18.09.12
09:21
(8) >> но она на проводки доков по Ндс, не пересекается.
Не совсем понятно зачем плодить подписки, ну да ладно... Поставь точку останова в твоем дабавленоом регистре в событие "ПередЗаписью" и посмотри стек вызовов в момент когда движение еще есть и в момент когда его уже нету - сразу все станет ясно.
10 Roman Igorevich
 
18.09.12
09:39
При отладке с точки в ПередЗаписью интересная разница между ПТиУ и ТН. Первый док переходит в типовые процедуры вроде "ПередЗаписьюРегистраНакопленийПроверкаДоступностиПериода" и так далее, а ТН молча проходит конецпроцедуры.
11 ОбычныйЧеловек
 
18.09.12
09:46
(10) если при отладке в регистре в поцедуре "ПередЗаписью" система не показывает тебе стек вызовов - значит у тебя в документе ТН стоит запись всех регистров по умолчанию т.е. записывать регистры после проведения автоматически (1с-ки под рукой нету - не помню как синтаксис на память)
12 Roman Igorevich
 
18.09.12
09:48
А так в стеке ни одной процедуры не появляется кроме обработки моей и ПередЗаписью. потом еще второй раз срабатывает точка останова, но там мне не ясен источник - в стеке лишь одна строка ПередЗаписью, но тоже самое правда и с ПТиУ, потому врядли проблема в этом
13 Roman Igorevich
 
18.09.12
10:14
Пока не нашел такого параметра, так то я его явно не изменял)
14 Roman Igorevich
 
18.09.12
10:21
Заработало. Изменил код на:

Процедура ЗатратыПоОбъектамОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
   ТипИсточника = ТипЗнч(Источник.Ссылка);
   Если ЗначениеЗаполнено(Источник.ОбъектСписания) Тогда
       Движение=Источник.Движения.ЗатратыПоОбъектам.Добавить();
       //НаборЗаписей = РегистрыНакопления.ЗатратыПоОбъектам.СоздатьНаборЗаписей();
       //НаборЗаписей.Отбор.Регистратор.Установить(Источник.Ссылка);
       //Движение = НаборЗаписей.Добавить();
       Движение.Объект = Источник.ОбъектСписания;
       Движение.Период = Источник.Дата;
       Движение.Регистратор = Источник.Ссылка;
       Если ТипИсточника = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
           Движение.Сумма = Источник.Услуги.Итог("Сумма");
       ИначеЕсли ТипИсточника = Тип("ДокументСсылка.ТребованиеНакладная") Тогда
           ХозДвижения = Источник.Движения.Хозрасчетный;
           ОбщаяСумма = 0;
           Для Каждого Строка из ХозДвижения Цикл
               ОбщаяСумма = ОбщаяСумма + Строка.Сумма;
           КонецЦикла;
           Движение.Сумма = ОбщаяСумма;
       КонецЕсли;
       //НаборЗаписей.Записать();
   КонецЕсли;
КонецПроцедуры  


Пожалуйста, объясните, в чем разница и почему теперь все работает?
15 ОбычныйЧеловек
 
18.09.12
13:23
(14) Разница в обработке проведения твоих документов (в поступление один подход в требовании другой) - если внимательно посмотришь код обработки проведения то сразу поймешь в чем дело.