Имя: Пароль:
1C
1C 7.7
v7: Работа с операциями
,
0 Alucard
 
30.05.12
10:40
Здравствуйте!
Ситуация такая: нужно из операций удалить количество и субконто (по номенклатуре).
http://www.mista.ru/tutor_1c/buh_oper.htm - здесь все внимательно прочитано ))

Делаю так:

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

Опер = СоздатьОбъект("Операция");
Опер.НайтиОперацию(Док.ТекущийДокумент());


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

КонецПопытки;    
Опер.Записать();
КонецЦикла;

КонецЦикла;

Так странно ищу субконто по номенклатуре потому что не получается с фильтром Опер.ИспользоватьСубконто(ВидыСубконто.Номенклатура,) всяко перепробовал.

Все это произошло когда не той обработкой из ТиС выгрузили в бухию данные стандартной выгрузкой,должны были только суммы перебросить.

Самое главное!!: Как подправить субконто и количество, а именно их удалить (почистить)? Если заходить в операции, то вручную не дает через shift+f4.


Подскажите, пож-та!
1 Ёпрст
 
30.05.12
10:50
>>>     КодДебет=Опер.Дебет.Субконто().Код;
>>>     КодКредит=Опер.Кредит.Субконто().Код;
>>>     Если Номенклатура.НайтиПоКоду(КодДебет,0)=1 Тогда Сообщить(Опер.Дебет.Субконто().Код+"  "+Опер.Дебет.Субконто()+"  "+Опер.ТекущийДокумент());

Ну и изврат
2 viktor_vv
 
30.05.12
10:50
Так а отладчиком ты хоть заходинь в свои условия ? И почему бы не так проверять

Если Опер.Дебет.Субконто(1).Вид() = "Номенклатура" Тогда
3 Ёпрст
 
30.05.12
10:51
и всё остальное тоже в топку
4 viktor_vv
 
30.05.12
10:51
А еще лучше проверяй счет дебета, кредита.
5 1Сергей
 
30.05.12
10:52
нужно всего-лишь проверить тип субконто
6 viktor_vv
 
30.05.12
10:54
(0) И ты точно уверен что Номенклатура у тебя это первое субконто ?
7 viktor_vv
 
30.05.12
10:57
И устанавливать

Опер.Дебет.Субконто(1,ПолучитьПустоеЗначение("Справочник.Номенклатура")) ;

Можно конечно и "", но так понятнее.
8 Alucard
 
30.05.12
11:04
Я понимаю что изврат, но дело то не в изврате (спасибо за подсказки),
само субконто не правиться, нужно еще по субконто наверное отдельно пробежаться, хотя у меня оно везде первое почти стоит.
Самое главное!! не подправляет операцию???
9 viktor_vv
 
30.05.12
11:08
Так выкинь ты свои УстановитьАтрибут и устанавливай номрально. Как ты думаешь вот эта строка что делает "Опер.УстановитьАтрибут("Дебет.Субконто", "");" Я так подозреваю что ошибку дает.
10 viktor_vv
 
30.05.12
11:19
И еще вставь.

Исключение
    Сообщить("Где-то я таки лоханулся");
КонецПопытки;
11 chief accountant
 
30.05.12
11:32
(0) учоис умеет делать сабж
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.