Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Glodos
0 / 0 / 0
Регистрация: 09.06.2013
Сообщений: 54
1

Система учета на складе. Проверка возможности списания заданного количества товара со склада.

07.04.2017, 16:09. Просмотров 667. Ответов 3
Метки нет (Все метки)

Система учета на складе. Есть документ поставка (пришло 5 товаров) проводится и учитывается в регистре накоплений, и документ списание(списали 3 товара). Как поставить сделать так, чтобы нельзя было списать 20 товаров, когда имеется всего 5?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2017, 16:09
Ответы с готовыми решениями:

Информационная система учета товара на складе
добрый вечер! можете сказать принимает ли участие сервер базы данных SQL,в программе, которую я...

Создание схемы данных БД для учета товара на складе
Стоит задача создать программу для учета товара на складе. Рисую схему данных, я наверное не первый...

Система учета товаров на складе
Помогите, пожалуйста, сделать программу на тему "Система учета товаров на складе" Буду чрезмерно...

Бд Система управления учета товаров на складе
Здравствуйте! Кто-то может помочь с доработкой программы в MSAccess? В лс плз Система управления...

Уменьшение количества товара на складе при покупке
есть таблица Товары и созданная по ней форма, где можно добавлять понравившийся товар в Корзину...

3
engel89
3 / 3 / 2
Регистрация: 23.12.2016
Сообщений: 27
07.04.2017, 17:31 2
Нужен пакетный запрос, в запросе конфигурируют документ списания и регистр остатков, и сравнивается кол-во списания и кол-во остатков.
1
Xomych
814 / 621 / 102
Регистрация: 01.11.2012
Сообщений: 2,264
07.04.2017, 20:58 3
В интернетах и различных уроках по 1С это 100500 раз разжёвано
Например, я делаю так
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Процедура ОбработкаПроведения(Отказ, Режим)
    Движения.ОстаткиТоваров.Записывать=Истина;
    Движения.Пересортица.Записывать=Истина;
    Движения.Продажи.Записывать=Истина;
    
    
    ВТ=Новый МенеджерВременныхТаблиц;
    З=Новый Запрос;
    З.МенеджерВременныхТаблиц=ВТ;
    
    З.Текст="ВЫБРАТЬ
    |Товар,
    |Сумма(Количество) КАК Количество,
    |Сумма(Сумма) КАК Сумма,
    |Сумма(СуммаСоСкидкой) КАК СуммаСоСкидкой
    |ПОМЕСТИТЬ ТЧ
    |ИЗ Документ.РасходнаяНакладная.Товары КАК Товары
    |ГДЕ Ссылка=&Ссылка
    |СГРУППИРОВАТЬ ПО Товар
    |;
    |ВЫБРАТЬ 
    |ТЧ.Товар,
    |Остатки.ПрихНакл,
    |Количество,
    |Сумма,
    |СуммаСоСкидкой,
    |ЕСТЬNULL(Остатки.ОстатокТовараОстаток,0) КАК Остаток, 
    |ЕСТЬNULL(Остатки.БазоваяСтоимостьОстаток,0) КАК ПСумма, 
    |ЕСТЬNULL(Остатки.РозничнаяСтоимостьОстаток,0) КАК РСумма 
    |ИЗ ТЧ КАК ТЧ
    |ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(&МоментВремени,Склад=&Склад И Товар В(ВЫБРАТЬ ТОВАР ИЗ ТЧ КАК ТЧ)) КАК Остатки
    |ПО ТЧ.Товар=Остатки.Товар
    |ГДЕ ЕСТЬNULL(Остатки.ОстатокТовараОстаток,0)>=0
    |УПОРЯДОЧИТЬ ПО ПрихНакл.Дата ВОЗР
    |ИТОГИ МАКСИМУМ(Количество),СУММА(Остаток),МАКСИМУМ(Сумма), МАКСИМУМ(СуммаСоСкидкой)
    |ПО ТЧ.Товар";
    
    З.УстановитьПараметр("МоментВремени",МоментВремени());
    З.УстановитьПараметр("Склад",Склад);
    З.УстановитьПараметр("Ссылка",Ссылка);
    
    Выб=З.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    while Выб.Следующий() do
        Пересорт=Выб.Количество-Выб.Остаток;
//ВОТ ЗДЕСЬ ТЫ ДОЛЖЕН ДАВАТЬ ОТЛУП, я списываю в пересорт
        if Выб.Количество>Выб.Остаток then
            Сообщить("Не хватает товара """+Выб.Товар+""",
            |в пересортицу будет списано "+Пересорт);
        endif;
//===========================================       
        ОстСпис=Min(Выб.Количество,Выб.Остаток);
        БСум=0;
        
        ВыбПН=Выб.Выбрать();
        while ВыбПН.Следующий() И ОстСпис>0 do
            КолСпис=Мин(ОстСпис,ВыбПН.Остаток);
            ОстСпис=ОстСпис-КолСпис;
            
            Движение = Движения.ОстаткиТоваров.Добавить();
            Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
            Движение.Период = Дата;
            Движение.Товар = ВыбПН.Товар;
            Движение.Склад = Склад;
            Движение.ПрихНакл = ВыбПН.ПрихНакл;
            Движение.ОстатокТовара = КолСпис ;
            Движение.БазоваяСтоимость = КолСпис/ВыбПН.Остаток*ВыбПН.ПСумма;
            Движение.РозничнаяСтоимость = КолСпис/ВыбПН.Остаток*ВыбПН.РСумма;
            
            БСум=БСум+КолСпис/ВыбПН.Остаток*ВыбПН.ПСумма;
        enddo;  
        
        if Пересорт>0 then
            Движение = Движения.Пересортица.Добавить();
            Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
            Движение.Период = Дата;
            Движение.Товар = Выб.Товар;
            Движение.Склад = Склад;
            Движение.Количество = Пересорт ;
            Движение.Сумма = Пересорт/Выб.Количество * ?(ДисконтнаяКарта.Пустая(),Выб.Сумма,Выб.СуммаСоСкидкой);
        endif;
        
        Движение = Движения.Продажи.Добавить();
        Движение.Период = Дата;
        Движение.Товар = Выб.Товар;
        Движение.Склад = Склад;
        Движение.Количество = Выб.Количество;
        Движение.СуммаПрих = БСум;
        Движение.СуммаПрод = ?(ДисконтнаяКарта.Пустая(),Выб.Сумма,Выб.СуммаСоСкидкой);
        
    enddo;
    Движения.Записать();
    
    if Режим=РежимПроведенияДокумента.Неоперативный then
        З.Текст="ВЫБРАТЬ
        |ТЧ.Товар,
        |Остатки.ПрихНакл,
        |ЕСТЬNULL(Остатки.ОстатокТовараОстаток,0) КАК Остаток 
        |ИЗ ТЧ КАК ТЧ
        |ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(,Склад=&Склад И Товар В(ВЫБРАТЬ ТОВАР ИЗ ТЧ КАК ТЧ)) КАК Остатки
        |ПО ТЧ.Товар=Остатки.Товар
        |ГДЕ ЕСТЬNULL(Остатки.ОстатокТовараОстаток,0)<0";
        
        З.УстановитьПараметр("Склад",Склад);
        
        Выб=З.Выполнить().Выбрать();
        if Выб.Количество()>0 then
            Сообщить("В результате проведения документа задним числом
                     |появляются отрицательные остатки:",СтатусСообщения.ОченьВажное);
            Отказ=Истина;        
        endif;           
        while Выб.Следующий() do
            Сообщить("По товару """+Выб.Товар+""", остаток по """+Выб.ПрихНакл.Номер+""": "+Выб.Остаток);
        enddo;
    endif;  
    
    Движения.ОстаткиТоваров.Записывать=НЕ Отказ;
    Движения.Пересортица.Записывать=НЕ Отказ;
    Движения.Продажи.Записывать=НЕ Отказ;
КонецПроцедуры
1
polax
1045 / 662 / 235
Регистрация: 16.01.2015
Сообщений: 2,530
09.04.2017, 13:22 4
Поставить галку в настройках "Контролировать остатки" не подойдет?
0
09.04.2017, 13:22
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2017, 13:22

Запрос с update на уменьшение количества товара на складе
Привет всем!!! Пишу свою первую курсовую по БД. Возникла проблема. Есть таблица &quot;Товары&quot;(GOODS),...

Уменьшение количества товара на складе при редактировании заказа
Программа считает количество и цену на складе и выводит все в стоимость заказа . Но я не знаю как...

Проверка наличия на складе остатков товара
Документ отгрузка товаров: делаю проверку наличия на складе остатков товара, если нет товара...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.