Имя: Пароль:
1C
1С v8
Запись в регистре накопления
,
0 fred89
 
26.11.12
10:14
Добрый день!
Есть УТ 10.3. Документ "Упаковочный лист" меняет остатки в регистре накопления "ТоварыВПути". Необходимо было доработать кнопочку для непосредственного списания из УЛ.
Дописал процедуру, при отладке все данные берутся корректно, но остатки в регистре не уменьшаются. Приход делает записи, а расход нет.
------------------------------------
Процедура ДвиженияПоРегистрам(ТаблицаПоТоварам, Отказ);

// дописано!!!!!!!!
Если Не Отказ Тогда
Если Статус Тогда
Движения.ТоварыВПути.Записывать = Истина;
Движения.ТоварыВПути.Очистить();
Для Каждого СтрокаТабличнойЧасти Из Товары Цикл
Движение = Движения.ТоварыВПути.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.ДоговорКонтрагента = ДоговорКонтрагента;
Движение.УпаковочныйЛист = Ссылка;
Движение.Номенклатура = СтрокаТабличнойЧасти.Номенклатура;
Движение.ХарактеристикаНоменклатуры = СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры;
Движение.Количество = СтрокаТабличнойЧасти.Количество;
КонецЦикла;
       КонецЕсли;
КонецЕсли;
// дописано!!!!!!!!


Если Не Отказ Тогда
Движения.ТоварыВПути.Записывать = Истина;
Движения.ТоварыВПути.Очистить();
Для Каждого СтрокаТабличнойЧасти Из Товары Цикл
Движение = Движения.ТоварыВПути.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.ДоговорКонтрагента = ДоговорКонтрагента;
Движение.УпаковочныйЛист = Ссылка;
Движение.Номенклатура = СтрокаТабличнойЧасти.Номенклатура;
Движение.ХарактеристикаНоменклатуры = СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры;
Движение.Количество = СтрокаТабличнойЧасти.Количество;
КонецЦикла;

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

КонецПроцедуры
1 programmer1c_
63
 
26.11.12
10:16
попробуй расходы списывать периодом Дата + 1
2 zak555
 
26.11.12
10:16
странный код
3 programmer1c_
63
 
26.11.12
10:16
И у тебя ВыполнитьДвижениеПоРегиструЗаказыПоставщикам - что в этой процедуре?
4 zak555
 
26.11.12
10:18
(3) проводки выучил ? =)
5 fred89
 
26.11.12
10:36
programmer1c_63
пробую списать другой датой (дата прихода - ставится ручками), все равно не добавляется запись.
ВыполнитьДвижениеПоРегиструЗаказыПоставщикам - выполняется при другом условии. сейчас не это
6 samozvanec
 
26.11.12
10:43
Если Не Отказ Тогда
Движения.ТоварыВПути.Записывать = Истина;

-->Движения.ТоварыВПути.Очистить();

эточо?
7 samozvanec
 
26.11.12
10:45
(3) есть вероятность, что там движения по регистру заказы поставщикам...
8 samozvanec
 
26.11.12
10:46
(0) и еще один обход сделай. должно быть нечетное количество обходов
9 Шапокляк
 
26.11.12
10:48
(0) Ну а чо! Сделал все движения по расходу, потом их очистил и сделал все движения по приходу.
10 fred89
 
26.11.12
11:09
Понял почему не записывает.
Здесь стоит вопрос уникальности записей.
каждая строка регистра состоит из:
1)вид(приход/расход)
2)дата
3)документ
4)номер строки и т.д.

и я так понимаю уникальными являются документ+номер строки, или вид+документ+номер строки
типа нельзя из одного документа делать и приход и расход
или нельзя несколько записей с одинаковыми номерами строк
11 Шапокляк
 
26.11.12
11:11
(10) Посмотри в свой код!
Если Не Отказ Тогда
Если Статус Тогда
Движения.ТоварыВПути.Записывать = Истина;
Движения.ТоварыВПути.Очистить();
Для Каждого СтрокаТабличнойЧасти Из Товары Цикл
Движение = Движения.ТоварыВПути.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.ДоговорКонтрагента = ДоговорКонтрагента;
Движение.УпаковочныйЛист = Ссылка;
Движение.Номенклатура = СтрокаТабличнойЧасти.Номенклатура;
Движение.ХарактеристикаНоменклатуры = СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры;
Движение.Количество = СтрокаТабличнойЧасти.Количество;
КонецЦикла;
       КонецЕсли;
КонецЕсли;
// дописано!!!!!!!!



Если Не Отказ Тогда
Движения.ТоварыВПути.Записывать = Истина;
Движения.ТоварыВПути.Очистить();
ВОТ тут ты стираешь все свои расходы!
12 zak555
 
26.11.12
11:14
(11) так надо
13 samozvanec
 
26.11.12
11:27
(12) здесь медицина безсильна(
14 fred89
 
26.11.12
11:31
разобрался. Шапокляк была права.
и все же есть уникальность вид+документ
придется либо другим документом списывать, либо удалять записи регистра
всем спасибо!
15 Шапокляк
 
26.11.12
11:35
Да не за что, мы ж не помогли избавиться от заблуждений.
16 samozvanec
 
26.11.12
12:04
когда вечером в упор не видишь - это куриная слепота, а если с утра, то какая?
17 Шапокляк
 
26.11.12
12:05
беспросветная