Опубликован: 06.12.2011 | Уровень: для всех | Доступ: платный
Лекция 7:

Документы, регистры накопления, СКД

< Лекция 6 || Лекция 7: 123456 || Лекция 8 >

Итак, наша задача может быть решена следующим образом:

&НаКлиенте
Процедура МатериалыЦенаПриИзменении(Элемент)
 РассчитатьСумму();
КонецПроцедуры

&НаКлиенте
Процедура МатериалыКоличествоПриИзменении(Элемент)
 РассчитатьСумму();
КонецПроцедуры

&НаКлиенте
Процедура РассчитатьСумму()
 ТекущаяСтрока=Элементы.Материалы.ТекущиеДанные;
 ТекущаяСтрока.Сумма=ТекущаяСтрока.Количество*ТекущаяСтрока.Цена;
КонецПроцедуры

Из пары обработчиков событий ПриИзменении вызывается клиентская процедура РассчитатьСумму(). Здесь мы получаем данные текущей строки через свойство ТекущиеДанные и вычисляем поле Сумма, перемножая данные в полях Количество и Цена.

При необходимости, мы можем редактировать поле Сумма независимо от значений полей Цена и Количество.

Вторая задача из тех, которые мы поставили себе выше, заключается в выводе на форму итоговых сведений по табличному полю. Ее можно реализовать различными способами, но лучше всего воспользоваться стандартными итоговыми показателями табличного поля, которые можно найти в составе табличного поля на закладке Реквизиты редактора форм, рис. 6.8.

Вывод итогового показателя для поля Сумма на форму

увеличить изображение
Рис. 6.8. Вывод итогового показателя для поля Сумма на форму

Этот реквизитИтогСумма – нужно перетащить на вкладку Элементы. Он будет отображаться на форме, изменяясь при изменениях суммы в строках табличной части, рис. 6.9.

Форма после модификации

Рис. 6.9. Форма после модификации

Документ ПоступлениеМатериалов мы разработали, настроили его форму. Документ, хотя его проведение и разрешено, пока, фактически, не проводится – мы не реализовали механизмы проведения, у нас нет регистров, по которым он будет проводиться.

Данную функциональность мы реализуем ниже, а сейчас займемся еще одним документом, который, являясь, по составу реквизитов и по особенностям устройства формы, очень похожим на документ ПоступлениеМатериалов, выполняет противоположную ему функцию – а именно – отвечает за списание материалов. В нашей системе материалы выбывают при передаче их в производство. Мы вполне можем создать новый документ копированием предыдущего и изменением некоторых его реквизитов. Так и поступим. Скопируем документ и приведем состав его реквизитов к показанному на рис. 6.10.

Создание документа ОтпускМатериаловМастеру

Рис. 6.10. Создание документа ОтпускМатериаловМастеру

Включим данный документ в состав подсистемы ОперативныйУчетМатериалов, вместо реквизита Контрагент у него будет реквизит ПолучательМатериалов с типом СправочникСсылка.Сотрудники.

В табличной части документа мы используем лишь два реквизита – это Номенклатура и Количество. Показатели стоимости списываемой номенклатуры мы будем рассчитывать автоматически. При работе с этим документом нас вполне устроит форма, генерируемая автоматически.

Форма нашего нового документа будет выглядеть так, как показано на рис. 6.11.

Документ ОтпускМатериаловМастеру в работе

Рис. 6.11. Документ ОтпускМатериаловМастеру в работе

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

Единственный способ, которым можно сделать это сейчас – программно или "вручную" просмотреть все документы поступления материалов, выводя некоторые итоговые показатели. При заполнении документа отпуска материалов мы вынуждены заранее самостоятельно проверять остатки материалов по существующим документам, самостоятельно решать, какова цена этих материалов, контролировать остатки. Это не очень удобно, не производительно, и решением этих задач мы сейчас займемся.

< Лекция 6 || Лекция 7: 123456 || Лекция 8 >
Лариса Дятчина
Лариса Дятчина

Код 

&НаКлиенте

Процедура ОсновноеКонтактноеЛицоПриИзменении(Элемент)

Если НЕ ПроверитьЗаполнениеРеквизита() Тогда

 Сообщить("Выбранное контактное лицо, "+Объект.ОсновноеКонтактноеЛицо+",не работает у контрагента.");

КонецЕсли;

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

 

&НаСервере

Функция ПроверитьЗаполнениеРеквизита()

 Возврат (Объект.ОсновноеКонтактноеЛицо.ПредставительРаботает);  

КонецФункции

&НаСервере

Процедура УстановитьНомерПредставителя()

 

 Объект.ТелефонКонтактногоЛица=Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения;

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

При проверке выдает ошибку:

{Справочник.Контрагенты.Форма.ФормаСписка.Форма(12,11)}: Переменная не определена (Объект)
 Возврат (<<?>>Объект.ОсновноеКонтактноеЛицо.ПредставительРаботает);   (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(17,2)}: Переменная не определена (Объект)
 <<?>>Объект.ТелефонКонтактногоЛица=Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения; (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(17,32)}: Переменная не определена (Объект)
 Объект.ТелефонКонтактногоЛица=<<?>>Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения; (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(6,41)}: Переменная не определена (Объект)
 Сообщить("Выбранное контактное лицо, "+<<?>>Объект.ОсновноеКонтактноеЛицо+",не работает у контрагента."); (Проверка: Тонкий клиент)

 

работаю на версии 1С:Предприятие 8.3 (8.3.10.2650)

максим матасов
максим матасов
Леонид Альбрехт
Леонид Альбрехт
Россия, Екатеринбург, 10, 2004
Оксана Максимова
Оксана Максимова
Россия, Екатеринбург, Уральский государственный университет им. А. М. Горького, 2013