Имя: Пароль:
1C
1С v8
где могут формироваться движения документа
,
0 kathleen
 
26.02.16
14:12
Помогите, кто-нибудь. Документ формирует движения по нескольким регистрам,но я не могу найти это в коде. По некоторым из них все ок, ставлю точку останова на КонецПроцедуры обработкаПроведения(), вызываю движения и вижу по ним таблицу движения. По другим только <> и пустая таблица, однако после проведения движения заполнены. Подскажите, где искать?
1 Господин ПЖ
 
26.02.16
14:13
в подписке допустим
2 Волшебник
 
модератор
26.02.16
14:13
поставь точку останова в модуле набора записей регистра и посмотри стек вызовов
3 kathleen
 
26.02.16
14:17
(2)Ага, сейчас попробую, а что значит посмотреть стек вызовов?
4 ИС-2
 
naïve
26.02.16
14:19
в меню отладка
5 Михаил Козлов
 
26.02.16
14:22
Движения (например, по РН ПартииТоваровНаСкладах или ПродажиСебестоимость) могут формироваться "извне" (модуль УправлениеЗапасамиУправленческийУчет) и в коллекции движений Вы их не увидите (пока не прочитаете).
6 kathleen
 
26.02.16
14:34
(2)Остановился передзаписью() только вызов функции ОбщегоНазначения.УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ)
7 vde69
 
26.02.16
14:40
у меня вообще все движения формируются в модуле менеджера документа по ссылке (без объекта) и соответственно в коллекции движений объекта появятся только после чтения колекции....
8 kathleen
 
26.02.16
14:59
помогите, куда еще копать?
9 ObjectRelation Model
 
26.02.16
15:01
(7) а у меня в модуле набора записей одного регистра формируется набор записей другого регистра
10 ObjectRelation Model
 
26.02.16
15:01
+(9) тем самым код записи движений собран в одном месте, а не разбросан по документам
11 kathleen
 
26.02.16
15:05
(10)но точка останова ПередЗаписью в модуле набора записей все равно же должна срабатывать?
12 vde69
 
26.02.16
15:18
(11) объясняю

коллекция движений содержит кроме самих данных еще и флаг "Использовать" (или похожий, точно не помню)...

где-то в недрах проведения я пишу прямо в регистр "ПартииТМЦ" а в Движения.ПартииТМЦ.Использовать ставлю в ЛОЖЬ

при этом в конце модуля проведения движения будут пустые а регистр будет с данными, и фиксация транзакции не затрет ничего нужного....
13 vde69
 
26.02.16
15:22
(12) чем это удобно

1. Восстановление движений и последовательности без перезаписи документа (документ не попадает в обмены, проще с датой запрета редактирования и т.д.)
2. Фоновые операции, роботы и т.д. не требуют прав на запись документа, только регистры....
3. лог 1с содержит только явные записи документа, простое перепроведение туда не попадает
14 vde69
 
26.02.16
15:24
(13)+
4. возможно формировать движения к непроведенному документы
5. удобно реализовывать проведение по статусу
6. блокировки только на записываемый регистр (да можно проводить только по выбраному регистру)
15 Cyberhawk
 
26.02.16
15:25
"где-то в недрах проведения я пишу прямо в регистр "ПартииТМЦ"" // Имеешь в виду создание независимого набора записей (через менеджер регистра и СоздатьНаборЗаписей()) и подкладывание его под ссылку-регистратор?
16 vde69
 
26.02.16
15:26
(15) да... работает на ура!
17 kathleen
 
29.02.16
15:37
ну подскажите еще наводку какую-нибудь, точки останова нигде не срабатывают, ни в модуле набора записей ПередЗаписью(), ни в подписке при записи регистров, где искать?
18 kathleen
 
29.02.16
15:37
такое ощущение, что где-то вне конфигурации записи формируются
19 Sergz66
 
29.02.16
15:56
(18)Отладка-то включена?
20 INT
 
29.02.16
15:59
(5) Тоже долго возился с ПродажиСебестоимость. Автор проверь этот вариант)
21 hhhh
 
29.02.16
16:03
(18) поищите СоздатьНаборЗаписей() этого регистра в общих модулях где-нибудь
22 samozvanec
 
29.02.16
16:04
(18) глобальным поиском можно поискать
23 vde69
 
29.02.16
16:08
перед записью - включаешь замер производительности
после записи - останавливаешь

текст копируешь в блокном и поиском ищешь имя регистра
24 kathleen
 
29.02.16
16:09
(20)но в модуле набора записей должно же остановиться? Я уже в процедура в этом общем модуле кучу точек наставила.
25 kathleen
 
29.02.16
16:10
(23)А как включить замер производительности?
26 hhhh
 
29.02.16
16:11
(24) может у вас отладка на сервере выключена
27 vde69
 
29.02.16
16:13
28 kathleen
 
29.02.16
16:13
(26)другие точки срабатывают. например ставлю точку в конец обработкапроведения, захожу в движения по трем регстрам вижу, по трем нет.
29 kathleen
 
29.02.16
16:15
ПередЗаписью() в этих регистрах срабатывает только на строку удаления движений по регистратору, вообще странно, потом по идее он где-то записывает новые и должно снова сработать, но нет же
30 vde69
 
29.02.16
16:17
(29) перед записью - в ДОКУМЕНТЕ !!!!
31 kathleen
 
29.02.16
16:21
(30)и после записи в документе? Сейчас проверю
32 kathleen
 
29.02.16
16:23
(30) после записи нету, при записи может?
33 vde69
 
29.02.16
16:25
(32) при записи будет не честно, по тому как подписки отрабатывают позже, а вот после записи - гарантировано ЗА транзакцией...

на тестовой добавь процедуру и проверь
34 hhhh
 
29.02.16
16:33
(32) если ставите точку в конец обработкапроведения, то сама запись в регистр происходит после конецПроцедуры обработки проведения. Правильно, что вы ее не видите.
35 vde69
 
29.02.16
16:41
я как то тоже долго искал сабж... оказалось регистр накопления писался в модуле расчета начислений прямой записью... это круче чем подписки.... отладчик туда не сам заходит, только если принудительно точку остановки там ставить :)
36 kathleen
 
29.02.16
16:43
Блииин, кажись дело и самом деле в отключенной на сервере отладке, обратились к админу, теперь точки стали срабатывать. Впервые просто довелось с клиент-серверной работать. Может и найду сейчас.