найтипореквизиту



1с 8.2 значение

Автор Єевзи Абкадыров задал вопрос в разделе Другие языки и технологии

Вопрос по 1С 8.2. Как через внешнюю обработку присвоить значение реквизиту документа? и получил лучший ответ

Ответ от Ў В[гуру]
Если документа еще нету, в обработке создать его и присвоить значение.
Как создать новый документ?
Если создание нового документа должно пройти без участия пользователя, можно сделать так
НовыйДокумент = Документы. ПриходныйКассовыйОрдер. СоздатьДокумент ();
НовыйДокумент. Дата = ТекущаяДата ();
Переменная НовыйДокумент в таком случае имеет тип значения ДокументОбъект – мы сразу получаем объект нового документа. А значит, обращаясь к ней, впоследствии можно заполнить реквизиты документа и записать его.
Если нам нужно не просто создать новый документ, но и дать возможность пользователю поучаствовать в процессе его заполнения и записи, то лучше сделать так
ФормаНовогоПКО = Документы. ПриходныйКассовыйОрдер. ПолучитьФормуНовогоДокумента ();
ФормаНовогоПКО. Открыть ();
В данном случае после создания документа мы открываем основную форму этого документа для редактирования его пользователем.
Если же документ уже есть, нужно его найти
Как найти документ?
Например, нужно найти в 2005 году документ РеализацияТоваровУслуг по номеру НомерДок (периодичность нумерации – В пределах года) ,
ИскомыйДокумент = Документы. РеализацияТоваровУслуг. НайтиПоНомеру (НомерДок, Дата (2005, 1, 1));
Если НЕ ИскомыйДокумент. Пустая () Тогда
// Выполнить действия в случае обнаружения такого документа.
//...
КонецЕсли;
Второй параметр метода НайтиПоНомеру () используется при периодической нумерации документов и может содержать любую дату из того периода, в рамках которого нужно искать документ.
Если же поиск нужно выполнять по реквизиту, то можно, конечно, использовать объектную модель работы с данными – метод НайтиПоРеквизиту () менеджера документа. Однако в результате будет получен только один из документов с искомым значением реквизита.
Гораздо удобнее для выполнения операций поиска использовать запросы
ВЫБРАТЬ
РеализацияТоваровУслуг. Ссылка
ИЗ
Документ. РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
РеализацияТоваровУслуг. Контрагент = &Контрагент
И (РеализацияТоваровУслуг. Номер < 100 ИЛИ РеализацияТоваровУслуг. Дата < ДАТАВРЕМЯ (2005, 1, 1))
И РеализацияТоваровУслуг. Товары. Номенклатура В ИЕРАРХИИ (&Номенклатура)
Такой запрос позволяет получить все документы РеализацияТоваровУслуг по указанному контрагенту, закупавшему товары из указанной номенклатурной группы ранее 1 января 2005 года или позже, но с номерами документа менее 100.
Когда документ найден
Как изменить значение реквизита и записать документ?
Например, переменная СсылкаНаДокумент содержит ссылку на тот документ, который необходимо изменить. Сначала по ссылке нужно получить объект ДокументОбъект. Потом можно установить значение нужного реквизита и записать измененный документ
ДокОбъект = СсылкаНаДокумент. ПолучитьОбъект ();
ДокОбъект. Ответственный = глТекущийПользователь;
ДокОбъект. Записать ();
Обращайте внимание, требуется ли обеспечить проведение измененного документа. В нашем примере документ был записан без проведения.
Если необходимо при этом провести документ, то нужно сделать следующим образом (листинг 3.56):
Листинг 3.56. Проведение документа
ДокОбъект. Записать (РежимЗаписиДокумента. Проведение) ;
Первым параметром метода передается значение Проведение системного перечисления РежимЗаписиДокумента, а вторым параметром можно указать режим проведения (оперативный/неоперативный, также выбирается из соответствующего системного перечисления) .
Если же наоборот нужно отменить проведение документа, то сделайте так
ДокОбъект. Записать (РежимЗаписиДокумента. ОтменаПроведения) ;
Во всех перечисленных случаях система передаст управление соответствующим ситуации обработчикам событий (Перед записью (), При записи (), Обработка проведения (), Обработка удаления проведения ()).
Это все цитаты из одной хорошей книжки. Если нужно, пиши мне, я ее вышлю.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Вопрос по 1С 8.2. Как через внешнюю обработку присвоить значение реквизиту документа?
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*