|
|
|
Перепроведение документа | ☑ | ||
|---|---|---|---|---|
|
0
farced
13.10.14
✎
02:26
|
Наверняка, вопрос поднимался много раз, но долгий гуглинг не принес плодов.
В документе (списание товара со склада) нужно проверить остатки товара на складе перед проведением. Проблема в том, что если документ1 был проведен, то в регистрах накопления есть записи списания от документа1 и получается, что на складе товара не хватает. Как исключить движения Документа1 из проверки остатков товара на складе? //Проверка на наличие товара для списания СписокЗначений = Новый СписокЗначений; Движения.ТоварыНаСкладе.Записывать = Истина; Движения.ТоварыНаСкладе.Очистить(); // Ссылка.ПолучитьОбъект().Записать(РежимЗаписиДокумента.ОтменаПроведения); Оперативно = (Режим = РежимПроведенияДокумента.Оперативный); Для Каждого Товар Из Товары Цикл СписокЗначений.Добавить(Товар.Товар); КонецЦикла; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладеОстатки.КоличествоОстаток, | ТоварыНаСкладеОстатки.Товары |ИЗ | РегистрНакопления.ТоварыНаСкладе.Остатки( | &ПараметрПериод, | Товары В (&Товары) | И Склад = &Склад) КАК ТоварыНаСкладеОстатки" ; Запрос.УстановитьПараметр("ПараметрПериод", МоментВремени()); Запрос.УстановитьПараметр("Склад", Склад); Запрос.УстановитьПараметр("Товары", СписокЗначений); Выборка = Запрос.Выполнить().Выбрать(); ДостатоточноТовара = Истина; НедостающиеТовары = ""; МассивТоваров = Новый Массив; Для Каждого Товар Из Товары Цикл ДобавитьВМассив(Товар.Товар, Товар.Количество, МассивТоваров); КонецЦикла; Для Каждого Элемент ИЗ МассивТоваров Цикл СтруктураПоиска = Новый Структура; СтруктураПоиска.Вставить("Товары", Элемент.Товар); Если Выборка.НайтиСледующий(СтруктураПоиска) Тогда Если Выборка.КоличествоОстаток < Элемент.Количество Тогда ДостатоточноТовара = Ложь; НедостающиеТовары = НедостающиеТовары + " " + Элемент.Товар + ","; Иначе //Списание КонецЕсли; Иначе ДостатоточноТовара = Ложь; НедостающиеТовары = НедостающиеТовары + " " + Элемент.Товар + ","; КонецЕсли; КонецЦикла; Если НЕ ДостатоточноТовара Тогда Сообщить("Недостаточно товаров" + Лев(НедостающиеТовары, СтрДлина(НедостающиеТовары) - 1) + " на складе " + Склад); Если Режим = РежимПроведенияДокумента.Оперативный Тогда Отказ = Истина; Возврат; КонецЕсли; КонецЕсли; |
|||
|
1
Klesk666
13.10.14
✎
02:33
|
ВЫБРАТЬ
СвободныеОстаткиОстатки.Номенклатура, СвободныеОстаткиОстатки.Характеристика, СвободныеОстаткиОстатки.Склад, СвободныеОстаткиОстатки.ВНаличииОстаток ИЗ РегистрНакопления.СвободныеОстатки.Остатки(&ДатаДокМинусСекунду, ) КАК СвободныеОстаткиОстатки |
|||
|
2
Klesk666
13.10.14
✎
02:40
|
а если как в ут 11 когда остатки контролируются в пределах месяца (к слову в 11.1.2.23 вообще при списании не контролируются) - то через запрос а потом код, но лучше соблюдать хронологию, особенно если это списание товара
|
|||
|
3
farced
13.10.14
✎
03:08
|
Т.е. вы предлаете в запросе изменить дату на дату минус секунду?
|
|||
|
4
farced
13.10.14
✎
03:13
|
(2) У меня в запросе период не дата документа, а момент времени. На сколько я знаю, момент времени по дефолту ставит время ДО проведения документа.
|
|||
|
5
SeraFim
13.10.14
✎
04:27
|
Ты движения очистил, запиши их, из остатков они исчезнут
|
|||
|
6
Галахад
гуру
13.10.14
✎
04:31
|
Проверяй после проведения. Если появились минуса, значит остатка не хватает.
|
|||
|
7
farced
13.10.14
✎
04:37
|
(5) Вот оно решение. Спасибо большое!
|
|||
|
8
farced
13.10.14
✎
04:37
|
(6) Таки решение (5) проще. Но все равно, спасибо =)
|
|||
|
9
SeraFim
13.10.14
✎
05:44
|
(8) почитай про "новую методику проведения".
Более оптимально в некоторых случаях получится |
|||
|
10
Jokero
13.10.14
✎
07:34
|
граница, вид границы исключая
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |