Имя: Пароль:
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
:)
да нет, просто по тихому не выполнял для набора записей метод Записать, как будто этой строчки нет вообще.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан