1С:Предприятие / Простой склад / Глава 6

2.17 Документ "Изменение цен".

Мы уже упоминали, что документы при проведении могут изменять значения периодических реквизитов справочников. Разумеется, документы могут изменять значения и непериодических реквизитов, но это мало интересно. При изменении периодических, программа будет запоминать когда и с помощью чего меняли значения.

В справочнике "Номенклатура" мы имеем два реквизита интересующего нас типа: "ЦенаП" и "ЦенаР". В их свойствах мы указали, что они могут изменяться документами. Спроектируем такой документ.

Пусть наш документ будет иметь возможность изменять цену не одного товара, а любого количества. Значит наш документ будет содержать многострочную часть. Документ должен иметь возможность изменять сразу и цену поступления и цену реализации. При работе с ценами товара мы хотим видеть, какие цены были до изменения. Эти поля должны быть не редактируемые. Для документа будет заведен отдельный журнал. Создадим этот документ. Все данные по документу сведем в таблицу:
Идентификатор: ИзменениеЦен
Журнал: ИзменениеЦен
Нумератор: Нет        
Периодичность: Год
Длина: 5        
Тип: число
Уникальность: да    
Автонумерация: да
Оперативный учет: нет
Может являться основанием для документа любого вида?: нет

Является основанием для

Вводится на основании

Шапка

Реквизит

Описание

ТипЗначения

Доп.

Таблица

Реквизит

Описание

ТипЗначения

Доп.

Товар Товар С.Номенклатура  

СтЦенаП

Старая цена прихода

Число 7.2

 

ЦенаП

Новая цена прихода

Число 7.2

 

СтЦенаР

Старая цена расхода

Число 7.2

 

ЦенаР

Новая цена расхода

Число 7.2

 

  1. Новый документ;
  2. Идентификатор – "ИзменениеЦен", Синоним – "Изменение цен", Комментарий – "изменение цен товара";
  3. Документ будет проводиться и перепроводиться;
  4. Новый журнал – "ИзменениеЦен";
  5. В окне свойств документа заполним позиции согласно таблицы;
  6. Создадим форму документа;
  7. Графы "СтЦенаП" и "СтЦенаР" – сделаем недоступными;
  8. На поле ввода "Товар" повесим формулу ВыбТовар();
  9. На поле ввода "ЦенаП" повесим формулу ЦенаП();
  10. В модуль формы добавим две процедуры:

  11. Процедура ВыбТовар()
      СтЦенаП=Товар.ЦенаП.Получить(ДатаДок);
      ЦенаП=Товар.ЦенаП.Получить(ДатаДок);
      СтЦенаР=Товар.ЦенаР.Получить(ДатаДок);
      ЦенаР=Товар.ЦенаР.Получить(ДатаДок);
    // Получаем значения периодических реквизитов справочника на дату документа
    КонецПроцедуры
    //-----------------------------------------------
    Процедура ЦенаП()
      ЦенаР=Окр(ЦенаП*(1+(Константа.ПроцентНаценки/100)),2,1);
    КонецПроцедуры
  12. Перейдем к модулю документа;
  13. Напишем процедуру обработки проведения документа:

  14. Процедура ОбработкаПроведения()
      ВыбратьСтроки();
      Пока ПолучитьСтроку()=1 Цикл
        УстановитьРеквизитСправочника(Товар,"ЦенаП",ЦенаП);
        УстановитьРеквизитСправочника(Товар,"ЦенаР",ЦенаР);
    // Мы указываем периодические реквизиты элемента справочника,
    // указанного в поле Товар и значения, которые они будут теперь иметь
      КонецЦикла;
    КонецПроцедуры
  15. Сохраним конфигурацию;
  16. Загрузим 1С:Предприятие;
  17. Введем новый документ "Изменение цен" №1 от 04.10.2000;
  18. В многострочную часть занесем товар "МПР-0342" (Кефир);
  19. Укажем ему новую цену поступления – 6.50;
  20. Цена реализации изменилась, и составила теперь – 8.78;
  21. Подтвердим, что это нас устраивает нажатием на Enter, если нет, то можно отредактировать эту цену;
  22. Заведем еще один товар – "ФРЯ-908" (Яблоки);
  23. Новая цена поступления – 18, цена реализации – 25;
  24. [ОК]. Проведем документ;
  25. Откроем журнал ИзменениеЦен. Мы журнал не редактировали, таким он выглядит в 1С по умолчанию. Если будет желание, можете поэкспериментировать с изменением внешнего вида этого журнала в Конфигураторе;
  26. Документ с галочкой. Галочка сиреневого цвета – документ проведен, но он не документ оперативного учета;
  27. Посмотрим какие движения вызвал наш документ;
  28. Он не изменял регистров, а внес изменения в реквизиты справочников;
  29. Мы видим четыре строки. Пиктограммки показывают, что это изменение периодического реквизита. Указано в каком справочнике, какой реквизит, у какого элемента, когда принял новое значение;
  30. Откроем теперь справочник "Номенклатура";
  31. Найдем позицию "Кефир";
  32. Меню Действия команда "История значения". Выберем "ЦенаП";
  33. Мы видим, когда как менялась цена поступления этого товара;

  34. Первая строчка с изображением руки – мы ввели цену вручную, при создании этого товара;
  35. Вторая строка – листик с галочкой – мы изменили цену документом;

  36. Ручное изменение цены никогда не имеет времени. Оно всегда располагается в самом начале дня. Изменение цены документом отслеживает время документа. Оно может располагаться в начале, середине либо конце дня, как было указано при сохранении документа. Если в течении дня было несколько таких документов, они расположатся в зависимости от указанного в них времени.
  37. Закроем 1С:Предприятие;


2.18 Регистры по товарам.

Нами теперь уже накоплен некоторый опыт работы с документами и регистрами. Займемся конструированием регистров по товарам. Мы уже упоминали, что регистры бывают двух типов: остатков и оборотов. Заведем для примера оба типа регистров. А чтоб никто не догадался, назовем их так: регистр остатков – "ОстаткиТоваров" – для хранения информации по остаткам товаров, и регистр оборотов – "ОборотыТоваров" – для накопления информации по оборачиваемости товара.

Регистр "ОстаткиТоваров" будет содержать информацию: где хранится/хранился товар, что хранилось, какого сорта. Следовательно, у нас будут измерения "Склад", "Товар", "Сорт". В задании сказано, что списание товара может идти либо по LIFO, либо по FIFO, либо по среднему. Для первых двух вариантов нам надо хранить еще информацию – когда этот товар поступил на склад. Удобнее всего будет завести еще одно измерение – "Партия" – типа документ прихода товара ("ПриходнаяНакладная"). В документе хранятся дата и время, и можно без труда отсортировать их по порядку постановки на учет. Ресурсы регистра – то, что хранит регистр. Нас будет интересовать во-первых, количество товара в основной единице измерения товара, во-вторых его сумма по цене поступления – цена учета, и в-третьих сумма по цене документа – для определения полученного навара. Ценой документа в случае приходной накладной и накладной на перемещение будет цена поставки, а в случае расходной накладной – цена реализации. Реквизит у нас будет один – "ФлагДвижения" тип Число 1.0. В нем мы будем отражать характер движения, он будет равен 1 при движении Контрагент-Склад/Склад-Контрагент, и 2 при движении Склад-Склад. Движения по регистру у нас будут – приход для прихода товара на склад и расход для расхода товара со склада. Данные по регистру сведем в таблицу:
Идентификатор: ОстаткиТоваров
Тип: Остатки
Периодичность: -

Измерения

Идентификатор

Комментарий

Тип значения

Дополнительно

Склад

Место хранения

С.Склады

 

Товар

Товар

С.Номенклатура

 

Сорт

Сорт

С.Сорт

 

Партия

Партия прихода товара

Д.Приходная

Накладная

 

Ресурсы

Идентификатор

Комментарий

Тип значения

Дополнительно

Количество

Количество товара

Число 17.2

 

СуммаП

Сумма по цене поступления

Число 19.2

 

СуммаД

Сумма по цене документа

Число 19.2

 

Реквизиты

Идентификатор

Комментарий

Тип значения

Дополнительно

ФлагДвижения

Характер движения

Число 1.0

+

Регистр "ОборотыТоваров" будет накапливать информацию по движению товара как между складами и контрагентами, так и между самими складами. Нас здесь не интересует – это приход или расход, нам важен сам факт движения. Но движение вообще – мало информативно для анализа. Необходимо движение за какой-либо период для сравнения как было раньше и как обстоят дела с оборотами сейчас. В качестве такого периода выберем, для примера, месяц.

Определимся теперь с измерениями. Нам нужно знать по какому складу какой товар какого сорта дал какой оборот. Таким образом мы имеем следующие измерения: "Склад", "Товар", "Сорт". Накапливать обороты мы будем по количеству в основной единице измерения товара и по сумме по цене учета (поступления). Реквизит будет такой же как и в регистре "ОстаткиТоваров". Сведем все в таблицу:
Идентификатор: ОборотыТоваров
Тип: Обороты
Периодичность: - месяц

Измерения

Идентификатор

Комментарий

Тип значения

Дополнительно

Склад

Место хранения

С.Склады

 

Товар

Товар

С.Номенклатура

 

Сорт

Сорт

С.Сорт

 

Ресурсы

Идентификатор

Комментарий

Тип значения

Дополнительно

Количество

Количество товара

Число 17.2

 

СуммаУ

Сумма по цене учета

Число 19.2

 

Реквизиты

Идентификатор

Комментарий

Тип значения

Дополнительно

ФлагДвижения

Характер движения

Число 1.0

+

Создадим в конфигураторе эти регистры. Только в регистре "ОстаткиТоваров" измерение "Партия" оставим пока неопределенного вида.

<< Предыдущая глава | Содержание | Следующая глава >>