Имя: Пароль:
1C
1С v8
Добавление движения по Регистру Накоплений
,
0 DaDe
 
08.02.15
11:13
Добрый день.

Имеется 1С 8.1 УТ 10.3
Хочется видеть себестоимость услуги. Для этого в Обработке проведения реализации добавлено движение по регистру ПродажиСебестоимость:

Движение = Движения.ПродажиСебестоимость.Добавить();
Движение.Регистратор=ЭтотОбъект.Ссылка;
Движение.Период = Дата;
Движение.Номенклатура = Услуга;
Движение.ЗаказПокупателя = ЭтотОбъект.Сделка;
Движение.Подразделение = ЭтотОбъект.Подразделение;
Движение.Количество = Количество;
Движение.Стоимость = Сумма;

НО возникла проблема в том что если в этом документе присутствует Товар, то в ПродажиСебестоимость не отображается типовое движение номенклатуры.

В чем может быть проблема?
1 Сергиус
 
08.02.15
11:33
(0)Возможно движение товара затирает те данные, которые ты добавил вручную. В каком месте ты это сделал?
2 Мимохожий Однако
 
08.02.15
11:54
Регистр оборотный?
3 shuhard
 
08.02.15
11:56
(2) конечно
4 GROOVY
 
08.02.15
11:57
Скорее всего это его движения затирают типовые.
"ЭтотОбъект" доставляет как всегда.
5 DaDe
 
08.02.15
12:01
(1) В конце Обработки проведения.
(2) Да, уже ответили.
(4) По какой причине он их затирает.
6 shuhard
 
08.02.15
12:20
(5) [По какой причине он их затирает.]
код у тебя кривой
7 PR
 
08.02.15
12:29
(5) Возможно где-то раньше в коде движения уже записались, а теперь ты их перезаписал другими.
8 DaDe
 
08.02.15
13:03
(6) Ну это и так понятно. Вопрос как раз в том, что не так.
(7) Штатная обработка записала движение номенклатуры с этим регистратором и соответствующими полями.
После этого в этой же обработке я создаю еще одно движение с этим же регистратором, но с другой номенклатурой. По моей логике он не должен перезаписать, хотя я возможно наверное ошибаюсь.

Нужно ли выполнять какие-то действия по записи типового движения по регистру, чтобы добавлять уже свои движения по нему?

Вот конец кода обработки проведения:
    // Движения по документу
    Если Не Отказ Тогда
        // Подготовим таблицу скидок для проведения.
        ТаблицаПоСкидкам = ПодготовитьТаблицуСкидок(ТаблицаПоТоварам, ТаблицаПоУслугам, СтруктураШапкиДокумента);

        ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоСкидкам, ТаблицаПоТаре,
                            ТаблицаПоУслугам, ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам, Отказ, Заголовок);
        ДвиженияПоУслугам(); //Мои движения здесь
    КонецЕсли;
9 PR
 
08.02.15
13:08
(8) Перед добавлением своих движений прочитай старые, потом добавляй свои.
Но это дичайший кавнокод, конечно.
10 alle68
 
08.02.15
13:24
(8) Посмотри в отладчике, что содержит Движения.ПродажиСебестоимость после добавления твоей записи.
11 DaDe
 
08.02.15
14:16
(9) Спасибо за науку. Действительно надо было прочитать.
Если не сложно, может подскажешь что не понравилось по коду.

(10) Содержал только мои записи.
12 alle68
 
08.02.15
14:40
(11) Чтобы лишний раз не читать и не писать(!), нужно в "ДвиженияПоРегистрам" найти место, где записывается этот набор, и вставить перед ним свою процедуру.
13 PR
 
08.02.15
14:51
(11) То, что записи добавляются потом во втором месте, а не в первом месте формирования записей.
14 DaDe
 
08.02.15
16:49
(12) (13) Ну это тоже понятно, но когда существует типовая конфигурация и для целей сохранения основной ее части в исходном виде и пришлось городить данную конструкцию.
Тем более что объем движений не большой.
Замедление по скорости не существенно.

Спасибо, за помощь.
15 hhhh
 
08.02.15
16:55
(12) там пишется не в Движения, а напрямую в Набор записей регистра. Поэтому в движениях он и не найдет. Там нет ничего.