Записки программиста 1с

Программное изменение документа 1с

Программное изменение документа 1с позволяет добавлять или редактировать информацию в документе 1с.

Общая схема (алгоритм) изменения документа

  1. Получить ссылку на существующий документ.
  2. Получить объект документа из ссылки (только объект позволяет изменять данные).
  3. Заблокировать объект (для защиты от одновременного изменения другими пользователями).
  4. Изменить реквизиты или табличные части.
  5. Записать / Провести документ.

Программное создание и модификацию документа 1с можно разделить на несколько этапов.

Программное изменение документа 1с
Схема изменения документа

Во-первых запросом находим необходимый документ.

ПриемнаяКомпания=Объект.ПриемнаяКампания.Наименование;
	ВступительнаяГруппа=Справочники.ВступительныеГруппы.НайтиПоНаименованию(ПриемГруппа).Наименование;
    
	Запрос=новый запрос;
	Запрос.Текст="ВЫБРАТЬ
	 |ФормированиеВступительнойГруппы.Ссылка КАК Ссылка,
	 |ФормированиеВступительнойГруппы.Представление КАК Представление,
	 |ФормированиеВступительнойГруппы.Номер КАК Номер,
	 |ФормированиеВступительнойГруппы.Дата КАК Дата
	 |ИЗ
	 |Документ.ФормированиеВступительнойГруппы КАК ФормированиеВступительнойГруппы
	 |ГДЕ
	 |ФормированиеВступительнойГруппы.ПометкаУдаления = ЛОЖЬ
	 |И ФормированиеВступительнойГруппы.ВступительнаяГруппа.Наименование = &ВступительнаяГруппа
	 |И ФормированиеВступительнойГруппы.ПриемнаяКампания.Наименование = &ПриемнаяКампания";
	
	Запрос.УстановитьПараметр("ВступительнаяГруппа",ВступительнаяГруппа);
	Запрос.УстановитьПараметр("ПриемнаяКампания",ПриемнаяКомпания);
	РЗ=Запрос.Выполнить().Выбрать();

Во-вторых получаем ссылку на документ. Если документ не найден выходим из процедуры.

Если РЗ.Следующий() Тогда
	ДокументСсылка = РЗ.ССылка;	
	//Сообщить(РЗ.номер);
	Номер=РЗ.номер;
Иначе 
	Возврат
КонецЕсли;

В третьих Получаем объект документа.

НовыйДокумент=ДокументСсылка.ПолучитьОбъект();

Программное изменение документа 1с заполнение табличной части

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

         Таблица = НовыйДокумент.СписокАбитуриентов;
	Если Таблица.Найти(СсылкаАА) = 0 Тогда
	   НоваяСтрока = Таблица.Добавить();
	   НоваяСтрока.АнкетаАбитуриента = СсылкаАА;
	   НоваяСтрока.Абитуриент = ФизЛицо;
	   НовыйДокумент.Записать();
	КонецЕсли;

Записать документ 1с программно.

Чтобы новый документ 1С появился в базе, его необходимо записать.  Делается это при помощи метода документа-объекта Записать. Этот метод позволяет и записать, и провести документ.

Он два параметра, которые можно использовать.

Записать(<РежимЗаписи>,<РежимПроведения>).

Но, метод Записать также можно использовать и без параметров, тогда он будет просто записывать документ. 

НовыйДокумент = Документы.ПриходТовара.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.Записать();

1с документ пустая ссылка

Для получения пустой ссылки можно использовать метод ПустаяСсылка().

//получение пустой ссылки на документ
ДокументПриходнаяНакладная = Документы.ПриходнаяНакладная.ПустаяСсылка();
Проверку на пустую ссылку можно воспользоваться методом Пустая:
Если Не ДокументПриходнаяНакладная.Пустая() Тогда
   Сообщить("ДокументСуществет ");
Иначе
   Сообщить("Документа нет в информационной базе");
КонецЕсли;

Важные правила и ограничения схемы

  • Где выполнять код Изменение объектов базы данных должно происходить строго на Сервере. На клиенте (в тонком клиенте) метод ПолучитьОбъект() вызовет ошибку.
  • Транзакции Если вы изменяете сразу несколько связанных документов, обязательно оборачивайте код в блок НачатьТранзакцию() ЗафиксироватьТранзакцию(). Если один документ не проведется, система откатит изменения по всем.
  • Изменение ТЧ (Табличной части) Метод Документ.Товары.Очистить() полностью удаляет строки. Метод Документ.Товары.Добавить() создает новую строку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *