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