|
Ошибка в запросе нельзя использовать вложенные таблицы, хелп | ☑ | ||
---|---|---|---|---|
0
Da D
28.03.17
✎
07:40
|
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(18)}: Ошибка при вызове метода контекста (Выполнить)
таблица = запрос.Выполнить().Выбрать(); по причине: {(3, 2)}: В запросе с предложениями РАЗЛИЧНЫЕ или ОБЪЕДИНИТЬ нельзя использовать вложенные таблицы <<?>>ПоступлениеНаСчет.РасшифровкаПлатежа.( Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ различные | ПоступлениеНаСчет.Ссылка, | ПоступлениеНаСчет.РасшифровкаПлатежа.( | ПризнакАванса | ) |ИЗ | Документ.ПоступлениеНаСчет КАК ПоступлениеНаСчет |ГДЕ | ПоступлениеНаСчет.Проведен | И ПоступлениеНаСчет.Дата МЕЖДУ &Дата1 И &Дата2 | И ПоступлениеНаСчет.РасшифровкаПлатежа.ПризнакАванса = ИСТИНА"; Запрос.Параметры.Вставить("Дата1", Реквизит1.ДатаНачала); Запрос.Параметры.Вставить("Дата2", КонецДня(Реквизит1.ДатаОкончания)); таблица = запрос.Выполнить().Выбрать(); |
|||
1
Мимохожий Однако
28.03.17
✎
07:42
|
Убери Различные
|
|||
2
Мимохожий Однако
28.03.17
✎
07:42
|
Используй пакетный запрос
|
|||
3
Da D
28.03.17
✎
07:42
|
(2) Просто этот запрос неделей ранее не выдавал ошибки и отрабатывал..
|
|||
4
arishkaKlimova
28.03.17
✎
07:43
|
(0) Возьми в качестве основной таблицы ПоступлениеНаСчетРасшифровкаПлатежа
|
|||
5
bodri
28.03.17
✎
07:44
|
Примерно так:
Запрос.Текст = "ВЫБРАТЬ различные | ПоступлениеНаСчет.Ссылка, | ПоступлениеНаСчет.ПризнакАванса | |ИЗ | Документ.ПоступлениеНаСчет.РасшифровкаПлатежа КАК ПоступлениеНаСчет |ГДЕ | ПоступлениеНаСчет.Проведен | И ПоступлениеНаСчет.Дата МЕЖДУ &Дата1 И &Дата2 | И ПоступлениеНаСчет.ПризнакАванса"; |
|||
6
Мимохожий Однако
28.03.17
✎
07:45
|
(3) ОФФ: Категориями было и стало мыслят пользователи. Тебе надо плясать от того, что есть в данный момент.
|
|||
7
bodri
28.03.17
✎
07:45
|
Поправлю (5)
Запрос.Текст = "ВЫБРАТЬ различные | ПоступлениеНаСчет.Ссылка, | ПоступлениеНаСчет.ПризнакАванса | |ИЗ | Документ.ПоступлениеНаСчет.РасшифровкаПлатежа КАК ПоступлениеНаСчет |ГДЕ | ПоступлениеНаСчет.Ссылка.Проведен | И ПоступлениеНаСчет.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2 | И ПоступлениеНаСчет.ПризнакАванса"; |
|||
8
Da D
28.03.17
✎
08:19
|
А подскажите ещё, мне нужно проверять
Если в поступлении на счет Документов отгрузки(Актов) больше 1, то документ пропускать, а если 1, то выбирать его и проводить |
|||
9
2dolist
28.03.17
✎
08:22
|
(8) в том же запросе? Тогда временную таблицу с привязанными документами, свёрнутыми по КоличествоРазличных - и соединять по ссылке
|
|||
10
Da D
28.03.17
✎
08:24
|
(9) Вообще у меня так:
|
|||
11
Da D
28.03.17
✎
08:25
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ различные | ПоступлениеНаСчет.Ссылка, | ПоступлениеНаСчет.ПризнакАванса | |ИЗ | Документ.ПоступлениеНаСчет.РасшифровкаПлатежа КАК ПоступлениеНаСчет |ГДЕ | ПоступлениеНаСчет.Ссылка.Проведен | И ПоступлениеНаСчет.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2 | И ПоступлениеНаСчет.ПризнакАванса"; Запрос.Параметры.Вставить("Дата1", Реквизит1.ДатаНачала); Запрос.Параметры.Вставить("Дата2", КонецДня(Реквизит1.ДатаОкончания)); таблица = запрос.Выполнить().Выбрать(); Пока таблица.Следующий() цикл запрос2 = Новый Запрос; запрос2.Текст = "ВЫБРАТЬ | АктВыполненныхРабот.Ссылка |ИЗ | Документ.АктВыполненныхРабот КАК АктВыполненныхРабот |ГДЕ | АктВыполненныхРабот.Проведен | И АктВыполненныхРабот.РаботыИУслуги.Сумма = &Сумма | И АктВыполненныхРабот.Контрагент = &Контрагент | И АктВыполненныхРабот.Дата МЕЖДУ &Дата1 И &Дата2"; запрос2.Параметры.Вставить("Сумма",таблица.ссылка.СуммаДокумента); запрос2.Параметры.Вставить("Контрагент",таблица.ссылка.контрагент); Запрос2.Параметры.Вставить("Дата1", Реквизит1.ДатаНачала); Запрос2.Параметры.Вставить("Дата2", КонецДня(Реквизит1.ДатаОкончания)); ТЗАктов=запрос2.выполнить().выгрузить(); НужныйАкт=неопределено; Для каждого СтрТЗАктов из ТЗАктов цикл Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ПоступлениеНаСчетРасшифровкаПлатежа.Ссылка |ИЗ | Документ.ПоступлениеНаСчет.РасшифровкаПлатежа КАК ПоступлениеНаСчетРасшифровкаПлатежа |ГДЕ | ПоступлениеНаСчетРасшифровкаПлатежа.Ссылка.Проведен | И ПоступлениеНаСчетРасшифровкаПлатежа.Документ = &Акт | И ПоступлениеНаСчетРасшифровкаПлатежа.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2"; //|И ПоступлениеНаСчет.Ссылка.ДокументОтгрузки =&Акт"; запрос.установитьпараметр("Акт",СтрТЗАктов.Ссылка); Запрос.Параметры.Вставить("Дата1", Реквизит1.ДатаНачала); Запрос.Параметры.Вставить("Дата2", КонецДня(Реквизит1.ДатаОкончания)); если запрос.выполнить().выгрузить().количество()>0 Тогда продолжить; иначе НужныйАкт=СтрТЗАктов.ссылка; прервать; конецесли КонецЦикла; если НужныйАкт <>неопределено тогда МоёПоступление=таблица.ссылка.получитьобъект(); для каждого СтрТЧ из МоёПоступление.РасшифровкаПлатежа цикл СтрТЧ.Документ=нужныйакт; СтрТЧ.ПризнакАванса = ложь; КонецЦикла; МоёПоступление.записать(режимзаписидокумента.проведение); Сообщить("Исправлен документ "+МоёПоступление.номер); иначе Сообщить("ошибка "); конецесли КонецЦикла; |
|||
12
Da D
28.03.17
✎
08:26
|
Но это я делал чтобы он выбирал из Актов выбирал акт с суммой равной сумме поступления
|
|||
13
Da D
28.03.17
✎
08:28
|
Сейчас выяснилось, что пропускать нужно доки, где больше 1 акта, а где 1 - выбирать его, ставить Аванс НЕТ и записывать так
|
|||
14
Da D
28.03.17
✎
08:36
|
Мне если честно немного непонятно, опыта ни фига нет, может кто подсказать, как поправить запрос, чтобы пропускать доки, где актов больше 1, а где 1 - подставлять его ?
|
|||
15
Мимохожий Однако
28.03.17
✎
08:53
|
(14) Используй консоль запросов, а потом отладчик
|
|||
16
Da D
28.03.17
✎
08:56
|
(15) Я понял это, не совсем понятно что нужно делать для того, чтобы выбирать поступление на счет, там смотреть документ отгрузки, если он один - ставить, записывать, а если больше - пропускать
|
|||
17
bodri
28.03.17
✎
09:33
|
(11) запрос в цикле крайне не правильно.
(15) в (9) написано направление куда копать. |
|||
18
2dolist
28.03.17
✎
11:03
|
(11) не делай так. Надо всё в один запрос написать и желательно вообще отвязаться от документов, а запросы по регистру делать.
|
|||
19
2dolist
28.03.17
✎
11:04
|
Посмотри что такое Конструктор запросов и Временные таблицы.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |