Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Операции и проводки , Изменение программно существующих операций 2 страниц V  < 1 2          
logist Подменю пользователя
сообщение 28.04.11, 16:10
Сообщение #21

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

С утра был документ Путевой лист
Цитата(НатальяНаталья @ 28.04.11, 10:38) *
Хочу в существующие операции, созданные документом ПутевойЛист(нетиповой,созданный программистом) проставить значения субконто. Раньше они были пустыми. Но не получается, выдает ошибку, что нельзя изменять записанные операции. Пробовала программно пометить на удаление,выключить проводки и т. д.. но ничего не помогает.

теперь оказывается это свернутые проводки
Цитата(НатальяНаталья @ 28.04.11, 15:57) *
Дело в том, что это не вновь созданная операция, а в уже существующие операции, созданные обработкой WRAP (сверткой бухгалтерских итогов), я хочу на место пустого субконто, поставить нужное мне.

прошло 19 сообщений, Наталья, что еще Вы забыли сказать?


Signature
Личные бесплатные консультации не даю, для этого есть форум!

igmig65 Подменю пользователя
сообщение 28.04.11, 16:11
Сообщение #22

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Из: Донецкая обл
Спасибо сказали: 171 раз
Рейтинг: 144.5

я понял, что не новая операция, имел ввиду создания ее как объекта, на какой строке в отладчике вываливается?

Acid Подменю пользователя
сообщение 28.04.11, 16:13
Сообщение #23

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 379 раз
Рейтинг: 0

вот это лишнее:Опер.Записатьпроводки();

поставьте счетчик внутри цикла с=с+1
перед присваиванием будете видеть номер проводки, где спотыкается.
сообщить(""+с);

Acid Подменю пользователя
сообщение 28.04.11, 16:15
Сообщение #24

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 379 раз
Рейтинг: 0

logist, я думаю уже пора традиционно требовать фотку smile.gif

igmig65 Подменю пользователя
сообщение 28.04.11, 16:20
Сообщение #25

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Из: Донецкая обл
Спасибо сказали: 171 раз
Рейтинг: 144.5

Цитата
logist, я думаю уже пора традиционно требовать фотку

в руках с монитором, на котором код, типа скрин laugh.gif

рс: администратор, пардон за флуд

Спасибо сказали: yur,

НатальяНаталья Подменю пользователя
сообщение 28.04.11, 16:20
Сообщение #26

Общительный
**
Группа: Пользователи
Сообщений: 21
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(igmig65 @ 28.04.11, 16:11) *
я понял, что не новая операция, имел ввиду создания ее как объекта, на какой строке в отладчике вываливается?


После того как находится первая операция, она кстати имеет одну проводку и дело доходит до присвоения субконто значения , то выдает эту ошибку.
Сейчас возникло вот еще ,что . По совету я дописала
                        если опер.дебет.счет.Количествосубконто()>1 Тогда
                            сообщить(опер.дебет.счет.Количествосубконто());
                            //Если Опер.Дебет.Субконто(2).Вид()=тз1.ПолучитьЗначение(н,"Топливо").Вид() тогда
                            //    
                            //    Опер.Дебет.Субконто(2)=тз1.ПолучитьЗначение(н,"Топливо");
                            //конецесли;
                        конецесли;


Так пока не были закомментированы эти 4 строчки выдавалась ошибка в Опер.Дебет.Субконто(2): Неизвестный оператор , хотя количество субконото сообщает 2 и вид сообщает правильно, такой же как в ТЗ

НатальяНаталья Подменю пользователя
сообщение 28.04.11, 16:24
Сообщение #27

Общительный
**
Группа: Пользователи
Сообщений: 21
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Acid @ 28.04.11, 16:15) *
logist, я думаю уже пора традиционно требовать фотку smile.gif

Это хорошо . что у человека хорошее настроение, а на подобные подколки я не обижаюсь. Хотелось бы конечно помощи в решении моей проблемы. А потом и посмеяться можно. С уважением.

Acid Подменю пользователя
сообщение 28.04.11, 16:28
Сообщение #28

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 379 раз
Рейтинг: 0

пробуйте так: Опер.Дебет.Субконто(2,тз1.Топливо);

Сообщение отредактировал Acid - 28.04.11, 16:32

НатальяНаталья Подменю пользователя
сообщение 28.04.11, 16:45
Сообщение #29

Общительный
**
Группа: Пользователи
Сообщений: 21
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Acid @ 28.04.11, 16:28) *
пробуйте так: Опер.Дебет.Субконто(2,тз1.Топливо);


1
Опер.Дебет.Субконто(2,тз1.Топливо);
{E:\.......\EXTFORMS\ТОПЛИВО АВТОМОБИЛЕЙ.ERT(82)}: Нельзя изменять записанные проводки!
Цифра 1 это номер проводки (поставила счетчик по вашему совету). Но все по прежнему, ошибка та же.


Но на сегодня хватит. Спасибо большое за желание помочь. Надеюсь завтра что-нибудь получится. Если будет время завтра не бросайте меня.

Acid Подменю пользователя
сообщение 28.04.11, 18:15
Сообщение #30

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 379 раз
Рейтинг: 0

эту команду убрали? : Опер.Записатьпроводки();

igmig65 Подменю пользователя
сообщение 28.04.11, 19:10
Сообщение #31

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Из: Донецкая обл
Спасибо сказали: 171 раз
Рейтинг: 144.5

Цитата
После того как находится первая операция, она кстати имеет одну проводку и дело доходит до присвоения субконто значения , то выдает эту ошибку

Посмотрите что показывает в отладчике перед присвоением :

опер.дебет.счет.ВидСубконто(2).ТипСубконто()=

5_kopeek Подменю пользователя
сообщение 28.04.11, 23:07
Сообщение #32

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Метод ВыбратьОперацииСПроводками выбирает проводки и позиционируется на проводках, а не на операции. Отдельно от операции изменить проводку нельзя. Поэтому
Цитата(НатальяНаталья @ 28.04.11, 15:35) *
и выдает ошибку: Нельзя изменять записанные проводки!

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

Спасибо сказали: НатальяНаталья,

НатальяНаталья Подменю пользователя
сообщение 29.04.11, 7:46
Сообщение #33

Общительный
**
Группа: Пользователи
Сообщений: 21
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(5_kopeek @ 28.04.11, 23:07) *
Метод ВыбратьОперацииСПроводками выбирает проводки и позиционируется на проводках, а не на операции. Отдельно от операции изменить проводку нельзя. Поэтому

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



Огромное спасибо!!! Ошибки больше нет, но записывает только операцию первого попавшегося документа. А операции вручную не видит. Но самое главное вы объяснили, откуда она берется, навели на правильные мысли. Теперь я что-нибудь придумаю, а то прямо замкнутый круг какой-то. Огромное спасибо еще раз!!!

НатальяНаталья Подменю пользователя
сообщение 29.04.11, 10:17
Сообщение #34

Общительный
**
Группа: Пользователи
Сообщений: 21
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(5_kopeek @ 28.04.11, 23:07) *
Метод ВыбратьОперацииСПроводками выбирает проводки и позиционируется на проводках, а не на операции. Отдельно от операции изменить проводку нельзя. Поэтому

Предлагаю спозиционироваться на операции и корректировать проводки как составляющие этой операции. Например, это может выглядеть как-то так:
Процедура ЗаполнитьТопливо() 
    Опер=СоздатьОбъект("Операция");
    ОперПоз=СоздатьОбъект("Операция");
    Опер.ВыбратьОперацииСПроводками(ВыбНачПериода,ВыбКонПериода,"АМ");  
    Пока Опер.ПолучитьОперацию()=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.Топливо);
                        
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;
        КонецЦикла;
        Опер.Записать();
    КонецЦикла;
Конецпроцедуры

и все получилось прекрасно! Все дело оказывается в ВыбратьОперацииСПроводками. Вот так всегда хочется как быстрее, а получается как всегда!
Причина редактирования: Выделяйте код!

5_kopeek Подменю пользователя
сообщение 29.04.11, 11:54
Сообщение #35

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Да, только во втором варианте Вы перебираете ВСЕ операции и проводки, а в первом -- отфильтрованные по счету АМ.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V  < 1 2
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.06.25, 9:56
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!