Имя: Пароль:
1C
1С v8
Документ проводится программно, а проводок нет
0 PCcomCat
 
13.03.15
10:19
Доброго времени, уважаемые!

Столкнулась с проблемой: в подписке на событие проведения документа "Реализация товаров и услуг"создаю и провожу документ "Перемещение товаров". Созданный документ получается с признаком проведен, но проводок нет. При проведении его через контекстное меню проводки появляются.
Причем в этом же документе "Реализация товаров и услуг" я программно создаю еще один документ "ПКО" и провожу его, и там с проводками всё в порядке.

Подскажите, куда копать? Раньше подобных проблем не возникало.

Провожу так:     ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
1 mikecool
 
13.03.15
10:21
не указан необходимый реквизит
2 Господин ПЖ
 
13.03.15
10:22
>Подскажите, куда копать?

в отладчик
3 Kerk
 
13.03.15
10:22
Точка отладки в процедуре ОбработкаПроведения ставил в неизвестной конфигурации на неизвестной платформе?
4 GROOVY
 
13.03.15
10:23
Посмотри в отладке, видать где-то грохаются движения.
5 piter3
 
13.03.15
10:23
сделай записать,а после при проведении руками возможно напишет ошибки в доке
6 PCcomCat
 
13.03.15
10:24
(3)В отладчике проходит процедуры формирования движений.
7 PCcomCat
 
13.03.15
10:24
+ (0) БП 2.0.63.7 на 8.2.19.83
8 PCcomCat
 
13.03.15
10:27
(6)Я же говорю: не пишет ошибок - проводит!
9 kosts
 
13.03.15
10:27
(0) Может перемещение основывается на движения реализации, которых в этот момент еще нету?...
10 PCcomCat
 
13.03.15
10:30
(9) Нет, мне нужно, чтобы вместо реализации с видом операции "Отгрузка без перехода права собственности" было перемещение товаров на другой склад (он указан).
11 GROOVY
 
13.03.15
10:35
(6)  Движения есть?
12 D_E_S_131
 
13.03.15
10:40
Может код формирования этого Перемещения посмотрим, если не секрет?
13 PCcomCat
 
13.03.15
10:41
(11) Смотрю в отладчике: новую проводку создает, заполняет. Сейчас посмотрю, что в конце выходит.
14 PCcomCat
 
13.03.15
10:41
(12) Да пожалуйста:

Если Источник.ВидОперации=Перечисления.ВидыОперацийРеализацияТоваров.ОтгрузкаБезПереходаПраваСобственности тогда
    Если Не ЗначениеЗаполнено(Источник.РС_ДокументТМЦ) тогда
        ДокументТМЦ = Документы.ПеремещениеТоваров.СоздатьДокумент();
        ДокументТМЦ.РС_ДокументТМЦ = Источник.Ссылка;
    Иначе
        ДокументТМЦ = Источник.РС_ДокументТМЦ.ПолучитьОбъект();
    КонецЕсли;    
    
    ДокументТМЦ.Дата = Источник.Дата;
    ДокументТМЦ.ВидОперации = Перечисления.ВидыОперацийПеремещениеТоваров.ТоварыПродукция;
    ДокументТМЦ.Товары.Очистить();;
    ДокументТМЦ.Организация = Источник.Организация;
    ДокументТМЦ.СкладОтправитель = Источник.Склад;
    ДокументТМЦ.СкладПолучатель = Источник.РС_СкладПолучатель;
    ДокументТМЦ.РС_Контрагент = Источник.Контрагент;
    
    Для каждого СтрокаТЧ из Источник.Товары цикл
        НовСтрока = ДокументТМЦ.Товары.Добавить();
        ЗаполнитьЗначенияСвойств(НовСтрока,СтрокаТЧ);
        ДокументТМЦ.ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл(НовСтрока, "Товары", Истина)
    КонецЦикла;    
    
    ОбщегоНазначения.УдалитьДвиженияРегистратора(Источник, Отказ, Ложь, Ложь);
    
    ДокументТМЦ.Записать(РежимЗаписиДокумента.Запись);
    
    Сообщить("Проводим");
    Сообщить(СокрЛП(ДокументТМЦ));
    
    ДокументТМЦ.Записать(РежимЗаписиДокумента.Проведение);
    
    Источник.РС_ДокументТМЦ = ДокументТМЦ.Ссылка;
    Источник.Записать(РежимЗаписиДокумента.Запись);
15 PCcomCat
 
13.03.15
10:49
В отладчике после "ДвиженияПоРегистрам"  код "Движения.Хозрасчетный.Количество()" дает "18", но визуально их в результате проведения нет.
16 PCcomCat
 
13.03.15
10:50
+(15) Движения появляются, если провести руками.
17 GROOVY
 
13.03.15
10:50
(15) Значит после , к примеру, отрабатывает кааянить подписка, которая херит сформированные движения.
18 D_E_S_131
 
13.03.15
10:52
Вместо

ОбщегоНазначения.УдалитьДвиженияРегистратора(Источник, Отказ, Ложь, Ложь);
    
    ДокументТМЦ.Записать(РежимЗаписиДокумента.Запись);
    
    Сообщить("Проводим");
    Сообщить(СокрЛП(ДокументТМЦ));
    
    ДокументТМЦ.Записать(РежимЗаписиДокумента.Проведение);
    
    Источник.РС_ДокументТМЦ = ДокументТМЦ.Ссылка;
    Источник.Записать(РежимЗаписиДокумента.Запись);

Оставь только

ДокументТМЦ.Записать(РежимЗаписиДокумента.Проведение);

И посмотри (а то слишком много сопутствующих действий).
19 PCcomCat
 
13.03.15
10:57
(18) Н-да, засада в
ОбщегоНазначения.УдалитьДвиженияРегистратора(Источник, Отказ, Ложь, Ложь);

Но почему и Перемещение затрагивает, если я очищаю движения только Реализации?
20 D_E_S_131
 
13.03.15
11:00
(19) Вероятно ответ где-то в коде "ОбщегоНазначения.УдалитьДвиженияРегистратора();"
21 PCcomCat
 
13.03.15
13:04
Спасибо большущее всем! Действительно, у меня есть подписка ПриЗаписи для документа "Реализация товаров и услуг", в которой удаляются движения документа "Перемещение товаров", чтобы реализацию можно было перепровести.
В общем, внесла изменения в обработчик проведения "Реализации товаров и услуг" с учетом предыдущей подписки - и всё пошло как по маслу.
Еще раз: спасибо!
22 dmpl
 
13.03.15
13:19
(21) Вот уже начинаются барабашки - надо что-то менять в архитектуре... а то чем дальше - тем больше таких капканов будет.
Основная теорема систематики: Новые системы плодят новые проблемы.