Имя: Пароль:
1C
1С v8
Не записывается регистр расчета
0 МосЭстрада
 
13.03.13
11:05
Вот процедура расчета, в результате которой должны записываться Сумма и ОтработаноЧасов, но почему-то не записывается.


Процедура Расчет(Регистратор) экспорт

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


       Запрос = Новый Запрос;
       Запрос.Текст =
           "ВЫБРАТЬ
           |    РегистрОсновныхРасчетовДанныеГрафика.НомерСтроки,
           |    ЕСТЬNULL(РегистрОсновныхРасчетовДанныеГрафика.ЗначениеФактическийПериодДействия, 0) КАК Факт,
           |    ЕСТЬNULL(РегистрОсновныхРасчетовДанныеГрафика.ЗначениеБазовыйПериод, 0) КАК База,
           |    ЕСТЬNULL(РегистрОсновныхРасчетовДанныеГрафика.Сумма, 0) КАК Сумма,
           |    ЕСТЬNULL(РегистрОсновныхРасчетовДанныеГрафика.ОтработаноЧасов, 0) КАК Отработано,
           |    РегистрОсновныхРасчетов.ВидРасчета,
           |    СведенияОСотрудникахСрезПоследних.Оклад,
           |    ЕСТЬNULL(РегистрОсновныхРасчетовБазаРегистрОсновныхРасчетов.СуммаБаза, 0) КАК СуммаБаза
           |ИЗ
           |    РегистрРасчета.РегистрОсновныхРасчетов КАК РегистрОсновныхРасчетов
           |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.РегистрОсновныхРасчетов.ДанныеГрафика(Регистратор = &Регистратор) КАК РегистрОсновныхРасчетовДанныеГрафика
           |        ПО РегистрОсновныхРасчетов.НомерСтроки = РегистрОсновныхРасчетовДанныеГрафика.НомерСтроки
           |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОСотрудниках.СрезПоследних(
           |                &Дата,
           |                Подразделение = &Подразделение
           |                    И Сотрудник = &Сотрудник) КАК СведенияОСотрудникахСрезПоследних
           |        ПО РегистрОсновныхРасчетов.Сотрудник = СведенияОСотрудникахСрезПоследних.Сотрудник
           |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.РегистрОсновныхРасчетов.БазаРегистрОсновныхРасчетов(&изм, &изм, , ) КАК РегистрОсновныхРасчетовБазаРегистрОсновныхРасчетов
           |        ПО РегистрОсновныхРасчетов.НомерСтроки = РегистрОсновныхРасчетовБазаРегистрОсновныхРасчетов.НомерСтроки
           |ГДЕ
           |    РегистрОсновныхРасчетов.Регистратор = &Регистратор
           |    И РегистрОсновныхРасчетов.НомерСтроки = &НомерСтроки";

       Запрос.УстановитьПараметр("НомерСтроки", Стр_НЗ.НомерСтроки);
       Запрос.УстановитьПараметр("Регистратор", Регистратор);
       Запрос.УстановитьПараметр("Подразделение", Стр_НЗ.Подразделение);
       Запрос.УстановитьПараметр("Сотрудник", Стр_НЗ.Сотрудник);
       Запрос.УстановитьПараметр("Дата",Стр_НЗ.ПериодДействияНачало);
       МасИзм = Новый Массив(2);
       МасИзм[0] = "Сотрудник";
       МасИзм[1] = "Подразделение";
       Запрос.УстановитьПараметр("изм", МасИзм);

       Результат = Запрос.Выполнить();
       ВыборкаДетальныеЗаписи = Результат.Выбрать();
       ВыборкаДетальныеЗаписи.Следующий();
       
       Если ВыборкаДетальныеЗаписи.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда
           Стр_НЗ.Сумма = ВыборкаДетальныеЗаписи.Оклад/ВыборкаДетальныеЗаписи.База*ВыборкаДетальныеЗаписи.Факт
       Иначе
           Стр_НЗ.Сумма = ВыборкаДетальныеЗаписи.СуммаБаза/ВыборкаДетальныеЗаписи.База*ВыборкаДетальныеЗаписи.Факт
       КонецЕсли;
       
       Стр_НЗ.ОтработаноЧасов = ВыборкаДетальныеЗаписи.Факт;
   
           НЗ_РР = РегистрыРасчета.РегистрОсновныхРасчетов.СоздатьНаборЗаписей();
           НЗ_РР.Отбор.Регистратор.Установить(Регистратор);
           НЗ_РР.Очистить();

           НЗ_РР.Загрузить(Таб);
           НЗ_РР.Записать(,,Ложь);
           
   КонецЦикла;
   Таб.ВыбратьСтроку();
   

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

Что тут не так? Где собака порылать, так сказать?
1 regniws
 
13.03.13
11:38
после этой строчки НЗ_РР.Записать(,,Ложь);
посмотреть чего находится в НЗ_РР
2 regniws
 
13.03.13
11:40
да и по тексту запроса не особо видно, чтобы там где-то был регистратор.
3 МосЭстрада
 
13.03.13
13:16
Регистратор - параметрю
в НЗ_РР - все что надо до и после Записать.
Однако, нет номера строки, т.е. НомерСтроки = 0.
В Таб номер строки есть у каждой строки.
4 МосЭстрада
 
13.03.13
13:18
Как это исправить?
Или недопусить?
Или все переделать?
Вобщем победить?
5 МосЭстрада
 
13.03.13
14:01
Новый вариант, опять не записывает
Процедура Расчет(Регистратор) экспорт

   НЗ_РР = РегистрыРасчета.РегистрОсновныхРасчетов.СоздатьНаборЗаписей();
   НЗ_РР.Отбор.Регистратор.Установить(Регистратор);
   НЗ_РР.Прочитать();

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


   Запрос.УстановитьПараметр("Регистратор", Регистратор);
   Запрос.УстановитьПараметр("Дата",Регистратор.Дата);
   МасИзм = Новый Массив(2);
   МасИзм[0] = "Сотрудник";
   МасИзм[1] = "Подразделение";
   Запрос.УстановитьПараметр("изм", МасИзм);

   Результат = Запрос.Выполнить();
   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       Стр_НЗ = НЗ_РР[ВыборкаДетальныеЗаписи.НомерСтроки - 1];
       Если ВыборкаДетальныеЗаписи.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда
           Стр_НЗ.Сумма = ВыборкаДетальныеЗаписи.Оклад/ВыборкаДетальныеЗаписи.База*ВыборкаДетальныеЗаписи.Факт;
           //Иначе
           //Стр_НЗ.Сумма = ВыборкаДетальныеЗаписи.СуммаБаза/ВыборкаДетальныеЗаписи.База*ВыборкаДетальныеЗаписи.Факт
           Стр_НЗ.ОтработаноЧасов = ВыборкаДетальныеЗаписи.Факт;
       КонецЕсли;    
   КонецЦикла;
   
   НЗ_РР.Записать(,,Ложь);
   РасчетКомандировки(Регистратор)

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

Объясните оленю, почему не записывает ???
6 МосЭстрада
 
25.03.13
13:53
Это был глюк платформы, капризничал текстовый редактор.
7 mikecool
 
25.03.13
13:55
(6) че - прям так и капризничал? кричал "хрен тебе, не запишу значения в базу, ведь я - текстовый редактор!!!" ?
8 МосЭстрада
 
26.03.13
08:54
:)
да нет, просто по тихому не выполнял для набора записей метод Записать, как будто этой строчки нет вообще.
AdBlock убивает бесплатный контент. 1Сергей