Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
exclude

Где в программе увидеть группы из прайса?


Группы в прайсах нужны для удобного сопоставления товаров, например, чтобы можно было выбрать какую-то одну группу товаров и связывать ее + нужны для автоматического добавления товаров в свой прайс, по соответствию между вашими группами и группами поставщиков. Если ни одно ни второе вам не нужно, то не стоит тратить время на настройку групп из прайсов поставщиков, если там не какой-то простой вариант.

...

1. Перейти во вкладку Прайсы и выбрать слева прайс, справа над таблицей товаров должно быть установлено "1 выбранный"Image Removed

...


2. В левом нижнем углу перейти во вкладку ГруппыImage Removed

...



Как настраиваются группы?

Для настройки групп можно указать 2 колонки:

...

Если и то и то в прайсе находится в одной колонке, то загрузить целиком структуру групп можно только если в прайсе они сгруппированы средствами эксель или с помощью макроса, который разрабатывается специально под каждый прайс за дополнительную плату (т.е. нет одинакового макроса для всех прайсов).Image Removed

...


Можно использовать так же "Код группы" - в этом случае в прайсе у каждого товара в какой-то колонке должен быть указан код группы, совпадающей с кодом здесь:Image Removed

...


Код группы можно загружать так же, если в прайсе указаны и код группы и название группы.

Для управления загрузкой групп в настройках прайса есть пункт 6. Группы.Image Removed

...

Здесь выбирается по какому полю загружаются группы, возможные варианты:

...

Если установить птичку, то программа будет в прайсе искать строки в которых есть текст в колонке "Название группы" и нет текста в колонке "Цена" или "Рекомендованная цена", если в прайсе есть только РРЦ.Image Removed

...


Если убрать птичку, то группы будет программа искать в каждой строке, а не в отдельных строках без цены, пример:

...

Т.е. в строках всех товаров указано название группы.



Группы в прайсе сформированы стандартной группировкой Excel


Пример прайса:Image Removed

...


1. Нужно указать поля "Название группы" и "Название выш. гр." (название вышестоящей группы).

Обычно в таких прайсах они в одной колонке, на скриншете выше это колонка BImage Removed

...


2. Поставить птичку "Группа в отдельной строке"Image Removed

...


3. Поставить птичку "Загружать дерево категорий"Image Removed

...


4. Загружать прайс нужно начиная со строки, в которой идет первая группаImage Removed

...


В результате вы получите группы 1 в 1 как они идут в прайсеImage Removed

...



Группы в прайсе указаны в виде 2-х колонок, в одной группа, во второй - вышестоящая группа.


Пример прайсаImage Removed

...

в поле "Название группы" можно указать колонку С

...

При настройке этого прайса нужно убрать так же птичку "Группа в отдельной строке", так как группы в этом прайсе указаны в каждой строке.Image Removed

...


Группа в прайсе указана в отдельной строке, без группировки средствами Excel

пример прайса:Image Removed

...


Как видно из примера - это такой же прайс как в первом пункте этой инструкции, только он не сгруппирован в экселе.Image Removed

...


Из такого прайса можно загрузить только самую нижнюю группу. Вышестоящую группу не получится загрузить, так как нельзя определить к какому уровню группировки относится строка с группой.

Здесь указывается просто поле "Название группы" с колонкой B. Вот такие группы будут у товаров в программе:Image Removed

...

Нужно так же установить птичку "Группа в отдельной строке".

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


Определение группировки по форматированию

Часто в прайсах указывают группы, которые не сгруппированы средствами Excel, но текст в каждом уровне имеет разное форматирование (разный шрифт, или цвет шрифта, или цвет ячейки, или разные отступы от начала ячейки). В этом случае группы можно загрузить, но для этого нужно составить макрос:

Expand
titleРазвернуть текст макроса


Макрос
Code Block
languagevb
firstline1
titleМакрос
###DECLARE###  
    Public Type GroupLevel
        ColIndex As Integer 'номер колонки, в которой указано название группы
        InterColor As Long 'цвет ячейки
        IsBold As Integer '1 - жирный 0 - нет
        IsItalic As Integer '1 - курсив 0 - нет
        FontName As String 'название шрифта
        FontColor As Long 'цвет шрифта
        FontSize As Long 'размер шрифта
        Indent As Integer 'отступ
		IsUnderline As Integer 'подчеркнут
    End Type  
###DECLARE###      
    'Укажите после "To" количество уровней группировки,
    '3 (три) означет что у группы есть подгруппы и у подгруппы есть еще вложенные подгруппы
    Const lvlCount = 3
	
    Dim i, j, clmnPriceIndex, clmnOutIndex, rowFirstData As Integer
    
    'Укажите номер колонки, в которой указана цена товара
    clmnPriceIndex = 0
    
    'Укажите номер колонки, в которую будет помещен результат
    clmnOutIndex = 0
    
    'Укажите номер первой строки с данными
    rowFirstData = 0
    
    Dim GroupLevels(1 To lvlCount) As GroupLevel

    'Укажите настройки для каждого уровня, пример:
GroupLevels(1).ColIndex = 2
GroupLevels(1).InterColor = 11842740
GroupLevels(1).IsBold = 1
GroupLevels(1).IsItalic = 1
GroupLevels(1).IsUnderline = -4142
GroupLevels(1).FontName = "Arial"
GroupLevels(1).FontColor = 0
GroupLevels(1).FontSize = 9
GroupLevels(1).Indent = 0

GroupLevels(2).ColIndex = 2
GroupLevels(2).InterColor = 12829635
GroupLevels(2).IsBold = 1
GroupLevels(2).IsItalic = 1
GroupLevels(2).IsUnderline = -4142
GroupLevels(2).FontName = "Arial"
GroupLevels(2).FontColor = 0
GroupLevels(2).FontSize = 9
GroupLevels(2).Indent = 0
    

    
    For i = rowFirstData To ActiveSheet.UsedRange.Rows.Count
        If ActiveSheet.Cells(i, clmnPriceIndex).Value = "" Then
            For j = 1 To lvlCount
                Set cel = ActiveSheet.Cells(i, GroupLevels(j).ColIndex)
                
                If (cel.Interior.Color = GroupLevels(j).InterColor) And _
                    ((-1) * CInt(cel.Font.Bold) = GroupLevels(j).IsBold) And _
                    ((-1) * CInt(cel.Font.Italic) = GroupLevels(j).IsItalic) And _
                    (cel.Font.Name = GroupLevels(j).FontName) And _
                    (cel.Font.Color = GroupLevels(j).FontColor) And _
                    (cel.Font.Size = GroupLevels(j).FontSize) And _                    
                    (cel.IndentLevel = GroupLevels(j).Indent) Then
                        
                       ActiveSheet.Cells(i, clmnOutIndex).Value = j
                       Exit For
                End If
            Next j
        End If
    Next i

 


...

Вам так же понадобится этот файл, для определения форматирования в ячейках, скачайте его себе:

View file
nameПроверка формата ячейки.xlsm

...

При открытии этого файла нужно разрешить ему работу с макросамиImage Removed

...


Что нужно делать:

...

Установите в нем синтаксис Visual BasicImage Removed

...


В макросе укажите:

Количество уровней групп, которые собираетесь загружать из прайсаImage Removed

...


Номер колонки в которой цена товараImage Removed

...


Номер колонки, в которую будет помещен код уровня группировки:

...

Дальше нужно для каждого уровня группировки указать блок, описывающий форматирование этого уровня в прайсе. То, что указано для примера ниже, нужно удалить и вставить в это место блоки, подготовленные через файл "Проверка формата ячейки".Image Removed

...


2. Откройте файл "Проверка формата ячейки"

В этом файле нужно получить код для каждого уровня группировки. Пример прайса, в котором каждый уровень группировки обозначен с помощью различного цвета ячейки:Image Removed

...


Копируем ячейку с названием первого уровня групп (если в экселе для названия группы объединено несколько ячеек, то их нужно разъединить)Image Removed

...

после этого скопироватьImage Removed

...

и вставить в файл с макросом проверки, ввести номер уровня группы и нажать "Проверить"Image Removed

...

в результате получим код, который нужно скопировать в макрос для прайса:Image Removed

...


Копируем код вместо того, который был в макросе:Image Removed

...


Аналогично делаем для второго и третьего уровней.Image Removed

...

Image Removed

...


Для каждого уровня указываем номер колонки, в которой указано название группы этого уровня (в примере это колонка B, указывается номер 2)Image Removed

...


Вот здесь должен быть указан уровень, разный в каждом блокеImage Removed

...



Полученный результат копируется в настройку прайсаImage Removed

...


3. В настройке прайса указываются колонки "Название группы" и "Название выш. гр." - в моем примере одна и та же колонка B, в которой находятся группы в прайсе.

Указываем так же поле "Код вышестоящей группы" - это та колонка, в которую в макросе указали помещать номер уровня группы (20-ая колонка)Image Removed

...


Устанавливаем птичку "Загружать дерево категорий"Image Removed

...


Загружать группу по наименованию + птичка Группа в отдельной строкеImage Removed

...


Сохраняем настройки и пробуем загрузить. В моем примере получились такие настройки:Image Removed

...


Если у вас сгруппировалось после этого только часть групп, то скорее всего есть группы, у которых форматирование отличается от того, которое задали в настройках, либо в прайсе есть еще дополнительный уровень групп, который вы не описали в макросе - такие группы станут первым уровнем. Если прайс делается вручную и каждый уровень групп выделяется цветом вручную, то скорее всего даже не стоит пытаться загрузить группы из такого прайса, потому что вручную могли наверняка использовать разные оттенки какого-то цвета для выделения группы и все их учесть невозможно.Image Removed

...


Удаление всех групп из прайса

Если что-то загрузилось с группами не так, можно удалить только группы прайса, при этом оставить товар, чтобы не пропали привязки. Для этого во вкладке Прайсы выберите слева нужный прайс и нажмите эту кнопку:Image Removed

...