Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в 1С программирование. Есть табличный часть обработку (внешняя). Пользователь заполняет этот часть с помощью эксель файла. После заполнение программ должен сделать это - Программ выбирает все данные из ТЧ и справочник пользователи потом делает сравнение и показывает те пользователи который нет в справочнике. Для первого шага написал такии запросы чтобы выбрать данные только из ТЧ. В ТЧ для всех колонок есть тип (Строка, 60).
Запрос 1 --
Запрос 2 --
Но программ выдают ошибку -
{Форма.Форма.Форма(32)}: Ошибка при вызове метода контекста (Выполнить)
Выборка = Запрос.Выполнить().Выгрузить();
по причине:
{(8, 2)}: Неверные параметры "ДанныеРаботника"
<<?>>&ДанныеРаботника КАК ДанныеРаботника для каждого из этих запросов. Как исправить с этим и записать полный запрос чтобы сравнил с справочникам?
Спасибо всем за ранее.
Запрос 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)}: Неверные параметры "ДанныеРаботника"
<<?>>&ДанныеРаботника КАК ДанныеРаботника для каждого из этих запросов. Как исправить с этим и записать полный запрос чтобы сравнил с справочникам?
Спасибо всем за ранее.
По теме из базы знаний
- Описание механизмов программных реализаций на платформе 1С:Предприятие 8.1 : «Использование временных таблиц в запросах»
- Обработка для конвертации текста запроса, построенного на вложенных запросах, в запрос на временных таблицах для 8.2
- Замер времени выполнения временных таблиц больших запросов
- Запросы. Временные Таблицы. Сравнение методов создания ВТ
- Эти занимательные временные таблицы
Найденные решения
(10)
Если одновременно Account = РасчетныйСчет.НомерСчета и Account = РасчетныйСчет1.НомерСчета то да.
Возможно нужно использовать ИЛИ
| ПО ВТРаботники.Account = РаботникиАз.РасчетныйСчет.НомерСчета
| И ВТРаботники.Account = РаботникиАз.РасчетныйСчет1.НомерСчета
Если одновременно Account = РасчетныйСчет.НомерСчета и Account = РасчетныйСчет1.НомерСчета то да.
Возможно нужно использовать ИЛИ
(11)
Финалный будет так ?
Финалный будет так ?
"ВЫБРАТЬ
| ВТРаботники.FIN,
| ВТРаботники.Badge,
| ВТРаботники.Employee,
| ВТРаботники.Account
|ИЗ
| ВТРаботники КАК ВТРаботники
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РаботникиАз КАК РаботникиАз
| ПО ВТРаботники.Account = РаботникиАз.РасчетныйСчет.НомерСчета
| ИЛИ ВТРаботники.Account = РаботникиАз.РасчетныйСчет1.НомерСчета
|ГДЕ
| (РаботникиАз.РасчетныйСчет ЕСТЬ NULL
| И РаботникиАз.РасчетныйСчет1 ЕСТЬ NULL )"
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Возможно в переменной Объект.ДанныеРаботника содержится не таблица значений, а таблица формы. Если это так, то Объект.ДанныеРаботника нельзя использовать как параметр запроса. Попробуйте Объект.ДанныеРаботника.Выгрузить().
(8)Сначала соединяете ЛЕВЫМ соединением таблицу ВТРаботники с таблицей справочника по ключевому полю. В таблице ВТРаботники это ключевое поле должно иметь такой же тип и размерность как и поле справочника. И по условию фильтруете записи, где в результате соединения появился NULL. Примерно вот так
Это и будут все элементы которых нет в справочнике.
| ГДЕ
| Справочник.Ссылка ЕСТЬ NULL
Это и будут все элементы которых нет в справочнике.
(9)
Так ?
Так ?
"ВЫБРАТЬ
| ВТРаботники.FIN,
| ВТРаботники.Badge,
| ВТРаботники.Employee,
| ВТРаботники.Account
|ИЗ
| ВТРаботники КАК ВТРаботники
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РаботникиАз КАК РаботникиАз
| ПО ВТРаботники.Account = РаботникиАз.РасчетныйСчет.НомерСчета
| И ВТРаботники.Account = РаботникиАз.РасчетныйСчет1.НомерСчета
|ГДЕ
| (РаботникиАз.РасчетныйСчет ЕСТЬ NULL
| И РаботникиАз.РасчетныйСчет1 ЕСТЬ NULL )
Показать
(10)
Если одновременно Account = РасчетныйСчет.НомерСчета и Account = РасчетныйСчет1.НомерСчета то да.
Возможно нужно использовать ИЛИ
| ПО ВТРаботники.Account = РаботникиАз.РасчетныйСчет.НомерСчета
| И ВТРаботники.Account = РаботникиАз.РасчетныйСчет1.НомерСчета
Если одновременно Account = РасчетныйСчет.НомерСчета и Account = РасчетныйСчет1.НомерСчета то да.
Возможно нужно использовать ИЛИ
(11)
Финалный будет так ?
Финалный будет так ?
"ВЫБРАТЬ
| ВТРаботники.FIN,
| ВТРаботники.Badge,
| ВТРаботники.Employee,
| ВТРаботники.Account
|ИЗ
| ВТРаботники КАК ВТРаботники
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РаботникиАз КАК РаботникиАз
| ПО ВТРаботники.Account = РаботникиАз.РасчетныйСчет.НомерСчета
| ИЛИ ВТРаботники.Account = РаботникиАз.РасчетныйСчет1.НомерСчета
|ГДЕ
| (РаботникиАз.РасчетныйСчет ЕСТЬ NULL
| И РаботникиАз.РасчетныйСчет1 ЕСТЬ NULL )"
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот