Имя: Пароль:
1C
1C 7.7
v7: УдалитьПроводку выдает Недопустимая операция - причина ?
,
0 smaharbA
 
28.05.12
10:45
Опер.УдалитьПроводку();
{\\1CSERVER\1C-CONF\ООО_КАРАТ_Е_ПРОИЗВОДСТВО_УСЛУГИ_БУХГАЛТЕРИЯ\EXTFORMS\ИСПРАВЛЕНИЕ_10_26_СМЦ.ERT(41)}: Недопустимая операция

Код

   Опер.ПолучитьПроводкуПоНомеру(-Сч + 2);
   Если Опер.Кредит.Счет=СчетПоКоду(40) Тогда
       Сообщить("" + Опер.Документ+" "+ (-Сч + 2));
       Опер.УдалитьПроводку();


Что тут не так ?
1 smaharbA
 
28.05.12
10:46
Проводка существует и проверка на -Сч+2 имеется перед
не в единственной операции, во всех - оно работало.
2 ChMikle
 
28.05.12
10:47
(1) М.б. у кого-то она открыта ?
3 ChMikle
 
28.05.12
10:47
операция эта
4 Ёпрст
 
28.05.12
10:48
Опер - это что за зверь такой ?
Через создатьОбъект создан, надеюсь ?
:)
5 smaharbA
 
28.05.12
10:50
(4) через Опер=Док.Операция;
(2) нет, в ручную все удаляется

и весь этот бред работал долгие годы, а сегодня нет
6 andrewks
 
28.05.12
10:51
Операция != Документ.Операция
7 K-5
 
28.05.12
10:51
Опер=Док.Операция;
8 K-5
 
28.05.12
10:51
(5) см (4) позициониру
9 smaharbA
 
28.05.12
10:51
(6) и чо

Док=СоздатьОбъект("Документ.Операция");
10 smaharbA
 
28.05.12
10:52
оно работало неизменно.
11 Ёпрст
 
28.05.12
10:53
(5) Опер=Док.Операция
:)

ага, зачет
12 smaharbA
 
28.05.12
10:53
(6) позиционирование и удаление идет из зада
13 chief accountant
 
28.05.12
10:53
(10) счетпокоду разве не вкавычках должен быть?
14 andrewks
 
28.05.12
10:54
(10) позволю себе усомниться в этом
15 smaharbA
 
28.05.12
10:54
(11) ну и что, это монописуарно
16 smaharbA
 
28.05.12
10:55
(13) абсолютно безразницы

(14) оно выполнялось ежемесячно с 2004 го года, дабы не переписывать выгрузку в пуб из рарус мебели
18 K-5
 
28.05.12
10:55
(9) далее используй НайтиОперацию(<?>)
Синтаксис:
НайтиОперацию(<Документ>)
Назначение:
осуществляет поиск операции по значению типа ''Документ''.
Возвращает: 1 - действие выполнено, операция найдена; 0 - действие не выполнено, операция не найдена.
Параметры:
<Документ> - значение типа ''Документ''.

а потом как в (0) хотел

перебор и удаление
19 andrewks
 
28.05.12
10:55
Копипаст:

Операция
Синтаксис:
Операция
Назначение:
Доступ к бухгалтерской операции документа.
Замечание:
Атрибут имеет смысл только для тех видов документов, для которых в конфигурации установлен признак ''Бухгалтерский учет''. Данный атрибут не используется как самостоятельное значение, а позволяет обращаться к атрибутам и методам операции.
Подробнее см. в документации, глава 'Работа с Документами

КонецКопипаста
20 smaharbA
 
28.05.12
10:56
(18)(19) если чо у меня СП есть
21 smaharbA
 
28.05.12
10:57
+ счета в проводках оно меняет, ругаться стало только на удаление проводки
22 andrewks
 
28.05.12
10:57
(20) ну так в чём проблема? используй объект Операция
23 smaharbA
 
28.05.12
10:58
+ (21) далее идет

   Опер.ПолучитьПроводкуПоНомеру(-Сч);
   Опер.Дебет.Счет=СчетПоКоду(26);
   Если ПустоеЗначение(Затр)=0 Тогда
       Опер.Дебет.Субконто(1,Затр);
   КонецЕсли;
   Если ПустоеЗначение(Подр)=0 Тогда
       Опер.Дебет.Субконто(2,Подр);
   КонецЕсли;


и работает
24 smaharbA
 
28.05.12
10:59
(22) как объяснить, что при коде из (0)(23) проводку меняет, а на удалить орет ?
25 andrewks
 
28.05.12
11:01
(24) особенность реализации
26 smaharbA
 
28.05.12
11:03
как оно работало 7 лет ?
27 Neg
 
28.05.12
11:04
компьтер перезагрузи.
28 andrewks
 
28.05.12
11:05
(26) да не работало оно.
29 andrewks
 
28.05.12
11:06
так же, как и добавить
30 Neg
 
28.05.12
11:06
(28) 7 лет? :)
31 andrewks
 
28.05.12
11:09
(30) угу. это из разряда "невероятно, но факт"
32 smaharbA
 
28.05.12
11:10
Если Опер.НайтиОперацию(Док.ТекущийДокумент())=0 Тогда
   Продолжить;
КонецЕсли;

Выдает абсолютно то же
(28) правдо ? а ты попробуй выполнить

Док=СоздатьДокумент("Документ.Операция");
Док.ВыбратьДокументы();
Пока Док.ПолучитьДокумент()=1 Цикл
   Опер=Док.Операция;
   Для Сч=-Опер.КоличествоПроводок() По -1 Цикл
       Опер.ПолучитьПроводкуПоНомеру(-Сч);
       Опер.УдалитьПроводку();
   КонецЦикла;
   Док.Записать();
КонецЦикла;


и расскажи о результате
33 smaharbA
 
28.05.12
11:11
+(32)
где Опер=СоздатьОбъект("Операция");
34 andrewks
 
28.05.12
11:12
(32)(33) напёрсточник?
35 smaharbA
 
28.05.12
11:15
(34) а ты выполни код из (33) и расскажи (если у тебя используются "ручные" операции)

+ (33) относится к первой части (32)
36 andrewks
 
28.05.12
11:36
(35) в этом случае сработало. однако: попробуй там поставить НоваяПроводка(). будешь неприятно удивлён.

дабы не ловить ушибы лба от ударов граблями, рекомендуется использовать объект Операция.  сделай поправку на "доступно и всерьёз"
37 smaharbA
 
28.05.12
11:50
Причина найдена
(0) работало всегда на 24,25 релизах, было запущено на 21 что и привело к сабжу
38 smaharbA
 
28.05.12
11:52
+ код не менялся с появления оного, что правильно искать операцию это понятно, но я не адинеснег.
39 ЧеловекДуши
 
28.05.12
11:54
(33)Не подразумевай "Опер=СоздатьОбъект("Операция");", как в "Опер=Док.Операция;"
А пропиши по факту "Опер=СоздатьОбъект("Операция");"
И уже по тексту работай с операцией
40 ЧеловекДуши
 
28.05.12
11:54
+ И будет тебе счастье до следующего перепроведения документов.
41 smaharbA
 
28.05.12
11:54
(39) см (37)(38)
42 ЧеловекДуши
 
28.05.12
11:55
(41)Как все сурово :)
Но ты попробуй на 21-ом релизе через "СоздатьОбъект("Операция")", интересно было бы увидеть результат :)
43 smaharbA
 
28.05.12
12:22
Согласен с созданием и поиском операции, вступор ввело, что оно работало с неизменным кодом

два релиза используются по причине вк от раруса, эту базу никогда не запускали на 21 релизе

Всем спасибо за обучению неуча.
44 Ёпрст
 
28.05.12
13:25
(43) где ты их вообще откопал то ?
21 релиз.. гы.