![]() |
![]() |
![]() |
|
УТ 10.3 пропадают движения по регистру ПартииТоваровНаСкладах | ☑ | ||
---|---|---|---|---|
0
bvb
17.12.13
✎
13:23
|
Суть проблемы в следующем :
По регистру ПартииТоваровНаСкладах списываются одни товары с помощью : УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Ссылка, Движения.СписанныеТовары.Выгрузить()); А их себестоимость оприходуется на другие товары стандартным движением : Движения.ПартииТоваровНаСкладах.ВыполнитьПриход(); По отдельности (закомментил одно / закоментил другое) все работает. Но вместе - движения прихода затирают движения расхода, созданные УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Ссылка, Движения.СписанныеТовары.Выгрузить()); Как с этим бороться не пойму вроде на момент формирования прихода движения расхода уже должны быть, но : НаборДвиженийПартииТоваровНаСкладах.Выгрузить() - возвращает пустую таблицу |
|||
1
shuhard
17.12.13
✎
13:26
|
(0) да , код кривой
да, так делать нельзя |
|||
2
bvb
17.12.13
✎
13:29
|
КАк ?
Мне нужна движуха по регистру "Списанные товары" + сопутсвующий ей расход по ПартииТоваровНаСкладах по списываемому товару (как в списании) А затем приход по регистру закупки + приход по ПартииТоваровНаСкладах на товар по которому размазывается себестоимость списываемого товара (как в поступлении доп расходов) |
|||
3
Михаил Козлов
17.12.13
✎
13:32
|
Списанные товары - в коллекции движений.
ПартииТоваровНаСкладах, если через ДвижениеПартий, то Прочитать(). |
|||
4
bvb
17.12.13
✎
13:56
|
ТаблицаДвиженийПартииТоваровНаСкладах = НаборДвиженийПартииТоваровНаСкладах.Выгрузить();
//Заполнил таблицу приходами //Добавил списания Движения.ПартииТоваровНаСкладах.Прочитать(); Для Каждого Движение ИЗ Движения.ПартииТоваровНаСкладах Цикл СтрТЗ = ТаблицаДвиженийПартииТоваровНаСкладах.Добавить(); ЗаполнитьЗначенияСвойств(СтрТЗ,Движение); КонецЦикла; ТаблицаДвиженийПартииТоваровНаСкладах.ЗаполнитьЗначения(Дата, "Период"); ТаблицаДвиженийПартииТоваровНаСкладах.ЗаполнитьЗначения(ЛОЖЬ, "Активность"); НаборДвиженийПартииТоваровНаСкладах.мПериод = Дата; НаборДвиженийПартииТоваровНаСкладах.мТаблицаДвижений = ТаблицаДвиженийПартииТоваровНаСкладах; Если Не Отказ Тогда Движения.ПартииТоваровНаСкладах.ВыполнитьДвижения(); КонецЕсли; вроде работает но неприятное ощущение от кривизны кода осталось... |
|||
5
vde69
модератор
17.12.13
✎
14:01
|
размазывание - делай в подписке "ПриЗаписи",
тогда у тебя уже есть полный набор еще не записаных движений по всем регистрам... |
|||
6
bvb
17.12.13
✎
14:02
|
(5) Не хочу торгать типовую подписку хочу все локализовать в модуле документа
|
|||
7
shuhard
17.12.13
✎
14:03
|
(6) а низяяяя
|
|||
8
vde69
модератор
17.12.13
✎
14:04
|
(6) сделай свою подписку, кто мешает?
|
|||
9
bvb
17.12.13
✎
14:05
|
(7) Почему ?
|
|||
10
vde69
модератор
17.12.13
✎
14:06
|
(6) вообще я знаю как сделать и в модуле, только не знаю как обьяснить, а код большой будет....
|
|||
11
bvb
17.12.13
✎
14:08
|
(10) Ну так это работает...
|
|||
12
vde69
модератор
17.12.13
✎
14:09
|
например у меня сейчас у всех документов проведение такое:
Процедура СформироватьПолныеДвиженияДокумента (Заголовок, Отказ) Экспорт // определяем по каким регистрам движения у нас будут ТаблицаПроведения = ПроведениеДокументов.СоздатьТаблицуПроведения(); Документы.Рентабельность.ЗаполнитьТаблицуПроведения(ТаблицаПроведения, ПометкаУдаления, Проведен, Отказ); // подготовим пакет запроса в соответствие с тем какие регистры мы определили, // после подготовки пакета его можно чуть допилить Запрос = ПроведениеДокументов.ПодготовитьЗапросДляПроведения(ЭтотОбъект, ТаблицаПроведения, Заголовок, Отказ); // выполнение пакета и заполнения таблиц проведения // после можно что-то подкоректировать руками ПроведениеДокументов.ПодготовитьТаблицуПроведения (ЭтотОбъект, Запрос, ТаблицаПроведения, Заголовок, Отказ); //-------------------------------------------------------------------------------- // на всякий случай удалим движения, // хотя текущий алгоритм расчитан на правильную работу и без // очистки, но при изменении состава движений возможны проблеммы // ОбщегоНазначения.УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ, Ложь, Ложь); // выполняем движения по регистрам ПроведениеДокументов.ПроведениеПоРегистрам(ЭтотОбъект, ТаблицаПроведения, Заголовок, Отказ, Истина); Если не Проведен и не ПометкаУдаления Тогда // немного криво, но сделано на случай отмены проведения, что бы при этом движения сохранялись Движения.Записать(); КонецЕсли; КонецПроцедуры Процедура ОбработкаПроведения(Отказ, РежимПроведения) Перем Заголовок, СтруктураШапкиДокумента, ТаблицыДвижений; СтруктураШапкиДокумента = ПроведениеДокументов.СформироватьСтруктуруШапкиДокумента(Заголовок, ЭтотОбъект, Отказ); // Проверим правильность заполнения шапки документа ПроверитьЗаполнениеШапки(СтруктураШапкиДокумента, Отказ, Заголовок); СформироватьПолныеДвиженияДокумента (Заголовок, Отказ); КонецПроцедуры // ОбработкаПроведения() Процедура ПриЗаписи(Отказ) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Если не Проведен Тогда Заголовок = "Движение документа """ + СокрЛП(Ссылка) + """: "; СформироватьПолныеДвиженияДокумента (Заголовок, Отказ); КонецЕсли; КонецПроцедуры Процедура ПередУдалением(Отказ) ОбщегоНазначения.УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ, Ложь, Ложь); КонецПроцедуры |
|||
13
bvb
17.12.13
✎
14:15
|
(12) Спасибо изучу
Фокус в том что я по максимуму использовал стандартные процедуры проведения |
|||
14
vde69
модератор
17.12.13
✎
14:20
|
(13) там у меня есть как минимум 2 места где я могу модифицировать уже сформированые движения (и кстати я так и делаю). Все единообразно.
идея в том, что движения формируются не в модуле документа, и значит общие процедуры можно использовать при формировании части движений (например востановление последовательности по одной номенклатурной позиции, не трогая другие) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |