Класс Документы и Журналы документов
Стандартные реквизиты: Номер документа и Дата документа.
Заполнение реквизита значением по умолчанию. В свойствах реквизита есть параметр Значение заполнения. Для простых типов оно заполняется вручную. Для типов СправочникСсылка список значений берется из предопределенных данных справочника.
Ввод на основании: В разделе настройки "Ввод на основании" добавляется документ, который является основой для ввода и в модуле объекта создается процедура ОбработкаОснования.
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПрибытиеВГараж") Тогда
// Заполнение шапки
Автомобиль = ДанныеЗаполнения.Автомобиль;
Гараж = ДанныеЗаполнения.Гараж;
КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры
Обработка событий формы. Управление отображением и событиями платформы
Обработка табличной части документа:
&НаКлиенте
Процедура ПересчитатьИтоговуюСумму()
ТабЧасть = Объект.ПереченьТоваров;
ФиналСумма = 0;
Для каждого Товар из ТабЧасть Цикл
ФиналСумма = ФиналСумма + Товар.Сумма;
КонецЦикла;
Объект.СуммаПоДокументу = ФиналСумма;
КонецПроцедуры
&НаКлиенте
Процедура ПереченьТоваровКоличествоПриИзменении(Элемент)
СтрТабЧасти = Элементы.ПереченьТоваров.ТекущиеДанные;
СтрТабЧасти.Сумма = СтрТабЧасти.Цена * СтрТабЧасти.Количество;
ПересчитатьИтоговуюСумму();
КонецПроцедуры
&НаКлиенте
Процедура ПереченьТоваровЦенаПриИзменении(Элемент)
СтрТабЧасти = Элементы.ПереченьТоваров.ТекущиеДанные;
СтрТабЧасти.Сумма = СтрТабЧасти.Цена * СтрТабЧасти.Количество;
ПересчитатьИтоговуюСумму();
КонецПроцедуры
Добавление данных в табличную часть Есть справочники Канцелярия и НаборыВыдачиКанцелярии и документ ВыдачаКанцелярии. Нужно добавить опцию заполнения табличной части документа стандартными наборами. В документе нет реквизита НаборыВыдачиКанцелярии, так как наборы могут меняться, в документ может быть добавлено несколько наборов, но само название набора не важно, а фактически важен добавленный состав. На форму был добавлен реквизит СтандартныеНаборыВыдачи и кнопка Добавить набор.
&НаСервере
Процедура ПолучитьСоставНабора()
ТекСоставНабора = СтандартныеНаборыВыдачи.СоставНабора;
Для Каждого ЭлемНабора из ТекСоставНабора цикл
НовыйЭлем = Объект.ТаблицаВыдачиКанцелярии.Добавить();
НовыйЭлем.НазваниеПредмета = ЭлемНабора.Канцелярия;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьНабор(Команда)
ПолучитьСоставНабора();
КонецПроцедуры
Создание документа
&НаКлиенте
Процедура СоздатьНовыйДокумент(Команда)
Если СоздатьНовыйДокументНаСервере() = 0 Тогда
Сообщить("Не удалось создать новый документ");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СоздатьНовыйДокументНаСервере()
НоваяРасходнаяНакладная=ДокРасходнаяНакладная.СоздатьДокумент();
НоваяРасходнаяНакладная.Дата= ТекущаяДата();
НоваяРасходнаяНакладная.Фирма =Справочники.Фирмы.ОсновнаяФирма;
НоваяРасходнаяНакладная.Контрагент=Справочники.Контрагенты.НайтиПоКоду("000000001");
НоваяРасходнаяНакладная.Склад=Справочники.Склады.ОсновнойСклад;
СтрокаТЧ=НоваяРасходнаяНакладная.ТЧТовары.Добавить();
СтрокаТЧ.Товар=Справочники.Номенклатура.НайтиПоКоду("000000002");
СтрокаТЧ.Цена=СтрокаТЧ.Товар.РозничнаяЦена;
СтрокаТЧ.Количество= 2;
СтрокаТЧ.Сумма=СтрокаТЧ.Цена*СтрокаТЧ.Количество;
Попытка
НоваяРасходнаяНакладная.Записать();
Возврат 1;
Исключение
Возврат 0;
КонецПопытки;
КонецФункции
Дополнительные опции:
- Нумераторы - отвечают за сквозную нумерацию для разных документов, сначала создается нумератор, затем в разделе Нумерация нужных документов указывается нумератор.
- Последовательности - отвечают за контроль целостности данных при изменении проведенного документа. Например, при изменении документа в уже закрытом периоде. Нужно разобраться.
Журналы документов
Не создают дополнительных данных. Только для визуального объединения разных документов в одном списке.
В разделе Данные в Регистрируемые документы добавляются нужные документы, в разделе Графы - поля из документов.