Quad.Wiki

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

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


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


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


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


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

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

"Название группы" - это колонка, в которой находится название группы товара

"Название выш. гр." - это колонка, в которой находится вышестоящая (родительская) группа.

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


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


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

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

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

"Не загружать группы" - из прайса не будут загружаться группы вообще, а товар попадет в группу "Без группы"

"Загружать по коду" - можно выбирать, если в прайсе присутствует код группы и поставщик его не меняет.

"Загружать по наименованию" - используется для большинства прайсов, в этом случае при загрузке группа будет проверяться по названию, есть такая в базе или еще нет.

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

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


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

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


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


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


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

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


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


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


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


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


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


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

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

в поле "Название выш. гр." - колонку B или A, или, так как в этом прайсе 3 колонки, то можно название вышестоящей группы объединить из двух колонок A+B

Загрузить дерево групп из 3х уровней при такой структуре прайса нельзя, только группа и вышестоящая группа. Или делать специальный макрос, который из 3х колонок сделает две, на разработку макроса понадобится 1 час, что на момент подготовки инструкции стоит 14$.

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


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

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


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


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

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

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

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


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

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

 Развернуть текст макроса
Макрос
###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

 


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


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

1. Скопируйте текст макроса в блокнот, можете использовать для этого программу-блокнот с подсветкой синтаксиса, например Notepad++

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


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

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


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


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

Здесь нужно указать какую-то пустую колонку, после всех колонок прайса. Указывайте с запасом, на случай, если поставщик добавит в прайс колонки, чтобы не переделывать макрос. Обычно указывается 20-ая колонка, если в прайсе колонок меньше.


Укажите номер строки, с которой начинается прайс (первая строка после шапки)


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

Блоки эти нужно брать из файла "Проверка формата ячейки"


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

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


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

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

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

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


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


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



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


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



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


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

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


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


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


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


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


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

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





  • No labels