Установка цен компании - как добавить колонки с несколькими типами цен

Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.

Страницы: 1 2 След.
RSS
Установка цен компании - как добавить колонки с несколькими типами цен
 
Добрый день!
Конфигурация АА.
Как устанавливая цену(Розничную) сразу видеть остальные цены, которые рассчитываются на её основе?

В конфигурацию ввели следующие цены

"Розница" - базовая цена, а остальные рассчитываются на её основе или выставляются в ручную.
открываю документ "Установка цен компании".

В документе есть возможность выставить "розничную" цену" ("цена новая") - возможно ли как-то добавить колонки, в которых будут видны/сразу пересчитываться другие цены, для которых розница является базовой?
Для чего нужно: мы можем видеть себестоимость и розничную цену, чтобы задать розничную цену надо видеть сколько будет минимально рассчитываемый тип цены от розничной.
Простой пример, "себестоимость"=100руб., "Оптовая цена"="Розница"-10%, "СпецЦена"="Розница"-25% -> значит минимальная рассчитываемая цена будет у "СпецЦеы", тогда минимальная цена в Рознице должна быть не меньше чем 133,(3)руб (133руб - 100%, 100руб - 75%), чтобы когда мы получаем "СпецЦену" её величина была больше "себестоимости".

P.S. что-то типа такого кажись есть в УТ...
 
Просто увидеть все расчетные типы цен  и их цены нельзя, рассчитать новую розничную цену от базового "Себестоимость" указав процент наценки 33,33 можно.
 
Александр, а где бы вы хотели видеть сразу остальные расчетные цены ?
..как то это сомнительно для формы документа, устанавливающего конкретный тип цен.
Отчет вас не устроит ?
 
Другие цены хочу видеть в документе "Установка цен компании".
Попробую объяснить для чего:
* приходит товар, у него есть какая-то цена S (себестоимость).
* документом я выставляю розничную цену R, а остальные цены X, Y, Z(оптовые) - рассчитываются на базе розничной S.
* т.к. расчетные цены, это розница минус какой-то процент, то нужно сразу при выставлении розничной цены видеть хотя бы одну расчетную цену, по которой больше всего скидка(пусть будет Z), чтобы цена Z была больше себестоимости. т.е. если сразу не видеть рассчётные цены, то можна поставить такую розницу, что при продаже по самой большой скидочной цене - будем продавать меньше себестоимости(про выставление запрета на продажу ниже себестоимости знаю) или очень близко к себестоимости, что тоже не выгодно...

Поэтому выставляя розничную цену на товар, кроме себестоимости нужно видеть рассчетную цену, хотя бы одну на выбор.
 
Отталкиваться от себестоимости и брать ее за базу можно только в текущий момент времени. Если завтра поступит товар по другой цене, то и себестоимость может измениться.
Что касается индикации в документе. Расчетных цен может быть много. На какую ориентироваться? Добавлять в табличное поле индикацию всех расчетных цен не реально. Это уже отчет получается.
Для подобных целей и существуют отчеты.
 
Пожелание добавить индикатор зависимых цен в документ записано под номером Ц010369301,
однако полезность его кажется неоднозначной. Будем думать.
 
Спасибо! у каждого предприятия своя логика. :-)
Возможно это выплывает из того, что цены рассчитываются для разных групп товаров по разному, а не просто как -% от розницы для всего перечня номенклатуры.
По-моему, вполне логично. Выставляя розничную цену, я сразу вижу сколько в самом худшем случае(если продам по самой оптовой колонке) я заработаю и какую розничную цену нужно выставить, чтобы получить требуюмую прибыль.
 
Пока возможность еще в разработке все же советую разобрать отчет "Анализ торговой наценки". Он в прикреплении с последними исправлениями и доработан для украинской версии. В российском решении отчет включен в состав конфигурации. Отчет поможет сделать более правильное сравнение себестоимости с ценой любого типа цен т.к. он может анализировать не только текущую себестоимость, но и среднюю, минимальную и максимальную себестоимость за выбранный период. Получить для типа цен "СпецЦена" товары, у которых цена приближена к себестоимости поможет отбор по проценту отклонения с выбором диапазона критичного отклонения. Получив список товара можно сформировать документ "Изменение цен" при помощи обработки "Загрузка данных из табличного документа". Достаточно скопировать результат отчета в табличное поле обработки.
 
Виктор, Обработка после клика на кнопке сформировать, выдаёт ошибку:
Код
{ОбщийМодуль.зфЗащищенныеФункции(2692)}: Ошибка при вызове метода контекста: Ошибка при выполнении метода объекта компоненты по причине:
Ошибка при выполнении метода объекта компоненты

...Понятное дело, что кода в "зфЗащищенныеФункции" не видно.
конфигурация "Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.02.01). Вроде последняя, которая есть.
Что-то можно исправить, чтобы не было ошибки?

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

У справочника "Типы цены" есть реквизиты, влияющие на ценообразования:

1. "Рассчитывается"  - Признак расчета цены от базового типа цен.
2. "Базовый тип Цен" - Значение базового типа цен
3. "Процент скидки наценки" - процент расчета цены, от базового типа цен.
4. "Валюта цены"     - Валюта текущей цены, если не установлен признак "В валюте учета".
5. "В валюте учета"  - Признак, что валюта для цены указана в самом справочнике Номенклатура, т.е. для каждой номенклатуры своя валюта.
"Алгоритм получения цены" - Указывается способ хранения цены. Может быть только для номенклатуры, только для номенклатуры и единиц измерения, только для номенклатуры и характеристики номенклатуры.

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

Связь номенклатуры с типом цен указана в регистре сведений "Цены"
 
Цитата
Виктор Радько пишет:
Связь номенклатуры с типом цен указана в регистре сведений "Цены"
Да, но ведь в этом регистре(у меня по крайней мере) есть только связь номенклатуры с Розницей, а цены типа Оптовой, в программе сейчас можно отобразить, но в регистре никакой связи нету.

Еcть "Номенклатура", у неё есть "Тип Номенклатуры".
Есть "Тип цены", пусть он будет расчётный. у него есть табличная часть с типами номенклатуры и % скидок от базовой цены.
Т.Е. получается чтобы в ручную рассчитать оптовую цену, нужно:
1. Получить в справочнике "Номенклатура" номенклатуру и её "Тип номенклатуры".
2. Получить в справочнике "Типы Цен" тип цены, пусть это будет "Оптовая" и стоимость в базовом типе цены (т.е. сколько деталь стоит в рознице) - ЭТУ ЦЕНУ ПОЛУЧАЕМ ИЗ регистра "ЦЕНЫ" для цены "Розница".
3. Перебрать табличную часть "Оптовой" цены пока не найдём "тип номенклатуры", который соответствует нашей номенклатуре. Получить % скидки.
4. Умножить базовую цену из п.2 на полученный процент скидки из п.3. - получаем расчетную цену для требуемой номенклатуры.(т.е. "розница*%")

Это правильно, или как-то можно использовать регистры?
ещё раз повторюсь, в регистре "Цены" лежит только связь с базовой ценой. Привожу скриншот.
 
Ваш алгоритм почти правильный только его надо начинать с типа цен:
1. Получаем тип цен.
2. Если он расчетный (смотрим по признаку "Рассчитывается"), то получаем базовый тип цен, далее возвращаемся в пункт 1. Цикл выполняем до тех пор, пока мы получим базовый тип цен, который не рассчитывается.
3. Получаем цены для указанного типа цены.
4. Перебираем полученные цены и делаем пересчет цен согласно всей иерархии связей расчетных и базовых типов цен. Если у типа цен не пустая таблица "ПроцентыСкидкиНаценки", то получаем у номенклатуры тип номенклатуры и производим поиск по таблице "ПроцентыСкидкиНаценки" не нашли нужный тип номенклатуры значит "Процент скидки наценки" берем из "шапки" справочника иначе из таблицы.

Если надо получить цену для одного товара и одного типа цен можно воспользоваться функцией обПолучитьЦену(), которая находится в общем модуле "обПроцедурыОбщегоНазначения".
Изучить ее тоже полезно, вней можно увидеть сам принцип получения цены.
 
Спасибо! функция, действительно интересная.
К сожалению, получать цену надо не для одной позиции, а для пару десятков товаров и нескольких цен. Пока что, протестирую  производительность с этой функцией - если не подойдёт - буду ковырять в направлении, как это делается в АРМ менеджера по продажам - там кажись одним большим запросом.
 
Подскажите, пожалуйста, а как-то одним сложным запросом выбрать колонку рассчётной цены, например для того, чтобы отобразить на форме списка номенклатуры(как колонку в самом списке номенклатуры) можно или только через описанный выше алгоритм...?
 
Для формы "Список номенклатуры" можно формировать сложный запрос, а можно не формировать.
1. Вы можете для текущей номенклатуры получить список базовых цен, этот запрос уже реализован.
2. Получите тип номенклатуры для выбранной номенклатуры.
3. Напишите запрос для получения расчетных типов цен (запрос к справочнику типы цен), перебирая выборку запроса, получите базовый тип цен.
4. Поиском по найденному типу цен в таблице найдите список нужных цен, если базовый тип цен не найден, то и рассчитывать ничего не надо.
5. Сделайте пересчет из базового типа цен в расчетный.
6. Добавляйте новые строки в таблицу цен, где уже есть строки базовых цен.

Критерием вопроса стоит создавать сложный запрос или нет служит примерный подсчет найденных строк базовых цен для одной номенклатуры. Если их не так много, то приведенный алгоритм не приведет к большой потере производительности.
 
Цитата
Виктор Радько пишет:
...1. Вы можете для текущей номенклатуры получить список базовых цен, этот запрос уже реализован....
имеется ввиду:
1. обПолучитьЦену()
2. запрос для цен в табличной части номенклатуры
3. или колонка с ценами в АРМ менеджера по продажам?
 
В форме списка номенклатуры есть процедура ОбновитьИнформацию() в ней мы получаем строки для базовых цен.

Текст после условия:

Если ЭлементыФормы.ПанельИнформации.ТекущаяСтраница=ЭлементыФормы.ПанельИнформации.Страницы.Цены ИЛИ ЭлементыФормы.ПанельИнформации.ТекущаяСтраница=ЭлементыФормы.ПанельИнформации.Страницы.ЦеныКонтрагентов Тогда
 
Цитата
Виктор Радько пишет:
...Если ЭлементыФормы.ПанельИнформации.ТекущаяСтраница=ЭлементыФормы.ПанельИнформации.Страницы.Цены ИЛИ ЭлементыФормы.ПанельИнформации.ТекущаяСтраница=ЭлементыФормы.ПанельИнформации.Страницы.ЦеныКонтрагентов Тогда
Тут для одной позиции номенклатуры...
Если кого интересует - взял код из АРМ менеджера по продажам, трохи изменил и получилось вот такое для формы списка Номенклатуры
Код
Запрос = Новый Запрос("ВЫБРАТЬ
   |ЦеныСрезПоследних.Номенклатура КАК Номенклатура,
   |ЦеныСрезПоследних.ТипЦен.Ссылка,
   |ЦеныСрезПоследних.Номенклатура.ТипНоменклатуры КАК ТипНом,
   |ЕСТЬNULL(ЦеныСрезПоследних.Цена + ЦеныСрезПоследних.Цена / 100 * 0, 0) КАК Цена,
   |ТипыЦенПроцентыСкидкиНаценки.ТипНоменклатуры,
   |ТипыЦенПроцентыСкидкиНаценки.ПроцентСкидкиНаценки,
   |ЕСТЬNULL(ЦеныСрезПоследних.Цена + ЦеныСрезПоследних.Цена / 100 * ТипыЦенПроцентыСкидкиНаценки.ПроцентСкидкиНаценки, 0) КАК СкидочнаяЦена,
   |ТипыЦенПроцентыСкидкиНаценки.Ссылка.Наименование
   |ИЗ
   |РегистрСведений.Цены.СрезПоследних(
   |,
   |ТипЦен = &ТипЦен
   |И ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
   |И ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка)) КАК ЦеныСрезПоследних
   |ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТипыЦен.ПроцентыСкидкиНаценки КАК ТипыЦенПроцентыСкидкиНаценки
   |ПО ЦеныСрезПоследних.Номенклатура.ТипНоменклатуры = ТипыЦенПроцентыСкидкиНаценки.ТипНоменклатуры
   |ГДЕ
   |ЦеныСрезПоследних.Номенклатура В (&МассивТоваров)
   |И ТипыЦенПроцентыСкидкиНаценки.Ссылка.Наименование = &Наименование");
   МассивНоменклатуры = Новый Массив;   // для передачи в параметр запроса
   Соответствие = Новый Соответствие;   // для заполнения цен в строках табличного поля
   Для Каждого Строка из ОформленияСтрок Цикл
      МассивНоменклатуры.Добавить(Строка.ДанныеСтроки.Ссылка);
      Соответствие.Вставить(Строка.ДанныеСтроки.Ссылка, Строка);
   КонецЦикла;
   Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦен.НайтиПоНаименованию("Розница"));
   Запрос.УстановитьПараметр("Наименование", "Поощрительная");
   Запрос.УстановитьПараметр("МассивТоваров", МассивНоменклатуры);
   Выборка = Запрос.Выполнить().Выбрать();
   // Вывести цену в строку, найденную в соответствии по номенклатуре из запроса.
   Пока Выборка.Следующий() Цикл
      Соответствие.Получить(Выборка.Номенклатура.Ссылка).Ячейки.ЦенаРозничная.Значение = Выборка.Цена;
      Соответствие.Получить(Выборка.Номенклатура.Ссылка).Ячейки.ЦенаПоощрительная.Значение = Выборка.СкидочнаяЦена;
      Если ПустаяСтрока(Строка.Ячейки.ЦенаРозничная.Значение) Тогда
         Строка.Ячейки.ЦенаРозничная.Значение = 0;
      КонецЕсли;
      Если ПустаяСтрока(Строка.Ячейки.ЦенаПоощрительная.Значение) Тогда
         Строка.Ячейки.ЦенаПоощрительная.Значение = 0;
      КонецЕсли;
   КонецЦикла;
   
   //-------------- Мелкооптовая цена --------------
   Запрос.УстановитьПараметр("Наименование", "Мелкооптовая");
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
      Соответствие.Получить(Выборка.Номенклатура.Ссылка).Ячейки.ЦенаМелкоОптовая.Значение = Выборка.СкидочнаяЦена;
      Если ПустаяСтрока(Строка.Ячейки.ЦенаМелкоОптовая.Значение) Тогда
         Строка.Ячейки.ЦенаМелкоОптовая.Значение = 0;
      КонецЕсли;
   КонецЦикла;
   //-------------- Оптовая цена --------------
        Запрос.УстановитьПараметр("Наименование", "Оптовая");
   ...
        ...

Код можно оптимизировать - добавить ещё отбор в запросе по установленным параметрам отбора и т.п. Также код не учитывает множество тонкостей, но кому надо - детали в АРМ менеджера по продажам (обработка АРМПродавец -> форма ИнтерфейсПродавца ->процедура ЗаполнитьТаблицуОстатков()).
При 4000 позициях номенклатуры и 5 колонках цен - замедления визуально не ощущается.
Примечание: с учётом наложения матрицы цен(см.другие мои посты), чтобы отображались корректно все цены, для типа Номенклатуры "Штучный" надо во всех рассчитываемых типах цен прописать скидку 0%. Иначе для "Штучного" товара не будет выводится рассчитываемые цены, хотя они и будут равны рознице.

Для пересчета цен в "Установка цен.." думаю всё-таки использовать обПолучитьЦену(), т.к. там будет максимум пару десятков позиций.
 
Можно предложить внести в список пожеланий вывод колонок с различными типами цен в форму списка номенклатуры или в АРМ Менеджера по продажам хотя бы?
Достаточно удобная форма получается - виден список всей номенклатуры и весь перечень цен на неё. Если оптимизировать вывод цен согласно той номенклатуре, которая на экране + добавить фильтрацию по текущему отбору номенклатуры, то получается достаточно быстро. Частично это сейчас реализовано в АРМ менеджера по продажам - для одной цены.
 
Не могу согласиться в необходимости такой доработки.
1. Зачем в АРМ-е менеджера по продажам видеть цены по нескольким типам цен, когда нужен всего один, тип цен документа?
2. Зачем в форме списка номенклатуры просматривать цены для всех номенклатурных позиций? Почему не устраивает просмотр данных для одного элемента номенклатуры?
3. Рекомендую пользоваться отчетами: "Прайс-лист", "Анализ цен" и т.д.

Недаром в форме списка номенклатуры информационная панель отключаемая. У Вас пока нет осложнений с производительностью т.к. Ваша база довольно свежая и записей в регистре сведений всего лишь 4000, но после того как будут вводится новые документы "Изменения цен" объем записей в регистре цен будет расти, записи не перезатираются, а добавляются.
 
Сильно противоречить не смогу, т.к. имеем на сегодняшний день ACCESS БД с историей около 5 лет - тормозит просто жуть. Так что понимаю куда это приведёт, вопрос - через какое время?

1. для того чтобы не переключаться между типами цен когда звонит покупатель, а также иметь возможность видеть следующую более низкую цену, чтобы решить - продать ли покупателю по более низкой цене, если тот не решается на покупку. также не видно сразу стоимость в у.е. и в родной валюте - надо выбирать валюту. то же самое с остатками, кстати.
2. очень часто покупатели спрашивают, например, сколько будет стоить одна и та же модель масляного фильтра, но разных производителей, т.к. такие позиции по внутреннему артикулу стоят рядом(у нас), то и цену можно сказать покупателю сразу, не кликая на каждой позиции номенклатуры в отдельности.
3. это конечно хорошо. Но, к сожалению, политику наличия функциональности в конфигурации диктует начальство :( тем более что такая функциональность имеется в текущей БД и отказываться от неё не хотят. Кроме того, пока что приветствуется слоган: "меньше телодвижений", лишние клики мышкой для получения нужной информации, которая вроде бы и так лежит сверху - не приветствуются  :(

Возможно со временем, когда будет заметно замедление производительности - будем возвращаться к "оригинальной" схеме работы, которая задумывалась в конфигурации  :)

P.S. ИМХО: у меня складывается впечатление, что конфигурация больше заточена под классический магазин, когда покупатель сам выбирает что купить, сам сравнивает цены и сам определяется с выбором - как в супермаркете. Думаю, такое себе могут позволить только крупные магазины(если не оптовые). Реалии немного другие - "менеджер" завлекает покупателя и должен иметь максимум возможностей за минимальное время и без совершения лишних телодвижений оперировать имеющейся информацией. Иначе клиенты теряются...
 
Цитата
Александр Тугаенко пишет:
иметь возможность видеть следующую более низкую цену, чтобы решить - продать ли покупателю по более низкой цене, если тот не решается на покупку.

Может в этом случае воспользоваться скидами?

1. Такой функционал пока не планируется. Назначение закладки "Номенклатура" это быстрый подбор в документ. Для просмотра цен используются отчеты. Такого рода изменение является локальным и многим может не понадобится, а некоторых изобилие информации будет раздражать, а другие будут говорить, что невозможно работать все жутко тормозит и т.д.
2. Вопрос получения информации по аналогам номенклатуры обязательно будем внедрять, пока не знаю в каком формате, в отчетах точно, может еще где.
3. Если нужен быстрый поиск цен, не закрывайте отчет "Прайс-лист" всегда держите его наготове. Объясните всем как пользоваться основными возможностями отчетов: расшифровками, сохранением настроек формы настроек, отборами, быстрыми отборами. Информацию о ценах в отчете будете получать во много раз быстрее и информативнее.
Страницы: 1 2 След.
Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С