Страницы: 1
RSS
Отчет по продажам
 
Всем ку!
Пару лет назад тут на форуме помогли с формулой в отчете, суть в чем, с 1С приходит авто рассылка, то есть то, что мы видим в таблице в левой части.
Требуется как то это собрать в кучу, чтобы данные были в определенных ячейках, чтобы с ними в дальнейшем можно было работать.
В целом таблица работает, однако, если в том отчете что с 1С, нет хоть одного сотрудника из указанного диапазона, то все столбцы со значениями сдвигаются.... к примеру для наглядности Удалите Иванова из А2 и станет понятно.
мне кажется что для этого больше макрос подойдет.
 
z66699, а не проще из 1С правильные данные забирать?
 
z66699,   ответил здесь
Цитата
Frolov_Andrey:   не проще из 1С правильные данные забирать?
золотые слова )
 
z66699, А как выглядят исходные данные. То есть хочу понять как отделить мух от котлет, иными словами как объяснить компьютеру, что Иванов это человек, а арбуз это либо ягода, либо тыквина, либо фрукт или овощ, в общем не человек.
 
Цитата
Msi2102 написал:
То есть хочу понять как
так нежить с маленькой буквы пишется.
Пришелец-прораб.
 
Цитата
AlienSx написал:
так нежить с маленькой буквы пишется.
Ой сомнения меня глоЖуть, что оно так и есть :D
 
Msi2102, вот так и выглядят как левая часть в таблице
сотрудник
товар
товар
товар
сотрудник
итд
 
Frolov_Andrey, неа, операторский блок не станет заморачиваться. хотя я знаю как в 1с этот отчет сделать удобным, но у них "регламент".... а у отдела продаж нет доступа в 1с, только авторассылка..
Изменено: z66699 - 02.07.2025 16:03:43
 
z66699, Хорошо, зайду с козырей. У Вас есть отдельный список Сотрудников (в идеале) или продуктов питания.
На крайний случай они выделены отступом или цветом. Я не думаю, что выгрузка из 1С выглядит как у Вас в примере.
Или может у Вас уже есть заготовка под финальную таблицу с фамилиями по горизонтали и едой по вертикали?
Изменено: Msi2102 - 02.07.2025 16:17:43
 
z66699, Так я предлагаю брать данные не в отчет, а напрямую из базы SQL
 
Msi2102, кстати да, сотрудники в этой таблице из авторассылки выделены цветом,
вот часть оригинального файла, в принципе тоже самое что и в файле 123, только таблица с 1С подгружается справа с помощью макроса.
левую часть не обязательно делать в таком виде, можно и в виде длинного вертикального списка, все равно данные с этого листа идут как другой в виде итогов по группам товаров.
 
Цитата
написал:
а напрямую из базы SQL
писал же что нет доступа в 1с
 
z66699, из оригинальной рассылки сотрудников надёжнее по отступам выявлять, можно UDF заюзать, или в макросе:
Скрытый текст

P.S. смотрю в коде уже используется...
Изменено: Hugo - 02.07.2025 17:28:05
 
Пробуйте, данные перенес влево, собираю по отступам, результат со столбца F
Код
Sub Макрос1()
    Dim arr, rez, m As Long, n As Long, k As Long
    Set sotrud = CreateObject("Scripting.Dictionary")
    Set eda = CreateObject("Scripting.Dictionary")
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    m = 0
    k = 0
    For n = 1 To lr
        If Cells(n, 1).IndentLevel = 0 Then
            If Not sotrud.Exists(Cells(n, 1).Value) Then
                m = m + 1
                sotrud.Add Cells(n, 1).Value, m
            End If
        Else
            If Not eda.Exists(Cells(n, 1).Value) Then
                k = k + 1
                eda.Add Cells(n, 1).Value, k
            End If
        End If
    Next
    arr = Range("A1:B" & lr).Value
    ReDim rez(0 To k, 0 To m)
    For n = 1 To UBound(arr)
        If sotrud.Exists(arr(n, 1)) Then clm = sotrud(arr(n, 1)): rez(0, clm) = arr(n, 1)
        If eda.Exists(arr(n, 1)) Then
            If rez(eda(arr(n, 1)), 0) = "" Then rez(eda(arr(n, 1)), 0) = arr(n, 1)
            rez(eda(arr(n, 1)), clm) = rez(eda(arr(n, 1)), clm) + arr(n, 2)
        End If
    Next
    [f1].Resize(UBound(rez) + 1, UBound(rez, 2) + 1) = rez
End Sub


PS: Данные без шапки
Изменено: Msi2102 - 02.07.2025 18:07:58
 
Msi2102, круто получилось! Но нужно чтобы в правой части сотрудники и номенклатура были статичные.
 
Цитата
z66699 написал:
нужно чтобы в правой части сотрудники и номенклатура были статичные
для того, чтобы они были статичными, должны быть предопределены их списки, я Вас об этом спрашивал в самом начале
Изменено: Msi2102 - 03.07.2025 08:01:14
 
Msi2102, желтым выделил то, что статичное
 
Цитата
z66699 написал:
желтым выделил то, что статичное
Я не понимаю для чего Вам нужно это статичное, у Вас ассортимент не меняется, или никто не увольняется и не принимаются новые сотрудники?
Делайте отдельный отчеты по отдельным листам по месяцам, один лист один месяц, а потом собирайте их в один общий отчет (можно PQ, макросы, формулы), или можете на отдельном листе собрать все первичные данные за 6 месяцев (или 12, не важно), один под другим, без пропуска строк, и запускайте макрос, он соберёт Вам данные за этот период.
Изменено: Msi2102 - 03.07.2025 16:38:52
 
Msi2102, на этом листе данные нужны лишь для того, чтобы корявый отчет из 1С (не статичный к тому же), сделать статичным. и уже отсюда данные уходят на другой лист где все разбивается по группам, по категориям, план на день итд...
в команде всегда 5чел, ну поменяется 1, поменяется фамилия как в левой части так и в правой.
ассортимент тоже иногда меняется, но редко.
Изменено: z66699 - 03.07.2025 16:42:44
 
Цитата
z66699 написал:
ну поменяется 1, поменяется фамилия как в левой части так и в правой.
Вот из-за этого "ну поменяется" и будет потом (да собственно и сейчас) возникать куча вопросов.
Я думаю Вам нужно не этот отчет менять, а формирование последующих отчетов, а этот отчет собирается правильно.
Вернемся к возникающим вопросам, что делать если в выгрузке 1С появился новый товар, его нужно включить в таблицу или нет, если включить, тогда какая разница, с этим отчетом, он также пополняется всеми значениями, если у Вас добавился новый работник, что с ним делать добавлять или нет.
Цитата
z66699 написал:
корявый отчет из 1С (не статичный к тому же)
ну не могу сказать, что данный отчет корявый, с ним вполне можно работать, вопрос в знаниях и умениях, а статичных отчетов вообще не бывает (по крайней мере я их не встречал). Собственно это лирика, к сожалению сейчас нет времени переделывать макрос, может кто ещё откликнется, да и желания особого нет, я в начале Вам задал вопросы на которые если бы Вы ответили, то возможно получили бы, то что хотите
Изменено: Msi2102 - 03.07.2025 17:41:31
 
Msi2102, да тут вроде изначально все понятно было видно что в таблице меняется а что записано без формул. По сути получилось что одна не статичная таблица, стала другой не статичной. Нужно чтобы были введены сотрудники и номенклатура, и на основании этого, данные из той части что из 1с подставлялись . Отсюда их удобнее перетаскивать по нужным отчетам. А как сейчас их брать если один сотрудник ушел в отпуск и вся таблица уехала в бок 🤔
 
Цитата
z66699 написал:
По сути получилось что одна не статичная таблица, стала другой не статичной
Услышьте меня, у Вас неправильный подход к формированию остальных отчетов, возможно Вам этот отчет и не нужен совсем, я понимаю что у Вас большое желание скопипастить этот отчёт и забыть это как страшный сон, но это неверный подход
 
Msi2102, ну научите раз такой умный?! как в таблицу которая все время изменяется 1.внести планы?  2. Сделать нужную мне последовательность сотрудников и номенклатуры? Понимаю что вы живете в написании кода, лично я это в универе проходил в 2002 году. а в школе проходили бейсик на черно белых экранах с таким видом:
10 screen2
20 line.....
итд 😉
во вложении почти оригинал файла
Изменено: z66699 - 03.07.2025 18:22:22
 
Сотрудников можно так выцепить:
Код
=ТРАНСП(ФИЛЬТР(C12;ЛЕВСИМВ(C12;3)="КН1"))

Товары:
Код
=УНИК(ФИЛЬТР(C12;НЕ(ЛЕВСИМВ(C12;3)="КН1")*(C12<>"")))


Изначальные формулы после этого работают. Но зачем  сначала таблицу от 1с, потом макрос, потом лист с формулами, потом данные в нужном формате.

Если макрос сразу работает с этими данными, почему бы сразу не формировать отчёт в финальном, нужном Вам виде?
Изменено: Nartiny - 03.07.2025 19:03:08
 
Nartiny, мозгов для этого не хватает, да и так проще если нужно что то по быстрому переделать  
Страницы: 1
Читают тему
Наверх