Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Не производится запись в регистр накопления

Не производится запись в регистр накопления
Я
   Yukki
 
28.05.21 - 12:10
Нужна помощь, не понимаю почему все записи записываются в регистр накопления "ОборотыПоРасходамВнеЗарплаты"
А нужно чтобы данные записывались в регистр "РасходыСубсидий" , а когда заканчивались деньги из субсидии и сотрудники платили свои деньги,то это бы записывалось в "ОборотыПоРасходамВнеЗарплаты"
Помогите пожалуйста)


Процедура ОбработкаПроведения(Отказ, Режим)
    
    Движения.РасходыСубсидий.Записать();
    Движения.ОборотыПоРасходамВнеСубсидий.Записать();
//Получение времени покупки еды в столовой    
    МоментВремениДокумента=Ссылка.Дата;
    Сообщить("Питание в столовой в "+ Час(МоментВремениДокумента)+ ":"+Минута(МоментВремениДокумента));
//Проверка времени покупки еды в столовой    
Если Час(МоментВремениДокумента)<12 ИЛИ Час(МоментВремениДокумента)>= 13 тогда
    
    // регистр ОборотыПоРасходамВнеСубсидий
    Движения.ОборотыПоРасходамВнеСубсидий.Записывать = Истина;
    Движение = Движения.ОборотыПоРасходамВнеСубсидий.Добавить();
    Движение.Период = Дата;
    Движение.Сотрудник = Сотрудник;
    Движение.Сумма = Сумма;
    
        Иначе  
                          
    //регистр РасходыСубсидий
    Движения.РасходыСубсидий.Записывать = Истина;
    Движение = Движения.РасходыСубсидий.Добавить();
    Движение.Период = Дата;
    Движение.Сотрудник = Сотрудник;
    Движение.Сумма = Сумма;
    // получение начисленной субсидии ученику    
    отбор=новый структура("Сотрудник",Сотрудник);
    СубсидияСотрудника = РегистрыСведений.Субсидии.ПолучитьПоследнее(Дата, отбор);
    
        Сообщить("Сотруднику в этом месяце была назначена субсидия " +СубсидияСотрудника.РазмерСубсидии + " руб.");
//Получение данных об истраченной сумме субсидий за  месяц    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    док.Сотрудник КАК Сотрудник,
        |    док.Сумма КАК Сумма,
        |    ЕСТЬNULL(траты.СуммаОборот,0) КАК СуммаОборот
        |ИЗ
        |    Документ.ПитаниеВСтоловой КАК док
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасходыСубсидий.Обороты(&НачПериод,&КонПериод,,Сотрудник =&Сотрудник) КАК траты
        |        ПО док.Сотрудник = траты.Сотрудник
        |ГДЕ
        |    док.Ссылка = &ссылка";
    
    Запрос.УстановитьПараметр("ссылка", ссылка);
    Запрос.УстановитьПараметр("НачПериод", НачалоМесяца(ссылка.Дата));
    Запрос.УстановитьПараметр("КонПериод", КонецМесяца(ссылка.Дата));
    Запрос.УстановитьПараметр("Сотрудник", Сотрудник);

    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
         сообщить("Этот сотрудник уже потратил из субсидии " + выборкаДетальныеЗаписи.СуммаОборот + " руб.");
        
         Траты=выборкадетальныеЗаписи.сумма+выборкаДетальныеЗаписи.СуммаОборот;
         //сообщить(Траты);
         разница=Траты-СубсидияСотрудника.РазмерСубсидии ;
         //Проверка хватит ли оставшишся средств субсидии на текущую покупку
         Если разница>0 тогда
             Сообщить("Превышен лимит субсидии на " + разница + " руб.");
             МожноПотратить= СубсидияСотрудника.РазмерСубсидии-выборкаДетальныеЗаписи.СуммаОборот;
            
             Сообщить("Можно потратить " + Можнопотратить+ " руб."+ "Необходимо доплатить "+ разница+ " руб.");
             Движения.РасходыСубсидий.Записать(Ложь);
             // запись движений документа в один или разные регистры в зависимости от остаточной суммы субсидии
             Если  МожноПотратить<>0 тогда

             Движения.РасходыСубсидий.Записывать = Истина;
             Движение = Движения.РасходыСубсидий.Добавить();
             Движение.Период = Дата;
             Движение.Сотрудник = Сотрудник;
             Движение.Сумма = МожноПотратить;
             КонецЕсли;
             Движения.ОборотыПоРасходамВнеСубсидий.Записывать = Истина;
             Движение = Движения.ОборотыПоРасходамВнеСубсидий.Добавить();
             Движение.Период = Дата;
             Движение.Сотрудник = Сотрудник;
             Движение.Сумма = разница;
            

        КонецЕсли;
    КонецЦикла;
       
КонецЕсли;


КонецПроцедуры
 
 Партнерская программа EFSOL Oblako
   brainguard
 
1 - 28.05.21 - 12:13
(0) В тексте нет такого регистра ОборотыПоРасходамВнеЗарплаты
   Yukki
 
2 - 28.05.21 - 12:22
(1) Это я не правильно выразилась, он есть, но называется "ОборотыПоРасходамВнеСубсидий"
   mistеr
 
3 - 28.05.21 - 12:57
(0) Какая конфа?

Помнится, я это штатными механизмами делал.
   ДенисЧ
 
4 - 28.05.21 - 13:03
А что, в регистре накопления регистратор уже не модно указывать?
   mistеr
 
5 - 28.05.21 - 13:10
(4) Оно само
   ДенисЧ
 
6 - 28.05.21 - 13:16
(5) Сами только кошки и блохи заводятся
   mikecool
 
7 - 28.05.21 - 13:17
(6) про кошек подтверждаю
   Yukki
 
8 - 28.05.21 - 13:26
(4) Там все указано
   acht
 
9 - 28.05.21 - 13:34
(8) При каких условиях в коде выполняется строка
Движение = Движения.РасходыСубсидий.Добавить(); 

?
   ДенисЧ
 
10 - 28.05.21 - 13:48
(8)
Движение = Движения.ОборотыПоРасходамВнеСубсидий.Добавить();
Движение.Период = Дата;
Движение.Сотрудник = Сотрудник;
Движение.Сумма = разница;


Можно пальцем ткнуть?
   mistеr
 
11 - 28.05.21 - 14:05
(10) Ты видать привык чужие движения курочить. :)
При проведении отбор уже стоит и регистратор заполняется автоматически.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.