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