Про1С-ник
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0
С утра был документ Путевой лист
Цитата(НатальяНаталья @ 28.04.11, 10:38)
Хочу в существующие операции, созданные документом ПутевойЛист(нетиповой,созданный программистом) проставить значения субконто. Раньше они были пустыми. Но не получается, выдает ошибку, что нельзя изменять записанные операции. Пробовала программно пометить на удаление,выключить проводки и т. д.. но ничего не помогает.
теперь оказывается это свернутые проводки
Цитата(НатальяНаталья @ 28.04.11, 15:57)
Дело в том, что это не вновь созданная операция, а в уже существующие операции, созданные обработкой WRAP (сверткой бухгалтерских итогов), я хочу на место пустого субконто, поставить нужное мне.
прошло 19 сообщений, Наталья, что еще Вы забыли сказать?
Личные бесплатные консультации не даю, для этого есть форум!
я понял, что не новая операция, имел ввиду создания ее как объекта, на какой строке в отладчике вываливается?
После того как находится первая операция, она кстати имеет одну проводку и дело доходит до присвоения субконто значения , то выдает эту ошибку. Сейчас возникло вот еще ,что . По совету я дописала
если опер.дебет.счет.Количествосубконто()>1 Тогда сообщить(опер.дебет.счет.Количествосубконто()); //Если Опер.Дебет.Субконто(2).Вид()=тз1.ПолучитьЗначение(н,"Топливо").Вид() тогда // // Опер.Дебет.Субконто(2)=тз1.ПолучитьЗначение(н,"Топливо"); //конецесли; конецесли;
Так пока не были закомментированы эти 4 строчки выдавалась ошибка в Опер.Дебет.Субконто(2): Неизвестный оператор , хотя количество субконото сообщает 2 и вид сообщает правильно, такой же как в ТЗ
logist, я думаю уже пора традиционно требовать фотку
Это хорошо . что у человека хорошее настроение, а на подобные подколки я не обижаюсь. Хотелось бы конечно помощи в решении моей проблемы. А потом и посмеяться можно. С уважением.
1 Опер.Дебет.Субконто(2,тз1.Топливо); {E:\.......\EXTFORMS\ТОПЛИВО АВТОМОБИЛЕЙ.ERT(82)}: Нельзя изменять записанные проводки! Цифра 1 это номер проводки (поставила счетчик по вашему совету). Но все по прежнему, ошибка та же.
Но на сегодня хватит. Спасибо большое за желание помочь. Надеюсь завтра что-нибудь получится. Если будет время завтра не бросайте меня.
Метод ВыбратьОперацииСПроводками выбирает проводки и позиционируется на проводках, а не на операции. Отдельно от операции изменить проводку нельзя. Поэтому
Цитата(НатальяНаталья @ 28.04.11, 15:35)
и выдает ошибку: Нельзя изменять записанные проводки!
Предлагаю спозиционироваться на операции и корректировать проводки как составляющие этой операции. Например, это может выглядеть как-то так:
Процедура ЗаполнитьТопливо() Опер=СоздатьОбъект("Операция"); ОперПоз=СоздатьОбъект("Операция"); Опер.ВыбратьОперацииСПроводками(ВыбНачПериода,ВыбКонПериода,"АМ"); Пока Опер.ПолучитьОперацию()=1 Цикл ОперПоз.НайтиОперацию(Опер.Документ); ОперПоз.ВыбратьПроводки(); Пока ОперПоз.Получитьпроводку()=1 Цикл Если ОперПоз.Дебет.Счет=счетпокоду("АМ") тогда тз1.ВыбратьСтроки(); Пока тз1.получитьстроку()=1 Цикл Если тз1.Авто=ОперПоз.Дебет.Автомобили тогда ОперПоз.Дебет.Субконто(2,тз1.Топливо); прервать; КонецЕсли; КонецЦикла; КонецЕсли; Если ОперПоз.Кредит.Счет=счетпокоду("АМ") тогда тз1.ВыбратьСтроки(); Пока тз1.получитьстроку()=1 Цикл Если тз1.Авто=ОперПоз.Кредит.Автомобили тогда ОперПоз.Кредит.Субконто(2,тз1.Топливо); прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; ОперПоз.Записать(); КонецЦикла; Конецпроцедуры
Метод ВыбратьОперацииСПроводками выбирает проводки и позиционируется на проводках, а не на операции. Отдельно от операции изменить проводку нельзя. Поэтому
Предлагаю спозиционироваться на операции и корректировать проводки как составляющие этой операции. Например, это может выглядеть как-то так:
Процедура ЗаполнитьТопливо() Опер=СоздатьОбъект("Операция"); ОперПоз=СоздатьОбъект("Операция"); Опер.ВыбратьОперацииСПроводками(ВыбНачПериода,ВыбКонПериода,"АМ"); Пока Опер.ПолучитьОперацию()=1 Цикл ОперПоз.НайтиОперацию(Опер.Документ); ОперПоз.ВыбратьПроводки(); Пока ОперПоз.Получитьпроводку()=1 Цикл Если ОперПоз.Дебет.Счет=счетпокоду("АМ") тогда тз1.ВыбратьСтроки(); Пока тз1.получитьстроку()=1 Цикл Если тз1.Авто=ОперПоз.Дебет.Автомобили тогда ОперПоз.Дебет.Субконто(2,тз1.Топливо); прервать; КонецЕсли; КонецЦикла; КонецЕсли; Если ОперПоз.Кредит.Счет=счетпокоду("АМ") тогда тз1.ВыбратьСтроки(); Пока тз1.получитьстроку()=1 Цикл Если тз1.Авто=ОперПоз.Кредит.Автомобили тогда ОперПоз.Кредит.Субконто(2,тз1.Топливо); прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; ОперПоз.Записать(); КонецЦикла; Конецпроцедуры
Огромное спасибо!!! Ошибки больше нет, но записывает только операцию первого попавшегося документа. А операции вручную не видит. Но самое главное вы объяснили, откуда она берется, навели на правильные мысли. Теперь я что-нибудь придумаю, а то прямо замкнутый круг какой-то. Огромное спасибо еще раз!!!
Метод ВыбратьОперацииСПроводками выбирает проводки и позиционируется на проводках, а не на операции. Отдельно от операции изменить проводку нельзя. Поэтому
Предлагаю спозиционироваться на операции и корректировать проводки как составляющие этой операции. Например, это может выглядеть как-то так:
Процедура ЗаполнитьТопливо() Опер=СоздатьОбъект("Операция"); ОперПоз=СоздатьОбъект("Операция"); Опер.ВыбратьОперацииСПроводками(ВыбНачПериода,ВыбКонПериода,"АМ"); Пока Опер.ПолучитьОперацию()=1 Цикл ОперПоз.НайтиОперацию(Опер.Документ); ОперПоз.ВыбратьПроводки(); Пока ОперПоз.Получитьпроводку()=1 Цикл Если ОперПоз.Дебет.Счет=счетпокоду("АМ") тогда тз1.ВыбратьСтроки(); Пока тз1.получитьстроку()=1 Цикл Если тз1.Авто=ОперПоз.Дебет.Автомобили тогда ОперПоз.Дебет.Субконто(2,тз1.Топливо); прервать; КонецЕсли; КонецЦикла; КонецЕсли; Если ОперПоз.Кредит.Счет=счетпокоду("АМ") тогда тз1.ВыбратьСтроки(); Пока тз1.получитьстроку()=1 Цикл Если тз1.Авто=ОперПоз.Кредит.Автомобили тогда ОперПоз.Кредит.Субконто(2,тз1.Топливо); прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; ОперПоз.Записать(); КонецЦикла; Конецпроцедуры
Еще раз спасибо!
Написала код:
Процедура ЗаполнитьТопливо() Опер=СоздатьОбъект("Операция"); Опер.ВыбратьОперации(ВыбНачПериода,ВыбКонПериода); Пока Опер.ПолучитьОперацию()=1 Цикл Опер.ВыбратьПроводки(); Пока Опер.Получитьпроводку()=1 Цикл Если Опер.Дебет.Счет=счетпокоду("АМ") тогда тз1.ВыбратьСтроки(); Пока тз1.получитьстроку()=1 Цикл Если тз1.Авто=Опер.Дебет.Автомобили тогда Опер.Дебет.Субконто(2,тз1.Топливо);
КонецЕсли; КонецЦикла; КонецЕсли; Если Опер.Кредит.Счет=счетпокоду("АМ") тогда тз1.ВыбратьСтроки(); Пока тз1.получитьстроку()=1 Цикл Если тз1.Авто=Опер.Кредит.Автомобили тогда Опер.Кредит.Субконто(2,тз1.Топливо);
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!