Имя: Пароль:
1C
 
Ссылки и программная запись документа
0 lanc2233
 
24.03.15
12:55
Есть задача - пройтись по помеченных на удаление товарах, и удалить их из определенного вида документов.

Запрос.УстановитьПараметр("Номенклатура",СсылкаНаУдаляемыйТовар);
            Выборка = Запрос.Выполнить().Выбрать();
            Пока Выборка.Следующий() Цикл
                Об = Выборка.Ссылка.ПолучитьОбъект();
                Для Каждого СтрДок Из Об.Номенклатура Цикл
                    Если СтрДок.Номенклатура = СсылкаНаУдаляемыйТовар Тогда
                        Об.Номенклатура.Удалить(СтрДок.НомерСтроки-1);
                    КонецЕсли;
                КонецЦикла;    // по табчасти документа
                Об.Записать();
            КонецЦикла;    // запрос по документам

Данный код удаляет номенклатуру строки из табчасти. Если зайти в документ, строки действительно получаются удаленными. Но штатный поиск ссылок на объекты, все равно показывает, что такая номенклатура есть в документе.
А если вручную зайти в документ и перезаписать его, то только тогда пропадает из поиска ссылок.

Как его программно удалить по нормальному?
1 hhhh
 
24.03.15
12:58
с конца тч двигайтесь, чтобы не сбивалось
2 fisher
 
24.03.15
13:04
Документы проведенные?
3 palpetrovich
 
24.03.15
13:05
Об.Записать(режипроверения.провести); как-то так
4 fisher
 
24.03.15
13:05
Есть ли у документа другие табличные части?
5 lanc2233
 
24.03.15
13:06
Часть проведенных, часть нет.
Другие табчасти есть.
6 Ник второй
 
24.03.15
13:08
в движениях по документу ссылки остались.
7 lanc2233
 
24.03.15
13:09
Спасибо.
Так помогло :
Р = ?(Выборка.Проведен,РежимЗаписиДокумента.Проведение,РежимЗаписиДокумента.Запись);
                Об.Записать(Р);
8 palpetrovich
 
24.03.15
13:09
(5) если проведен тогда
Об.Записать(РежимЗаписиДокумента .Проведение );
иначе
Об.Записать(РежимЗаписиДокумента .Запись );
9 palpetrovich
 
24.03.15
13:10
(7) угумс