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

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

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