Введение
Документ — одно из основных понятий системы 1С:Предприятие. При помощи документов организуется ввод в систему информации о совершаемых хозяйственных операциях, а также ее просмотр и, если необходимо, корректировка. В большинстве своем документы, которые создаются в процессе настройки конфигурации задачи, являются электронными аналогами стандартных бумажных документов, являющихся основаниями для тех или иных учетных действий или расчетов. Структура каждого конкретного вида документа определяется при его создании в конфигураторе. У любого вида документа существует два обязательных реквизита, которые создаются автоматически — дата и номер документа. Другие реквизиты документа определяются в конфигураторе конкретно для каждого создаваемого вида документа. В документах выделяются две основные структурные части: шапка документа и многострочная табличная часть, поэтому реквизиты документа можно подразделить на «Реквизиты шапки» и «Реквизиты табличной части». Как правило, в шапке содержатся реквизиты, которые являются общими для всего документа. Реквизиты шапки принадлежат всему документу в целом и принимают только одно значение. Многострочная (табличная) часть документа представляет собой список однотипных строк. Реквизиты табличной части принадлежат строке документа, т. е. каждая строка содержит свои собственные значения этих реквизитов. ![](http://alsproject.ru/lessons/objects/stdocadd.png) Создание и удаление документаСоздание нового документа представлено в двух вариантах - непосредственное удаление и пометка на удаление: &НаКлиентеПроцедура СоздатьНовыйДокумент(Команда) // Вставить содержимое обработчика. Если СоздатьНовыйДокументНаСервере() = 0 Тогда Сообщить("Не удалось создать новый документ" ); КонецЕсли;КонецПроцедуры&НаСервереФункция СоздатьНовыйДокументНаСервере() Перем НоваяРасходнаяНакладная; Перем СтрокаТЧ; НоваяРасходнаяНакладная=ДокРасходнаяНакладная.СоздатьДокумент(); //Заполняем реквизиты шапки НоваяРасходнаяНакладная.Дата= ТекущаяДата(); НоваяРасходнаяНакладная.Фирма =Справочники.Фирмы.ОсновнаяФирма; НоваяРасходнаяНакладная.Контрагент=Справочники.Контрагенты.НайтиПоКоду("000000001" ); НоваяРасходнаяНакладная.Склад=Справочники.Склады.ОсновнойСклад; //Заполняем табличную часть СтрокаТЧ=НоваяРасходнаяНакладная.ТЧТовары.Добавить(); СтрокаТЧ.Товар=Справочники.Номенклатура.НайтиПоКоду("000000002" ); СтрокаТЧ.Цена=СтрокаТЧ.Товар.РозничнаяЦена; СтрокаТЧ.Количество= 2 ; СтрокаТЧ.Сумма=СтрокаТЧ.Цена*СтрокаТЧ. Количество; Попытка НоваяРасходнаяНакладная. Записать(); Возврат 1 ; Исключение Возврат 0 ; КонецПопытки; КонецФункции
Удаление документа: &НаКлиентеПроцедура УдалитьДокумент(Команда) // Вставить содержимое обработчика. УдалитьДокументНаСервере(0 ); КонецПроцедуры &НаСервереПроцедура УдалитьДокументНаСервере(ПометкаУдаления) // Вставить содержимое обработчика. Перем УдаляемыйДокумент; УдаляемыйДокумент =Документы.РасходнаяНакладная.НайтиПоНомеру("000000004" ); Если ПометкаУдаления = 1 Тогда УдаляемыйДокумент.ПолучитьОбъект().УстановитьПометкуУдаления(Истина); Иначе УдаляемыйДокумент.ПолучитьОбъект().Удалить(); КонецЕсли; КонецПроцедуры Перебор табличной части документа
&НаКлиенте Процедура ПеребратьТабличнуюЧасть()
Для Каждого СтрокаТЧ ИЗ Объект.ТЧТовары Цикл
Сообщить(СтрокаТЧ.Номенклатура);
КонецЦикла;
КонецПроцедуры
Поиск в табличной части документа
Для поиска необходимого значения воспользуемся функцией НайтиСтроки(). Ее можно использовать не только в табличной части документа, но и в таблице значений:
&НаСервере Процедура НайтиТовар(СправочникНоменклатураСсылка)
Перем Отбор, НайденноеЗначение, Сч;
Отбор = Новый Структура(); Отбор.Вставить("Номенклатура", СправочникНоменклатураСсылка); НайденноеЗначение = Объект["ТЧНоменклатура"].НайтиСтроки(Отбор);
Если НайденноеЗначение.Количество() > 0 Тогда
Сч = 1; Пока НайденноеЗначение.Количество() >= Сч Цикл Сообщить(НайденноеЗначение[0].Наименование); Сч = Сч + 1; КонецЦикла;
КонецЕсли;
КонецПроцедуры
Источник: http://alsproject.ru/publ/prikladnye_obekty/dokumenty/1-1-0-9 |