|
Нет движения по регистрам из общего модуля | ☑ | ||
---|---|---|---|---|
0
MAPATNK2
naïve
05.12.18
✎
08:31
|
Всем добрый день. УПП 1.3.
Процедура ЗаратыПоКурсовымРазницамПриЗаписи(Источник, Отказ) Экспорт СуммаДенежныеСредства=0; Запрос = новый запрос; Запрос.Текст = "ВЫБРАТЬ | ДенежныеСредства.СуммаУпр КАК СуммаУпр |ИЗ | РегистрНакопления.ДенежныеСредства КАК ДенежныеСредства |ГДЕ | ДенежныеСредства.Регистратор = &ДокументРегистратор"; Запрос.УстановитьПараметр("ДокументРегистратор", Источник.Ссылка); Результат = Запрос.Выполнить().Выгрузить(); Результат.Свернуть(,"СуммаУпр"); Если результат.Количество()> 0 тогда СуммаДенежныеСредства =Результат[0].СуммаУпр*(-1); КонецЕсли; Запрос1 = новый запрос; Запрос1.Текст = "ВЫБРАТЬ | ВзаиморасчетыСКонтрагентами.СуммаУпр |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами |ГДЕ | ВзаиморасчетыСКонтрагентами.Регистратор = &Регистратор"; Запрос1.УстановитьПараметр("Регистратор", Источник.Ссылка); Результат1 = Запрос1.Выполнить().Выгрузить(); Результат1.Свернуть(,"СуммаУпр"); Если Результат1.Количество()> 0 тогда НаборЗаписей = РегистрыНакопления.Затраты.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Источник.Ссылка); Если результат1[0].СуммаУпр<0 тогда Движение = НаборЗаписей.ДобавитьПриход(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Сумма =Результат1[0].СуммаУпр*(-1)+СуммаДенежныеСредства; Иначе Движение = НаборЗаписей.ДобавитьРасход(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Сумма =Результат1[0].СуммаУпр+СуммаДенежныеСредства; КонецЕсли; Движение.Регистратор = Источник.Ссылка; Движение.Период = Источник.Дата; Движение.Подразделение = Источник.Подразделение.Ссылка; Движение.СтатьяЗатрат = Справочники.СтатьиЗатрат.НайтиПоКоду("БП0000067"); Движение.КодОперации=перечисления.КодыОперацийЗатраты.СписаниеРасходовНаПродажу; НаборЗаписей.Записать(); КонецЕсли; КонецПроцедуры Делаю так в общем модуле, подписка на событие (ПриЗаписи) документа ПереоценкаВалютныхСредств. Если я положу данную процедуру в модуль формы - всё отлично записывается, но когда я запихиваю это дело в подписку на событие никакого движения по регистру не происходит. Я в отладчике смотрю - всё великолепно, считает как надо, записывает. А после записи документа заходишь в регистр - нет ничего. Что делать? |
|||
1
НЕА123
05.12.18
✎
09:02
|
(0)
ПриЗаписи - оно такое (с). |
|||
2
MAPATNK2
naïve
05.12.18
✎
09:11
|
(1) и какие варианты есть?
|
|||
3
НЕА123
05.12.18
✎
09:20
|
(2)
>Если я положу данную процедуру в модуль формы - всё отлично записывается это правда? |
|||
4
MAPATNK2
naïve
05.12.18
✎
09:22
|
По факту мне необходимо после проведения документа ПереоценкаВалютныхСредств добавитьдвижение этого документа по регистру Затрат. (Требование руководства). Когда я на форму "После записи" записал данную процедуру - работало всё хорошо, а вот когда решил данную процедуру повесить в общий модуль в подписк на событие, движение перестало происходит. Я думаю проблема заключается в том, что т.к. добавлено в документе движение по регистру затраты, после выполнения подписки на событие он создает пустое движение и пеерзаписывает строку регистра накоплений на пустое значение.
|
|||
5
MAPATNK2
naïve
05.12.18
✎
09:22
|
(3) да
|
|||
6
НЕА123
05.12.18
✎
09:42
|
(4)
ничего он в РН Затраты не пишет (похоже). СП призаписи Описание: Возникает при записи объекта. Процедура-обработчик вызывается после записи объекта в базу данных, но до окончания транзакции записи. |
|||
7
MAPATNK2
naïve
05.12.18
✎
09:44
|
(6) Я отладчиком иду, НаборЗаписей.Записать() всё хорошо, после тоже никаких ошибок не выдает. Черт знает в чем пробелма, второй день уже долблю.
|
|||
8
zuza
05.12.18
✎
09:49
|
(7) А других подписок для этого документа нет?
|
|||
9
MAPATNK2
naïve
05.12.18
✎
09:52
|
(8)нет
|
|||
10
catena
05.12.18
✎
09:52
|
(7)Может быть потому, что ПриЗаписи отрабатывает до обработки проведения?
https://its.1c.ru/db/pubdevguide83/content/612/hdoc |
|||
11
НЕА123
05.12.18
✎
09:52
|
(8)
ПослеЗаписи у объект нет. |
|||
12
loololool
05.12.18
✎
09:54
|
Мне что-то подсказывает, что автор создаёт не движения, а набор записей, т.е. после окончания транзакции - его набор записи перетирается подготовленными к записи движениями.
|
|||
13
loololool
05.12.18
✎
09:55
|
А подготовленные движения - пусты.
|
|||
14
MAPATNK2
naïve
05.12.18
✎
10:00
|
(13) Ну я про то же и писал выше. Как этого избежать?
|
|||
15
MAPATNK2
naïve
05.12.18
✎
10:01
|
В общем тут просто вопрос, как вызвать процедуру после записи объекта?
|
|||
16
ZDenis
05.12.18
✎
10:06
|
(15) А в модуле объекта в "ОбработкуПроведения" добавить свои записи в регистры уже не гламурно?
|
|||
17
loololool
05.12.18
✎
10:20
|
(16) Это всегда было овнокодерство
(14) Записывать движения в Источник.Движения |
|||
18
MAPATNK2
naïve
05.12.18
✎
10:21
|
(16) Да нужно было после записи вызывать данную процедуру а не во время. Ну ладно уж, думал можно так, коль нет, буду "Гламурно" делать.
|
|||
19
MAPATNK2
naïve
05.12.18
✎
10:21
|
Всем спасибо
|
|||
20
loololool
05.12.18
✎
10:23
|
В отдельных конфах были замечены некие временные таблицы для движений, передающиеся в модуль менеджера регистра. Т.е. модуль менеджера перезаписывать Движения из данных временной таблицы, но это не точно.
|
|||
21
Windyhead
05.12.18
✎
10:40
|
(17)По мне так, движения в подписках это говнокодерство.
уж лучше красиво встроиться в модуль объекта и в модуль менеджера объекта. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |