|
Учет остатков на складе | ☑ | ||
---|---|---|---|---|
0
GVS13
11.11.17
✎
16:51
|
Привет всем! Ребятки, помогите пожалуйста. С 0 пишу конфу, учет прихода, расхода и перемещения товаров по складам.
Сделала запрос в документе расход на вывод ошибки, если на остатках не достаточно товара. Подобное действо должно происходить в документе перемещение с одного склада на другой. При отладке ошибка не выскакивает и перемещение проводится в минус((( Посмотрите, пожалуйста, где ошибка в тексте запроса. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОстаткиОстатки.Номенклатура, | ОстаткиОстатки.Склад, | ОстаткиОстатки.КоличествоОстаток, | ПеремещениеТовара.СкладОткуда, | ПеремещениеТовара.ТабличнаяЧасть1.( | Номенклатура | ) |ИЗ | РегистрНакопления.Остатки.Остатки КАК ОстаткиОстатки | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПеремещениеТовара КАК ПеремещениеТовара | ПО ОстаткиОстатки.Номенклатура = ПеремещениеТовара.ТабличнаяЧасть1.Номенклатура | И ОстаткиОстатки.Склад = ПеремещениеТовара.СкладОткуда |ГДЕ | ОстаткиОстатки.КоличествоОстаток < 0" ; Запрос.УстановитьПараметр("Склад", СкладОткуда); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не хватает"+ Строка(- ВыборкаДетальныеЗаписи.КоличествоОстаток) + "единиц материала""" + ВыборкаДетальныеЗаписи.Номенклатура + """"; Сообщение.Сообщить(); Отказ = Истина; КонецЦикла П.С. я совсем новичок, не судите строго) |
|||
1
deaddy64
11.11.17
✎
17:04
|
(0) рекомендую посмотреть как это сделано в типовых. Будет четкое понимание.
в запросе слишком многое не так. Нет фильтров, не используются вирт таблицы, соединение тоже вроде как не совсем верное... |
|||
2
deaddy64
11.11.17
✎
17:07
|
(1) "не используются вирт таблицы" = "не используются параметры в вирт таблицах"
|
|||
3
Фрэнки
11.11.17
✎
17:26
|
если не слишком глубоко ломать голову, то принимаем следующее:
1) документ уже записан. 2) выбираем данные из табчасти документа. 3) левое соединение данных остатков с табчастью документа |
|||
4
h-sp
11.11.17
✎
17:26
|
(2) но вроде этот кусок должен работать, ошибка в чем-то другом.
|
|||
5
jsmith82
11.11.17
✎
17:28
|
зачем внутреннее?!
|
|||
6
jsmith82
11.11.17
✎
17:29
|
у тебя заранее отсекаются товары, которых нет в остатках на складе
|
|||
7
jsmith82
11.11.17
✎
17:30
|
табчасть левое остатки
|
|||
8
AlvlSpb
12.11.17
✎
11:54
|
(0) Ошибка в выборе таблиц для соединения. Ваше ПеремещениеТовара.ТабличнаяЧасть1.(Номенклатура) возвращает не поле, а результат запроса. Нужен либо доп Цикл, чтобы из этого результата извлечь поле или (значительно проще и правильней) обращаться сразу не к документу, а к его таблице
ВЫБРАТЬ | ОстаткиОстатки.Номенклатура, | ОстаткиОстатки.Склад, | ОстаткиОстатки.КоличествоОстаток, | ПеремещениеТовараТабличнаяЧасть1.Ссылка.СкладОткуда, | ПеремещениеТовараТабличнаяЧасть1.Номенклатура |ИЗ | РегистрНакопления.Остатки.Остатки КАК ОстаткиОстатки | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПеремещениеТовара.ТабличнаяЧасть1 КАК ПеремещениеТовараТабличнаяЧасть1 | ПО ОстаткиОстатки.Номенклатура = ПеремещениеТовара.ТабличнаяЧасть1.Номенклатура | И ОстаткиОстатки.Склад = ПеремещениеТовара.ТабличнаяЧасть1.Ссылка.СкладОткуда |ГДЕ | ОстаткиОстатки.КоличествоОстаток < 0" Ну и прислушайся к (1). |
|||
9
GVS13
14.11.17
✎
08:50
|
Добавила вирт таблицу. Теперь выскакивает ошибка
{(6, 2)}: Таблица не найдена "НоменклатураДокумента" <<?>>НоменклатураДокумента КАК НоменклатураДокумента Текст Если Режим = РежимПроведенияДокумента.Оперативный Тогда МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ОстаткиОстатки.Номенклатура, | ОстаткиОстатки.КоличествоОстаток |ПОМЕСТИТЬ НоменклатураДокумента |ИЗ | НоменклатураДокумента КАК НоменклатураДокумента | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Остатки.Остатки( | , | Номенклатура В | (ВЫБРАТЬ | НоменклатураДокумента.Номенклатура | ИЗ | НоменклатураДокумента) | И Склад = &Склад) КАК ОстаткиОстатки | ПО НоменклатураДокумента.Номенклатура = ОстаткиОстатки.Номенклатура |ГДЕ | ОстаткиОстатки.КоличествоОстаток < 0" ; Запрос.УстановитьПараметр("СкладОткуда", СкладОткуда); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не хватает"+ Строка(- ВыборкаДетальныеЗаписи.КоличествоОстаток) + "единиц материала""" + ВыборкаДетальныеЗаписи.Номенклатура + """"; Сообщение.Сообщить(); Отказ = Истина; КонецЦикла; КонецЕсли; |
|||
10
Фрэнки
14.11.17
✎
08:57
|
(9) Вам бы для начала запросики научиться составлять с использованием Конструктора запросов, да посмотреть какие тексты получаются у него на выходе, как с виртуальными таблицами оно работает и т.д. и т.п.
|
|||
11
Фрэнки
14.11.17
✎
09:02
|
потому что вся процедура ручками делается на пустом тексте процедуры нажатием на ПКМ и затем запуске конструктора с обработкой результатов и затем уже в цикле выборка. Кстати, номер строки тоже нужен.
Поищите видео на ютубах обучающее таким приемам работы в конфигураторе. Там реально визуализация всего обучения нужна, а не текстом в форуме расписывать, что и куда нажимать. |
|||
12
Фрэнки
14.11.17
✎
09:03
|
И забудьте уже про это ВНУТРЕННЕЕ СОЕДИНЕНИЕ несчастное - откуда Вам вообще в голову идея пришла, что его в этой задачке нужно приспособить???
|
|||
13
GVS13
14.11.17
✎
09:10
|
Запрос пишу через конструктор, после выбора необходимых таблиц и установки условий текст запроса выводится в таком виде.
|
|||
14
Фрэнки
14.11.17
✎
09:21
|
(13) насколько я понимаю, их конструктора просто не получится выйти с таким текстом запроса. В нем нет основной выборки или как там ее правильно называют. После этой конструкции
|ПОМЕСТИТЬ НоменклатураДокумента где-то дальше должно быть еще раз ВЫБРАТЬ в которой не будет указано ПОМЕСТИТЬ А у Вас не так - значит это не Конструктор сделал |
|||
15
FIXXXL
14.11.17
✎
09:45
|
(14) нормально конструктор сформирует
результатом запроса будет число строк в таблице :) |
|||
16
Фрэнки
14.11.17
✎
11:27
|
(13) если это еще нужно, могу скинуть файл чистой базы с решением только данного примера
|
|||
17
azernot
14.11.17
✎
11:46
|
Ошибка везде. И не только в запросе (даже если его поправить с учётом (8).
На остатке 1 шт (не отрицательный остаток, запрос его не поймает). Перемещение списывает 2 штуки. Вуаля, отрицательный остаток на складе. |
|||
18
azernot
14.11.17
✎
11:59
|
Вот так должен выглядеть ваш запрос, если пытаться решить именно вашу задачу, именно вашим способом.
ВЫБРАТЬ ПеремещениеТабличнаяЧасть1.Номенклатура КАК Номенклатура, СУММА(ПеремещениеТабличнаяЧасть1.Количество) КАК Количество ПОМЕСТИТЬ НоменклатураКСписанию ИЗ Документ.Перемещение.ТабличнаяЧасть1 КАК ПеремещениеТабличнаяЧасть1 ГДЕ ПеремещениеТабличнаяЧасть1.Ссылка = &Ссылка СГРУППИРОВАТЬ ПО ПеремещениеТабличнаяЧасть1.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НоменклатураКСписанию.Номенклатура КАК Номенклатура, НоменклатураКСписанию.Количество КАК Количество, ЕСТЬNULL(ОстаткиОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, НоменклатураКСписанию.Количество - ЕСТЬNULL(ОстаткиОстатки.КоличествоОстаток, 0) КАК КоличествоНехватает ИЗ НоменклатураКСписанию КАК НоменклатураКСписанию ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остатки.Остатки( , Склад = &СкладОткуда И Номенклатура В (ВЫБРАТЬ НоменклатураКСписанию.Номенклатура ИЗ НоменклатураКСписанию)) КАК ОстаткиОстатки ПО (ОстаткиОстатки.Номенклатура = НоменклатураКСписанию.Номенклатура) ГДЕ ЕСТЬNULL(ОстаткиОстатки.КоличествоОстаток, 0) < НоменклатураКСписанию.Количество |
|||
19
GVS13
14.11.17
✎
19:31
|
Да, вопрос все еще актуален, спасибо всем кто помогает!
|
|||
20
vicof
14.11.17
✎
20:29
|
Почему еще никто не затребовал фотку?
|
|||
21
Волшебник
модератор
14.11.17
✎
21:37
|
(0) Зачем Вы пишете с нуля конфу, которых уже тысячи?
|
|||
22
jsmith82
14.11.17
✎
21:46
|
(21) хелловорлд же
|
|||
23
jsmith82
14.11.17
✎
21:47
|
Просто у 1сников требования повыше к хелловорлду
Как минимум - мини-конфа по складу |
|||
24
Фрэнки
14.11.17
✎
21:47
|
(21) вероятно, что изучает программирование. Есть даже целая книга, построенная целиком на разработке простейшей конфигурации "с нуля" для демонстрации основных приемов программирования
|
|||
25
Фрэнки
14.11.17
✎
21:48
|
правда, книга эта идет в комплекте с учебной версией 1С, но ТС почему то не хочет искать примеры там, а пытается вытащить что-то здесь...
|
|||
26
Волшебник
модератор
14.11.17
✎
21:49
|
(24) Ага, Митичкин писал ещё по 7.7
http://old.mista.ru/tutor_1c/example_sklad.htm |
|||
27
GVS13
14.11.17
✎
22:03
|
Изучаю 1С по пособию Радченко, но не все мне там понятно((
|
|||
28
Волшебник
модератор
14.11.17
✎
22:05
|
(27) Вы можете задавать вопросы самому Радченко. Не надо плодить на мисте темы по книге Радченко. Имейте совесть!
|
|||
29
jsmith82
14.11.17
✎
22:32
|
(27) Я даже знаю что. Раздел Зарплата и Планы обмена
|
|||
30
KSN
14.11.17
✎
23:00
|
(0) Теряют хватку одинесники... ФОТО где???
|
|||
31
azernot
15.11.17
✎
10:14
|
(19) Чем не устраивает (18)? Почему вопрос ещё актуален?
|
|||
32
GVS13
15.11.17
✎
13:48
|
Всем спасибо за помощь! Получилось
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |