| 
    
        
     
     | 
    
    
  | 
Результат "Обработки" - ошибка | ☑ | ||
|---|---|---|---|---|
| 
    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) Если ТС тупо скопирует и типо он всё сделал - тогда никак. Если скопирует, а потом разберет на операторы и методы, по каждому изучит СП, и потом попробует самостоятельно всё собрать обратно, тогда это вполне хороший урок.     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |