Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 мая 2024, 21:10

Ошибка Переменная не определена в Общем модуле ПроведениеРасчетов

Автор Lite2008, 28 янв 2022, 18:35

0 Пользователей и 1 гость просматривают эту тему.

Lite2008

Добрый день всем! Я ученик-новичок в 1с, потому заранее извиняюсь при наличии элементарных ошибок.

Сделал Общий модуль ПроведениеРасчетов. В свойствах поставил галочку "Глобальный". Выбивает ошибку:


{CommonModule.ПроведениеРасчетов.Module(9,3)}: Переменная не определена (Запрос)        <
>Запрос.Текст = {CommonModule.ПроведениеРасчетов.Module(19,3)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр("Регистратор", Регистратор);{CommonModule.ПроведениеРасчетов.Module(20,3)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр("ВидРасчета", ТребуемыйВидРасчета);{CommonModule.ПроведениеРасчетов.Module(21,9)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников);{CommonModule.ПроведениеРасчетов.Module(23,23)}: Переменная не определена (Запрос)        ВыборкаРезультата = <
>Запрос.Выполнить().Выбрать();{CommonModule.ПроведениеРасчетов.Module(50,4)}: Переменная не определена (Запрос)         <
>Запрос.Текст ={CommonModule.ПроведениеРасчетов.Module(62,3)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр("ИзмеренияОсновного", Измер);{CommonModule.ПроведениеРасчетов.Module(63,3)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр("ИзмеренияБазового", Измер);{CommonModule.ПроведениеРасчетов.Module(64,3)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр("Регистратор", Регистратор);{CommonModule.ПроведениеРасчетов.Module(65,3)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр("ВидРасчета", ТребуемыйВидРасчета);{CommonModule.ПроведениеРасчетов.Module(66,9)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников);{CommonModule.ПроведениеРасчетов.Module(68,26)}: Переменная не определена (Запрос)        ВыборкаРезультата = <
>Запрос.Выполнить().Выбрать();

Вот сам текст модуля:

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

                      Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл
                          СтруктураНомер = Новый Структура("НомерСтроки");
                          СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;
                          ВыборкаРезультата.Сбросить();
                          Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда
                              Если ВыборкаРезультата.Норма = 0 Тогда
                                  Сообщение = Новый СообщениеПользователю;
                                  Сообщение.Текст = "Вид расчета: Оклад - Нет рабочих дней в заданном периоде";
                                  Сообщение.Сообщить();
                                  ЗаписьРегистра.Результат = 0;
                              Иначе
                                  // Рассчитать оклад по фактическому периоду
                                  // и исходным данным.
                                  ЗаписьРегистра.Результат = (ЗаписьРегистра.ИсходныеДанные/ВыборкаРезультата.Норма) * ВыборкаРезультата.Факт;
                                  Сообщение = Новый СообщениеПользователю;
                                  Сообщение.Текст = "Выполнен расчет" + ЗаписьРегистра.Регистратор + " - " + ЗаписьРегистра.ВидРасчета + " - " + ЗаписьРегистра.Сотрудник;
                                  Сообщение.Сообщить();
                              КонецЕсли;
                          КонецЕсли;
                      КонецЦикла;
                     
   // Рассчитать вторичные записи.
   ИначеЕсли ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Премия Тогда
   
        Запрс = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
       |    НачисленияБазаНачисления.РезультатБаза КАК База,
       |    НачисленияБазаНачисления.НомерСтроки КАК НомерСтроки
       |ИЗ
       |    РегистрРасчета.Начисления.БазаНачисления(&ИзмеренияОсновного,
       |   &ИзмеренияБазового, , Регистратор = &Регистратор И ВидРасчета = &ВидРасчета И
       |   Сотрудник В (&СписокСотрудников))КАК НачисленияБазаНачисления";
       
       Измер = Новый Массив(1);
       Измер[0] = "Сотрудник";
       
       Запрос.УстановитьПараметр("ИзмеренияОсновного", Измер);
       Запрос.УстановитьПараметр("ИзмеренияБазового", Измер);
       Запрос.УстановитьПараметр("Регистратор", Регистратор);
       Запрос.УстановитьПараметр("ВидРасчета", ТребуемыйВидРасчета);
       Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников);
   
       ВыборкаРезультата = Запрос.Выполнить().Выбрать();   
       
       Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл
                          СтруктураНомер = Новый Структура("НомерСтроки");
                          СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;
                          ВыборкаРезультата.Сбросить();
                          Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда
                               ЗаписьРегистра.Результат = ВыборкаРезультата.База * (10/100);                         
                               Сообщение = Новый СообщениеПользователю;
                               Сообщение.Текст = "Выполнен расчет" + ЗаписьРегистра.Регистратор + " - " + ЗаписьРегистра.ВидРасчета + " - " + ЗаписьРегистра.Сотрудник;
                               Сообщение.Сообщить();
                          КонецЕсли;
       КонецЦикла;
                     
   КонецЕсли;
   
КонецПроцедуры

Я пробовал снять галочку "Глобальный", тогда при попытках действий с  документами Начисления сотрудникам выбивает ошибку:

{Документ.НачисленияСотрудникам.МодульОбъекта(38,2)}: Переменная не определена (Запрос)
   <
>Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка);
{Документ.НачисленияСотрудникам.МодульОбъекта(41,13)}: Переменная не определена (Запрос)
   ТаблЗнач = <
>Запрос.Выполнить().Выгрузить();
{Документ.НачисленияСотрудникам.МодульОбъекта(45,2)}: Переменная не определена (ПроведенияРасчетов)
   <
>ПроведенияРасчетов.РассчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Оклад, МассивСотрудников);
{Документ.НачисленияСотрудникам.МодульОбъекта(47,2)}: Переменная не определена (ПроведенияРасчетов)
   <
>ПроведенияРасчетов.РассчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Премия, МассивСотрудников);

Вот модуль Документа НачисленияСотрудникам:

Процедура ОбработкаПроведения(Отказ, Режим)
   //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   // регистр Начисления
   Движения.Начисления.Записывать = Истина;
   Для Каждого ТекСтрокаНачисления Из Начисления Цикл
       Движение = Движения.Начисления.Добавить();
       Движение.Сторно = Ложь;
       Движение.ВидРасчета = ТекСтрокаНачисления.ВидРасчета;
       Движение.ПериодДействияНачало = ТекСтрокаНачисления.ДатаНачала;
       Движение.ПериодДействияКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания);
       Движение.ПериодРегистрации = Дата;
       Движение.БазовыйПериодНачало = ТекСтрокаНачисления.ДатаНачала;
       Движение.БазовыйПериодКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания);
       Движение.Сотрудник = ТекСтрокаНачисления.Сотрудник;
       Движение.ГрафикРаботы = ТекСтрокаНачисления.ГрафикРаботы;
       Движение.ИсходныеДанные = ТекСтрокаНачисления.Начислено;
   КонецЦикла;
   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
   
   // Записываем движения регистров.
   Движения.Начисления.Записать();
   
   // Получим список всех сотрудников, содержащихся в документе.
   Запрс = Новый Запрос(
   "ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    НачисленияСотрудникамНачисления.Сотрудник
   |ИЗ
   |    Документ.НачисленияСотрудникам.Начисления
   | КАК НачисленияСотрудникамНачисления
   |
   |ГДЕ
   |    НачисленияСотрудникамНачисления.Ссылка = &ТекущийДокумент");
   
   Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка);
   
   // Сформируем список сотрудников.
   ТаблЗнач = Запрос.Выполнить().Выгрузить();
   МассивСотрудников = ТаблЗнач.ВыгрузитьКолонку("Сотрудник");
   
   // Вызов процедуры РассчитатьНачисления из общего модуля.
   ПроведенияРасчетов.РассчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Оклад, МассивСотрудников);
   Движения.Начисления.Записать( , Истина);
   ПроведенияРасчетов.РассчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Премия, МассивСотрудников);
   Движения.Начисления.Записать( , Истина);
   
КонецПроцедуры

Помогите пожалуйста решить ошибку.


Lite2008

Исправил опечатку слове Запрос в модуле НачисленияСотрудникам с

// Получим список всех сотрудников, содержащихся в документе.
Запрс = Новый Запрос(

на

// Получим список всех сотрудников, содержащихся в документе.
Запрос = Новый Запрос(

Также исправил в модуле Документа НачисленияСотрудникам ошибки в названиях общего модуля ПроведениеРасчетов:

с



// Вызов процедуры РассчитатьНачисления из общего модуля.

ПроведенияРасчетов.РассчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Оклад, МассивСотрудников);
Движения.Начисления.Записать( , Истина);
ПроведенияРасчетов.РассчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Премия, МассивСотрудников);
Движения.Начисления.Записать( , Истина);

на

// Вызов процедуры РассчитатьНачисления из общего модуля.

ПроведениеРасчетов.РассчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Оклад, МассивСотрудников);
Движения.Начисления.Записать( , Истина);
ПроведениеРасчетов.РассчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Премия, МассивСотрудников);
Движения.Начисления.Записать( , Истина);


Но все равно, при любых раскладах, выбивает ошибку:

{ОбщийМодуль.ПроведениеРасчетов.Модуль(9,3)}: Переменная не определена (Запрос)
<<?>>Запрос.Текст =
{ОбщийМодуль.ПроведениеРасчетов.Модуль(19,3)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("Регистратор", Регистратор);
{ОбщийМодуль.ПроведениеРасчетов.Модуль(20,3)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("ВидРасчета", ТребуемыйВидРасчета);
{ОбщийМодуль.ПроведениеРасчетов.Модуль(21,9)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников);
{ОбщийМодуль.ПроведениеРасчетов.Модуль(23,23)}: Переменная не определена (Запрос)
ВыборкаРезультата = <<?>>Запрос.Выполнить().Выбрать();
{ОбщийМодуль.ПроведениеРасчетов.Модуль(50,4)}: Переменная не определена (Запрос)
<<?>>Запрос.Текст =
{ОбщийМодуль.ПроведениеРасчетов.Модуль(62,3)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("ИзмеренияОсновного", Измер);
{ОбщийМодуль.ПроведениеРасчетов.Модуль(63,3)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("ИзмеренияБазового", Измер);
{ОбщийМодуль.ПроведениеРасчетов.Модуль(64,3)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("Регистратор", Регистратор);
{ОбщийМодуль.ПроведениеРасчетов.Модуль(65,3)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("ВидРасчета", ТребуемыйВидРасчета);
{ОбщийМодуль.ПроведениеРасчетов.Модуль(66,9)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников);
{ОбщийМодуль.ПроведениеРасчетов.Модуль(68,26)}: Переменная не определена (Запрос)
ВыборкаРезультата = <<?>>Запрос.Выполнить().Выбрать();


Lite2008

Ошибку нашел. Дело было в слове Запрос! В самом начале)))

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск