|
как проверить был ли приход перед тем как списать со склада? | ☑ | ||
---|---|---|---|---|
0
golovonometr
26.02.15
✎
14:01
|
Учу 1С, пишу в процедуре ОбработкаПроведения() след:
Для Каждого Материала из Материалы Цикл // из табличной части документа Запись = Движения.Склад.ДобавитьРасход(); Запись.Период = Дата; ..... КонецЦикла; Движения.Склад.Записать; Я хочу узнать перед тем как добавить расход, был ли приход этого материала, хватает ли его на складе. Я могу например влепить Запрос в цикл типа "ВЫБРАТЬ Количество ИЗ РегистрНакопления.Склад.Остатки ГДЕ Материал = &Материал", но душа не лежит на запрос в цикле написать, как получить эти остатки? |
|||
1
Бубка Гоп
26.02.15
✎
14:07
|
(0) зачем в цикле? помести все материалы в СЗ, а еще лучше - во временную таблицу, и к ней прилевачь текущие остатки. п.с. душа у тебя верно лежит циклы в запросе - за это и побить могут
|
|||
2
Бубка Гоп
26.02.15
✎
14:09
|
т.е. что то вроде
"ВЫБРАТЬ Количество ИЗ РегистрНакопления.Склад.Остатки ГДЕ Материал В(&Материалы)" пример для вт писать без конструктора лениво, извини. в инете поищи если интересно |
|||
3
Бубка Гоп
26.02.15
✎
14:10
|
(2) + наверно и сам материал выбирай, чтобы видеть чего конкретно остаток ты получил :)
|
|||
4
Масянька
26.02.15
✎
14:11
|
(0) А при заполнении документа (подбор) не вариант?
|
|||
5
floody
26.02.15
✎
14:13
|
(0) контроль остатков обычный? предлагаю посмотреть видео павла чистова, первые 5-6 уроков. и не изобретать велосипед.
|
|||
6
SleepyHead
гуру
26.02.15
✎
14:20
|
Спиши и проверь остатки. Если есть отрицательные, выставляй Отказ в Истину, то есть транзакция будет отменена, документ не будет проведен.
|
|||
7
SleepyHead
гуру
26.02.15
✎
14:20
|
(4) пока он подбирает, другой списать может.
|
|||
8
golovonometr
26.02.15
✎
14:29
|
контроль остатков обычный, самый примитивный склад, с которого списываются товары по номенклатуре, я как программист, понимаю что проверять остатки по каждой номенклатуре необходимо будет сделать, но каждый раз Запрос посылать или функцию проверки на остатки в цикле - стремно, наверно стремно будет также списать, а потом проверить на отрицательные остатки все и отменять транзакцию. Или это нормальная практика в 1С? Если можно приведите пример.
С Временными таблицами мне понравилось, копаюсь в этом пока. |
|||
9
anatoly
26.02.15
✎
14:35
|
во первых наверное не ОбработкаПроведения а ПередЗаписью.
во вторых, выбери остатки как в (2) объедини с ТЧ списания по номенклатуре - и посмотри в каких строках остаток меньше расхода. |
|||
10
Бубка Гоп
26.02.15
✎
14:37
|
(8) ну вт прикольно когда решается задача посерьезнее, все таки. если все так примитивно как ты описал, то можно обойтись и СпискомЗначений в качестве параметра.
|
|||
11
Бубка Гоп
26.02.15
✎
14:38
|
(9) почему перед записью? аргументируйте.
|
|||
12
DrShust
26.02.15
✎
14:44
|
(8)
МВТ = Новый МенеджерВременныхТаблиц; Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МВТ; ТЗ = ТабЧаст.Выгрузить(, "Номенклатура, Количество"); Запрос.УстановитьПараметр("тз", ТЗ); Запрос.Текст = "ВЫБРАТЬ | тз.Номенклатура |ПОМЕСТИТЬ втТЗ |ИЗ | &тз КАК тзСостав; | |//////////////////////////////////////////////////////////////////////////////// |
|||
13
SleepyHead
гуру
26.02.15
✎
15:10
|
(9) В проведении нужно это делать, так как выполняется транзакция и в этот момент другие пользователи списывать не могут.
Управление блокировками автоматическое или управляемое? |
|||
14
D_E_S_131
26.02.15
✎
15:13
|
(12) Зачем менеджер ВТ инициализировать, если работа с ВТ внутри одного запроса происходит?
Зачем вообще создавать ВТ, если нужны данные всего лишь из одной колонки? (8) "нормальная практика" — проверить остатки на "минус" это замечательная практика. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |