На главную   На главную   Форумы Новости Документация Скачать Купить  
Регистрация  
Система Allegro
Oб Allegro Характеристики Пример конфигурации Документация База ошибок Развитие
Версия для печати К списку книг Вернуться к оглавлению Предыдущий параграф Следующий параграф
Поиск по книге

Глава 7. ГЕНЕРАЦИЯ ДОКУМЕНТОВ

Решаем проблему хранения справочных цен

Вопрос о способе хранения текущих цен на товары является одним из существенных вопросов, которые приходится решать разработчику конфигурации. Имеется всего три возможности для хранения цен а Allegro:

  • В справочнике товаров
  • В таблицах настроек
  • В документах

Хранение цен в справочнике товаров является наиболее простым, но не всегда верным решением. Недостатки такого способа хранения: цены всегда доступны для редактирования, невозможно создать какие- то особые прайсы для «эксклюзивных» покупателей, отсутствует возможность хранить историю цен. Преимущество хранения цен в справочнике – это простота решения для программиста и для пользователя.

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

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

Обсуждая с нашим гипотетическим заказчиком (компанией TechnoTrade) проблему цен, мы пришли к решению, что в данном случае вполне возможно использовать простейший способ хранения цен – в справочнике товаров. Менеджеры, занимающиеся товаром, достаточно компетентны в номенклатуре, каждый отвечает за определенную группу товаров, и менеджеру удобно при создании нового товара в справочнике одновременно вводить его текущую цену. Открытый доступ к текущим ценам в данной задаче создает скорее дополнительные удобства, чем проблемы . Заказчик полагает, что система постоянных скидок, закрепленных за покупателями в справочнике контрагентов, достаточна для решения большинства вопросов, связанных с ценами. Заказчик желает иметь две цены с НДС в долларах США для каждого товара: оптовую и розничную. Заказчик также хочет иметь интерфейс ( или отчет), в котором можно было бы сравнивать прайсовые цены товаров с их текущей себестоимостью, если эти товары имеются на складе и видеть «процент наценки».

Вызовем окно «Метаданные» и добавим в справочник « Товар» два поля:



Нам вполне достаточно 8 десятичных знаков в поле, так как не предполагается наличие товаров с ценой свыше миллиона долларов . Поле оптовой цены мы назвали PRICE_W, а розничной – PRICE_R.

Откроем закладку «Справочник» и отрегулируем ширину колонок так , чтобы все поля хорошо помещались в сетке. Сохраним настройку сетки (Ctrl+S):



Как мы смогли убедиться, добавление новых полей в справочник не составляет проблемы. Даже если этот справочник уже используется . В данном случае товары, имеющиеся в справочнике, используются документами поступлений и продаж. Заполним цены имеющихся товаров произвольными значениями от $100 до $300, используя значение поля ID, которое в справочнике товаров имеет диапазон значений около 100..2000. Розничные цены назначим в 1.2 раза выше оптовых. Для этого вызовем окно интерактивного SQL и выполним команду:

update goods
set price_w = (1000 + id)/10,
    price_r = 1.2*(1000 + id)/10
where id <> 0

Подтвердим транзакцию.

Примечание: условие ID <> 0 необходимо всегда использовать в командах update, которые изменяют значения каких-либо полей всего справочника, иначе они не выполнятся, так как элемент любого справочника с ID=0 защищен от модификации системой. При попытке модификации элемента с ID=0 возникает исключение (exception) с сообщением: exception3 cannot change default (empty) value.

Окно редактирования элемента справочника выглядит теперь так:





Пример создания склада в Allegro Наверх