|
Результат "Обработки" - ошибка | ☑ | ||
---|---|---|---|---|
0
Sympak
14.10.21
✎
12:37
|
Добрый день.
1С:Предприятие 8.2 Создана обработка для формирования по трем реквизитам результат поиска в справочнике "Контрагенты". Установлен переключатель с пунктами "Есть", "Нет", "Весь список" (при выборе переключателя и нажатии кнопки "Сформировать", должен смотря на переключатель сформироваться результат. В первый переключатель где Есть номера, Второй переключатель где нет номеров и третий где они смешаны. Сейчас при выборе первого и второго переключателя выдается результат одинаковый. Третий переключатель выдает ошибку: Обработка.ПоискНомер.Форма.ФормаПоиск(7)}: Преобразование значения к типу Булево не может быть выполнено Если НЕ ЭлементыФормы.Отбор.Значение Тогда // НЕ ЭлементыФормы.Отбор.Значение ВыбиратьТип Процедура ОсновныеДействияФормыДействие(Выбрать) Если НЕ ЭлементыФормы.Отбор.ЗначениеТогда Правда1 = ""; Правда2 = ""; Правда3 = ""; Иначе Правда1 = "ВЫБРАТЬ | И Контрагенты.Номер = &Номер | И Контрагенты.Номер = &Адрес | И Контрагенты.ФИО= &ФИО |ИЗ | Справочник.Контрагенты КАК Контрагенты | УПОРЯДОЧИТЬ ПО |Номер"; Правда2 = "ВЫБРАТЬ | И Контрагенты.Номер= &Номер | И Контрагенты.Адрес = &Адрес | И Контрагенты.ФИО= &ФИО" Правда3 = "ВЫБРАТЬ | И Контрагенты.Номер= &Номер | И Контрагенты.Адрес = &Адрес | И Контрагенты.ФИО= &ФИО"; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Контрагенты.Номер, | Контрагенты.Адрес, | Контрагенты.ФИО |ИЗ | Справочник.Контрагенты КАК Контрагенты |УПОРЯДОЧИТЬ ПО |Номер"; Выгрузка = Запрос.Выполнить().Выгрузить(); РезультатПоиска.Загрузить(Выгрузка); КонецПроцедуры Процедура ПриОткрытии() ЭлементыФормы.Отбор.СписокВыбора.Добавить(Истина, "Есть"); ЭлементыФормы.Отбор.СписокВыбора.Добавить(Ложь, "Нет"); ЭлементыФормы.Отбор.СписокВыбора.Добавить(Неопределено, "Не имеет значения"); КонецПроцедуры |
|||
1
acht
14.10.21
✎
12:49
|
Хвастаешся?
|
|||
2
Малыш Джон
14.10.21
✎
13:02
|
(0) Ошибка "Преобразование значения к типу Булево не может быть выполнено" означает, что то выражение, к которому она относится, используется как булево, но на самом деле оно не булево, а надо чтоб там было булево.
|
|||
3
Sympak
14.10.21
✎
13:18
|
Малыш Джон
Убрал третье значение. Формирование все равно идет общим списком не разделяясь на с номером и без номера. Нужно прописать: Процедура ПриОткрытии() ЭлементыФормы.Отбор.СписокВыбора.Добавить(Истина, "Есть"); ЭлементыФормы.Отбор.СписокВыбора.Добавить(Ложь, "Нет"); ЭлементыФормы.Отбор.СписокВыбора.Добавить(Неопределено, "Не имеет значения"); КонецПроцедуры К Процедура ОсновныеДействияФормыДействие(Выбрать) Но у меня не хватает опыта и знаний, чтобы это сделать. |
|||
4
youalex
14.10.21
✎
13:22
|
>ЭлементыФормы.Отбор.Значение
Не надо так писать, обращайся к реквизиту формы(объекта), тому что у тебя в ПутьДанных элемента прописано. |
|||
5
Малыш Джон
14.10.21
✎
13:25
|
(3) я надеюсь, это всё задание к какой-нибудь курсовой или зачету?
|
|||
6
Sympak
14.10.21
✎
13:27
|
Малыш Джон
Задание на курсах по обучению программированию |
|||
7
Sympak
14.10.21
✎
13:28
|
youalex
А подробней можно |
|||
8
youalex
14.10.21
✎
13:42
|
(7) что у тебя стоит в свойстве "Данные" у ЭлементыФормы.Отбор?
|
|||
9
Малыш Джон
14.10.21
✎
13:42
|
(7) Судя по всему, Отбор - это реквизит формы.
Если Отбор = Истина Тогда //вариант 1 ИначеЕсли Отбор = Ложь Тогда //вариант2 Иначе //вариант 3 КонецЕсли; |
|||
10
Малыш Джон
14.10.21
✎
13:43
|
Хотя конечно лучше переименовать его, потому что "Отбор" много где встречается.
|
|||
11
Sympak
14.10.21
✎
13:48
|
youalex
Данные: Реквизит: Отбор переименовал теперь отбор ОтборПо; ТабличыеЧасти: РезультатПоиска - Номер, Адрес, ФИО |
|||
12
youalex
14.10.21
✎
13:53
|
(11) Тип у него посмотри какой, на закладке Реквизиты
|
|||
13
Sympak
14.10.21
✎
13:56
|
youalex
Произволильный |
|||
14
Kassern
14.10.21
✎
14:02
|
(0) какая каша в коде...
Сначала по условию какие то правды заполняются, которые нигде потом не используются. У тебя просто по кнопке заполняется РезультатПоиска по последнему запросу. Где у тебя отборы, поиск в этой таблице в коде? |
|||
15
Kassern
14.10.21
✎
14:04
|
(14) как я вижу этот топик:
Привет, написал программу для полнотекстового поиска в данной таблице, но почему то не работает. Вот код: &НаКлиенте Процедура Найти(Команда) Сообщить("Hello world!"); КонецПроцедуры |
|||
16
Sympak
14.10.21
✎
14:05
|
Kassern
Где у тебя отборы, поиск в этой таблице в коде? Можно подробней, пожалуйста |
|||
17
Kassern
14.10.21
✎
14:09
|
(16) вы пишите в топике "Создана обработка для формирования по трем реквизитам результат поиска в справочнике "Контрагенты". " так же пишите, что содали какой то переключатель.
А по факту у вас в коде процедура с запросом, где вы заполняете ТЗ "РезультатПоиска " и заполняете при открытии Список выбора для реквизита "Отбор". Где у вас сам отбор в коде происходит? |
|||
18
youalex
14.10.21
✎
14:19
|
(6) вообще что это за курсы на обычных формах? Старые какие-то?
|
|||
19
Sympak
14.10.21
✎
14:20
|
Kassern
Если вы поняли, в чем заключается моя ошибка, можете помочь ее решить? |
|||
20
Kassern
14.10.21
✎
14:30
|
(19) Если вам надо заново заполнить текущую таблицу в соответствии с отборами, то измените ваш запрос и укажите в нем необходимые отборы. Если же вам надо отобрать строки в текущем списке, тогда, что то в такое для списка РезультатПоиска с отбором по полю "Номер".
РезультатПоиска.Отбор.Номер.Использование = Истина; РезультатПоиска.Отбор.Номер.Значение = НужныйНомер; П.С. давно с обычными формами не работал, может там как то иначе это делается, используйте динамические списки, там все просто и удобно. |
|||
21
Sympak
14.10.21
✎
14:37
|
youalex
Отдал товарищ видео курсы по которым начинал заниматься. Там видео и текстовые задания к ним |
|||
22
Sympak
14.10.21
✎
14:50
|
Kassern
Выгрузка = Запрос.Выполнить().Выгрузить(); РезультатПоиска.Отбор.Номер.Использование = Истина; Не работет |
|||
23
acht
14.10.21
✎
15:19
|
Что по этому поводу говорится непосредсвенно в курсах?
|
|||
24
серый КТУЛХУ
14.10.21
✎
16:48
|
какого типа реквизит "Номер" справочника "Контрагенты"?
|
|||
25
серый КТУЛХУ
14.10.21
✎
17:32
|
// ну, допустим, Номер это число (и по Отбор = Истина / Ложь / Неопределено):
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ Контрагенты.Номер, Контрагенты.Адрес, Контрагенты.ФИО |ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ НЕ Контрагенты.ЭтоГруппа УПОРЯДОЧИТЬ ПО Номер"; Если Отбор = Истина Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "ГДЕ НЕ Контрагенты.ЭтоГруппа", "ГДЕ НЕ Контрагенты.ЭтоГруппа И Контрагенты.Номер <> 0"); ИначеЕсли Отбор = Ложь Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "ГДЕ НЕ Контрагенты.ЭтоГруппа", "ГДЕ НЕ Контрагенты.ЭтоГруппа И Контрагенты.Номер = 0") КонецЕсли; РезультатПоиска.Загрузить(Запрос.Выполнить().Выгрузить()); |
|||
26
Kassern
14.10.21
✎
17:36
|
(25) как это поможет ТС хоть чему то научиться?
|
|||
27
Малыш Джон
15.10.21
✎
08:55
|
(26) Если ТС тупо скопирует и типо он всё сделал - тогда никак. Если скопирует, а потом разберет на операторы и методы, по каждому изучит СП, и потом попробует самостоятельно всё собрать обратно, тогда это вполне хороший урок.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |