Имя: Пароль:
1C
1C 7.7
v7: Удалил проводки, а они в оборотке все равно видны
0 web_profiler
 
04.08.15
10:05
Собственно написал обработочку по удалению проводок из документа "Переоценка валюты" по выбранному фильтру. Проводок не нахожу, а в оборотке наблюдаю их, полный пересчет итогов выполнял
Помогите, пожалуйста, замучался уже
1 web_profiler
 
04.08.15
10:11
и че делать? мож тестирование и исправление выполнить?
2 web_profiler
 
04.08.15
10:14
спасибо всем за "ИСЧЕРПЫВАЮЩИЕ" ответы
3 web_profiler
 
04.08.15
10:14
"спасибо"
4 itlikbez
 
04.08.15
10:15
(0) Давно программишь?
5 web_profiler
 
04.08.15
10:19
ну такое... по семерочке задачки не часто встречаются. (4) а к чему вопрос?
6 itlikbez
 
04.08.15
10:21
(5) Держись, дружище, дальше будет хуже.
7 web_profiler
 
04.08.15
10:22
(5) вот спасибо, следующий... помощник
8 magicSan
 
04.08.15
10:22
(5) Документы потом не забыл перепровести? )))))))))))
9 ale-sarin
 
04.08.15
10:23
(0) Если файловая, удалить все файлы CDX, запустить монопольно.
10 web_profiler
 
04.08.15
10:30
(8) доки не перепроводил - запустил тестирование. База - скуль
11 Попытка1С
 
04.08.15
10:35
После Опер.Записать() бух итоги сами пересчитываюся, все должно было быть нормально.
12 Попытка1С
 
04.08.15
10:35
Показывай как удалял
13 ifso
 
04.08.15
10:37
(12) тоже хочу научиться из документов проводки удалаять
14 web_profiler
 
04.08.15
10:39
(11) Опер.Записать() вылетает по ошибке
15 web_profiler
 
04.08.15
10:40
1 минуту
16 Попытка1С
 
04.08.15
10:40
(13) И в чем проблема?
17 web_profiler
 
04.08.15
10:42
да бог ее, эту семерку, знает. Не могу скинуть пока код, идет тестирование - дерну мышкой - зависнет база ("не отвечает") и прийдется все по-новой тестировать
18 web_profiler
 
04.08.15
10:43
или при тестировании - можно свернуть (безболезненно) окно?
19 web_profiler
 
04.08.15
10:44
да, кстати, по логике, если я перепроведу документы - то при перепроведении опять насоздаются проводки, которые я удалил
20 Попытка1С
 
04.08.15
10:45
(17) Есть плагин который показывает что там в базе происходит когда окно висит на мертво.
21 ifso
 
04.08.15
10:45
(16) да вроде нет проблемы, сижу ровно, ожидаю результата запроса "Показывай как удалял" из (12)
22 ifso
 
04.08.15
10:46
(19) бяда
23 web_profiler
 
04.08.15
10:46
(17) так свернуть можно или лучше обождать?
24 lubitelxml
 
04.08.15
10:48
(23) да не зависнет она, просто прогресс не обновляется, сверни и жди
25 Попытка1С
 
04.08.15
10:49
(23) Можно.
26 web_profiler
 
04.08.15
10:49
свернул окно и оно зависло
27 web_profiler
 
04.08.15
10:50
Спр=СоздатьОбъект("Справочник.Валюты");
    Спр.НайтиПоКоду("840");
    Валюта =  Спр.ТекущийЭлемент();
    
    ТабЗнач = СоздатьОбъект("ТаблицаЗначений");
    ТабЗнач.НоваяКолонка("Док");
    ТабЗнач.НоваяКолонка("Ном");
    
    Опер = СоздатьОбъект("Операция");
    Если (ПустоеЗначение(Дебит)=0) И (ПустоеЗначение(Кредит)=0) Тогда
            Опер.ВыбратьОперацииСПроводками(ДатаН, ДатаК, Дебит + "," + Кредит, Валюта);
        Иначе
            Опер.ВыбратьОперацииСПроводками(ДатаН, ДатаК, Счетик);
    КонецЕсли;
        СтарНом = "";
        Пока Опер.ПолучитьПроводку() = 1 Цикл
            ТабЗнач.НоваяСтрока();
            ТабЗнач.ПолучитьСтрокуПоНомеру(ТабЗнач.КоличествоСтрок());
            ТабЗнач.Док = Опер.Документ.ТекущийДокумент();
               ТабЗнач.Ном = Опер.НомерПроводки();
               СтарНом = ТабЗнач.Ном;    
        КонецЦикла;
    ПервыйДок = "";  
    ТабЗнач.ВыбратьСтроки();
    Пока ТабЗнач.ПолучитьСтроку() = 1 цикл
        Если (ПервыйДок <> ТабЗнач.Док) И (ПервыйДок = "") тогда
            Опер = СоздатьОбъект("Операция");
            Опер.НайтиОперацию(ТабЗнач.Док);
            Опер.ВыбратьПроводки();
            ПервыйДок = Опер.Документ.ТекущийДокумент();
            Опер.ПолучитьПроводкуПоНомеру(ТабЗнач.Ном);
        ИначеЕсли ПервыйДок = ТабЗнач.Док тогда
            Опер.ПолучитьПроводкуПоНомеру(ТабЗнач.Ном);
        Иначе
            Опер.Записать();
            
            Опер = СоздатьОбъект("Операция");
            Опер.НайтиОперацию(ТабЗнач.Док);
            Опер.ВыбратьПроводки();
            ПервыйДок = Опер.Документ.ТекущийДокумент();
            Опер.ПолучитьПроводкуПоНомеру(ТабЗнач.Ном);
        КонецЕсли;
        
        Если УдалитьПроводки = 0 Тогда    
               Курс = глКурсДляВалюты(Валюта, Опер.ДатаОперации);
            ВалСумма = глПересчет(Опер.Сумма,Гривня,Валюта,Опер.ДатаОперации);
            Опер.УстановитьАтрибут("ВалСумма", ВалСумма);
            Попытка
                Опер.УстановитьАтрибут("Курс", Курс);
            Исключение
            КонецПопытки;
            Опер.УстановитьАтрибут("Валюта", Валюта);
        Иначе    
            Опер.УдалитьПроводку();
        КонецЕсли;
        Сообщить(Опер.Документ);
        
    Конеццикла;
    
    Попытка
        Опер.Записать();
    Исключение
    КонецПопытки;
28 lubitelxml
 
04.08.15
10:51
(26) подожди - закончит и отвиснет
29 web_profiler
 
04.08.15
10:52
не отвиснет
30 Попытка1С
 
04.08.15
10:55
Код на помойку.
31 web_profiler
 
04.08.15
10:55
чей-то?
32 web_profiler
 
04.08.15
10:56
(30)помоги
33 Попытка1С
 
04.08.15
10:57
За создание объекта в цикле вообще тапками надо бить по рукам.
34 vcv
 
04.08.15
10:57
"идет тестирование - дерну мышкой - зависнет база"
Не виснет ничего. Это MS когда-то изменения в винду, а 1С проигнорировала сей факт. Грубо говоря, в эпоху WinNT окна приложений перерисовывались системой принудительно. Потом, для экономии ресурсов, потребовали, что бы приложение сообщало системе, что окно требуется перерисовать.
1С в процессе тестирования никак не сообщает, винде о том, что оно живое, соответственно получаем "белый квадрат Малевича".
35 Попытка1С
 
04.08.15
11:03
Напихай доки в ТЗ
дальше
перебор твой ТЗ с доками

это за цикл
Опер = СоздатьОбъект("Операция");

потом
Опер.НайтиОперацию(тут твой док из тз);

Опер.ВыбратьПроводки();
тут обратный цикл по проводкам документа с уловием на дебит кредит и тд

ну и
Опер.УдалитьПроводку();
Опер.Записать();

перед концом цикла по документам

потом следущий документ и тд

ничего вылетать не будет при записи
36 web_profiler
 
04.08.15
11:04
(35) у меня ж тоже самое...
37 Попытка1С
 
04.08.15
11:04
Хотя я на твоем месте бы разобрался почему у тебя лишние переоценки делаются, там есть список счетов в 7.7 с особым порядком переоценки, может тебе просто туда надо это все добавить и лишних проводок не будет?
38 Попытка1С
 
04.08.15
11:04
Нет у тебя не тоже самое.
39 web_profiler
 
04.08.15
11:06
Напихай доки в ТЗ


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

напихал

перебор твой ТЗ с доками

  ПервыйДок = "";  
    ТабЗнач.ВыбратьСтроки();
    Пока ТабЗнач.ПолучитьСтроку() = 1 цикл
,,,,
    конеццикла;


потом
Опер.НайтиОперацию(тут твой док из тз);

        Если (ПервыйДок <> ТабЗнач.Док) И (ПервыйДок = "") тогда
            Опер = СоздатьОбъект("Операция");
            Опер.НайтиОперацию(ТабЗнач.Док);
            Опер.ВыбратьПроводки();
            ПервыйДок = Опер.Документ.ТекущийДокумент();
            Опер.ПолучитьПроводкуПоНомеру(ТабЗнач.Ном);
40 1Сергей
 
04.08.15
11:07
"дебит" :)
41 Попытка1С
 
04.08.15
11:08
Ты напихал доки и номера проводок, и пытаешься их удалить с привязкой к номеру.

А я тебе говорю что напихай доки, и перебери обратным циклом с условием, и прямо в цикле удаляй.
42 web_profiler
 
04.08.15
11:08
(40) да ладно, тебе
43 web_profiler
 
04.08.15
11:09
помоги, плиз, до 4:30 не спал - нич... не сображаю
44 Попытка1С
 
04.08.15
11:17
Операция = СоздатьОбъект("Операция");
цикл по докам
    Опер.НайтиОперацию(ТабЗнач.Док);
    фл = 0;
        для сч = - Опер.КоличествоПроводок() По - 1 Цикл
               Опер.ПолучитьПроводкуПоНомеру(-Сч);
               //тут условие на дебет кредит и прочее
        фл = 1;      
        Операция.УдалитьПроводку();
        КонецЦикла;
    если фл = 1 тогда
        Операция.Записать();
    конецесли
КонецЦикла;
45 web_profiler
 
04.08.15
11:34
операция не выбрана
46 web_profiler
 
04.08.15
11:43
пока все ок
47 Злопчинский
 
04.08.15
13:05
может пригодится [DELOPER] Массовое удаление выборочных проводок из ручных операций http://catalog.mista.ru/public/14191/