![]() |
|
В ОбработкаПроведения не видно движений документа для последующей работы с ними | ☑ | ||
---|---|---|---|---|
0
Повелитель
02.04.15
✎
13:07
|
Конфигурация допилиная управление торговлей 10.3
Ситуация такая. Есть документ Поступление товаров и услуг, типовые движения. Есть новый документ "Приемка товара", который должен выполнять 2 действия. 1. В случае если не хватает\лишний товар во время приемки товара, создается типовые документы Списание товаров и оприходование товаров. Это уже реализовано. 2. В документе приемка товара вносят транспортные расходы, которые проводятся этим документом в регистр "Партии товаров на складах". Чем то похоже на документ "Поступление доп. расходов." Проблема. В поступлении Товар1 количество 10 по цене 100, итого стоимость 1000 рублей. При приемке указали транспортные расходы 100 рублей, стоимость составляет 1100 рублей. Потом создаем Списание товаров. Списывается 1000, а 100 остается висеть. Документ списания не хочет видеть то что мы в обработке проведения только что записали 100 рублей расходов. Подскажите как быть? Код примерно такой: Процедура ОбработкаПроведения(Отказ, РежимПроведения) //Обработка проведения документа Приемка товара //2015.04.02 Для Каждого СтрТаб Из мТовары Цикл СтрТаб.Стоимость = СтрТаб.Себестоимость-СтрТаб.Стоимость; Если СтрТаб.Стоимость = 0 Тогда мТовары.Удалить(СтрТаб); КонецЕсли; КонецЦикла; СтруктураТаблиц = Новый Структура("ТаблицаТоваров", мТовары); ТаблицыДанныхДокумента = ОбщегоНазначения.ЗагрузитьТаблицыДокументаВСтруктуру( Движения.ПартииТоваровНаСкладах, СтруктураТаблиц); ОбщегоНазначения.УстановитьЗначениеВТаблицыДокумента(ТаблицыДанныхДокумента, "Склад", Склад); ОбщегоНазначения.УстановитьЗначениеВТаблицыДокумента(ТаблицыДанныхДокумента, "Количество", 0); ОбщегоНазначения.УстановитьЗначениеВТаблицыДокумента(ТаблицыДанныхДокумента, "ДокументОприходования", ПоступлениеТоваров); ОбщегоНазначения.УстановитьЗначениеВТаблицыДокумента(ТаблицыДанныхДокумента, "СтатусПартии", Перечисления.СтатусыПартийТоваров.Купленный); ОбщегоНазначения.УстановитьЗначениеВТаблицыДокумента(ТаблицыДанныхДокумента, "КодОперации", Перечисления.КодыОперацийПартииТоваров.ПоступлениеРасходовКС); ОбщегоНазначения.ЗаписатьТаблицыДокументаВРегистр(Движения.ПартииТоваровНаСкладах, ВидДвиженияНакопления.Приход, ТаблицыДанныхДокумента, ПоступлениеТоваров.Дата); //---------- //по расхождениям документа создать документы на основании Оприходование товаров и Списание товаров НачатьТранзакцию(); СоздатьОприходование(); СоздатьСписаниеТоваров(); //Дата списания на 1 секунду больше, чем дата документа Приемка товара ЗафиксироватьТранзакцию(); КонецПроцедуры // ОбработкаПроведения() Если вынести: НачатьТранзакцию(); СоздатьОприходование(); СоздатьСписаниеТоваров(); //Дата списания на 1 секунду больше, чем дата документа Приемка товара ЗафиксироватьТранзакцию(); В процедуру формы ПослеЗаписи, то работает, но так мы делать не будем. |
|||
1
DrShad
02.04.15
✎
13:11
|
да и вообще так делать как вы неправильно
|
|||
2
asady
02.04.15
✎
13:14
|
(0) транзакция ещё не завершена поэтому и не видно.
Ты тупо ручками допиши код который учтет твои 5 копеек в этой транзакции - тебе же надо искать эти данные они у тебя уже есть. |
|||
3
Повелитель
02.04.15
✎
13:15
|
(1) Подскажите как правильно, в двух словах?
|
|||
4
DrShad
02.04.15
✎
13:16
|
(3) в двух словах - нельзя начинать транзакцию в еще не завершенной другой, а вы их аж две начинаете
|
|||
5
Повелитель
02.04.15
✎
13:16
|
(2) Понимаю что транзакция.
Решение видим такое, не создавать типовые документы, а в регистр писать самим. Это имеете ввиду? |
|||
6
DrShad
02.04.15
✎
13:17
|
(5) нет, имеется в виду разделить транзакции
|
|||
7
Повелитель
02.04.15
✎
13:19
|
(6) Каким образом их можно разделить если ОбработкаПроведения() проходит в одной транзакции.
Подписка события ОбработкаПроведения, тоже все в той же. |
|||
8
DrShad
02.04.15
✎
13:20
|
ну вариантов может быть масса
|
|||
9
Повелитель
02.04.15
✎
13:24
|
(8) Поделитесь, я пока вариантов не вижу, кроме как все движения самому создавать, пока этого делать не хочется.
|
|||
10
DrShad
02.04.15
✎
13:27
|
(9) можно реализовать что-то типа отложенного проведения как в УПП
|
|||
11
butterbean
02.04.15
✎
13:29
|
(0) убрать автоматическую запись движений и записывать самим
|
|||
12
hhhh
02.04.15
✎
13:30
|
(9) всё-таки ПослеЗаписи рулит. Непонятно, что у вас за религия там, что не пользуетесь.
|
|||
13
Повелитель
02.04.15
✎
13:32
|
(12) Потому что этого метода нет в модуле объекта.
А так бы да с радостью )) |
|||
14
Повелитель
02.04.15
✎
13:33
|
Мы же не всегда из формы документ проводим.
|
|||
15
Повелитель
02.04.15
✎
13:34
|
(10) Проще думаю свои движения организовать.
(11) Сомневаюсь что поможет, транзакция ОбработкаПроведения() все равно ведь будет. |
|||
16
DrShad
02.04.15
✎
13:35
|
(15) ну тогда флаг вам в руки
|
|||
17
butterbean
02.04.15
✎
13:36
|
(15) поможет, записи уже будут в регистрах и запрос вытащит остатки как надо
|
|||
18
Повелитель
02.04.15
✎
13:38
|
(17) Спасибо, попробуем сейчас
|
|||
19
hhhh
02.04.15
✎
13:41
|
(14) если не из формы, то не надо ничего создавать документы. Например юзер просто перепроводит документы, там ничего не надо создавать. Только при проведении из формы.
|
|||
20
ssh2006
02.04.15
✎
13:44
|
(7) к слову, вложенная транзакция не нужна, и так в транзакции все выполняется.
|
|||
21
Повелитель
02.04.15
✎
14:03
|
(20) Согласен, это лишнее.
(19) Так попробовали. Если из формы проводить то да работает. Если даже ничего не менять в форме, а провести документ Приемка товара из списка, то 100 рублей транспортных остается висеть. |
|||
22
Повелитель
02.04.15
✎
14:05
|
(16) Подумал, да неплохой тоже вариант. С одной стороны простой.
|
|||
23
ssh2006
02.04.15
✎
14:08
|
(21) напиши перед вызовом процедур создания документов
Движения.ПартииТоваровНаСкладах.Записать(); А так, не очень это хорошо, потом еще раз движения записаны будут автоматически. Переделывать на Записывать Выбранные |
|||
24
Повелитель
03.04.15
✎
06:59
|
(23) Спасибо. Это решило данную задачу.
Всем спасибо за помощь. Тему можно закрывать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |