|
Включил контроль остатков, но как настроить склады? (в запросе с ОстаткиТоваров) | ☑ | ||
---|---|---|---|---|
0
Саша Да Саша
29.12.19
✎
11:53
|
Добрый день,такой вопрос:
Включил контроль остатков,и если по расходной накладной больше,чем по приходной-не будет проведения,но дело в том,что склада 2:основной и магазин,так вот если например поступили товары по приходной на основной(например 10 шт.)можно и из склада-магазина продать 10. Как настроить контроль по складам? вот код: Процедура ОбработкаПроведения(Отказ, Режим) // 1. Очистка старых движений регистра Движения.ОстаткиТоваров.Очистить(); Движения.ОстаткиТоваров.Записывать = Истина; Движения.Записать(); // 2. Получение запросом данных документа и остатков регистра Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СписокТоваров.Номенклатура КАК Номенклатура, | СУММА(СписокТоваров.Количество) КАК Количество |ПОМЕСТИТЬ СписокТоваров |ИЗ | Документ.РасходнаяНакладная.СписокТоваров КАК СписокТоваров |ГДЕ | СписокТоваров.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | СписокТоваров.Номенклатура | |ИНДЕКСИРОВАТЬ ПО | Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СписокТоваров.Номенклатура КАК Номенклатура, | ПРЕДСТАВЛЕНИЕССЫЛКИ(СписокТоваров.Номенклатура) КАК НоменклатураПредставление, | СписокТоваров.Количество КАК Количество, | ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК Остаток |ИЗ | СписокТоваров КАК СписокТоваров | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки( | &МоментВремени, | Номенклатура В | (ВЫБРАТЬ | СписокТоваров.Номенклатура КАК Номенклатура | ИЗ | СписокТоваров КАК СписокТоваров)) КАК Остатки | ПО СписокТоваров.Номенклатура = Остатки.Номенклатура"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("МоментВремени", МоментВремени()); РезультатЗапроса = Запрос.Выполнить(); // 3. Обход результатов запроса ВыборкаСписокТоваров = РезультатЗапроса.Выбрать(); Пока ВыборкаСписокТоваров.Следующий() Цикл // 4. Проверка на достаточность товаров Дефицит = ВыборкаСписокТоваров.Количество - ВыборкаСписокТоваров.Остаток; Если Дефицит>0 Тогда Отказ = Истина; Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Товара "+ВыборкаСписокТоваров.НоменклатураПредставление+" недостаточно в количестве "+Дефицит+" шт."; Сообщение.Сообщить(); КонецЕсли; // 5. Переход в начало цикла, если были ошибки Если Отказ Тогда Продолжить; КонецЕсли; // 6. Выполнение движений в регистры Движения.ОстаткиТоваров.Записывать = Истина; Для Каждого ТекСтрокаСписокТоваров Из СписокТоваров Цикл Движение = Движения.ОстаткиТоваров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Склад = Склад; Движение.Номенклатура = ТекСтрокаСписокТоваров.Номенклатура; Движение.Количество = ТекСтрокаСписокТоваров.Количество; Движение.Сумма = ТекСтрокаСписокТоваров.Сумма; КонецЦикла; КонецЦикла; // 7. Установка флага записи движений в конце транзакции Движения.ОстаткиТоваров.Записывать = Истина; КонецПроцедуры |
|||
1
Саша Да Саша
29.12.19
✎
11:54
|
Как правильно указать склад в "ИЗ"?
|
|||
2
craxx
29.12.19
✎
11:59
|
(0) в ЗУП 3.1 нет никаких складов
|
|||
3
Фрэнки
29.12.19
✎
12:03
|
самое простое - во втором запросе (по остаткам который) поставить условие. Просто в конструкторе запроса уходишь на вкладку условия и ставишь условие на склад.
|
|||
4
Фрэнки
29.12.19
✎
12:04
|
это с учетом того, что не названа конфигурация. Если называть конфигурацию не нужно, то нужно пользоваться конструктором запросов - он вроде бы на примитивном уровне позволяет учитывать структуры метаданных
|
|||
5
Саша Да Саша
29.12.19
✎
12:11
|
(3) Там только можно данные из ТЧ выбрать,а склад-обычный реквизит
|
|||
6
Саша Да Саша
29.12.19
✎
12:14
|
(3) Сори,затупил,спасибо
|
|||
7
Саша Да Саша
29.12.19
✎
12:22
|
(3) не,пишет мол добавление склада-неоднозначное решение,не работает
|
|||
8
Фрэнки
29.12.19
✎
14:19
|
(7) ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки
Разве в регистре Остатки нет измерения Склад? |
|||
9
Саша Да Саша
29.12.19
✎
14:31
|
(8) Есть
|
|||
10
Фрэнки
29.12.19
✎
14:36
|
И что мешает по этому полю поставить условие уже после Левого соединения?
|
|||
11
Фрэнки
29.12.19
✎
14:41
|
возьми ради тестирования в консоли запросов - если ее у тебя нет, то самое время разыскать/скачать/установить
Если после левого соединении раскроешь результат по всем записям, попавшим в запрос, то из-за того, что в измерениях Склады есть, должно быть множество записей от разных складов. А если значение по полю склад не учитывается в этом запросе, то совокупный остаток по всем склада сразу должна быть Группировка Обрати внимание на дубли записей, если остатки актуальны по нескольким складам. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |