Имя: Пароль:
1C
 
как удалить объект из массива
,
0 Bumblebee
 
27.07.20
13:26
Всем привет! Подскажите как удалить документы из базы после их печати?

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

Так не работает потому что я пытаюсь удалить элемент массива а не объект?
1 acht
 
27.07.20
13:29
(0) > удалить документы из базы после их печати
А прикинь, у тебя порошок в картридже кончится?
2 Bumblebee
 
27.07.20
13:33
(1) еще раз можно обработку запустить
3 Ёпрст
 
27.07.20
13:33
(0)
ДокОбъект = ЭлементДок.ПолучитьОбъект();
ДокОбъект.Удалить();

(1) жалко что ле ? Пусть удаляет..)) больше работы будет потом
4 acht
 
27.07.20
13:35
(3) А. Ну тогда УстановитьПривелигированыйРежим(Истина) еще не забудь.
5 Волшебник
 
27.07.20
13:37
Лучше не смешивать печать и удаление.
Сделай доп.обработку по удалению, в которой пользователь будет флажками отмечать удаляемые документы, которые он видит перед собой в печатном виде.
А вообще задача бред. Из базы ничего удалять не надо. Можно пометить на удаление и скрыть.
6 Bumblebee
 
27.07.20
13:41
(3) метод объекта не обнаружен(ПолучитьОбъект)
7 Волшебник
 
27.07.20
13:44
(6) Посмотрите в отладчике тип переменной ЭлементДок.
Скорее всего там ЭлементСписка, а не ДокументСсылка
8 Bumblebee
 
27.07.20
13:48
просто есть обработка которая сначала создает документы, а потом их распечатывает. А надо иногда повторно распечатать и создавать снова в базе не нужно
9 Bumblebee
 
27.07.20
13:50
(7) ДокументСсылка.РеализацияТоваровИУслуг
10 Ёпрст
 
27.07.20
14:06
(6) ё..
ну так тогда

&НаСервере
Процедура УдалитьДокументКЕдрениФени(ССылка)
   ДокОбъект = ССылка.ПолучитьОбъект();
   ДокОбъект.Удалить();  
КонецПроцедуры
......
   //удалить доки
                    Если ТолькоПечать Тогда
                        УдалитьДокументКЕдрениФени(ЭлементДок);
                    КонецЕсли;
        //удалить доки конец
11 Bumblebee
 
27.07.20
14:12
(10) Спасибо!! Точно. Пытался получить объект на клиенте поэтому не работало...
12 Ц_У
 
27.07.20
14:14
(10) и без контекста, шоб прям ляпота была :)
13 Ц_У
 
27.07.20
14:15
МассивНаПечать = Новый Массив;
МассивНаПечать.Добавить(Форма.СчетФактура);
ПараметрыПечатиДок = Новый Структура;
УправлениеПечатьюКлиент.ВыполнитьКомандуПечатиНаПринтер("Обработка.ПечатьУПД","УПДСтатус1_981",МассивНаПечать,ПараметрыПечатиДок);

МассивНаПечать.Очистить(); <-- Не обязательно, т.к. каждый раз создается новый массив
AdBlock убивает бесплатный контент. 1Сергей