Наличие нескольких складов

Наличие нескольких складов

Сообщение salamonis » Вс ноя 04, 2018 8:06 pm

Добрый вечер,на повестке дня встал очень существенный вопрос как облегчить работу торгового представителя ускорить прием заказов.когда приобретали Предпринематель с sql был один склад фирма на месте не стоит постоянно растет.и на сегодня уже 3 склада с общим ассортимент ом в 6500 позиций ,и сейчас встала проблема когда набивает заказы торговик не видит какой товар по наличию есть на каком складе ,и не может набить в один счёт товар из разных складов чтоб в счёте сразу разделил по нужным складам товар в наличии,приходится набивать заказ из одного склада потом из второго. И так далее .а например клиент диктуез заказ он то не имеет предсьавления из какого склада что да как,в первую очередь большая трата времени,иногда пока дело доходит до след склада клиент половину забывает,а это прямой ущерб,и конечно же оч много уходит бумаги .когда можно было бы вписать все на один лист приходится печататб с каждого склада отдельно .помогите решить вопрос!!! Заранее спасибо
salamonis
 
Сообщения: 3
Зарегистрирован: Вт авг 15, 2017 7:07 am

Re: Наличие нескольких складов

Сообщение dmitry » Пн ноя 05, 2018 5:56 am

Заказ - это счет, который еще не означает списание со склада. При заполнении заказа агенту незачем делить его на несколько документов, потом каким-то образом разделим его на несколько накладных. Можно сделать так, чтобы накладная разделялась в зависимости от наличия товара автоматически. Но без контроля человека это может привести к путанице. Например, товар имеется на двух складах, программа спишет всегда с первого. В реальности отгрузили с первого, но сегодня еще не успели его оприходовать, а были остатки на втором...

Поэтому я рекомендую поступать так:
В Сервис/Настройки, там - Работа/Сообщать в рамке "О недостатке товара" выбрать "Не выводить сообщение". Создали по счету накладную, проведите ее кнопкой внизу, даже не сохраняя ее. Красным цветом будут выделены позиции, отсутствующие на складе, удалите их и сохраните документ. Снова создайте по счету накладную (программа включит в нее только оставшиеся позиции), выберите в ней другой склад, проведите и т.д.

Если все-таки автоматически:
В расходной накладной нажать вверху "Выбор операции" (будет выделена "Продажа"), нажать "Изменить", в шаблоне операции нажать "Программа".

1.png
1.png (16.75 КБ) Просмотров: 154

2.png
2.png (15.41 КБ) Просмотров: 154


Скопировать и вставить следующий текст:

Код: Выделить всё
        Dim Frm As Predpr.FrmDoc, FrmNew As Predpr.FrmDoc
        Dim SRow As Predpr.SubRow, i As Integer, x As Integer
        Dim SRowNew As Predpr.SubRow, TrNew As Predpr.TransRow, OpNew As Predpr.Doc

        Dim Trans As Predpr.TransRow = Op.DocTransCalc(1)

        For Each SRow In Trans.SubRows.Values
            If SRow.Integ2 = -1 Then
                GoTo Start
            End If
        Next
        Exit Sub

Start:  If Microsoft.VisualBasic.MsgBox("Разделить накладную на несколько складов?", Microsoft.VisualBasic.MsgBoxStyle.Question + Microsoft.VisualBasic.MsgBoxStyle.YesNo, "При недостатке товара") = Microsoft.VisualBasic.MsgBoxResult.No Then
            Exit Sub
        End If

        Predpr.DataMain.FormApp.StatBar.Panels(0).Text = "Создаются накладные на каждый склад..."

        Dim Roff As Predpr.TableSQL, ArrOp As New System.Collections.Hashtable, iOp As Integer
        Roff = Predpr.DataMain.DBmain.OpenRecordset("SELECT ID FROM Persons WHERE ID<>" & Op.OfficeID & " AND TypeID=2")
        Do While Not Roff.EOF
            OpNew = Predpr.DataMain.AppData.DocsCollection.Add(2)
            OpNew.OfficeID = Roff("ID")
            OpNew.PersonID = Op.PersonID
            OpNew.DocDate = Op.DocDate
            ArrOp.Add(OpNew.OfficeID, OpNew)
            Roff.MoveNext()
        Loop


        Predpr.DataMain.FormApp.StatBar.Panels(0).Text = "Вычисляются остатки на складах..."

        Dim Rqnt As Predpr.TableSQL, Fld As Predpr.FieldSQL
        Dim DtStr As String = Predpr.GlobalFunction.SQLdate(Op.DocDate)
        Rqnt = Predpr.DataMain.DBmain.OpenRecordset("TRANSFORM Sum([Quantity]*[Sign]) AS Qnt SELECT ArticleID FROM Data_Articles WHERE DocDate<=" & DtStr & " and OfficeID<>" & Op.OfficeID & " GROUP BY ArticleID PIVOT OfficeID")


        Predpr.DataMain.FormApp.StatBar.Panels(0).Text = "Переносятся строки..."

        x = Trans.SubRows.Count
        Do While x > 0
            SRow = Trans.SubRows(x)
            If SRow.Integ2 = -1 Then
                Rqnt.FindFirst("ArticleID=" & SRow.ArticleID)
                For Each Fld In Rqnt.Fields
                    If Fld.Name <> "ArticleID" Then
                        If Predpr.GlobalFunction.Nz(Fld.Value, 0) >= SRow.Qnt Then
                            OpNew = ArrOp(CInt(Fld.Name))
                            TrNew = OpNew.DocTransCalc(1)
                            SRowNew = SRow.Clone(TrNew)
                            SRow.Delete()
                            Exit For
                        End If
                    End If
                Next
            End If
            x = x - 1
        Loop

        Frm = Op.Form
        Trans = Op.DocTransCalc(1)
        Frm.Grid.SetLinkTransRow(Trans, True)
        Op.DocText = ""
        Op.Form.SetBoxText("BoxText", "")
        Frm.Refresh()
        System.Threading.Thread.Sleep(1000)

        Dim ArrFrmOp As New System.Collections.ArrayList
        For Each OpNew In ArrOp.Values
            TrNew = OpNew.DocTransCalc(1)
            If TrNew.SubRows.Count > 0 Then
                ArrFrmOp.Add(OpNew)
            End If
        Next

        Predpr.DataMain.FormApp.StatBar.Panels(0).Text = ""

        If ArrFrmOp.Count = 0 Then
            Microsoft.VisualBasic.MsgBox("На других складах недостающий товар также отсутствует", , "Результат")
            Exit Sub
        End If

        Dim FullW As Integer = Predpr.DataMain.FormApp.ClientSize.Width - 4
        Dim FullH As Integer = Predpr.DataMain.FormApp.ClientSize.Height - 4 - Predpr.DataMain.FormApp.StatBar.Height - 26 'Predpr.DataMain.FormApp.TabList.Height
        Dim TmpW = FullW / (ArrFrmOp.Count + 1)
        Dim TmpL As Integer

        Frm.WindowState = System.Windows.Forms.FormWindowState.Normal
        Frm.Top = 0
        Frm.Left = 0
        Frm.Height = FullH
        Frm.Width = TmpW
        System.Threading.Thread.Sleep(500)
        Frm.Refresh()

        Dim iFrm As Integer
        For iFrm = 0 To ArrFrmOp.Count - 1
            OpNew = ArrFrmOp(iFrm)
            FrmNew = Predpr.GlobalFunction.OpenFormDocFromOp(OpNew)
            OpNew.Modified = True

            TmpL = TmpL + TmpW
            FrmNew.WindowState = System.Windows.Forms.FormWindowState.Normal
            FrmNew.Top = 0
            FrmNew.Left = TmpL
            FrmNew.Height = FullH
            FrmNew.Width = TmpW
            System.Threading.Thread.Sleep(500)
            FrmNew.Refresh()
        Next


Нажать "Сохранить".
Если решите отказаться от автоматического способа, удалить этот текст в шаблоне операции и сохранить.
dmitry
Разработчик
 
Сообщения: 2966
Зарегистрирован: Чт янв 27, 2011 3:43 pm

Re: Наличие нескольких складов

Сообщение salamonis » Пн ноя 05, 2018 1:40 pm

Дмитрий к сожалению манипуляциями набивания товара со складов,потом удалять и создавать по кажд складу накл оч много времени занимает ,особенно когда на кажд клиента выделенно ограниченное время , чтоб успеть к другому для приемки заказа,а еще если в счете 50-60 позиций ,сидеть искать это из одного это о всторого склада ,не получается,поэтому и обратились для того чтоб облегчить себе жизнь и лишную трату бумаги.
1) ваш способ первый не подходит ,нужно как минимум чтоб в счете разделялись склады чтоб когда приходит на склад счет для сборки складовщик не выискивал какая позиция из какого склада,а четко в счете было написанно склад 1 и пошел перечень склад 2 перечень товара склад 3 перечень,потом на складе сборка пройдет верно ,а то что вы говорите типа он может выбирать сразу позицию с разных складов одну и ту же,в момент заказа,торговый менеджер выбирает остатки по складам и сразу сам выбирает с какого склада товар нужен.цель разместить весь этот счет на одной бумаге с разделенными складами
2)после того как товар собран на руках счет с собраным по разным складам товар также мог скомпановыватся в одну расходную наклд и отдавалась в руки одна бумага а не 3 как -4 к примеру,как это сейчас происходит,а программа сама списывает с нужного склада по которому был создан счет,так на сегод день работает 1С у соседней фирмы.и я вижу на сколько это быстро и удобно
наша цель прийти к 1 счету в которой будут выбиты позиции с нужных складов одновременно,можно для облегчения создавать сборочный лист для склада чтоб разделял склады при печати,и третий момент самый важный чтоб также по этому счету создавалась 1 расходная наклд по разным складам .
привожу пример как делает 1С взял специально чтоб вы понимали .
Вложения
укп.jpg
укп.jpg (140.89 КБ) Просмотров: 145
salamonis
 
Сообщения: 3
Зарегистрирован: Вт авг 15, 2017 7:07 am

Re: Наличие нескольких складов

Сообщение salamonis » Пн ноя 05, 2018 1:42 pm

вот пример с 1С
Вложения
1356ad21b509f8544d2352a1d290f6f4.JPG
1356ad21b509f8544d2352a1d290f6f4.JPG (114.17 КБ) Просмотров: 145
salamonis
 
Сообщения: 3
Зарегистрирован: Вт авг 15, 2017 7:07 am

Re: Наличие нескольких складов

Сообщение dmitry » Пн ноя 05, 2018 2:05 pm

Несколько складов в одном документе означает совсем другую логику, для этого действительно нужна другая программа.

P.S. Если товары на разных складах не пересекаются (например, на одном продукты питания, на другом техника, на третьем химия), то объедините их в один. То что они находятся в разных местах можно игнорировать, а смотреть данные по одному или другому можно, выбирая соответствующие группы товара. И при печати счета или накладной можно добавить столбец с группой товара для удобство кладовщика.
Трудно понять, как пользователь "1С" или сама "1С" выбирает склад, если какой-то товар есть одновременно на первом, втором и третьем.

P.P.S. Можно устранить проблему, которая на скриншоте. Для этого:
- Скопировать текст ниже.
- Нажать в программе Ctrl+F10,
- вставить текст, нажать "ОК".

DB.Execute("ALTER TABLE BuhTempls ALTER COLUMN Program VARCHAR(5000)")

Потом еще раз скопировать и вставить подпрограмму в шаблон операции продажа, как написано выше.
Хотя вы уже написали, что этот путь не подходит...
dmitry
Разработчик
 
Сообщения: 2966
Зарегистрирован: Чт янв 27, 2011 3:43 pm

Re: Наличие нескольких складов

Сообщение BLB » Ср ноя 21, 2018 9:52 am

Доброго дня! Одним словом возможности нет, делать активной кнопку "Все партнеры"?
Вложения
скрин П4.JPG
скрин П4.JPG (74.88 КБ) Просмотров: 73
BLB
 
Сообщения: 12
Зарегистрирован: Сб апр 16, 2011 9:02 am
Откуда: Днепр

Re: Наличие нескольких складов

Сообщение BLB » Чт ноя 22, 2018 10:42 am

Подскажите пожалуйста, как не отображать в: -справочники. -прайс-листы. -наличие на складе. один из складов? Спасибо.
BLB
 
Сообщения: 12
Зарегистрирован: Сб апр 16, 2011 9:02 am
Откуда: Днепр

Re: Наличие нескольких складов

Сообщение dmitry » Чт ноя 22, 2018 6:42 pm

Если исключить навсегда, то в его свойствах изменить тип "Свое подразделение" на "Поставщик/потребитель".

1.png
1.png (31.88 КБ) Просмотров: 63


Если для некоторых пользователей, в некоторых местах, то это может быть какое-то индивидуальное решение. Тогда напишите на pr-4@ukr.net, подумаю.
dmitry
Разработчик
 
Сообщения: 2966
Зарегистрирован: Чт янв 27, 2011 3:43 pm


Вернуться в Использование программы

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 1