Запрос Временная таблица

1. _7445_ 14.11.19 11:36 Сейчас в теме
Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в 1С программирование. Есть табличный часть обработку (внешняя). Пользователь заполняет этот часть с помощью эксель файла. После заполнение программ должен сделать это - Программ выбирает все данные из ТЧ и справочник пользователи потом делает сравнение и показывает те пользователи который нет в справочнике. Для первого шага написал такии запросы чтобы выбрать данные только из ТЧ. В ТЧ для всех колонок есть тип (Строка, 60).
Запрос 1 --
ВрТаб  = Новый МенеджерВременныхТаблиц;
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = ВрТаб;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ДанныеРаботника.FIN,
	|	ДанныеРаботника.Badge,
	|	ДанныеРаботника.Employee,
	|	ДанныеРаботника.Account
	|ПОМЕСТИТЬ ВТРаботники
	|ИЗ
	|	&ДанныеРаботника КАК ДанныеРаботника
	|;
	|
    |////////////////////////////////////////
	|
	|ВЫБРАТЬ
    |    ВТРаботники1.FIN,
	|    ВТРаботники1.Badge,
	|    ВТРаботники1.Employee,
	|    ВТРаботники1.Account
    |ИЗ
    |    ВТРаботники КАК ВТРаботники1";
	Запрос.УстановитьПараметр("ДанныеРаботника", Объект.ДанныеРаботника);
    Выборка = Запрос.Выполнить().Выгрузить();  
Показать


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

Но программ выдают ошибку -
{Форма.Форма.Форма(32)}: Ошибка при вызове метода контекста (Выполнить)
Выборка = Запрос.Выполнить().Выгрузить();
по причине:
{(8, 2)}: Неверные параметры "ДанныеРаботника"
<<?>>&ДанныеРаботника КАК ДанныеРаботника
для каждого из этих запросов. Как исправить с этим и записать полный запрос чтобы сравнил с справочникам?
Спасибо всем за ранее.
По теме из базы знаний
Найденные решения
11. mifka186 8 14.11.19 12:04 Сейчас в теме
(10)
|        ПО ВТРаботники.Account = РаботникиАз.РасчетныйСчет.НомерСчета
|            И ВТРаботники.Account = РаботникиАз.РасчетныйСчет1.НомерСчета

Если одновременно Account = РасчетныйСчет.НомерСчета и Account = РасчетныйСчет1.НомерСчета то да.
Возможно нужно использовать ИЛИ
12. _7445_ 14.11.19 12:13 Сейчас в теме
(11)
Финалный будет так ?
"ВЫБРАТЬ
	|	ВТРаботники.FIN,
	|	ВТРаботники.Badge,
	|	ВТРаботники.Employee,
	|	ВТРаботники.Account
	|ИЗ
	|	ВТРаботники КАК ВТРаботники
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РаботникиАз КАК РаботникиАз
	|		ПО ВТРаботники.Account = РаботникиАз.РасчетныйСчет.НомерСчета
	|			ИЛИ ВТРаботники.Account = РаботникиАз.РасчетныйСчет1.НомерСчета
	|ГДЕ
	|	(РаботникиАз.РасчетныйСчет ЕСТЬ NULL 
	|			И РаботникиАз.РасчетныйСчет1 ЕСТЬ NULL )"
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. dhurricane 14.11.19 11:43 Сейчас в теме
(1) А что из себя представляет поле "Объект.ДанныеРаботника"? Судя по коду, это должна быть табличная часть.
2. mifka186 8 14.11.19 11:42 Сейчас в теме
Возможно в переменной Объект.ДанныеРаботника содержится не таблица значений, а таблица формы. Если это так, то Объект.ДанныеРаботника нельзя использовать как параметр запроса. Попробуйте Объект.ДанныеРаботника.Выгрузить().
4. _7445_ 14.11.19 11:44 Сейчас в теме
(2)
Спасибо за вниманию. Как это проверят ?
5. mifka186 8 14.11.19 11:45 Сейчас в теме
(4) Посмотреть в отладчике - самое простое. Ну и попробуйте заменить Объект.ДанныеРаботника на Объект.ДанныеРаботника.Выгрузить().
6. _7445_ 14.11.19 11:45 Сейчас в теме
7. mifka186 8 14.11.19 11:47 Сейчас в теме
(6)
Запрос.УстановитьПараметр("ДанныеРаботника", Объект.ДанныеРаботника);

заменить на
   Запрос.УстановитьПараметр("ДанныеРаботника", Объект.ДанныеРаботника.Выгрузить());


и для 1 и для 2 запроса
8. _7445_ 14.11.19 11:49 Сейчас в теме
(7)
Работала
Спасибо вам большой.
А как сравнить с справочникам чтобы показал только те пользователи который нет в справочнике
9. mifka186 8 14.11.19 11:56 Сейчас в теме
(8)Сначала соединяете ЛЕВЫМ соединением таблицу ВТРаботники с таблицей справочника по ключевому полю. В таблице ВТРаботники это ключевое поле должно иметь такой же тип и размерность как и поле справочника. И по условию фильтруете записи, где в результате соединения появился NULL. Примерно вот так
|    ГДЕ
|    Справочник.Ссылка ЕСТЬ NULL

Это и будут все элементы которых нет в справочнике.
10. _7445_ 14.11.19 12:01 Сейчас в теме
(9)
Так ?
"ВЫБРАТЬ
	|	ВТРаботники.FIN,
	|	ВТРаботники.Badge,
	|	ВТРаботники.Employee,
	|	ВТРаботники.Account
	|ИЗ
	|	ВТРаботники КАК ВТРаботники
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РаботникиАз КАК РаботникиАз
	|		ПО ВТРаботники.Account = РаботникиАз.РасчетныйСчет.НомерСчета
	|			И ВТРаботники.Account = РаботникиАз.РасчетныйСчет1.НомерСчета
	|ГДЕ
	|	(РаботникиАз.РасчетныйСчет ЕСТЬ NULL 
	|			И РаботникиАз.РасчетныйСчет1 ЕСТЬ NULL )
Показать
11. mifka186 8 14.11.19 12:04 Сейчас в теме
(10)
|        ПО ВТРаботники.Account = РаботникиАз.РасчетныйСчет.НомерСчета
|            И ВТРаботники.Account = РаботникиАз.РасчетныйСчет1.НомерСчета

Если одновременно Account = РасчетныйСчет.НомерСчета и Account = РасчетныйСчет1.НомерСчета то да.
Возможно нужно использовать ИЛИ
12. _7445_ 14.11.19 12:13 Сейчас в теме
(11)
Финалный будет так ?
"ВЫБРАТЬ
	|	ВТРаботники.FIN,
	|	ВТРаботники.Badge,
	|	ВТРаботники.Employee,
	|	ВТРаботники.Account
	|ИЗ
	|	ВТРаботники КАК ВТРаботники
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РаботникиАз КАК РаботникиАз
	|		ПО ВТРаботники.Account = РаботникиАз.РасчетныйСчет.НомерСчета
	|			ИЛИ ВТРаботники.Account = РаботникиАз.РасчетныйСчет1.НомерСчета
	|ГДЕ
	|	(РаботникиАз.РасчетныйСчет ЕСТЬ NULL 
	|			И РаботникиАз.РасчетныйСчет1 ЕСТЬ NULL )"
Показать
Оставьте свое сообщение

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