Корректировка операций в БП2 программно

1. bissov 31 10.02.12 10:05 Сейчас в теме
Делаю выгрузки из уТ в бп, необходимо чтобы доки проводились не по типовому механизму, а по нужным бухам счетам в том числе нетиповым.

Пишу такой код. Док оприходованиеТоваров

Объект.Записать(РежимЗаписиДокумента.Проведение);

Если ПараметрыОбъекта.Получить("ПланСчетов")="44.1.1" Тогда

Для каждого Операция Из Объект.Движения.Хозрасчетный Цикл
Операция.СубконтоДт.Склады = неопределено;
Операция.СчетДт = ПланыСчетов.Хозрасчетный.ИздержкиОбращения;
Операция.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоНаименованию("Рекламные расходы");
КонецЦикла;

Объект.Записать(РежимЗаписиДокумента.Проведение);
Объект.РучнаяКорректировка = Истина;


Все без ошибок в отладчике проставляет счета и субконто после проведения опять съзжает на 94счет, видимо при проведении меняет. Можно ли программно получить операцию после проведения и откорректировать ее?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Alex_E 2370 10.02.12 10:13 Сейчас в теме
(1) bissov, В каком месте написан указанный код? "Объект.Записать(РежимЗаписиДокумента.Проведение); " - здесь и формируются движения документа, код, указан ниже их не изменит.
Для изменения типового механизма проведения код разместите в общем модуле (лучше добавить свой) и используйте подписку на событие Обработка проведения документа в которой укажите свой обработчик из своего общего модуля.
3. bissov 31 10.02.12 10:24 Сейчас в теме
Спасибо за ответ! Но я после первого проведения получаю движения документа, потом их меняю, потом снова провожу или записываю. С подпиской вроде понятно, а нельзя тупо получить операцию по этому доку после первого проведения и отредактировать ее вручную?
5. Alex_E 2370 10.02.12 11:43 Сейчас в теме
(3) bissov, "а нельзя тупо получить операцию по этому доку после первого проведения и отредактировать ее вручную? " - Тогда и писать ничего не надо, проводим документ, нажимаем кнопку Дт/Кт, в левом верхнем углу ставим галку Ручная корректировка и меняем всё что хочется!!! Разработчик дал такую возможность пользователю, хотя ИМХО это не есть хорошо, такими корректировками видел ТАКИЕ изменения, что вообще непонятно зачем создавался документ....проще сразу операцию вручную наколотить.
4. tain 51 10.02.12 10:28 Сейчас в теме
попробуйте поменять местами строки
Объект.Записать(РежимЗаписиДокумента.Проведение);
Объект.РучнаяКорректировка = Истина;
на
Объект.РучнаяКорректировка = Истина;
Объект.Записать(РежимЗаписиДокумента.Проведение);
6. nddru 31 10.02.12 12:03 Сейчас в теме
"после проведения и откорректировать ее?"
Можно
Код будет выглядеть примерно так

ПроводкиБУ = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
ПроводкиБУ.Отбор.Регистратор.Установить(СсылкаНаДокумент);
ПроводкиБУ.Прочитать();

Если ПроводкиБУ.Количество() <> 0 Тогда
й = 0;
Пока й <= ПроводкиБУ.Количество() - 1 Цикл
Запись = ПроводкиБУ.Получить(й);
<Ну и дальше правишь запись как тебе надо>
й = й + 1;
КонецЦикла;
ПроводкиБУ.Записать();
КонецЕсли;

Ну и еще в конце не забудь указать что док. коректирован вручную, только записывай без проведения
7. bissov 31 10.02.12 12:22 Сейчас в теме
Alex_E, Спасибо я не совсем правильно выразился, ниже nddru мне ответил как такое программно сделать.

nddru, спасибо то что надо!
8. bissov 31 10.02.12 13:51 Сейчас в теме
Млин засада все видит все пишет я уже обо субконто склад убрал

Пишет " {Форма.Форма.Форма(21)}: Ошибка при вызове метода контекста (Записать)
ПроводкиБУ.Записать();
Запись не верна! Вид субконто "Склады" не доступен для данной записи! (Регистр бухгалтерии: Журнал проводок (бухгалтерский и налоговый учет); Номер строки: 1)"

Вот код, в других доках достаточно было после проводки поправить движения и они проводились как надо
ПроводкиБУ = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
ПроводкиБУ.Отбор.Регистратор.Установить(Док);
ПроводкиБУ.Прочитать();

Если ПроводкиБУ.Количество() <> 0 Тогда
Строка = 0;
Пока Строка <= ПроводкиБУ.Количество() - 1 Цикл
Запись = ПроводкиБУ.Получить(Строка);
Запись.СчетДт = ПланыСчетов.Хозрасчетный.ИздержкиОбращения;
Запись.СубконтоДт.СтатьиЗатрат = Справочники.СтатьиЗатрат.НайтиПоНаименованию("Рекламные расходы");
Запись.СубконтоДт.Склады = неопределено;
Запись.СубконтоКт.Склады = неопределено;
Строка = Строка + 1;
КонецЦикла;
ПроводкиБУ.Записать();
КонецЕсли;
9. nddru 31 10.02.12 13:56 Сейчас в теме
Запись.СчетКТ - здесь у тебя какой счет стоит в проводке?
10. bissov 31 10.02.12 14:11 Сейчас в теме
кт41.01
ДокСписаниеТоваров
по умолчанию дт94 кт41.01
но бухам надо дт44.01
11. nddru 31 10.02.12 14:36 Сейчас в теме
это я к тому, что воткни проверку, что Запись.СчетКТ действительно 41.01, а то достаточно одной неверной проводки, чтобы все правленные записи не были записаны )
12. bissov 31 10.02.12 14:54 Сейчас в теме
это я уже чисто в обработке смотрю(ошибки выдает), выбираю прям конкретные документы. а в модуле проверка есть
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот