Ошибка "Не установлен менеджер временных таблиц" при проведении документа

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

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

Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
3. DenisCh 05.05.21 14:49 Сейчас в теме
Запрос = Новый Запрос;
МенеджерВТ = Новый МенеджерВременныхТаблиц;
//Укажем, какой менеджер временных таблиц использует этот запрос
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос = Новый Запрос;

Установил. А потом запрос заново создаёшь...
igor-pn; dmbarchenkov; +2 Ответить
2. dhurricane 05.05.21 14:46 Сейчас в теме
(1)
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
Ниже этой строчки Вы вновь создаете "Запрос", без указания менеджера временных таблиц.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dhurricane 05.05.21 14:46 Сейчас в теме
(1)
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
Ниже этой строчки Вы вновь создаете "Запрос", без указания менеджера временных таблиц.
3. DenisCh 05.05.21 14:49 Сейчас в теме
Запрос = Новый Запрос;
МенеджерВТ = Новый МенеджерВременныхТаблиц;
//Укажем, какой менеджер временных таблиц использует этот запрос
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос = Новый Запрос;

Установил. А потом запрос заново создаёшь...
igor-pn; dmbarchenkov; +2 Ответить
4. igor-pn 73 11.05.21 01:03 Сейчас в теме
Спасибо, друг! Глаз от ночного кодинга замылился :)
5. user1728493 15.01.22 20:55 Сейчас в теме
Как в итоге должен выглядеть код , у меня все равно выдает ошибку , может не туда вставляю ?
6. user1728493 15.01.22 21:04 Сейчас в теме
Процедура ОбработкаПроведения(Отказ, Режим)

Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.СтоимостьМатериалов.Записывать = Истина;
Движения.Продажи.Записывать = Истина;

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

Запрос.УстановитьПараметр("Ссылка", Ссылка);

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

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

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

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Количество=0 Тогда
СтоимостьМатериала =0;
Иначе
СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость/ВыборкаДетальныеЗаписи.Количество;
КонецЕсли;

Если ВыборкаДетальныеЗаписи.ВидНоменклатуры=Перечисления.ВидыНоменклатуры.Материал Тогда

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


// регистр СтоимостьМатериалов Расход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе*СтоимостьМатериала;


КонецЕсли;
//Регистр Продажи
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Клиент = Клиент;
Движение.Мастер = Мастер;
Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе;
Движение.Стоимость = СтоимостьМатериала*ВыборкаДетальныеЗаписи.КоличествоВДокументе;

КонецЦикла;

КонецПроцедуры
7. user1419195 02.02.22 03:07 Сейчас в теме
Может кому-нибудь ещё будет актуально.
Следующий кусок кода

    Движения.Продажи.Записывать=Истина;
    //Создать менеджер временных таблиц
    Запрос = Новый Запрос;
    МенеджерВТ = Новый МенеджерВременныхТаблиц;
    //Укажем, какой менеджер временных таблиц использует этот запрос
    Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
    
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст =

Показать


надо переписать так

    Движения.Продажи.Записывать=Истина;
    //Создать менеджер временных таблиц
    МенеджерВТ = Новый МенеджерВременныхТаблиц;
    
    Запрос = Новый Запрос;
    //Укажем, какой менеджер временных таблиц использует этот запрос
    Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
    Запрос.Текст =

Показать


Остальной код без изменений.
8. user1559729 28.04.22 15:40 Сейчас в теме
Кто зашел сюда искать решения проблемы - возможно, у вас в последнем пакете запроса имеется помещение во временную таблицу (ПОМЕСТИТЬ) и оно вам не нужно...
kabantus; Aleksandr; gamletspb; IvanPoh; Anna97; bs51; user1718110; Artem.Po; Ktulhus; user960349; Hayashi; sharewar; user1714789; user1746173; Convert; user797130; d4rkmesa; shmass; Aphanas; +19 Ответить 2
9. user1895553 17.01.23 06:33 Сейчас в теме
(8) Огромное мерси за дополнение! Как раз то, что мне нужно было))))
10. user1933577 07.04.23 10:42 Сейчас в теме
(8) user1559729 Спасибо большое. И аот теперь я понял, что оно действительно не нужно(ПОМЕСТИТЬ) ))
11. Xershi 1534 27.06.23 18:10 Сейчас в теме
Обфускатор не удаляет в запросе ворох //// поэтому 1С считает это комментарием и вываливает в ошибку.
Допилить его нужно или убрать слеши.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот