Вход | Регистрация



Перемещение товаров между складами.

Перемещение товаров между складами.
Я
   Haosmedi
 
19.07.18 - 14:24
Есть некий справочник с номенклатурой и Регистр накопления " Товары на складах" с измерениями: Склад,Номенклатура; ресурс: Количество.

Необходимо реализовать механизм перемещения номенклатуры между складами посредством документа "Перемещение товара". Склады определяются в документе с помощью реквизитов "Склад отправитель" и "Склад получатель". Данный документ регистрирует изменение складских остатков и так же в нём должен быть реализован контроль остатков.

Подскажите пожалуйста подробно,как с помощью конструктора запроса в Обработке проведения это реализовать?
 
 
   Джинн
 
1 - 19.07.18 - 14:30
За Вас все сделать? В чем тогда смысл такого обучения?
   Garykom
 
2 - 19.07.18 - 14:33
Ну человек хочет "найти зарплатодателя, работодателей просьба не беспокоиться"©
   ColonelAp4u
 
3 - 19.07.18 - 14:38
(0) в регистре при записи делаешь контроль остатков, в документе в обработке проведения делаешь движения, склад отправитель расход, склад получатель приход. Все!
   Serg_1960
 
4 - 19.07.18 - 14:39
"Злые вы все, уйду я от вас"(цы)

“Новая” и “старая” методики контроля отрицательных остатков при проведении документов в системе 1С:Предприятие 8.3
https://курсы-по-1с.рф/articles/2017-02-12-two-methods-for-inventory-check/
   ColonelAp4u
 
5 - 19.07.18 - 14:39
(3) контроль в регистре делаешь на дату документа и на текущую дату.
   leonidk
 
6 - 19.07.18 - 14:43
(0)   Практическое пособие разработчика. Радченко.
Занятие 14.
   Garykom
 
7 - 19.07.18 - 16:52
(5) Ты еще скажи что проверку при отмене проведения делать да?
Чтобы остатки в минуса не ушли, а то переместили/продали пришедшее ранее а потом некто умный хочет задним числом отменить.
   Haosmedi
 
8 - 20.07.18 - 18:37
Правильно ли я понимаю, что приход можно отразить в запросе 1(Склад получатель), а расход уже во 2-ом Запросе(Склад отправитель)? И потом уже в Запросе 3(изменение складских остатков с выводом сообщения) ?!
   lodger
 
9 - 20.07.18 - 18:53
там вроде один запрос?
   Haosmedi
 
10 - 20.07.18 - 19:33
По идее два запроса. В одном перемещение товаров. Во втором учёт остатков. Ума не приложу как в один запрос  приход и расход добавить.
 
 Рекламное место пустует
   hhhh
 
11 - 20.07.18 - 19:45
(10) ну у тебя приход = расход. С одного склада забираешь товар и перевозишь на второй склад.
   МимохожийОднако
 
12 - 20.07.18 - 19:52
(10) делай пакетный запрос
   Serg_1960
 
13 - 20.07.18 - 22:27
PS: Нафига я ссылку в (4) давал? Автор даже не удосужился её открыть (если бы открыл и бегло прочитал - то и вопросов бы не было).
   Haosmedi
 
14 - 22.07.18 - 15:05
(13) Я прочитал.Как вести учёт остатков я понял.
Непонятно только как "Склад отправитель" и "Склад получатель" сопоставить с измерением "Склад" регистра накопления "Товары на складах" !
   Haosmedi
 
15 - 22.07.18 - 18:53
Процедура ОбработкаПроведения(Отказ, Режим)
    
    
    Запрос = Новый Запрос ("ВЫБРАТЬ
                           |    Товары.Ссылка КАК Регистратор,
                           |    Товары.Ссылка.Дата КАК Период,
                           |    Товары.Ссылка.СкладПолучатель КАК Склад,
                           |    Товары.Номенклатура КАК Номенклатура,
                           |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
                           |    Товары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
                           |    Товары.Количество КАК Количество,
                           |    Товары.СерияНоменклатуры КАК СерияНоменклатуры,
                           |    Товары.Цена КАК Цена
                           |ИЗ
                           |    Документ.ПеремещениеТовара.Номенклатура КАК Товары
                           |ГДЕ
                           |    Товары.Ссылка = &Ссылка
                           |
                           |ОБЪЕДИНИТЬ ВСЕ
                           |
                           |ВЫБРАТЬ
                           |    Товары.Ссылка,
                           |    Товары.Ссылка.Дата,
                           |    Товары.Ссылка.СкладОтправитель,
                           |    Товары.Номенклатура,
                           |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход),
                           |    Товары.ХарактеристикаНоменклатуры,
                           |    Товары.Количество,
                           |    Товары.СерияНоменклатуры,
                           |    Товары.Цена
                           |ИЗ
                           |    Документ.ПеремещениеТовара.Номенклатура КАК Товары
                           |ГДЕ
                           |    Товары.Ссылка = &Ссылка");
    Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка);
    
    данные = Запрос.Выполнить().Выгрузить();
    
    Движения.ТоварыНаСкладах.Загрузить(данные);
    Движения.ТоварыНаСкладах.Записать();
    
    // проверка на остатки

    Запрос = Новый Запрос ("ВЫБРАТЬ
                           |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
                           |    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
                           |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
                           |ИЗ
                           |    РегистрНакопления.ТоварыНаСкладах.Остатки(
                           |            &Дата,
                           |            (Номенклатура, СерияНоменклатуры, Склад, ХарактеристикаНоменклатуры) В
                           |                (ВЫБРАТЬ
                           |                    ПеремещениеТовараНоменклатура.Номенклатура КАК Номенклатура,
                           |                    ПеремещениеТовараНоменклатура.СерияНоменклатуры КАК СерияНоменклатуры,
                           |                    ПеремещениеТовараНоменклатура.Ссылка.СкладОтправитель КАК Склад,
                           |                    ПеремещениеТовараНоменклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
                           |                ИЗ
                           |                    Документ.ПеремещениеТовара.Номенклатура КАК ПеремещениеТовараНоменклатура)) КАК ТоварыНаСкладахОстатки
                           |ГДЕ
                           |    ТоварыНаСкладахОстатки.КоличествоОстаток < 0");
    Запрос.УстановитьПараметр("Склад", СкладОтправитель);    
    Запрос.УстановитьПараметр("Ссылка",     ЭтотОбъект.Ссылка);    
    Запрос.УстановитьПараметр("Дата",             Новый Граница(Ссылка.МоментВремени(), ВидГраницы.Включая) );
    
    данные = запрос.Выполнить().Выгрузить();
    
    Если данные.Количество() > 0 Тогда
        Отказ = Истина;
        
        Для Каждого стр Из данные Цикл 
            Сообщить("Не хватает товара на складе. Товар:" + стр.Номенклатура + "; Характеристика: " + стр.ХарактеристикаНоменклатуры + " Не хватает: " +  Строка(-стр.КоличествоОстаток));
        КонецЦикла;
    КонецЕсли;

КонецПроцедуры


Подскажите,что не так? Движения в приход и расход получились в первом запросе,но остатки так и не учитывает!
   hhhh
 
16 - 22.07.18 - 19:16
(15) во-первых вот это забыл, как в первом запросе.

   |ГДЕ
                           |    Товары.Ссылка = &Ссылка");

может у тебя 1000000 перемещений, ты их все в запрос загнал.
   Haosmedi
 
17 - 22.07.18 - 21:11
(16) И правда забыл, но проблему с выводом сообщения это не решает.
   hhhh
 
18 - 22.07.18 - 22:21
(17) возможно Сообщить в другую форму выводится.
   Haosmedi
 
19 - 22.07.18 - 22:56
(18) В какую другую ?)

Хотите сказать всё правильно в моём коде значит?
   hhhh
 
20 - 22.07.18 - 23:32
(19) ну вот это херня какая-то

(Номенклатура, СерияНоменклатуры, Склад, ХарактеристикаНоменклатуры) В

за 20 лет первый раз такой выпендреж вижу. Еще серии какие-то всобачил.

попробуй это условие выкинуть временно, появятся сообщения или нет?
   Haosmedi
 
21 - 23.07.18 - 00:10
(20) Нет, не помогло. Видимо происходит расход и приход одновременно, поэтому остатков нет. Или я не так понимаю?
   hhhh
 
22 - 23.07.18 - 00:43
(21) ну добавь условие Склад = &Склад
   Haosmedi
 
23 - 23.07.18 - 00:52
(22) А как я потом складу установлю параметр &Склад? У меня же два склада.
   hhhh
 
24 - 23.07.18 - 00:55
(23) почему 2? один склад

Ссылка.СкладОтправитель
   Haosmedi
 
25 - 23.07.18 - 01:21
(24)  Безуспешно! Попробовал через точку останова посмотреть,до срабатывания условия "Отказ = Истина" дело не доходит никак.
   Haosmedi
 
26 - 23.07.18 - 03:36
(24) Выгрузил базу. Посмотрите пожалуйста кто-нибудь, если вам не сложно.

https://my-files.ru/pmzyll
   МимохожийОднако
 
27 - 23.07.18 - 07:41
(25) Поставь точку останова на начало команды и шаг за шагом, шаг за шагом.
   Haosmedi
 
28 - 23.07.18 - 15:28
(27) Я уже пробовал, срабатывание этого не происходит ни при каких условиях: " Если данные.Количество() > 0 Тогда "
   Haosmedi
 
29 - 23.07.18 - 18:10
ВОПРОС ИСЧЕРПАН. Была ошибка в типах всего лишь моя невнимательность.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует