Имя: Пароль:
1C
 
УТ10: Как получить таблицу движений регистра во время проведения.
0 Кокос
 
08.06.11
08:58
Вобщем допустим есть движения документа по регистру взаиморасчетов. На основании этого регистра нужно сделать движения по другому новому регистру. В Партиях товара есть переменная мТаблицаДвижений. А мне досталась по наследству база где проводки по ВзаиморасчетыСКонтрагентами делаются по другой схеме и эта таблица уже не используется. Сам конечно докопаюсь, ну или на крайняк забью эту таблицу, но может знает кто? Побыстрее хочется :)
1 ДенисЧ
 
08.06.11
08:58
ДокументОбъект.<Имя документа>.Движения (DocumentObject.<Имя документа>.RegisterRecords)
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
Движения (RegisterRecords)
Использование:

Только чтение.
Описание:

Тип: КоллекцияДвижений. Предоставляет доступ к коллекции наборов записей движений документа. Свойства коллекции содержат наборы записей движений документа, которые включены для данного документа в конфигурации. Имена свойств совпадают с именами объектов конфигурации, по которым могут совершаться движения, как они заданы в конфигураторе.

Доступность:

Сервер, толстый клиент, внешнее соединение.
2 Кокос
 
08.06.11
08:59
(1) вроде уже пробовал и до закрытия документа в ОбработкаПроведения там вроде ничего нет. сейчас гляну еще раз может что пропустил
3 Кокос
 
08.06.11
10:38
вроде отработало. Но почемуто движения в Реализации по ПартииТоваровНаСкладах в момент проведения отсутствуют. Я видимо из-за них и застопорился. По всем другим регистрам движения есть а по этому нет. Причем в поступлении все ок, нет движений именно в реализации. Хотя после записи документа открываю его движения и они в таблице присутствуют.
4 Кокос
 
08.06.11
10:40
(1) то бишь ситуевина. когда Проводка.Регистр = "ВзаиморасчетыСКонтрагентами" то движения ловятся и все норм. А когда "ПартииТоваровНаСкладах то все пусто и в мТаблицаДвижений и просто в Движения. Оба проверял в отладке. Хотя при проведении других документов по этому регистру все ок.
               
ТаблицаПроводок = ДокОбъект.Движения[Проводка.Регистр].мТаблицаДвижений;
               Если НЕ ЗначениеЗаполнено(ДокОбъект.Движения[Проводка.Регистр].мТаблицаДвижений) Тогда
                   ТаблицаПроводок = ДокОбъект.Движения[Проводка.Регистр];
               КонецЕсли;    
               ///ТаблицаПроводок = ДокОбъект.Движения[Прово
               НаборДвижений = ДокОбъект.Движения.УправленческийПланСчетов;
               Для Каждого СтрокаПроводки Из ТаблицаПроводок Цикл
5 hhhh
 
08.06.11
10:42
(4) ну, типа по регистру ПартииТоваровНаСкладах пишете через СоздатьНаборЗаписей(), не оно?
6 Кокос
 
08.06.11
10:44
(5) а можно по подробнее? просто в я регистр ничего не пишу. Пишет УТ10. я просто таблицу движений в конце ОбработкаПроведения не вижу в РеализацииТоваровУслугу. А в поступлениитоваровуслуг вижу. Проводки по другим регистрам вижу в ОбработкаПроведения во всех других документах.
7 Кокос
 
08.06.11
10:46
НаборЗаписей = РегистрыНакопления.ДопРасходыНаПриобретениеТоваров.СоздатьНаборЗаписей();
аборЗаписей.Отбор.Регистратор.Установить(Документ);
       ТаблицаДвижений = НаборЗаписей.Выгрузить();

это нашел в общих модулях. Попробовать чтоли?
8 hhhh
 
08.06.11
10:48
(6) ну если УТ пишет через Движения.ПартииТоваровНаСкладах, то естественно сразу видишь. А если

Набор = Регистры.ПартииТоваровНаСкладах.СоздатьНаборЗаписей()

то естественно в таблице Движения ничего и не увидишь, пока не перечитаешь из базы.
9 Кокос
 
08.06.11
10:49
(8)        
ТаблицаПроводок = ДокОбъект.Движения[Проводка.Регистр].мТаблицаДвижений;
               Если НЕ ЗначениеЗаполнено(ДокОбъект.Движения[Проводка.Регистр].мТаблицаДвижений) Тогда
                   ТаблицаПроводок = ДокОбъект.Движения[Проводка.Регистр];
               КонецЕсли;
               Если ТаблицаПроводок.Количество() = 0 Тогда
                   НаборЗаписей = РегистрыНакопления[Проводка.Регистр].СоздатьНаборЗаписей();
                   НаборЗаписей.Отбор.Регистратор.Установить(Докобъект);
                   ТаблицаПроводок = НаборЗаписей.Выгрузить();
КонецЕсли;    

блин... не помогло. видимо записи еще не произошло. В послезаписи чтоли ловить?
10 Maxus43
 
08.06.11
10:49
>>А когда "ПартииТоваровНаСкладах то все пусто и в мТаблицаДвижений и просто в Движения

Через подписки на события если пишет - то и не увидиш в модуле документа их, на сервере ловить надо, в общих модулях
11 Кокос
 
08.06.11
10:51
(10) то бишь самому в подписках делать. А в какой подписке все это делается? пойду искать. эх. век живи век учись
12 Maxus43
 
08.06.11
10:52
(11) в УТ незнаю. самый лёгкий способ отловить - в регистре перед записью точку останова и стэк вызовов смотреть
13 mikecool
 
08.06.11
10:53
использовать подписку ПередЗаписью/ПриЗаписи у набора записей регистра
14 Кокос
 
08.06.11
11:03
(12) в регистре не отлавливается. вернее отлавливается. туда заходит пишет все ок но движений нет. пошел смотреть подписки.
15 Родной
 
08.06.11
11:05
Мне кажется в Вашем случае лучше воскользоваться подпиской на событие.
16 Maxus43
 
08.06.11
11:07
(14) движения в ЭтотОбъект, когда точка останова в регистре. И я ж говорю - стэк вызовов смотри, покажет откуда пишет
17 Кокос
 
08.06.11
11:12
(15) пока этот регистр даже подпиской не ловится. прохожу циклом смотрю этот регистр вообще не показывает. пробую короче. О. Прикольно. Вроде поймал.

(16) не ловится в модуле регистра. Вернее ловится но движений нет. В подписках в параметре Источник есть.
18 Maxus43
 
08.06.11
11:13
(17) >Вернее ловится но движений нет
Первый раз он очищает регистр, пустые записывает, если перепроведение. может потому и не видиш? чудес не бывает
19 Кокос
 
08.06.11
11:14
(18) и первый и второй раз нет. смотрел по стеку вызовов
20 Кокос
 
08.06.11
11:14
(18) и мне подписка по любому выгоднее. теперь не надо вызов процедуры из каждого документа вставлять
21 ICWiner
 
08.06.11
11:20
А еще, возможно, у вас движения по партиям идут не при проведении документа, а отдельной обработкой... Смотри галочку, вроде, в учетной политике - списывать партии при проведении.
22 Кокос
 
08.06.11
11:50
(21) там помоему "СписыватьПартииПриходнымОрдером", точно не помню. Но я ее никогда не ставлю. У меня у каждого клиента стоит партионный учет
23 Кокос
 
08.06.11
11:51
Всем спасибо. Отработало.
24 ICWiner
 
08.06.11
22:49
(22) Вы про галочку в настройках параметров учета, а не учетной политике... Раз отработало, значит галочка списывать партии при проведении стоит