|
Добавление движений по своему регистру "при записи" типового регистра | ☑ | ||
---|---|---|---|---|
0
Timqsh
31.07.13
✎
20:22
|
Платформа 8.2. Конфигурация 1С:Бухгалтерия редакция 2.0.
Имеется задача при проведении типовых документов создавать набор движений по своему добавленному регистру бухгалтерии "управленческий". При этом движения по нашему "Управленческому" и типовому "Хозрасчетному" могут немного отличаться, но в рамках данной темы будем считать, что они одинаковы. Есть 2 пожелания к решению: 1) Минимальные изменения в конфигурации 2) Максимальная масштабируемость по количеству возможных регистраторов (документов) Первая пришедшая в голову мысль - добавлять записи по новому регистру подпиской на событие "При записи" набора записей "Хозрасчетного". Код выглядит так: Процедура ПроводкиПоХозрасчетномуПриЗаписи(Источник, Отказ, РежимЗаписи) Экспорт Источник = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); Источник.Отбор.Регистратор.Установить(Регистратор); Источник.Прочитать(); Регистратор = Источник.Отбор.Регистратор.Значение; НаборЗаписей = РегистрыБухгалтерии.Управленческий.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Регистратор); Для Каждого Проводка Из Источник Цикл Движение = НаборЗаписей.Добавить(); Движение.Регистратор = Регистратор; Движение.Активность = Истина; Движение.Период = Регистратор.Дата; Движение.СчетДт = Проводка.СчетДт; Движение.СчетКт = Проводка.СчетКт; //Добавить Сч Дт,Кт, все субконто, измерения, ресурсы, реквизиты //сделать необходимые изменения Движение.Сумма = Проводка.Сумма; КонецЦикла; НаборЗаписей.Записать(); Сообщить("тест"); КонецПроцедуры Код рабочий, во внешней обработке например движения добавляет. Проблема: После окончания проведения документа и после записи проводок по хозрасчетному (где моя подписка добавляет нужные мне записи) идет запись пустого набора движений документа по регистру "Управленческий". Проверял отладчиком по событию "При записи" моего регистра "Управленческий". Поскольку все происходит в одной транзакции, это перебивает все мои усилия. В редакции 2.0 Бухгалтерии большинство документов имеют свойство "Запись движений" = "Записывать модифицированные". В конце типовой процедуры проведения документа по непонятной для меня причине Движения.Управленческий.Модифицированность() = Истина (регистр новый, весь код проведения типовой!!!) Перечислять все возможные способы обойти эту проблему, которые я пробовал не буду, т.к. это надолго и ни один не дал удовлетворительного результата. Если можете подсказать решение буду рад. Ну или если местные гуру скажут, что решения оптимальнее подписки на проведение всех документов, с которыми необходимо работать в данном случае не существует, то хоть совесть успокою =) |
|||
1
Timqsh
31.07.13
✎
20:26
|
Извиняюсь, скопипастил код из тестовой обработки а не из обработчика. Первые 3 строки после начала процедуры нужно удалить.
|
|||
2
MrStomak
31.07.13
✎
20:46
|
можно попробовать так: создать дополнительное свойство:
НаборЗаписей.ДополнительныеСвойства.Вставить("ЩасНадоПисать",Истина); Перед записью своего регистра проверять наличие дополнительного свойства, и если его нет, то ставить режим замещения = Ложь, т.е. запись документа будет дополнять пустым набором записанный тобой набор. |
|||
3
Timqsh
31.07.13
✎
21:08
|
Процедура ПередЗаписью(Отказ, Замещение)
Попытка Если ЭтотОбъект.ДополнительныеСвойства.ИзПодписки = Истина Тогда //ок Иначе //не ок Замещение = Ложь; КонецЕсли; Исключение //не ок Замещение = Ложь; КонецПопытки; КонецПроцедуры Такой код мне пока не помогает. Или я не правильно ставлю режим замещения? |
|||
4
Maxus43
01.08.13
✎
17:27
|
у докмента режим какой? "Удалять автоматически" движения?
|
|||
5
Timqsh
01.08.13
✎
17:40
|
О, появилась возможность писать в теме =)
Модераторы, вторую тему можно удалить. (4) "Не удалять автоматически" стоит |
|||
6
Ахиллес
01.08.13
✎
17:43
|
Я так понимаю моего вопроса ты не видел, поэтому:
Процедура ПроводкиПоХозрасчетномуПриЗаписи(ИСТОЧНИК, Отказ, РежимЗаписи) Экспорт ИСТОЧНИК= РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); Что такое Источник? |
|||
7
hhhh
01.08.13
✎
17:45
|
(5) ну, так
НаборЗаписей = Источник.Управленческий; |
|||
8
hhhh
01.08.13
✎
17:45
|
НаборЗаписей = Источник.Движения.Управленческий;
|
|||
9
Ахиллес
01.08.13
✎
17:45
|
Хрен, там. Источник в этих подписках это ДокументОбъект скорее всего, а ты его переопределяешь на набор записей.
Кароче, Склифасовский, придумай другое название для переменной набора записей. |
|||
10
Euguln
01.08.13
✎
17:45
|
1. Подписывайся на проведение документа.
2. Если это типовая, то нужно лезть в процедуру удаления движений, она присваивает признак модифицированности. |
|||
11
hhhh
01.08.13
✎
17:46
|
(9) почитай (1)
|
|||
12
Timqsh
01.08.13
✎
17:53
|
(10) Да пока на пункте 1. и остановился, только тогда столько подписок сколько документов используется. Хотелось бы меньшего количество добавляемых метаданных.
Пункт 2. это получается изменения кучи типовых документов, мне не подойдет. |
|||
13
Timqsh
01.08.13
✎
17:55
|
(8) Источник в подписке на изменения набора записей хозрасчетного - набор записей хозрасчетного.
|
|||
14
Euguln
01.08.13
✎
17:57
|
(12)Обна подписка на тип данных ДокументСсылка.
Процедура удаления в общем модуле ОбщегоНазначения. |
|||
15
Euguln
01.08.13
✎
17:59
|
(14) Одна подписка на тип ДокументОбъект ))
|
|||
16
Ахиллес
01.08.13
✎
18:03
|
(12) Не надо много подписок, достаточно на документОбъект, а внутри своего модуля проверяй тип документа.
А набор всё равно читать придётся, первые три строки почти правильные у тя в (0) |
|||
17
Timqsh
01.08.13
✎
18:04
|
(15) Сейчас доберусь до компа попробую оба варианта.
Даже не думал что можно подписаться на проведение любого документа. Если смогу там получить его набор движений по Хозрасчетному и сформировать движения по моему регистру то будет то что надо. |
|||
18
Timqsh
02.08.13
✎
15:29
|
Сделал что хотел подпиской на ДокументОбъект. Спасибо Euguln и Ахиллес.
Единственная мелочь - документ "бух операция" автоматически не дублирует, а если б взлетел мой способ из начала темы то дублировал бы) Но это не существенно. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |