|
Перемещение товаров между складами. | ☑ | ||
---|---|---|---|---|
0
Haosmedi
19.07.18
✎
14:24
|
Есть некий справочник с номенклатурой и Регистр накопления " Товары на складах" с измерениями: Склад,Номенклатура; ресурс: Количество.
Необходимо реализовать механизм перемещения номенклатуры между складами посредством документа "Перемещение товара". Склады определяются в документе с помощью реквизитов "Склад отправитель" и "Склад получатель". Данный документ регистрирует изменение складских остатков и так же в нём должен быть реализован контроль остатков. Подскажите пожалуйста подробно,как с помощью конструктора запроса в Обработке проведения это реализовать? |
|||
1
Джинн
19.07.18
✎
14:30
|
За Вас все сделать? В чем тогда смысл такого обучения?
|
|||
2
Garykom
гуру
19.07.18
✎
14:33
|
Ну человек хочет "найти зарплатодателя, работодателей просьба не беспокоиться"©
|
|||
3
ColonelAp4u
19.07.18
✎
14:38
|
(0) в регистре при записи делаешь контроль остатков, в документе в обработке проведения делаешь движения, склад отправитель расход, склад получатель приход. Все!
|
|||
4
Serg_1960
19.07.18
✎
14:39
|
"Злые вы все, уйду я от вас"(цы)
“Новая” и “старая” методики контроля отрицательных остатков при проведении документов в системе 1С:Предприятие 8.3 https://курсы-по-1с.рф/articles/2017-02-12-two-methods-for-inventory-check/ |
|||
5
ColonelAp4u
19.07.18
✎
14:39
|
(3) контроль в регистре делаешь на дату документа и на текущую дату.
|
|||
6
leonidk
19.07.18
✎
14:43
|
(0) Практическое пособие разработчика. Радченко.
Занятие 14. |
|||
7
Garykom
гуру
19.07.18
✎
16:52
|
(5) Ты еще скажи что проверку при отмене проведения делать да?
Чтобы остатки в минуса не ушли, а то переместили/продали пришедшее ранее а потом некто умный хочет задним числом отменить. |
|||
8
Haosmedi
20.07.18
✎
18:37
|
Правильно ли я понимаю, что приход можно отразить в запросе 1(Склад получатель), а расход уже во 2-ом Запросе(Склад отправитель)? И потом уже в Запросе 3(изменение складских остатков с выводом сообщения) ?!
|
|||
9
lodger
20.07.18
✎
18:53
|
там вроде один запрос?
|
|||
10
Haosmedi
20.07.18
✎
19:33
|
По идее два запроса. В одном перемещение товаров. Во втором учёт остатков. Ума не приложу как в один запрос приход и расход добавить.
|
|||
11
hhhh
20.07.18
✎
19:45
|
(10) ну у тебя приход = расход. С одного склада забираешь товар и перевозишь на второй склад.
|
|||
12
Мимохожий Однако
20.07.18
✎
19:52
|
(10) делай пакетный запрос
|
|||
13
Serg_1960
20.07.18
✎
22:27
|
PS: Нафига я ссылку в (4) давал? Автор даже не удосужился её открыть (если бы открыл и бегло прочитал - то и вопросов бы не было).
|
|||
14
Haosmedi
22.07.18
✎
15:05
|
(13) Я прочитал.Как вести учёт остатков я понял.
Непонятно только как "Склад отправитель" и "Склад получатель" сопоставить с измерением "Склад" регистра накопления "Товары на складах" ! |
|||
15
Haosmedi
22.07.18
✎
18:53
|
Процедура ОбработкаПроведения(Отказ, Режим)
Запрос = Новый Запрос ("ВЫБРАТЬ | Товары.Ссылка КАК Регистратор, | Товары.Ссылка.Дата КАК Период, | Товары.Ссылка.СкладПолучатель КАК Склад, | Товары.Номенклатура КАК Номенклатура, | ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения, | Товары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | Товары.Количество КАК Количество, | Товары.СерияНоменклатуры КАК СерияНоменклатуры, | Товары.Цена КАК Цена |ИЗ | Документ.ПеремещениеТовара.Номенклатура КАК Товары |ГДЕ | Товары.Ссылка = &Ссылка | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Товары.Ссылка, | Товары.Ссылка.Дата, | Товары.Ссылка.СкладОтправитель, | Товары.Номенклатура, | ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход), | Товары.ХарактеристикаНоменклатуры, | Товары.Количество, | Товары.СерияНоменклатуры, | Товары.Цена |ИЗ | Документ.ПеремещениеТовара.Номенклатура КАК Товары |ГДЕ | Товары.Ссылка = &Ссылка"); Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка); данные = Запрос.Выполнить().Выгрузить(); Движения.ТоварыНаСкладах.Загрузить(данные); Движения.ТоварыНаСкладах.Записать(); // проверка на остатки Запрос = Новый Запрос ("ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | &Дата, | (Номенклатура, СерияНоменклатуры, Склад, ХарактеристикаНоменклатуры) В | (ВЫБРАТЬ | ПеремещениеТовараНоменклатура.Номенклатура КАК Номенклатура, | ПеремещениеТовараНоменклатура.СерияНоменклатуры КАК СерияНоменклатуры, | ПеремещениеТовараНоменклатура.Ссылка.СкладОтправитель КАК Склад, | ПеремещениеТовараНоменклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры | ИЗ | Документ.ПеремещениеТовара.Номенклатура КАК ПеремещениеТовараНоменклатура)) КАК ТоварыНаСкладахОстатки |ГДЕ | ТоварыНаСкладахОстатки.КоличествоОстаток < 0"); Запрос.УстановитьПараметр("Склад", СкладОтправитель); Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка); Запрос.УстановитьПараметр("Дата", Новый Граница(Ссылка.МоментВремени(), ВидГраницы.Включая) ); данные = запрос.Выполнить().Выгрузить(); Если данные.Количество() > 0 Тогда Отказ = Истина; Для Каждого стр Из данные Цикл Сообщить("Не хватает товара на складе. Товар:" + стр.Номенклатура + "; Характеристика: " + стр.ХарактеристикаНоменклатуры + " Не хватает: " + Строка(-стр.КоличествоОстаток)); КонецЦикла; КонецЕсли; КонецПроцедуры Подскажите,что не так? Движения в приход и расход получились в первом запросе,но остатки так и не учитывает! |
|||
16
hhhh
22.07.18
✎
19:16
|
(15) во-первых вот это забыл, как в первом запросе.
|ГДЕ | Товары.Ссылка = &Ссылка"); может у тебя 1000000 перемещений, ты их все в запрос загнал. |
|||
17
Haosmedi
22.07.18
✎
21:11
|
(16) И правда забыл, но проблему с выводом сообщения это не решает.
|
|||
18
hhhh
22.07.18
✎
22:21
|
(17) возможно Сообщить в другую форму выводится.
|
|||
19
Haosmedi
22.07.18
✎
22:56
|
(18) В какую другую ?)
Хотите сказать всё правильно в моём коде значит? |
|||
20
hhhh
22.07.18
✎
23:32
|
(19) ну вот это херня какая-то
(Номенклатура, СерияНоменклатуры, Склад, ХарактеристикаНоменклатуры) В за 20 лет первый раз такой выпендреж вижу. Еще серии какие-то всобачил. попробуй это условие выкинуть временно, появятся сообщения или нет? |
|||
21
Haosmedi
23.07.18
✎
00:10
|
(20) Нет, не помогло. Видимо происходит расход и приход одновременно, поэтому остатков нет. Или я не так понимаю?
|
|||
22
hhhh
23.07.18
✎
00:43
|
(21) ну добавь условие Склад = &Склад
|
|||
23
Haosmedi
23.07.18
✎
00:52
|
(22) А как я потом складу установлю параметр &Склад? У меня же два склада.
|
|||
24
hhhh
23.07.18
✎
00:55
|
(23) почему 2? один склад
Ссылка.СкладОтправитель |
|||
25
Haosmedi
23.07.18
✎
01:21
|
(24) Безуспешно! Попробовал через точку останова посмотреть,до срабатывания условия "Отказ = Истина" дело не доходит никак.
|
|||
26
Haosmedi
23.07.18
✎
03:36
|
(24) Выгрузил базу. Посмотрите пожалуйста кто-нибудь, если вам не сложно.
https://my-files.ru/pmzyll |
|||
27
Мимохожий Однако
23.07.18
✎
07:41
|
(25) Поставь точку останова на начало команды и шаг за шагом, шаг за шагом.
|
|||
28
Haosmedi
23.07.18
✎
15:28
|
(27) Я уже пробовал, срабатывание этого не происходит ни при каких условиях: " Если данные.Количество() > 0 Тогда "
|
|||
29
Haosmedi
23.07.18
✎
18:10
|
ВОПРОС ИСЧЕРПАН. Была ошибка в типах всего лишь моя невнимательность.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |