Методические материалы обучения партнеров

апрель 2004 г.


67

1С:Предприятие 7.7. Компонента Оперативный учет

в нашей Конфигу­рации предусмотрены документы, записываюЩие движения в ре­гистр к£^ со знаком «+», тик и «-», то можнО сделать вывод о том, что регистры спроектированы пра­вильно.

4-1. Создание Формы и Модуля документа для документа «Счет»

диг1/юг Формы документа показан на рисунке 4.1:

Рис.4.1. Форма документа «Счет»

работе с документом обеспечим сходные с документом «Расходная на­кладная» возможности. В результате, список процедур и функций, обращение к которым необходимо ввести поле «Формула» свойств полей ввода, примет вид:

Глава 4. Резервирование товаров________________

Текст используемых процедур поместим в Модуль формы:

Т £* TT\7T1 J3 TTr^T/f ГЛгпт/ч^ч-итгпти-т^г

Процедура ПриОткрытии

// установим режим обязательного перепроведения

// при записи уже проведенного документа

ПриЗаписиПерепроводить(1); КонецПроцедуры

Процедура ВводНового(Копирование) ,

// Копирование^ - документ введен копированием, иначе О

Если. Копирование=0 Тогда

// введем значения "по умолчанию" реквизитов шапки ДатаКурса=ДатаДок;

Курс=Константа. КурсУЕ. Получить(ДатаКурса); КонецЕсли; КонецПроцедуры

Процедура ПриВыбореТовара()

// организуем автоматическое заполнение реквизитов табличной

// части при выборе товара

Единица=Товар. ЕдиницаИзмерения;

Цена=Товар. ЦенаПродажи;

Если Количество^ Тогда Количество=1;

КонецЕсли;

ВычислитьСумму(Контекет); КонецПроцедуры

НЕ нашли? Не то? Что вы ищете?

Процедура ПриВыбореПокупателя(}
'/пересчитаем суммы.

ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл

ПриВыбореТовара{);
КонецЦикла;
:онецПроцедуры. •

Процедура ПриЗаписи() . ,

// проверка по покупателю

Если ишсупатель. Выбран()-0 Тогда
I/ если не введено, вызовем окно предупреждения и запретим
/запись ;.,;..

Предупреждение ("Не выбран покупатель!"); : --,.. .
СтатусВозврата ( 0) ; :. . .., , ;.

КонецЕсли;


Методические материалы обучения партнеров

апрель 2004 г.

68

1С:Предприятие 7.7. Компонента Оперативный учет

Глава 4. Резервирование товаров

69


// проверим, правильно ли введены значения реквизита Товар Если ПроверкаСкладаТовара(Контекст)=0 Тогда

СтатусВозврата(0) ; КонецЕсли;

КонецПроцедуры

Так как у документа «Счет» отсутствует реквизит «Склад», то есть резервиро­
вание товаров может осуществляться сразу на всех складах, то в процедуре Гло­
бального модуля ПроверкаСкладаТовара () необходимо предусмотреть
следующую проверку:_______________________________________________

Если Конт. Вид()<>"Счет" Тогда

<Первоначальный текст модуля проверки выбора склада> КонецЕсли;

По условию задачи, при выписке счета, нам необходимо получить информа­цию о той сумме покупок, которую заплатил клиент за предыдущий месяц, и, если эга сумма превышает некоторую заданную величину, то программа, при выводе цены продажи товара, должна автоматически учитывать предусмотренную нами величину скидки. Для хранения вышеназванных величин добавим в Конфигурацию две константы. Для учета величины полной суммы покупок клиентом введем в Конфигурацию оборотный регистр «ОборотыКлиента». Сумму покупок будем учи­тывать в у. е.

Упражнение №4.2 I. Создайте следующие константы в Конфигурации:

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

ПроцентСкидки

ГраницаС кид ки

Синоним

Процент скидки

Граница скидки

Комментарий

Величина скидки на цену продажи в %

Оборот клиента за текущий период в у. е.

Тип

Число

Число

Вид

Длина

6

10

Точность

2

0

Не отрицательный

V

V

Разделять Триады

Периодический

2. Создайте оборотный регистр:

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

ОборотыКлиента

Синоним

Резервы товаров

Комментарий

Обороты

Тип регистра

Обороты

Периодичность

Месяц

Быстрая обработка движений

Регистр будет иметь следующую структуру

Измерения

Ресурсы

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

внт

Оборот

chhoi

нт

Оборот

Ю---; шй

Оборот клиента за период в у. е.

[ИЯ

-НОЧНИК

Число

}

Контрагенты

) i

10

'". )СТЬ

2

1 гать Триады,

V...... "

С ) движений

О. х.Ор ИТОГОВ

Тогда движения в этот регистр будут записывать следующие документы:

Регистр «ОборотыКлиента»

Теперь, после создания оборотного регистра, в форму документа можно доба­
вить текстовый элемент, в строке «Формула» которого напишем имя функции
Оборот (). Текст функции: _______

// Вычислим сумму покупок клиента за предыдущий месяц Функция Оборот() // 1-е число предыдущего месяца

ДатаПредМес=НачМесяца(ДобавитьМесяц(ДатаДок,-1)); Если ДатаПредМес<ПолучитьДатуТА() Тогда

Регистр. ОборотыКлиента. ИспользоватьПериод(

ДатаГод(ДатаПредМес),ДатаМесяц(ДатаПредМес)); КонецЕсли;

Возврат Регистр. ОборотыКлиента. Итог(Покупатель,"Оборот"); КонецФункции

добавим в Модуль формы перед процедурой ПриВыбореТовара (), в которой после

строки________________________

I Цена=Товар. ЦенаПродажи; необходимо добавить строки текста:

// определим цену продажи с учетом скидки Если Оборот()Жонстанта. ГраницаСкидки Тогда

Цена^Гсгвар. ЦенаПродажи* {100-Константа .ПроцентСкидки) /100; КонецЕсли;


Методические материалы обучения партнеров

апрель 2004 г.

70

1С:Предприятие7.7. Компонента Оперативный учет

Как следует из Блок-схемы информационных потоков, документ «Счет» запи­сывает движения во вновь созданные регистры «РезервыТоваров» и «СостояниеЗаказа»:

Регистр

Движение

РезервыТоваров

Увеличение резерва товаров на складах

СостояниеЗаказа

Резервирование товаров с увеличением сумм отгрузки и оплаты

Поэтому в Модуль документа необходимо добавить предопределенную проце­дуру ОбработкаПроведения (), имеющую вид:

Процедура ОбработкаПроведения() ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл

// по регистру "РезервыТоваров"

Регистр. РезервыТоваров. ПривязыватьСтроку(НомерСтрокй);
Регистр. РезервыТоваров. ПоСчету=ТекущийДокумент{ );
Регистр. РезервыТоваров. Товар=Товар; ;

Регистр. РезервыТоваров. РезервТовара=Количество; '

Регистр. РезервыТоваров. ДвижениеПриходВыполнить() ; КонецЦикла;

//по регистру "СостояниеЗаказа" Регистр. СостояниеЗаказа. ДвижениеПриход(ТекущийДокумент(},

Итог("СуммаУЕ"),Итог("СуммаУЕ")); КонецПроцедуры

4.2. Создание документов «Приход денег» и «Снятие резерва»

Документ «ПриходДенег» предназначен для учета поступлений денежных средств от покупателей в качестве расчетов за отгруженные товары и предостав­ленные услуги.

Упражнение №43

1. Воспользовавшись Конструктором, создайте документ «ПриходДенег»:

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

ПриходДенег

Синоним

Приход денег

Комментарий

Клиент оплатил товар

Журнал

Оплата

71

Глава 4. Резервирование товаров

2. Добавьте в документ реквизиты шапки «Курс», «ДатаКурса», «СуммаУЕ», «Сумма Ру б», такие же, как и у документа «Оплата покупки». Добавьте два новых реквизита шапки:

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

Покупатель

ПоСчету

Синоним

Покупатель

Счет

Комментарий

Партнер, покупающий товар

Счет, по которому пришли день­ги

Тип значения

Справочник

Документ

Вид

Контрагенты

Счет

Длина

Точность

Не отрицательный

Разделять Триады

3. Создайте Форму документа. Диалога формы, которого может выглядеть сле­дующим образом:

ЯГ

т

п?

п«

* о рма документа «ПриходДенег»

4. Заполните поле «Формула» у полей ввода и кнопок, приведенных в следую­щей таблице:

Поле Ввода Формула

ДатаДок

ДатаКурса=ДатаДок; Пересчет { )

ДатаКурса

Пересчет ()

ПоСчету

Сумма Ру б

СуммаУЕ^? (Курс=0, 0, Сумма Ру б /Курс)

Кнопка Формула

Очистить Покупателя | Покупатель^

5. Поместите текст используемых процедур в Модуль формы:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12