Работаем с документами

Создание документа

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

НовыйДок = Документы.Счет.СоздатьДокумент();
НовыйДок.Дата = Дата;
НовыйДок.Записать(); //обычная запись документа
//запись документа с неоперативным проведением
НовыйДок.Записать(РежимЗаписиДокумента.Проведение,
РежимПроведенияДокумента.Неоперативный);

Организация подборов

Для организации подбора в форму документа следует открыть форму справочника.
Результат подбора будет доступен в обработчике события Обработка Выбора формы
документа или элемента управления.

Процедура Подбор
// Одиночный подбор.
ФормаПодбора = Справочники.Номенклатура.ПолучитьФормуВыбора( ,ЭлементыФормы.Материалы);
// Множественный подбор.
ФормаПодбора = Справочники.Номенклатура.ПолучитьФормуСписка( ,ЭлементыФормы.Материалы);
ФормаПодбора.РежимВыбора= Истина;
ФормаПодбора.ЗакрыватьПриВыборе = Ложь;

// Подбор с использованием множественного выбора.
ФормаПодбора = Справочники.Номенклатура.ПолучитьФормуСписка( ,ЭлементыФормы.Материалы);
ФормаПодбора.РежимВыбора = Истина;
ФормаПодбора.МножественныйВыбор = Истина;

// Множественный подбор с использованием множественного выбора.

ФормаПодбора = Справочники.Номенклатура.ПолучитьФормуВыбора( ,ЭлементыФормы.Материалы);

ФормаПодбора.РежимВыбора = Истина;

ФормаПодбора.ЗакрыватьПриВыборе = Ложь;

ФормаПодбора.МножественныйВыбор = Истина;

ФормаПодбора.Открыть();

Процедура ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

// Одиночный и множественный подбор.

НоваяСтрока = Материалы.Добавить();

НоваяСтрока.Материал = ВыбранноеЗначение;

ЭлементыФормы.Материалы.ТекущаяСтрока = НоваяСтрока;

// Подбор с использованием множественного выбора.

Для СчетчикЦикла = 0 по ВыбранноеЗначение.ВГраница() цикл

НоваяСтрока = Материалы.Добавить();

НоваяСтрока.Материал = ВыбранноеЗначение[СчетчикЦикла];

КонецЦикла;

Поиск документа

ИскомыйДокумент = Документы.РеализацияТоваров.НайтиПоНомеру(НомерДок, Дата(2005, 1, 1));
Если НЕ ИскомыйДокумент.Пустая() Тогда

// Выполнить действия в случае обнаружения такого документа. ...

КонецЕсли;

ВЫБРАТЬ

РеализацияТоваровУслуг.Ссылка

ИЗ

Документ. РеализацияТоваров КАК РеализацияТоваров

ГДЕ

РеализацияТоваров.Контрагент = &Контрагент

И

(РеализацияТоваров.Номер < 100 ИЛИ РеализацияТоваров.Дата < ДАТАВРЕМЯ(2005, 1, 1))

И

РеализацияТоваров.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура)

 

Добавление строки в табличную часть документа

ОбъектДок = Док.ПолучитьОбъект();
НоваяСтрока = ОбъектДок.Товары.Добавить();

// Заполнить значения реквизитов.
НоваяСтрока.Количество = 10;
НоваяСтрока.Цена = 55;
// Записать документ.
ОбъектДок.Записать();

Блокировка товара на складах при проведении документа:

Данный пример демонстрирует возможность размещения в процедуре ОбработкаПроведения механизма блокировки данных, когда в программе работают 2-е или более пользователей, чтобы случайным образом не расходовать одни и те же ресурсы регистра.

//Блокировка остатков на складах

БлокировкаДанных = Новый БлокировкаДанных;

ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрНакопления.УчетНоменклатуры");

ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;

ЭлементБлокировки.УстановитьЗначение("Склад", Склад);

ЭлементБлокировки.ИсточникДанных = Состав;

ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");

БлокировкаДанных.Заблокировать();

По материалам сайта: http://razrabotka1c8.narod.ru