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

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 72 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 1473 27.06.23 18:10 Сейчас в теме
Обфускатор не удаляет в запросе ворох //// поэтому 1С считает это комментарием и вываливает в ошибку.
Допилить его нужно или убрать слеши.
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день

Специалист техподдержки
Санкт-Петербург
зарплата от 100 руб. до 150 руб.
Полный день