Имя: Пароль:
1C
1С v8
Перепроведение документов
, , ,
0 Budulay2018
 
11.05.16
12:03
Здравствуйте.
Можно ли запретить документу формировать движения в определенных регистрах?  Т.е. оставить в настройке документа "Движения" только нужные мне регистры, перепровести и вернуть всё взад)
Ну, и чем мне это грозит, как обычно. Извините, за возможно глупый вопрос
1 FIXXXL
 
11.05.16
12:09
(0) обработкой записи формируй и подменяй где надо
2 catena
 
11.05.16
12:09
(0)И еще код подчистить, который делает движения в этих регистрах.
Проще программно почистить движения в этих регистрах?
Грозит - восстановлением движений при перепроведении.
3 Budulay2018
 
11.05.16
12:21
(2) Т.е. если убрать регистры в настройках и оставить в модуле, то движения в этих регистрах все равно будут формироваться?
4 catena
 
11.05.16
12:34
(3)Нет, проведение будет вылетать с ошибкой.
5 Budulay2018
 
11.05.16
12:36
(4) Понятно. Спасибо
6 mehfk
 
11.05.16
12:38
(0) Перепроведи на копии, а потом обработкой ВыгрузкаЗагрузкаДанныхXML82.epf перенеси.
7 PR пять
 
11.05.16
12:39
(0) :)))
Прикидывал, что выложу эту обработку в магазин (бесплатно) одной из первых :))
Общая идея простая: в транзакции проводится документ, копируются нужные движения в ТЗ, транзакция отменяется, движения пишутся в движения.
8 catena
 
11.05.16
12:43
(7)Я уже выкладывала подобную обработку...
9 PR пять
 
11.05.16
12:44
(8) Куда, на ИСу?
10 catena
 
11.05.16
12:49
(9)Проверила - оказывается наврала, только предпросмотр выкладывала (да, на ИС). По той же схеме: транзакция, чтение движений, отмена транзакции. Еще в 2012 году))
11 Budulay2018
 
11.05.16
13:22
(7) Полезная штуковина была бы)
12 catena
 
11.05.16
13:34
(11)
Процедура ПровестиПоРегистру(ДокСсылка, ИмяРегистра, ТипРегистра)  Экспорт
    ДокОбъект = ДокСсылка.ПолучитьОбъект();

    НачатьТранзакцию();

    Если ИмяРегистра<>"Типовой" Тогда
        ПроставитьСтатусПроводок(ДокОбъект,Перечисления.СостоянияДокументов.ПустаяСсылка());
    КонецЕсли;    
    
    ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
    ДокОбъект.Движения[ИмяРегистра].Прочитать();
    ТаблицаДвиженийРегистра = ДокОбъект.Движения[ИмяРегистра].Выгрузить();

    ОтменитьТранзакцию();

    Если ТипРегистра = "РегистрыСведений" Тогда
        НаборЗаписей = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей();
    ИначеЕсли ТипРегистра = "РегистрыНакопления" Тогда    
        НаборЗаписей = РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей();
    ИначеЕсли ТипРегистра = "РегистрыБухгалтерии" Тогда    
        НаборЗаписей = РегистрыБухгалтерии[ИмяРегистра].СоздатьНаборЗаписей();
    ИначеЕсли ТипРегистра = "РегистрыРасчета" Тогда    
        НаборЗаписей = РегистрыРасчета[ИмяРегистра].СоздатьНаборЗаписей();
    Иначе
        Возврат;
    КонецЕсли;    
    НаборЗаписей.Отбор.Регистратор.Установить(ДокСсылка);
    НаборЗаписей.Загрузить(ТаблицаДвиженийРегистра);
    НаборЗаписей.Записать();
КонецПроцедуры
13 Serg_1960
 
11.05.16
13:42
Эээ... конфигурация, как всегда не озвучена :(

Если в конфигурации используется РАУЗ, то алгоритма (12) недостаточно. При проведении документа по регистрам РАУЗа надо ещё "отслеживать" создание новых ключей аналитики.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.