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

Помогите, в 1 с предприятие ошибка в модуле объекта

Автор ek229387@mail.ru, Вчера в 20:02

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

ek229387@mail.ru

Выдает ошибку:
{Документ.ОказаниеУслуги.МодульОбъекта(138,1): Ожидается ключевое слово 'КонецЕсли' ('EndIf')
Сам код вот:👇👇👇Буду очень рада, если найдете ошибку🥺

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

Теги:

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

Рейтинг@Mail.ru

Поиск