|
Остаток после проведения документа | ☑ | ||
---|---|---|---|---|
0
aleks100
19.02.15
✎
13:25
|
В в самом конце обработке проведения выборка по регистру остатки товаров на складе документа показывает остаток до проведения документа,почему?Транзакция не завершилась?
Просто надо было в документ записать остатки после проведения данного документа.. |
|||
1
butterbean
19.02.15
✎
13:27
|
записывать надо по ходу проведения
|
|||
2
aleks100
19.02.15
✎
13:29
|
в смысле?
|
|||
3
palpetrovich
19.02.15
✎
13:31
|
наверное будет нелишним озвучить конфигурацию. Ну и когда, в какой момент происходит " в документ записать остатки "
|
|||
4
aleks100
19.02.15
✎
13:34
|
ут 10.3 после // Движения по документу
Если Не Отказ Тогда ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоТаре, Отказ, Заголовок); // процедура в которой происходит запись ДополнениеДляПеремещения() // КонецЕсли; |
|||
5
aleks100
19.02.15
✎
13:38
|
может просто выбирать остатки до проведения документа и вычитая перемещаемый товар(документ перемещения)?
|
|||
6
palpetrovich
19.02.15
✎
13:42
|
(5) наверное надо попробовать вынести ДополнениеДляПеремещения из ОбработкаПроведения в другую поцедуру
|
|||
7
Timon1405
19.02.15
✎
13:43
|
(5) а может запилить подписку?
|
|||
8
palpetrovich
19.02.15
✎
13:45
|
(7) подписка не спасет, хотя такие, левые действия, лучше в подписку
|
|||
9
aleks100
19.02.15
✎
13:48
|
(6) мне сказали делать изменения именно в обработке проведения
|
|||
10
vicof
19.02.15
✎
13:49
|
"по регистру остатки товаров на складе документа показывает остаток до проведения документа"
как узнал? |
|||
11
ShoGUN
19.02.15
✎
13:50
|
(9) Если уверен, что остаток правильно получаешь, то делай Движения.Записать() и дальше пляши.
|
|||
12
D_E_S_131
19.02.15
✎
13:52
|
(0) А если в отладчике остановиться после проведения, но ДО получения остатков, постоять секунду и прочитать остатки, то поменяется результат?
|
|||
13
Крошка Ру
19.02.15
✎
13:53
|
(0) Да, транзакция не завершилась
|
|||
14
aleks100
19.02.15
✎
13:56
|
(10) устанавливал точку остатовкив процедуре ДополнениеДляПеремещения() и в запросе проверял
Процедура ДополнениеДляПеремещения() Если ТипЦен=Справочники.ТипыЦенНоменклатуры.ПустаяСсылка() Тогда ТипЦен = Константы.ютТипЦены.Получить(); КонецЕсли; // выбираю остатки до проведения документа и вычитая перемещаемый товар Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПеремещениеТоваровТовары.НомерСтроки КАК НомерСтроки, | ПеремещениеТоваровТовары.Номенклатура, | ПеремещениеТоваровТовары.Количество, | ЕСТЬNULL(Цены.Цена, 0) КАК Цена, | ЕСТЬNULL(Остаток.КоличествоОстаток, 0) - ПеремещениеТоваровТовары.Количество КАК КоличествоОстаток, | ПеремещениеТоваровТовары.Количество * ЕСТЬNULL(Цены.Цена, 0) КАК Сумма |ИЗ | Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена | ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних( | &дата, | Номенклатура В | (ВЫБРАТЬ | ПеремещениеТоваровТовары.Номенклатура | ИЗ | Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары | ГДЕ | ПеремещениеТоваровТовары.Ссылка = &Ссылка) | И типцен = &типцен) КАК ЦеныНоменклатурыСрезПоследних) КАК Цены | ПО ПеремещениеТоваровТовары.Номенклатура = Цены.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток | ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | &дата, | Номенклатура В | (ВЫБРАТЬ | ПеремещениеТоваровТовары.Номенклатура | ИЗ | Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары | ГДЕ | ПеремещениеТоваровТовары.Ссылка = &Ссылка) | И склад = &склад) КАК ТоварыНаСкладахОстатки) КАК Остаток | ПО ПеремещениеТоваровТовары.Номенклатура = Остаток.Номенклатура |ГДЕ | ПеремещениеТоваровТовары.Ссылка = &Ссылка | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Граница = Новый Граница(ссылка.МоментВремени(), ВидГраницы.Исключая); Запрос.УстановитьПараметр("Дата", Граница); Запрос.УстановитьПараметр("Дата",ТекущаяДата() ); Запрос.УстановитьПараметр("Ссылка",Ссылка ); Запрос.УстановитьПараметр("Типцен",ТипЦен ); Запрос.УстановитьПараметр("Склад",СкладОтправитель ); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Текстрока=Товары.Получить(выборка.номерстроки-1); Текстрока.ЦенаОпт = Выборка.Цена; Текстрока.ОстатокПосле = Выборка.КоличествоОстаток ; Текстрока.Сумма = Выборка.Сумма; КонецЦикла; Записать(РежимЗаписиДокумента.Запись); КонецПроцедуры |
|||
15
palpetrovich
19.02.15
✎
13:57
|
(9) кто сказал? или это тестовая задача? ну, ежели низзя в других - тогда считай :)
хотя, после проведения, из формы вызываются ПриЗаписи ПослеЗаписи ПередЗакрытием ПриЗакрытии |
|||
16
aleks100
19.02.15
✎
14:00
|
(16) руководитель,ну если можно в другом месте можно попробовать
|
|||
17
vicof
19.02.15
✎
14:02
|
(14) см (1)
|
|||
18
palpetrovich
19.02.15
✎
14:05
|
(17) ваще-т, там в
ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоТаре, Отказ, Заголовок); конечно-же присутсвует что-то типа Движения.ТутЧтоТоНЕЗнюЧто.Записать(Истина); |
|||
19
D_E_S_131
19.02.15
✎
14:06
|
(13) Не обязательно. Если допускается "грязное чтение", то можно и не ждать завершения транзакции. А вот не успеть посчитаться итог вполне мог.
|
|||
20
aleks100
19.02.15
✎
15:02
|
()В книге радченко и хрусталевой по контролю остатков посмотрел надо было добавить движения.записать();
Если Не Отказ Тогда ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоТаре, Отказ, Заголовок); движения.записать(); ДополнениеДляПеремещения() // КонецЕсли; |
|||
21
aleks100
19.02.15
✎
15:04
|
Радченко и Хрусталева Практическое пособие разработчика,контроль остатков
|
|||
22
Dmitrii
гуру
19.02.15
✎
15:08
|
(0) > в документ записать остатки после проведения данного документа
Феерический маразм. Для хранения показателей состояния существует отдельный класс объектов, который называется Регистры сведений. Хотя сама задача - бред еще тот... |
|||
23
D_E_S_131
19.02.15
✎
15:24
|
(20) А в обработке проведения до этого не было такого кода с записью движений?
|
|||
24
D_E_S_131
19.02.15
✎
15:26
|
Хотя ступил...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |