Как при записи периодического реквизита установить значение документа, изменившего реквизит?
При нажатии кнопки «История» выводится таблица периодических реквизитов справочника. В ней имеется колонка, в которой указывается значение документа, изменившего реквизит. Как при записи периодического реквизита установить значение этого документа программно?
Используйте метод: УстановитьРеквизитСправочника(,,,,,,);
Синтаксис: УстановитьРеквизитСправочника(<ЭлементСправочника>, <НазваниеРеквизита>, <Значение>, <ДатаУстановки>, <ИмяТипа>, <Длина>, <Точность>)
Назначение: Записать значение периодического реквизита справочника с привязкой к проведению документа.
Параметры: – элемент справочника, в который будет запись; – название периодического реквизита справочника; – новое значение периодического реквизита; – дата установки нового значения периодического реквизита. Дата установки имеет смысл только для не оперативных документов. – необязательный параметр. Строковое выражение – название типа данных (или Вид субконто); – необязательный параметр. Число – длина числового или строкового значения; – необязательный параметр. Число знаков после десятичной точки.
У реквизита справочника, который будете устанавливать документом должен быть поднят флаг “Изменяется Документами”.
Пример: Процедура ЗаписатьПоставщика() СпрПост=СоздатьОбъект(«Справочник.Поставщики»); СпрПост.ИспользоватьВладельца(Товар); Если СпрПост.НайтиПоРеквизиту(«Поставщик»,Контрагент,0)=1 Тогда СпрПост.КодПоставщика = КодПоставщика; СпрПост.Записать(); УстановитьРеквизитСправочника(СпрПост.ТекущийЭлемент(),"Цена",ЦенаБезНДС); УстановитьРеквизитСправочника(СпрПост.ТекущийЭлемент(),"Валюта",Валюта); УстановитьРеквизитСправочника(СпрПост.ТекущийЭлемент(),"ДатаПоследнейПоставки",ДатаДок); Иначе СпрПост.Новый(); СпрПост.Наименование = Контрагент.Наименование; СпрПост.Поставщик = Контрагент; СпрПост.КодПоставщика = КодПоставщика; СпрПост.Записать(); УстановитьРеквизитСправочника(СпрПост.ТекущийЭлемент(),"Цена",ЦенаБезНДС); УстановитьРеквизитСправочника(СпрПост.ТекущийЭлемент(),"Валюта",Валюта); УстановитьРеквизитСправочника(СпрПост.ТекущийЭлемент(),"ДатаПоследнейПоставки",ДатаДок); КонецЕсли; СпрПост=0; КонецПроцедуры
Процедура ОбработкаПроведения() ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл ЗаписатьПоставщика(); КонецЦикла; КонецПроцедуры
|