перезапись реквизита справочника

Новая тема
"Добрый день, подскажите пожалуйста, как можно обратиться к текущему элементу  справчника, изменить его реквизит и записать?
Вот код обработки

Если дог=ДогАктСокр Тогда   //если равно, то заменяем текущий договор (наименование) на догАкт
 СпрДоговоры.ИспользоватьВладельца(СпрКонтра);
 СпрДоговоры.НайтиПоНаименованию(дог,1,1);
 ТекДог = СпрДоговоры.ТекущийЭлемент();
// как здесь изменить текщий элемент?
 СпрДоговоры.Наименование = догАкт;
 СпрДоговоры.Записать();
КонецЕсли;"
" ТекДог.Наименование = догАкт;
ТекДог.Записать();
"
"Так пробывала - не получается. Ошибка "ТекДог.Наименование = догАкт;  Не выбран элемент!""
"Если Вы сравниваете наименование текущего реквизита  дог=ДогАктСокр,
то зачем Вы потом его ищите, да еще устанавливаете Родителя.
>   СпрДоговоры.НайтиПоНаименованию(дог,1,1);
>

Скажите ,что в принципе Вам нужно сделать?"
Мне нужно сравнить дог с ДогАктСокр и если они равны, то наименованию дог присвоить наименование ДогАктСокр
"> Мне нужно сравнить дог с ДогАктСокр и если они равны, то наименованию дог присвоить наименование ДогАктСокр
>

Сравнить по какому признаку? А то  в Вашем случае получается, что Вы сравниваете договора по наименованию и если  наименование равны, то присваваете первому второе.
Вот пример замены названия по всему справочнику , без учета владельца, поиск по не точному соотвествию наименования.

Спр=СоздатьОБъект("Справочник.Договоры");
ДогАктСокр="Основной";
Дог="Другой";
пока Спр.НайтиПонаименованию(ДогАктСокр,0,0)=1 цикл
Спр.Наименование=Дог;
Спр.Записать();
конеццикла;"
Ошиблась: присвоить наименование догАкт.
ДогАктСокр-это первых 5 символов нового договора догАкт, который берется из таблицы dbf. и если наименование старого договора (дог) равно первым 5 символам нового (ДогАктСокр), то старый (наименование) заменяем на новый (догАкт).

Сравниваю на самом деле наименование. Просто такая ситуация. Мы формируем акты и привязываем контрагента с договором (например 12345), а потом заказчик подписывает договор и присваивает через "/" свой номер (12345/67894). В результате получается что наш договор (12345) мы должны поменять на (12345/67894).
"ТОгда пример
Спр=СоздатьОБъект("Справочник.Договоры");
Спр.ИспользоватьВладельца(Контр);
Спр.ПорядокКодов();
// Установить порядок -это нужно если у Вас автоматически стоит порядок
//по наименованию, и тогда при замене наименовании 1С даст сообщение.
Спр.ВыбратьЭлементы(0);
// без этого не рботает ИспользоватьВладельца и сотвественно  
// появляется сообщение элемент не выбран
ДогАктСокр="Основ";
Дог="Другой";
Пока спр.получитьэлемент()=1 Цикл
если Лев(Спр.Наименование,5)=ДогАктСокр тогда
Спр.Наименование=Дог;
Спр.Записать();
Конецесли;
конеццикла;

Можно попробовать через запрос. Выбрать сначала все элементы справочника, которые удовлетворяют условию,

Другое="Новое название";


Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать2)
|Обрабатывать НеПомеченныеНаУдаление;
|Без итогов;
|ТекущийЭлемент = Справочник.Договоры.ТекущийЭлемент;
|Наименование = Справочник.Договоры.Наименование;
|Владелец = Справочник.Договоры.Владелец;
|Группировка ТекущийЭлемент;
|Условие(Владелец в ВыбВладелец);
|Условие(Лев(Наименование,5)=ДокАкт);
|"//}}ЗАПРОС
;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;

Спр=СоздатьОБъект("Справочник.Договоры");
Пока Запрос.Группировка() = 1 Цикл
если спр.НайтиЭлемент(Запрос.ТекущийЭлемент)=1 тогда
   спр.Наименование=Другое;
спр.записать();
конецесли;
КонецЦикла;
"
Огромное спасибо. Сейчас буду пробовать.
Читают тему
(гостей: 1)

Быстрый переход