Имя: Пароль:
1C
1С v8
Регистр бухгалтерии. Удалить запись.
0 Solitar
 
18.07.12
22:54
Есть вот такой кодПроводки = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
               Проводки.Отбор.Регистратор.Установить(Ссылка);
               Проводки.Прочитать();
               Для Каждого Запись из Проводки Цикл
                   Если Запись.СчетКт = ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы
                       Тогда
                   Проводки.Удалить(Запись);
               КонецЕсли;
               Проводки.Записать(ЛОЖЬ);
               возврат
               КонецЦикла;

Не удаляет движения документа.

И как удалить не нужные записи через обход запроса?

   Запрос = Новый Запрос;
       Запрос.Текст = "ВЫБРАТЬ
                      |    Хозрасчетный.Регистратор,
                      |    Хозрасчетный.СчетКт,
                      |    Хозрасчетный.НомерСтроки
                      |ИЗ
                      |    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
                      |ГДЕ
                      |    Хозрасчетный.Регистратор = &Док
                      |    И Хозрасчетный.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОбщехозяйственныеРасходы)";
       Запрос.УстановитьПараметр("Док", Ссылка);
        Выборка=запрос.выполнить().выбрать();




Предлагать сделать подписку на событие не нужно, у документа её нет. СП читал.
1 Solitar
 
19.07.12
08:30
мб с утра у кого нить светлая голова?)
2 Рэйв
 
19.07.12
08:33
(0)А отменить проведение документа не судьба?
3 Solitar
 
19.07.12
08:36
(2) мне нужно удалить только определенные движения.
4 Живой Ископаемый
 
19.07.12
08:39
удаляй. даже в типовых удаляют...
5 unregistered
 
19.07.12
08:45
(0) >> Предлагать сделать подписку на событие не нужно

Почему?


>> у документа её нет.

создай.
6 unregistered
 
19.07.12
08:46
(0) Где вообще расположен этот замечательный код и в какой момент выполняется?
7 Maxus43
 
19.07.12
09:08
Проводки.Записать(Истина);
8 Solitar
 
19.07.12
11:57
Проводки = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
               Проводки.Отбор.Регистратор.Установить(Ссылка);
               Проводки.Прочитать();
               
               Для Каждого Запись из Проводки Цикл

                       Если Запись.СчетКт = ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы
                       Тогда
                       Проводки.Удалить(Проводки.Индекс(запись));
                       ИначеЕсли Запись.СчетДт = ПланыСчетов.Хозрасчетный.ВыпускПродукции И Запись.СчетКт = ПланыСчетов.Хозрасчетный.ОсновноеПроизводство Тогда
                       Запись.ПодразделениеДт = Справочники.ПодразделенияОрганизаций.ПустаяСсылка();
                       Запись.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.ПустаяСсылка();
                       КонецЕсли;
                   КонецЦикла;
              проводки.Записать(ИСТИНА);


так тоже не работает. ставлю точку останова перед записать и смотрю что осталось в Проводки. Там еще очень много не нужных мне проводок. Почему они не удаляются?
9 Solitar
 
19.07.12
12:19
почему удаляются движения через точку?
10 Solitar
 
19.07.12
12:22
через строчку*
11 hhhh
 
19.07.12
12:26
(10) ну это вопрос из детского сада. Когда удаляешь строку, у тебя индекс сбивается. Иди с конца набора к началу, тогда всё будет путём.
12 Kashemir
 
19.07.12
12:27
Записать(<Замещать>)
Параметры:

<Замещать> (необязательный)

Тип: Булево. Определяет режим замещения существующих записей в соответствии с текущими установками отбора. Истина - перед записью существующие записи будут удалены. Ложь - записи будут дописаны к уже существующим в информационной базе записям.
Значение по умолчанию: Истина
13 LAAry
 
19.07.12
12:46
В типовых строки для удаления пишутся в массив, потом обходом массива удаляются. Не спроста ведь.
14 palm1c
 
19.07.12
12:52
Нужно именно программно это сделать?
15 palm1c
 
19.07.12
12:53
Есть хорошая обработка для того, чтобы это сделать интерактивно.
16 Solitar
 
19.07.12
13:07
уже решил проблему обходом с конца. спасибо за подсказку (11)