Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 17:38

(Запрос в таблице значений)

Автор GanG031, 23 фев 2016, 21:08

0 Пользователей и 1 гость просматривают эту тему.

GanG031

Доброго времени суток! Суть в следующем: Нужно сделать запрос к регистру сведений и таблице значений. Выбираю поля: Сотрудник, период, табельный номер, составная часть, индексируется, сумма (из регистра и таблицы значений). Сравниваю строки по этим выбранным полям, кроме поля сумма. Если найдена соответствующая строка в регистре сведений, то сравниваю и сумму, и если она различна, то меняю ее.
Сделал пока вот такой код:

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


Но ругается :
{Форма.Форма.Форма(93)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(21, 2)}: Неверные параметры "ВременнаяТаблица"
<<?>>&ВременнаяТаблица КАК ТаблицаЗначений1


Подскажите, в чем ошибка? И подскажите пожалуйста дальнейший алгоритм действий, вот я выполню запрос, а что с ним дальше делать? Заранее спасибо!

Дмитрий@

ЦитироватьЕсли найдена соответствующая строка в регистре сведений, то сравниваю и сумму, и если она различна, то меняю ее.
непонятно где надо менять
Добавлено: 23 фев 2016, 21:45


ЦитироватьНо ругается :
{Форма.Форма.Форма(93)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(21, 2)}: Неверные параметры "ВременнаяТаблица"
<<?>>&ВременнаяТаблица КАК ТаблицаЗначений1
Что такое "Таблица1"
Добавлено: 23 фев 2016, 21:54


ЦитироватьПодскажите, в чем ошибка? И подскажите пожалуйста дальнейший алгоритм действий, вот я выполню запрос, а что с ним дальше делать? Заранее спасибо!
Сделать внутреннее соединение регистра сведений и таблицы, по указанным выше полям и по сумме не равно в регистре и таблице. Находите нужные записи в регистре или в таблице и записываете их.

GanG031

Цитата: Дмитрий@ от 23 фев 2016, 21:44
ЦитироватьЕсли найдена соответствующая строка в регистре сведений, то сравниваю и сумму, и если она различна, то меняю ее.
непонятно где надо менять
Добавлено: 23 фев 2016, 21:45


ЦитироватьНо ругается :
{Форма.Форма.Форма(93)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(21, 2)}: Неверные параметры "ВременнаяТаблица"
<<?>>&ВременнаяТаблица КАК ТаблицаЗначений1
Что такое "Таблица1"
Добавлено: 23 фев 2016, 21:54


ЦитироватьПодскажите, в чем ошибка? И подскажите пожалуйста дальнейший алгоритм действий, вот я выполню запрос, а что с ним дальше делать? Заранее спасибо!
Сделать внутреннее соединение регистра сведений и таблицы, по указанным выше полям и по сумме не равно в регистре и таблице. Находите нужные записи в регистре или в таблице и записываете их.

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

|ТаблицаЗначений1.СоставнаяЧасть  =  РегистрыНакопления.СоставнаяЧасть

| НЕ ТаблицаЗначений1.Сумма  =  РегистрыНакопления.Сумма"

Запрос.УстановитьПараметр("ВременнаяТаблица", ТаблицаЗначений);
РезультатЗапроса = Запрос.Выполнить();

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


Вот что начал делать, но что то видимо нет так...

vitasw

Цитата: GanG031 от 23 фев 2016, 23:13Вот что начал делать, но что то видимо нет так...

Очень содержательное замечание.
Ваш первый вариант запросе был правильный. Остается вопрос
Цитата: Дмитрий@ от 23 фев 2016, 21:44Что такое "Таблица1"


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск