|
Код ведёт себя по разному в разных местах | ☑ | ||
---|---|---|---|---|
0
OnePrg
18.08.21
✎
16:19
|
Документ чек не проводится, ругается, что нет на остатке. Смотрю отчётом из UNIREPORTS - остаток есть
Код такой: Процедура глИзменитьОстатки(Конт, спФирмы, Склад, ФлагВозврата, ФлагПрихода, ФлагУчетаОстатков=0, ФлагПеремещения=2,ПараметрПроведения = 0) Экспорт Если (ФлагПрихода = 0) или (ФлагУчетаОстатков = 1) Тогда // будем использовать остатки, рассчитаем итоги спТовары = СоздатьОбъект("СписокЗначений"); Конт.ВыгрузитьТабличнуюЧасть(спТовары,"Товар"); Регистры=СоздатьОбъект("Регистры"); Рег=Регистры.ОстаткиТоваров; Рег.УстановитьЗначениеФильтра("Фирма",спФирмы,2); Рег.УстановитьЗначениеФильтра("Товар",спТовары,2); Рег.УстановитьЗначениеФильтра("Склад",Склад,1); Если Конт.ИтогиАктуальны()=0 Тогда Рег.ВременныйРасчет(1); //Сообщить(Конт.ТекущийДокумент()); СравнитьТА = Конт.СравнитьТА(); //Сообщить(СравнитьТА); Если СравнитьТА = -1 Тогда Регистры.РассчитатьРегистрыНа(Конт.ТекущийДокумент()); //------- попадает вот сюда ИначеЕсли СравнитьТА = 0 Тогда Регистры.РассчитатьРегистрыНа(ПолучитьТА()); КонецЕсли; КонецЕсли; КонецЕсли; Для Инд = 1 по спФирмы.РазмерСписка() Цикл текФирма=спФирмы.ПолучитьЗначение(Инд); Если (ФлагПрихода = 0) или (ФлагУчетаОстатков = 1) Тогда // будем использовать остатки, получим итоги тбОстатки = 0; Рег.УстановитьЗначениеФильтра("Фирма",текФирма,1); Рег.УстановитьЗначениеФильтра("Товар",спТовары,2); Рег.УстановитьЗначениеФильтра("Склад",Склад,1); Рег.ВыгрузитьИтоги(тбОстатки,1,1); //-------------------------- тбОстатки пустая КонецЕсли; Делаю внешнюю обработку, на ней размещаю реквизит Конт с типом значения "Документ.Чек" И вставляю туда тот же код, только немного под обработку адаптированный: Процедура Сформировать() спФирмы = глПолучитьФирмы(Конт); спТовары = СоздатьОбъект("СписокЗначений"); Конт.ВыгрузитьТабличнуюЧасть(спТовары,"Товар"); Регистры=СоздатьОбъект("Регистры"); Рег=Регистры.ОстаткиТоваров; Рег.УстановитьЗначениеФильтра("Фирма",спФирмы,2); Рег.УстановитьЗначениеФильтра("Товар",спТовары,2); Рег.УстановитьЗначениеФильтра("Склад",Конт.Склад,1); //Если Конт.ИтогиАктуальны()=0 Тогда // Рег.ВременныйРасчет(1); // //Сообщить(Конт.ТекущийДокумент()); // СравнитьТА = Конт.СравнитьТА(); // //Сообщить(СравнитьТА); // Если СравнитьТА = -1 Тогда Регистры.РассчитатьРегистрыНа(Конт.ТекущийДокумент()); // ИначеЕсли СравнитьТА = 0 Тогда // Регистры.РассчитатьРегистрыНа(ПолучитьТА()); // КонецЕсли; //КонецЕсли; Для Инд = 1 по спФирмы.РазмерСписка() Цикл текФирма=спФирмы.ПолучитьЗначение(Инд); //Если (ФлагПрихода = 0) или (ФлагУчетаОстатков = 1) Тогда // // будем использовать остатки, получим итоги тбОстатки = 0; Рег.УстановитьЗначениеФильтра("Фирма",текФирма,1); Рег.УстановитьЗначениеФильтра("Товар",спТовары,2); Рег.УстановитьЗначениеФильтра("Склад",Конт.Склад,1); Рег.ВыгрузитьИтоги(тбОстатки,1,1); //------------------ таблица заполнена, остатки есть //КонецЕсли; Что не так? |
|||
1
Ёпрст
18.08.21
✎
16:34
|
(0) и нахрена 2 раза фильтр устанавливать ?
|
|||
2
Builder
18.08.21
✎
16:35
|
Отладчик в руки и проверяй установленные фильтры.
"Склад" особенно, он как то отдельно передается? |
|||
3
Ёпрст
18.08.21
✎
16:36
|
Ну и в первом случае, итоги расчитаны до документа, а во втором - на ТА
|
|||
4
Ёпрст
18.08.21
✎
16:36
|
ясен хрен, что они разные.
|
|||
5
breezee
18.08.21
✎
16:37
|
это семерка? можете удалять комментарий перед выкладыванием кода на форум, пожалуйста?
|
|||
6
Ёпрст
18.08.21
✎
16:37
|
если только, сам док не в потоке проводится, а по коду - нет, раз в отладке идёт временной рассчет итогов
|
|||
7
OnePrg
18.08.21
✎
16:41
|
(3) В обоих случая на документ
|
|||
8
OnePrg
18.08.21
✎
16:42
|
(2) Фильтры проверил в первую очередь
|
|||
9
Ёпрст
18.08.21
✎
16:42
|
(7) в каком месте в коде 2 у тебя расчет на документ ?
|
|||
10
Ёпрст
18.08.21
✎
16:43
|
У тебя там нет никакого расчета и останки берутся на ТА
|
|||
11
OnePrg
18.08.21
✎
16:44
|
(5) конечно, только в этом случае хотел показать, что код одинаковый, поэтому оригинальные строки не удалял, а комментировал
|
|||
12
OnePrg
18.08.21
✎
16:44
|
(10) опа, точно
сейчас посмотрю |
|||
13
Ёпрст
18.08.21
✎
16:45
|
И еще.. в модуле проведения СравнитьТА не используется, от слова совсем
|
|||
14
OnePrg
18.08.21
✎
16:46
|
(10) всё верно, теперь и обработка не выдаёт остатки - теперь можно разбираться
всем спасибо! |
|||
15
OnePrg
18.08.21
✎
16:48
|
хотя, хотя ...
теперь вопрос: ТА 19.08, документ 18.08 - почему если рассчитываешь итоги на документ, их нет? унирепортс на 18.08 выдаёт остатки |
|||
16
breezee
18.08.21
✎
16:51
|
(11) Понял, извините)
|
|||
17
OnePrg
18.08.21
✎
16:53
|
Теперь точно всё: этот товар переместили на этот склад сегодня в 23:59, ну и ясное дело, что чек в 14:41 ещё его не видит.
Ещё раз всем, спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |