Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Регистр накопления.Метод Записать()
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
olegzt
процедура ПровестиАмортизациюОС(Докум,СуммаАмортизации) экспорт
    
    Движения=РегистрыНакопления.УпрУчет.СоздатьНаборЗаписей();
    
    Движения.Отбор.Регистратор.Установить(докум);
    
    Движение=Движения.Добавить();
    
    
    Движение.Период=Докум.Дата;
    Движение.видЗатрат=АмортизацияВидЗатрат;
    Движение.сумма=СуммаАмортизации;
    
    Движения.Записать();    
конецПроцедуры


такую процедуру общего модуля вызываю дважды в ходе проведения документа. Второй вызов стирает записи в регистре от предыдущего вызова. В итоге
всегда получаю в регистре цифру только второго вызова. Что делаю не так ?
logist
1) По одному регистратору может быть только одна запись.
2) Зачем два раза проводить, если можно один раз записать несколько записей. Скорее всего Вы неверно реализуете задачу.
Vofka
Цитата
1) По одному регистратору может быть только одна запись.

Не соглашусь. Может быть сколько угодно записей.

olegzt, получается 1 запись с последней суммой СуммаАмортизации или с суммой (СуммаАмортизации + СуммаАмортизации) ? Может просто программа суммирует всё, т.к. записи кроме как по суммам ничем не различаются (это предположение).
GreenFox
Цитата(olegzt @ 10.05.11, 16:34) необходимо зарегистрироваться для просмотра ссылки
процедура ПровестиАмортизациюОС(Докум,СуммаАмортизации) экспорт
    
    Движения=РегистрыНакопления.УпрУчет.СоздатьНаборЗаписей();
    
    Движения.Отбор.Регистратор.Установить(докум);
    
    Движение=Движения.Добавить();
    
    
    Движение.Период=Докум.Дата;
    Движение.видЗатрат=АмортизацияВидЗатрат;
    Движение.сумма=СуммаАмортизации;
    
    Движения.Записать();    
конецПроцедуры


такую процедуру общего модуля вызываю дважды в ходе проведения документа. Второй вызов стирает записи в регистре от предыдущего вызова. В итоге
всегда получаю в регистре цифру только второго вызова. Что делаю не так ?


Пожалуйста уточните: Вам нужно что бы было две записи или что б процедура вызывалась 1 раз? А то по постановке задачи немного непонятно.
И объясните для чего 2 вызова процедуры в одном проведении, а то я что-то не могу придумать для чего оно надо.
logist
Цитата(Vofka @ 10.05.11, 15:43) необходимо зарегистрироваться для просмотра ссылки
Не соглашусь. Может быть сколько угодно записей.

В контексте первого сообщения запись будет только одна (точнее НаборЗаписей будет только один).
olegzt
Из модуля проведения вызывается и для амортизации ОС и для амортизации НМА. Вызывается из разных процедур. Мне нужно 2 раза сделать запись в регистр. Один раз с суммой амортизации ОС, второй раз с суммой амортизации НМА. Так что, мне предварительно где-то копить сумму и потом один раз записывать в регистр?

При вызове процедуры сумма передаваемого параметра "СуммаАмортизации" ессно разная.Процедура вызывается 2 раза. Записывается в регистр только последний вызов. Если закоментировать второй вызов-первый сам отрабатывает нормально. Значит при втором вызове обнуляется или перезаписывается первый ?
logist
При втором вызове - первая перезаписывается, поэтому если так надо, то "копите" сумму.
Batchir
Подготовьте предварительно таблицу значений и закидывайте в набор записей всё гамузом.
см. типовые конфы
olegzt
Цитата(Batchir @ 10.05.11, 21:38) необходимо зарегистрироваться для просмотра ссылки
Подготовьте предварительно таблицу значений и закидывайте в набор записей всё гамузом.
см. типовые конфы


Понял. Спасибо !
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.