2.17
Документ "Изменение цен".
Мы уже упоминали,
что документы при проведении могут изменять значения периодических
реквизитов справочников. Разумеется, документы могут изменять значения
и непериодических реквизитов, но это мало интересно. При изменении
периодических, программа будет запоминать когда и с помощью чего
меняли значения.
В справочнике
"Номенклатура" мы имеем два реквизита интересующего нас типа: "ЦенаП"
и "ЦенаР". В их свойствах мы указали, что они могут изменяться документами.
Спроектируем такой документ.
Пусть наш документ
будет иметь возможность изменять цену не одного товара, а любого
количества. Значит наш документ будет содержать многострочную часть.
Документ должен иметь возможность изменять сразу и цену поступления
и цену реализации. При работе с ценами товара мы хотим видеть, какие
цены были до изменения. Эти поля должны быть не редактируемые. Для
документа будет заведен отдельный журнал. Создадим этот документ.
Все данные по документу сведем в таблицу:
Идентификатор: ИзменениеЦен
Журнал: ИзменениеЦен
Нумератор: Нет        
Периодичность: Год
Длина: 5        
Тип: число
Уникальность: да    
Автонумерация: да
Оперативный учет: нет
Может являться основанием для документа любого вида?: нет
|
Является
основанием для |
Вводится
на основании |
Шапка
|
Реквизит
|
Описание
|
ТипЗначения
|
Доп.
|
Таблица
|
Реквизит
|
Описание
|
ТипЗначения
|
Доп.
|
Товар |
Товар |
С.Номенклатура |
|
СтЦенаП
|
Старая
цена прихода |
Число
7.2 |
|
ЦенаП
|
Новая
цена прихода |
Число
7.2 |
|
СтЦенаР
|
Старая
цена расхода |
Число
7.2 |
|
ЦенаР
|
Новая
цена расхода |
Число
7.2 |
|
- Новый документ;
- Идентификатор
– "ИзменениеЦен", Синоним – "Изменение цен", Комментарий – "изменение
цен товара";
- Документ
будет проводиться и перепроводиться;
- Новый журнал
– "ИзменениеЦен";
- В окне свойств
документа заполним позиции согласно таблицы;
- Создадим
форму документа;
- Графы "СтЦенаП"
и "СтЦенаР" – сделаем недоступными;
- На поле ввода
"Товар" повесим формулу ВыбТовар();
- На поле ввода
"ЦенаП" повесим формулу ЦенаП();
- В модуль
формы добавим две процедуры:
Процедура ВыбТовар()
  СтЦенаП=Товар.ЦенаП.Получить(ДатаДок);
  ЦенаП=Товар.ЦенаП.Получить(ДатаДок);
  СтЦенаР=Товар.ЦенаР.Получить(ДатаДок);
  ЦенаР=Товар.ЦенаР.Получить(ДатаДок);
// Получаем значения периодических реквизитов
справочника на дату документа
КонецПроцедуры
//-----------------------------------------------
Процедура ЦенаП()
  ЦенаР=Окр(ЦенаП*(1+(Константа.ПроцентНаценки/100)),2,1);
КонецПроцедуры
- Перейдем
к модулю документа;
- Напишем процедуру
обработки проведения документа:
Процедура ОбработкаПроведения()
  ВыбратьСтроки();
  Пока ПолучитьСтроку()=1 Цикл
    УстановитьРеквизитСправочника(Товар,"ЦенаП",ЦенаП);
    УстановитьРеквизитСправочника(Товар,"ЦенаР",ЦенаР);
// Мы указываем периодические реквизиты
элемента справочника,
// указанного в поле Товар и значения, которые они будут теперь
иметь
  КонецЦикла;
КонецПроцедуры
- Сохраним
конфигурацию;
- Загрузим
1С:Предприятие;
- Введем новый
документ "Изменение цен" №1 от 04.10.2000;
- В многострочную
часть занесем товар "МПР-0342" (Кефир);
- Укажем ему
новую цену поступления – 6.50;
- Цена реализации
изменилась, и составила теперь – 8.78;
- Подтвердим,
что это нас устраивает нажатием на Enter, если нет, то можно отредактировать
эту цену;
- Заведем еще
один товар – "ФРЯ-908" (Яблоки);
- Новая цена
поступления – 18, цена реализации – 25;
- [ОК]. Проведем
документ;
- Откроем журнал
ИзменениеЦен. Мы журнал не редактировали, таким он выглядит в
1С по умолчанию. Если будет желание, можете поэкспериментировать
с изменением внешнего вида этого журнала в Конфигураторе;
- Документ
с галочкой. Галочка сиреневого цвета – документ проведен, но он
не документ оперативного учета;
- Посмотрим
какие движения вызвал наш документ;
- Он не изменял
регистров, а внес изменения в реквизиты справочников;
- Мы видим
четыре строки. Пиктограммки показывают, что это изменение периодического
реквизита. Указано в каком справочнике, какой реквизит, у какого
элемента, когда принял новое значение;
- Откроем теперь
справочник "Номенклатура";
- Найдем позицию
"Кефир";
- Меню Действия
команда "История значения". Выберем "ЦенаП";
- Мы видим,
когда как менялась цена поступления этого товара;
- Первая строчка
с изображением руки – мы ввели цену вручную, при создании этого
товара;
- Вторая строка
– листик с галочкой – мы изменили цену документом;
Ручное изменение цены никогда не имеет времени. Оно всегда располагается
в самом начале дня. Изменение цены документом отслеживает время
документа. Оно может располагаться в начале, середине либо конце
дня, как было указано при сохранении документа. Если в течении дня
было несколько таких документов, они расположатся в зависимости
от указанного в них времени.
- Закроем 1С:Предприятие;
2.18
Регистры по товарам.
Нами теперь
уже накоплен некоторый опыт работы с документами и регистрами. Займемся
конструированием регистров по товарам. Мы уже упоминали, что регистры
бывают двух типов: остатков и оборотов. Заведем для примера оба
типа регистров. А чтоб никто не догадался, назовем их так: регистр
остатков – "ОстаткиТоваров" – для хранения информации по остаткам
товаров, и регистр оборотов – "ОборотыТоваров" – для накопления
информации по оборачиваемости товара.
Регистр "ОстаткиТоваров"
будет содержать информацию: где хранится/хранился товар, что хранилось,
какого сорта. Следовательно, у нас будут измерения "Склад", "Товар",
"Сорт". В задании сказано, что списание товара может идти либо по
LIFO, либо по FIFO, либо по среднему. Для первых двух вариантов
нам надо хранить еще информацию – когда этот товар поступил на склад.
Удобнее всего будет завести еще одно измерение – "Партия" – типа
документ прихода товара ("ПриходнаяНакладная"). В документе хранятся
дата и время, и можно без труда отсортировать их по порядку постановки
на учет. Ресурсы регистра – то, что хранит регистр. Нас будет интересовать
во-первых, количество товара в основной единице измерения товара,
во-вторых его сумма по цене поступления – цена учета, и в-третьих
сумма по цене документа – для определения полученного навара. Ценой
документа в случае приходной накладной и накладной на перемещение
будет цена поставки, а в случае расходной накладной – цена реализации.
Реквизит у нас будет один – "ФлагДвижения" тип Число 1.0. В нем
мы будем отражать характер движения, он будет равен 1 при движении
Контрагент-Склад/Склад-Контрагент, и 2 при движении Склад-Склад.
Движения по регистру у нас будут – приход для прихода товара на
склад и расход для расхода товара со склада. Данные по регистру
сведем в таблицу:
Идентификатор: ОстаткиТоваров
Тип: Остатки
Периодичность: - |
Измерения
|
Идентификатор
|
Комментарий
|
Тип
значения |
Дополнительно
|
Склад
|
Место
хранения |
С.Склады
|
|
Товар
|
Товар
|
С.Номенклатура
|
|
Сорт
|
Сорт
|
С.Сорт
|
|
Партия
|
Партия
прихода товара |
Д.Приходная
Накладная |
|
Ресурсы
|
Идентификатор
|
Комментарий
|
Тип
значения |
Дополнительно
|
Количество
|
Количество
товара |
Число
17.2 |
|
СуммаП
|
Сумма
по цене поступления |
Число
19.2 |
|
СуммаД
|
Сумма
по цене документа |
Число
19.2 |
|
Реквизиты
|
Идентификатор
|
Комментарий
|
Тип
значения |
Дополнительно
|
ФлагДвижения
|
Характер
движения |
Число
1.0 |
+
|
Регистр "ОборотыТоваров"
будет накапливать информацию по движению товара как между складами
и контрагентами, так и между самими складами. Нас здесь не интересует
– это приход или расход, нам важен сам факт движения. Но движение
вообще – мало информативно для анализа. Необходимо движение за какой-либо
период для сравнения как было раньше и как обстоят дела с оборотами
сейчас. В качестве такого периода выберем, для примера, месяц.
Определимся
теперь с измерениями. Нам нужно знать по какому складу какой товар
какого сорта дал какой оборот. Таким образом мы имеем следующие
измерения: "Склад", "Товар", "Сорт". Накапливать обороты мы будем
по количеству в основной единице измерения товара и по сумме по
цене учета (поступления). Реквизит будет такой же как и в регистре
"ОстаткиТоваров". Сведем все в таблицу:
Идентификатор: ОборотыТоваров
Тип: Обороты
Периодичность: - месяц |
Измерения
|
Идентификатор
|
Комментарий
|
Тип
значения |
Дополнительно
|
Склад
|
Место
хранения |
С.Склады
|
|
Товар
|
Товар
|
С.Номенклатура
|
|
Сорт
|
Сорт
|
С.Сорт
|
|
Ресурсы
|
Идентификатор
|
Комментарий
|
Тип
значения |
Дополнительно
|
Количество
|
Количество
товара |
Число
17.2 |
|
СуммаУ
|
Сумма
по цене учета |
Число
19.2 |
|
Реквизиты
|
Идентификатор
|
Комментарий
|
Тип
значения |
Дополнительно
|
ФлагДвижения
|
Характер
движения |
Число
1.0 |
+
|
Создадим в конфигураторе
эти регистры. Только в регистре "ОстаткиТоваров" измерение "Партия"
оставим пока неопределенного вида.
<<
Предыдущая глава | Содержание
| Следующая
глава >>
|