|
открытие формы с отбором в УФ | ☑ | ||
---|---|---|---|---|
0
vasbur
29.05.15
✎
10:42
|
не могу побороть следующий баг. И даже не могу найти место вознткновения:
Есть БП 3.0.40.24, платформа 8.3.6.1999 Я в ней програмно открываю форму выбора контрагента, при этом хочу отфильтровать в ней контрагентов по ИНН. Для этого в параметры формы я передаю отбор "ЧистыйИНН = ххх" при открытии формы фильтр не срабатывает, возникает ошибка: Ошибка при выполнении запроса. Ошибка при выполнении запроса. по причине: {(1, 40)}: Неоднозначное поле "ИНН" (СправочникКонтрагенты.ЭтоГруппа ИЛИ ((<<?>>ИНН = &П))) Откуда она лезет - не пойму. Есть у кого-нибудь предположения? |
|||
1
vasbur
29.05.15
✎
10:43
|
ошибка возникла при переходе на 8.3.6, на 8.3.5 не воспроизводится
|
|||
2
Demetres
29.05.15
✎
10:50
|
В фильтр добавь ещё ЭтоГруппа = ЛОЖЬ;
|
|||
3
Demetres
29.05.15
✎
10:51
|
И ПометкаУдаления = ЛОЖЬ;
|
|||
4
vasbur
29.05.15
✎
10:58
|
(2) (3) не помогает
|
|||
5
Demetres
29.05.15
✎
11:01
|
(4) Тогда надо включить отладчик и посмотреть в чем беда
|
|||
6
vasbur
29.05.15
✎
11:03
|
(5) отладчик не перехватывает эту ошибку.
запрос видимо формируется не в коде, а где-то на форме УФ. А где - понять не могу |
|||
7
Fragster
гуру
29.05.15
✎
11:04
|
у динамического списка тип запроса - произвольный?
|
|||
8
Timon1405
29.05.15
✎
11:04
|
(6) ПКМ по основному динамическому списку в форме подбора - там произвольный запрос, наверняка
|
|||
9
vasbur
29.05.15
✎
11:05
|
(7) судя по всему - да. В свойствах списка стоит галка "Произвольный запрос"
|
|||
10
Timon1405
29.05.15
✎
11:09
|
Если включить режим просмотра "без иерархии" в форме подбора, воспроизводится ошибка?
|
|||
11
vasbur
29.05.15
✎
11:11
|
(10) пропадает
|
|||
12
vasbur
29.05.15
✎
11:11
|
(11) сейчас попробую принудительно этот режим выставлять
|
|||
13
Demetres
29.05.15
✎
11:13
|
Так попробуй:
//////////////////////////////////////////////////////////////////////// &НаКлиенте Процедура ПриОткрытии(Отказ) ПараметрыОтбора = Новый Структура(); ПараметрыФормы = Новый Структура(); ПараметрыОтбора.Вставить("Ссылка", ПриОткрытииНаСервере()); ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора); ОткрытьФорму("Справочник.Контрагенты.ФормаВыбора", ПараметрыФормы, ЭлементВладелецКудаНужноПоместитьРезультатВыбораКонтрагента, УникальныйИдентификатор); КонецПроцедуры &НаСервере Функция ПриОткрытииНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Контрагенты.Ссылка |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | Контрагенты.ИНН = &ИНН | И НЕ Контрагенты.ЭтоГруппа | И НЕ Контрагенты.ПометкаУдаления"; Запрос.УстановитьПараметр("ИНН", ИНН); РезультатЗапроса = Запрос.Выполнить(); Если Не РезультатЗапроса.Пустой() Тогда Возврат РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Ссылка"); Иначе Возврат Новый Массив; КонецЕсли; КонецФункции //////////////////////////////////////////////////////////////////////// |
|||
14
Timon1405
29.05.15
✎
11:13
|
Похожая тема на партнерке от 2010 года)
https://partners.v8.1c.ru/forum/message/778703#m_778703 Цитата "Это поле судя по всему используется платформой для построения иерархии." а воз и ныне там) доступно и всерьез © |
|||
15
vasbur
29.05.15
✎
11:14
|
(13) форма - типовая из конфигурации, я ее менять не могу
|
|||
16
Demetres
29.05.15
✎
11:16
|
(15) А где стесняюсь спросить вы это долепливаете ""ЧистыйИНН = ххх" "
|
|||
17
vasbur
29.05.15
✎
11:17
|
(16) у меня есть внешняя обработка, из которой я открываю список контрагентов с отбором по ИНН
|
|||
18
Demetres
29.05.15
✎
11:18
|
(17) ну и что мешает использовать код в (13) проблемы с несчастливым числом?
|
|||
19
vasbur
29.05.15
✎
11:19
|
(18) теперь понял, вы предлагаете выбирать руками список КА и делать отбор по ссылке.
хочется таки нативные инструменты УФ использовать :) |
|||
20
Demetres
29.05.15
✎
11:22
|
Вот это желательно добавить
///////////////////// ПараметрыОтбора.Вставить("Ссылка", ПриОткрытииНаСервере()); ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора); ПараметрыФормы.Вставить("РежимВыбора", Истина); //////////////////// (19) Так в чем проблема? Используйте :) |
|||
21
Fragster
гуру
29.05.15
✎
11:24
|
(9) ну так текст запроса скинь сюда :)
|
|||
22
vasbur
29.05.15
✎
11:26
|
(21)
ВЫБРАТЬ СправочникКонтрагенты.Наименование, СправочникКонтрагенты.Код, СправочникКонтрагенты.НаименованиеПолное, СправочникКонтрагенты.ИНН КАК ЧистыйИНН, СправочникКонтрагенты.КПП КАК ЧистыйКПП, ВЫБОР КОГДА СправочникКонтрагенты.ОбособленноеПодразделение ТОГДА &ПредставлениеОбособленногоПодразделения ИНАЧЕ ПРЕДСТАВЛЕНИЕ(СправочникКонтрагенты.ЮридическоеФизическоеЛицо) КОНЕЦ КАК Вид, СправочникКонтрагенты.ГоловнойКонтрагент, СправочникКонтрагенты.Комментарий, СправочникКонтрагенты.Ссылка, СправочникКонтрагенты.ИНН КАК ИНН, СправочникКонтрагенты.КПП КАК КПП, ВЫБОР КОГДА НаличиеДублейУКонтрагентов.Контрагент ЕСТЬ NULL ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ КАК ЕстьДубли, СправочникКонтрагенты.ИННВведенКорректно, СправочникКонтрагенты.КППВведенКорректно, ВЫБОР КОГДА (СправочникКонтрагенты.ИННВведенКорректно И СправочникКонтрагенты.КППВведенКорректно ИЛИ СправочникКонтрагенты.ИННВведенКорректно И СправочникКонтрагенты.ЮридическоеФизическоеЛицо = ЗНАЧЕНИЕ(Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо)) И СостоянияКонтрагентов.Состояние В (&Состояния) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ПроверкаКонтрагентовКонтрагентНеСуществует, СостоянияКонтрагентов.Состояние КАК ПроверкаКонтрагентовСостояние ИЗ Справочник.Контрагенты КАК СправочникКонтрагенты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеДублейУКонтрагентов КАК НаличиеДублейУКонтрагентов ПО СправочникКонтрагенты.Ссылка = НаличиеДублейУКонтрагентов.Контрагент И СправочникКонтрагенты.ИНН = НаличиеДублейУКонтрагентов.ИНН И СправочникКонтрагенты.КПП = НаличиеДублейУКонтрагентов.КПП ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияКонтрагентов КАК СостоянияКонтрагентов ПО СправочникКонтрагенты.Ссылка = СостоянияКонтрагентов.Контрагент И (&ИспользованиеПроверкиВозможно) |
|||
23
Demetres
29.05.15
✎
11:29
|
(22) А у реквизита "ИНН" что написано в свойстве "Использование"? Небось "Для элемента"?
|
|||
24
vasbur
29.05.15
✎
11:33
|
||||
25
Demetres
29.05.15
✎
11:38
|
Смотрите что получается, свойство ИНН есть только у элементов, у групп там NULL и когда вы ставите отбор на ИНН, программе становится плохо когда она сравниваете ИНН(NULL) = ххх,
Попробуйте ещё использовать использовать в параметрах формы "ВыборГруппИЭлементов" = ЛОЖЬ; может поможет. |
|||
26
vasbur
29.05.15
✎
11:39
|
(25) ага, понятно.
странно, что когда я в интерфейсе выбираю такой отбор, то ничего не ломается |
|||
27
vasbur
29.05.15
✎
11:43
|
(25) в параметрах формы "ВыборГруппИЭлементов" = ЛОЖЬ не выключает просмотр по иерархии.
остановился на методе, описанном в (13) вроде работает. посмотрим, что скажут наши клиенты нашей техподдержке. |
|||
28
Demetres
29.05.15
✎
11:43
|
(26) Это догадка, точно можно сказать только посмотрев отладчиком что там. Могу сказать одно, мой горбатенький из (13) работает.
|
|||
29
vasbur
29.05.15
✎
11:46
|
(26) а как это отлаждчиком смотреть? Это же механизм, который работает в недрах формы
|
|||
30
Demetres
29.05.15
✎
11:48
|
А это где происходит, откуда этот код?
|
|||
31
Demetres
29.05.15
✎
11:48
|
{(1, 40)}: Неоднозначное поле "ИНН"
(СправочникКонтрагенты.ЭтоГруппа ИЛИ ((<<?>>ИНН = &П))) |
|||
32
Demetres
29.05.15
✎
11:50
|
:)) про недра формы зачет
|
|||
33
vasbur
29.05.15
✎
11:50
|
(30) так в том-то и дело - что непонятно.
есть гипотеза, что при накладывании отбора платформа как-то модифицирует запрос, которым получается динамический список контрагентов, и добавляет в него какие-то доп условия |
|||
34
Demetres
29.05.15
✎
11:55
|
(33) Мне кажется что это конкретное место в конфе, куда можно зайти и посмотреть. Полный текст ошибки в студию :)
|
|||
35
Demetres
29.05.15
✎
12:01
|
А если нажать на кнопку конфигуратор обычно из режима предприятия можно перенестись в конфигуратор к месту ошибки, что там у вас, есть такая кнопка?
К тому же можно глобальным поиском пройтись и найти все строки "СправочникКонтрагенты.ЭтоГруппа ИЛИ ((". |
|||
36
blopp
29.05.15
✎
12:04
|
||||
37
vasbur
29.05.15
✎
12:05
|
(35) "кнопки переноса" нету.
|
|||
38
blopp
29.05.15
✎
12:05
|
(35)
СправочникКонтрагенты.ЭтоГруппа ИЛИ... это условие добавленное платформой. |
|||
39
vasbur
29.05.15
✎
12:06
|
(36) спасибо.
Теперь понятно, что костыль - это единственно правильное решение :) |
|||
40
Demetres
29.05.15
✎
12:08
|
(38) А мне кажется что это запрос кто-то неправильно запилил, и все на нем крашится, хотя может и ваша правда. Конфы нет и проверить не получится без неё :( хотя любопытно
|
|||
41
Demetres
29.05.15
✎
12:12
|
(36) можете текст выложить что там написано, у меня нет возможности посмотреть
|
|||
42
blopp
29.05.15
✎
12:22
|
(38) А я вот уверен, чему уж тут казаться:
- если основная таблица иерархическая, в ней могут быть группы и список отображает иерархию - все условия из ГДЕ запроса выковыриваются - и засовываются обратно в запрос в виде (<ЭтоГруппа> ИЛИ <Все что было в ГДЕ>) - когда условие помещается обратно в запрос к именам полей не добавляется имя таблицы (это видно из текста ошибки) |
|||
43
Demetres
29.05.15
✎
12:31
|
(42) можно быть тысячу раз уверенным и все равно ошибиться, доказать можно только имея базу.
|
|||
44
Fragster
гуру
29.05.15
✎
12:41
|
В ПриСозданииНаСервере есть что?
|
|||
45
vasbur
29.05.15
✎
12:47
|
(40) возьмите типовую БП, запрос оттуда
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |