Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 окт 2021, 15:25

Как сделать так чтобы количество при продаже списывалось с двух складов

Автор vitaliy06, 09 сен 2021, 20:31

0 Пользователей и 1 гость просматривают эту тему.

vitaliy06

У меня есть справочник склады, в нем есть элементы (Основной и Резервный), я и в тот и в другой, провел документ по пополнению этих складов товарами, далее, при проведении документа продажи надо чтобы списывалось сразу с двух, а не с одного.
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

// регистр Склад Расход
Движения.Склад.Записывать = Истина;
Для Каждого ТекСтрокаТабличнаяЧасть1 Из ТабличнаяЧасть1 Цикл
Движение = Движения.Склад.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТабличнаяЧасть1.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаТабличнаяЧасть1.Количество;

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СкладОстатки.Номенклатура КАК Номенклатура,
| СкладОстатки.Склад КАК Склад,
| СкладОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.Склад.Остатки КАК СкладОстатки
|ГДЕ
| СкладОстатки.Номенклатура = &Номенклатура
| И СкладОстатки.Склад = &Склад";
Запрос.УстановитьПараметр("Номенклатура",Движение.Номенклатура);
Запрос.УстановитьПараметр("Склад",Движение.Склад);

Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Попытка
Если Выборка.Количество() - Движение.Количество < 0 Тогда
Отказ = Истина;
Иначе
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Спасибо Что купили товар";
Сообщение.Сообщить();
КонецЕсли;
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Товара нет на складе";
Сообщение.Сообщить();

КонецПопытки;



КонецЦикла;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры

vitaliy06

При проведении документа продажа есть выбор с какого склада берется товар, может надо сделать иерархию?

LexaK

А если складов будет 10, по всем 10ти надо будет списывать?
Так как вы приходы/поступления по складам делали разными документами, то и расход то-же делайте разными. Сначала расход с Основного склада, затем делаете копию документа и меняете склад на Резервный. Всего две операции и ни строчки кода.
ответ Понравился? (в смысле пригодился?)

vitaliy06


alexandr_ll

Цитата: vitaliy06 от 10 сен 2021, 08:20@LexaK, да, придется с 10 списывать, поэтому желательно с кодом
Вот у вас в коде      Движение.Склад = Склад; Откуда берется значение переменной Склад? Склад должен быть задан в табличной части документа, и списание будет делаться с такого склада.

vitaliy06

@alexandr_ll, мне надо со всех складов, все поступления хранятся в регистре накоплений

alexandr_ll

Цитата: vitaliy06 от 10 сен 2021, 10:20@alexandr_ll, мне надо со всех складов, все поступления хранятся в регистре накоплений
То есть если в документе указано списать 1 штуку, то спишется всего 10 штук (по одному с каждого склада)? Какая-то странная задача. Зачем это нужно?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск