Версия для печати темы (https://pro1c.org.ua/index.php?s=1ce9c9310b224d56d3270bf6846f91f5&showtopic=20033)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Откорректировать проводки БУ

Автор: alexkhua 01.10.14, 22:51

В процессе проведения нужно откорректировать формируемые проводки. Учитывая сложность их формирования решил поменять в конце записи документа. Нужно подменить Субконто и количество.
В процедуре ПриЗаписи() в модуле документа. Ничего не работает. Все остается как есть. Получилось сделать только при записи формы со ссылкой на экспортную процедуру Документа. Но это не совсем годится. Что тут можно предпринять?

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

Для Каждого Запись Из НаборЗаписей Цикл
    
    Если Запись.СубконтоКт.Номенклатура = Строка.Номенклатура
        Тогда
         Запись.СубконтоДт.Номенклатура = Строка.НоменклатураНовая;
         Запись.КоличествоДт = Запись.КоличествоКт*Строка.КоэффициентПеревода;
        
     КонецЕсли;
    
    
КонецЦикла;

    
КонецЦикла;


НаборЗаписей.Записать(Истина);


        
    
КонецПроцедуры

Автор: Vofka 02.10.14, 8:03

Если эту процедуру вы хотите вызвать где-то в момент проведения документа, тогда набор записей получайте через Движения.Хозрасчетный.

ПС. а вообще говнокодом очень попахивает smile.gif

Автор: Petre 02.10.14, 8:20

Цитата(alexkhua @ 01.10.14, 23:51) *
Все остается как есть.


Событие "ОбработкаПроведения" возникает после "ПриЗаписи" объекта.

Автор: alexkhua 02.10.14, 8:30

Цитата(Vofka @ 02.10.14, 9:03) *
Если эту процедуру вы хотите вызвать где-то в момент проведения документа, тогда набор записей получайте через Движения.Хозрасчетный.

ПС. а вообще говнокодом очень попахивает smile.gif

Согласен. smile.gif

Автор: alexkhua 02.10.14, 9:30

Каким методом их менять? В конце обработки проведения ставлю:

1)

ТЗ_ПроводокСформированых = Движения.Хозрасчетный.Выгрузить();
- возвращает таблицу проводок

2)
НаборПроводок = ЭтотОбъект.Движения.Хозрасчетный.Прочитать();
- выдает ошибку

Дальше идет Штатное
Движения.Хозрасчетный.ВыполнитьДействияПередЗаписьюДвижений();
- Что тут происходит?

Автор: Vofka 02.10.14, 10:25

НаборПроводок = ЭтотОбъект.Движения.Хозрасчетный;

Автор: alexkhua 02.10.14, 10:26

Нужен был документ меняющий одну номенклатуру на другую и так же количество ч/з некий коэффициент. Провести его по всем регистрам УТП. Чтоб не заморачиваться взял за основу документ ПеремещениеТоваров и дальше корректировал его движения. Пришлось выкручиваться. Так вроде работает:

////////////////////////////////////
    НаборЗаписей = ЭтотОбъект.Движения.Хозрасчетный;
    
    Для Каждого Строка Из Товары Цикл
    

Для Каждого Запись Из НаборЗаписей Цикл
    
    Если Запись.СубконтоКт.Номенклатура = Строка.Номенклатура
        Тогда
         Запись.СубконтоДт.Номенклатура = Строка.НоменклатураНовая;
         Запись.КоличествоДт = Запись.КоличествоКт*Строка.КоэффициентПеревода;
        
     КонецЕсли;
    
    
КонецЦикла;
КонецЦикла;
   ///////////////////////////////////////

    
    
    
    Движения.Хозрасчетный.ВыполнитьДействияПередЗаписьюДвижений();
    
    
    ///
    
    
КонецПроцедуры // ОбработкаПроведения()


Цитата(Vofka @ 02.10.14, 11:25) *
НаборПроводок = ЭтотОбъект.Движения.Хозрасчетный;

Да спасибо, допер уже.smile.gif

Автор: logist 02.10.14, 11:43

Цитата(alexkhua @ 01.10.14, 22:51) *
Учитывая сложность их формирования

А в чем сложность? В типовых документах перед движениями, как правило формируется некая таблица из которой получаются данные, можно в нее добавить необходимые поля/данные.
На самом деле, если раз сесть разобраться - все становится просто и понятно.

Автор: alexkhua 02.10.14, 14:02

Цитата(logist @ 02.10.14, 12:43) *
На самом деле, если раз сесть разобраться - все становится просто и понятно.

Согласен с Вами на все 100.


Только документ не типовой.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua