Изменить программно проводки документа
Показывать по
10
20
40
сообщений
- 1
- 2
25.02.2004
18:03
#1
Здравствуйте!
Есть следующая проблема:
Документ до определенной даты делал проводки в дебет счета с ПЕРВЫМ значением субконто.
После даты Х,т.е. после того, как изменили модуль документа, документ стал делать проводки в дебет счета со ВТОРЫМ значением субконто.
Как программно изменить значение субконто с ПЕРВОГО на ВТОРОЕ у документов ранее даты Х, не перепроводя их (ПРЕПРОВОДИТЬ НЕЛЬЗЯ)!!!
Ручной способ я знаю, но он очень долог
Есть следующая проблема:
Документ до определенной даты делал проводки в дебет счета с ПЕРВЫМ значением субконто.
После даты Х,т.е. после того, как изменили модуль документа, документ стал делать проводки в дебет счета со ВТОРЫМ значением субконто.
Как программно изменить значение субконто с ПЕРВОГО на ВТОРОЕ у документов ранее даты Х, не перепроводя их (ПРЕПРОВОДИТЬ НЕЛЬЗЯ)!!!
Ручной способ я знаю, но он очень долог
26.02.2004
05:39
#2
В бухгалтерии документ создает операцию, в которой уже создаются проводки.
Таким образом можно выбрать операции до даты Х, выбрать их проводки и менять в них что угодно. При перепроведении соответствующих документов наши изменения пропадут.
Таким образом можно выбрать операции до даты Х, выбрать их проводки и менять в них что угодно. При перепроведении соответствующих документов наши изменения пропадут.
26.02.2004
10:20
#3
>В бухгалтерии документ создает операцию, в которой уже создаются проводки.
Это понятно
>Таким образом можно выбрать операции до даты Х, выбрать их проводки и менять в >них что угодно.
КАК менять? Руками? Или программно? Руками - можно, но очень не хочется 700 проводок перебивать руками.
ПРОГРАММНО? При изменении реквизита проводки - ошибка "Нельзя изменять записанные проводки"
Это понятно
>Таким образом можно выбрать операции до даты Х, выбрать их проводки и менять в >них что угодно.
КАК менять? Руками? Или программно? Руками - можно, но очень не хочется 700 проводок перебивать руками.
ПРОГРАММНО? При изменении реквизита проводки - ошибка "Нельзя изменять записанные проводки"
26.02.2004
10:57
#4
"Быстренько написал внешнюю обработку с одной процедурой:
Процедура Сформировать()
Опер = СоздатьОбъект("Операция");
Опер.ВыбратьОперации(,РабочаяДата());//сюда ваша дата Х
НачатьТранзакцию(); //чтобы быстрее
Пока Опер.ПолучитьОперацию() = 1 Цикл
Опер.ВыбратьПроводки();
Пока Опер.ПолучитьПроводку() = 1 Цикл
Опер.Дебет.Субконто(1,""""); //сюда не знаю что ставить
КонецЦикла;
Опер.Записать()
КонецЦикла;
ЗафиксироватьТранзакцию();
КонецПроцедуры
У меня работает, удачи!"
Процедура Сформировать()
Опер = СоздатьОбъект("Операция");
Опер.ВыбратьОперации(,РабочаяДата());//сюда ваша дата Х
НачатьТранзакцию(); //чтобы быстрее
Пока Опер.ПолучитьОперацию() = 1 Цикл
Опер.ВыбратьПроводки();
Пока Опер.ПолучитьПроводку() = 1 Цикл
Опер.Дебет.Субконто(1,""""); //сюда не знаю что ставить
КонецЦикла;
Опер.Записать()
КонецЦикла;
ЗафиксироватьТранзакцию();
КонецПроцедуры
У меня работает, удачи!"
26.02.2004
11:16
#5
"На строке "Опер.Дебет.Субконто(1,""""); " выдается ошибка:
"Нельзя изменять записанные проводки!".
Проводки сделаны ДОКУМЕНТОМ, а не операцией, введенной вручную!!!
Спасибо за помощь, но ни фига не работает :("
"Нельзя изменять записанные проводки!".
Проводки сделаны ДОКУМЕНТОМ, а не операцией, введенной вручную!!!
Спасибо за помощь, но ни фига не работает :("
26.02.2004
12:08
#6
Эта штука работает только для Опер = СоздатьОбъект(...)
Если Мы нашли документ, получили его операцию (не выборку), тогда действительно нельзя изменять записанные проводки.
В данном случае необходимо делать выборку именно по Операциям, проверять Опер.Документ = ... или Опер.Документ.Вид() = ..., потом выбирать проводки и менять Субконто. Работать будет!
Если Мы нашли документ, получили его операцию (не выборку), тогда действительно нельзя изменять записанные проводки.
В данном случае необходимо делать выборку именно по Операциям, проверять Опер.Документ = ... или Опер.Документ.Вид() = ..., потом выбирать проводки и менять Субконто. Работать будет!
26.02.2004
12:13
#7
"Или если Вам удобнее
Опер1 = Док.Операция;
Опер = СоздатьОбъект("Операция");
Опер.Найти(Опер1);
Опер.ВыбратьПроводки();
и т.д."
Опер1 = Док.Операция;
Опер = СоздатьОбъект("Операция");
Опер.Найти(Опер1);
Опер.ВыбратьПроводки();
и т.д."
26.02.2004
12:30
#8
"Держите код:
Процедура Сформировать()
Опер=СоздатьОбъект("Операция");
Опер.ВыбратьОперацииСПроводками(ДатаНач,ДатаКон,"20","10.7");
Пока Опер.ПолучитьОперацию()=1 Цикл
Если Опер.Документ.Вид()="ВыпускГотовойПродукции" Тогда
НачатьТранзакцию();
Опер.ВыбратьПроводки();
Пока Опер.ПолучитьПроводку()=1 Цикл
Если (Опер.Дебет.Счет=СчетПоКоду("20"))И((Опер.Кредит.Счет=СчетПоКоду("10.7")) Тогда
Если Строка(Опер.Дебет.ВидыНоменклатуры)="Монтаж товара" Тогда
_ВН = СоздатьОбъект("Справочник.ВидыНоменклатуры");
ВН = _ВН.ТекущийЭлемент();
Опер.Дебет.Субконто(1,ВН); //В ЭТОЙ СТРОКЕ СЛЕТАЕТ!!!!
КонецЕсли;
КонецЕсли;
КонецЦикла;
Опер.Записать();
ЗафиксироватьТранзакцию();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ИМХО, НЕВОЗМОЖНО программно поменять значения субконто в проводках операции, созданной документом, только руками :-("
Процедура Сформировать()
Опер=СоздатьОбъект("Операция");
Опер.ВыбратьОперацииСПроводками(ДатаНач,ДатаКон,"20","10.7");
Пока Опер.ПолучитьОперацию()=1 Цикл
Если Опер.Документ.Вид()="ВыпускГотовойПродукции" Тогда
НачатьТранзакцию();
Опер.ВыбратьПроводки();
Пока Опер.ПолучитьПроводку()=1 Цикл
Если (Опер.Дебет.Счет=СчетПоКоду("20"))И((Опер.Кредит.Счет=СчетПоКоду("10.7")) Тогда
Если Строка(Опер.Дебет.ВидыНоменклатуры)="Монтаж товара" Тогда
_ВН = СоздатьОбъект("Справочник.ВидыНоменклатуры");
ВН = _ВН.ТекущийЭлемент();
Опер.Дебет.Субконто(1,ВН); //В ЭТОЙ СТРОКЕ СЛЕТАЕТ!!!!
КонецЕсли;
КонецЕсли;
КонецЦикла;
Опер.Записать();
ЗафиксироватьТранзакцию();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ИМХО, НЕВОЗМОЖНО программно поменять значения субконто в проводках операции, созданной документом, только руками :-("
26.02.2004
20:45
#9
".......
_ВН = СоздатьОбъект("Справочник.ВидыНоменклатуры");
ВН = _ВН.ТекущийЭлемент();
.......
А вылетает не из-за того что _BH не позиционирован?
Полностью я в вашей проблеме не разбирался (так что просьба сильно не пинать), но может грабли в этом? "
_ВН = СоздатьОбъект("Справочник.ВидыНоменклатуры");
ВН = _ВН.ТекущийЭлемент();
.......
А вылетает не из-за того что _BH не позиционирован?
Полностью я в вашей проблеме не разбирался (так что просьба сильно не пинать), но может грабли в этом? "
26.02.2004
23:08
#10
"пардон, а при переходе с 4.2 на 4.4 Вы хотите сказать что документы Закрытие месяца (проводки по 69.3) перепроводились руками, а не програмно подставлялся сначало П69.3, который потом на 69.3.1 и 69.3.2 менялся....
Ваш код у меня слетел на Опер.Записать();
Операция не выбрана!
не хватает след.
Опер=СоздатьОбъект("Операция");
Опер1=СоздатьОбъект("Операция");
Опер.ВыбратьОперацииСПроводками(ДатаНач,ДатаКон,"20","10.7");
Пока Опер.ПолучитьОперацию()=1 Цикл
Если Опер.Документ.Вид()="ВыпускГотовойПродукции" Тогда
НачатьТранзакцию();
Опер1.НайтиОперацию(Опер.Документ);
...
а далее как у Вас, но с Опер1
подглядите "ОбновлениеИБ""
Ваш код у меня слетел на Опер.Записать();
Операция не выбрана!
не хватает след.
Опер=СоздатьОбъект("Операция");
Опер1=СоздатьОбъект("Операция");
Опер.ВыбратьОперацииСПроводками(ДатаНач,ДатаКон,"20","10.7");
Пока Опер.ПолучитьОперацию()=1 Цикл
Если Опер.Документ.Вид()="ВыпускГотовойПродукции" Тогда
НачатьТранзакцию();
Опер1.НайтиОперацию(Опер.Документ);
...
а далее как у Вас, но с Опер1
подглядите "ОбновлениеИБ""
- 1
- 2
Читают тему
(гостей: 1)