Имя: Пароль:
1C
 
Как добавить проводку в ЗакрытиеМесяца?
0 Ричард
 
22.02.17
10:06
Бухгалтерия 2.0.
Пытаюсь добавить проводку в ЗакрытиеМесяца в процедуру ЗакрытиеСчетов20_23_25_26.
Проводка добавляется, но при этом почему-то удаляются все типовые проводки документа.
Вроде делаю всё стандартно:
        Движение = Движения.Хозрасчетный.Добавить();
        Движение.Период = ПериодПроводки;
        Движение.СчетДт = планысчетов.Хозрасчетный.НайтиПоКоду("41.01");
        Движение.СчетКт = планысчетов.Хозрасчетный.НайтиПоКоду("20.01");
        
        Движение.Организация = ОрганизацияПроводки;
        Движение.ПодразделениеКт = ПодразделениеКтПроводки;
        Движение.Сумма = СуммаПроводки;
1 yzimin
 
22.02.17
10:13
Может это и к лучшему, что у тебя не получается?
2 Ричард
 
22.02.17
10:18
Ожидал от кого-нибудь "совет" в таком стиле.
Да, я знаю, что корректировать проведение Закрытия месяца - это не айс. Просто у бухгалтерии своё специфическое понятие об учёте, и приходится его реализовывать.
3 PCcomCat
 
22.02.17
10:24
жесть...
4 yzimin
 
22.02.17
10:26
(2) беги от туда
5 piter3
 
22.02.17
10:32
[Вроде делаю всё стандартно: ]нет
6 SweetaAngel
 
22.02.17
10:33
(0) Сделай подписку.
7 PCcomCat
 
22.02.17
10:35
Движения.Хозрасчетный.Прочитать();

А потом ваше.

Но это грабли, который станут "любимыми" в вашем случае.
8 Ричард
 
22.02.17
12:35
Движения.Хозрасчетный.Прочитать(); у меня уже есть перед этим кодом. Всё равно удаляются все типовые проводки.
Причём если тот же код копирую в обработку проведения, допустим, документа ПоступлениеТоваровУслуг, то проводка нормально добавляется.
Похоже, дело в том, что регламентные операции не проводятся, а записываются, поэтому в них это по-другому работает. Пока ищу дальше решение.
9 1Снеговик
 
гуру
22.02.17
12:42
(8) когда ты говоришь Движения.Хозрасчетный.Прочитать(), то очищаешь набор записей и удаляешь все движения, сформированные до этого.
10 Ричард
 
22.02.17
12:48
(9) Разве?
Вот полностью код, который я добавил для сравнения в обработку проведения "ПоступлениеТоваровУслуг":
            ПроводкиРегистратора = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
            ПроводкиРегистратора.Отбор.Регистратор.Значение = ЭтотОбъект.Ссылка;
            ПроводкиРегистратора.Прочитать();
            Счетчик = 0;
            Для Каждого Проводка Из ПроводкиРегистратора Цикл
                    Движение = Движения.Хозрасчетный.Добавить();
                    Движение.Период = ЭтотОбъект.Дата;
                    Движение.СчетДт = планысчетов.Хозрасчетный.НайтиПоКоду("41.01");
                    Движение.СчетКт = планысчетов.Хозрасчетный.НайтиПоКоду("20.01");
                    
                    Движение.Организация = ЭтотОбъект.Организация;
                    Движение.Сумма = 1000;
                    Движение.Содержание = "Корректировка выпуска продукции (услуг)";
            КонецЦикла;
            ПроводкиРегистратора.Записать();

Этот код не очищает набор записей документа, а просто добавляет новую проводку.
А в регламентной операции тот же код всё очищает.
11 DrShad
 
22.02.17
12:52
(10) потому что наборы у документов записываются по-разному, учите мат-часть в части записи наборов
12 RomanYS
 
22.02.17
12:53
(10) если проводки уже записаны, то можно их прочитать и перезаписать или дописать без замещения.
Если проводки не записаны (а находятся в Движения.Имярегистра), то прочитать очистит этот набор.