1с ошибка при установке значения атрибута контекста видсравнения

Не хочет работать ВидСравнения ☑ 0

AS_DANCE

04.05.09

17:15

Что то наверно накосячил, помогите найти в чем косяк.

Вот код:

Отбор    = СписокЗаданийДень.Отбор;

Если Отбор.Найти(«ВрНачала») = Неопределено Тогда        

   Отбор.Добавить(«ВрНачала»);

КонецЕсли;

Отбор[«ВрНачала»].Использование = Истина;

   Отбор[«ВрНачала»].ЗначениеС    = НачалоДня(ИспДата);

   Отбор[«ВрНачала»].ЗначениеПО    = КонецДня(ИспДата);

   Отбор[«ВрНачала»].ВидСравнения    = ВидСравнения.ИнтервалВключаяГраницы;

Тип поля ВрНачало — Дата, но когда запускаю вылетает с ошибкой «Ошибка при установке значения атрибута контекста (ВидСравнения): Недопустимый тип сравнения

   Отбор[«ВрНачала»].ВидСравнения    = ВидСравнения. ИнтервалВключаяГраницы;

по причине:

Недопустимый тип сравнения

»

перепробывал все типы, работает только с типом равно. в чем косяк??

1

ТелепатБот

04.05.09

17:15

2

Лефмихалыч

04.05.09

17:17

сначала установи вид сравнения, а потом границы задавай

3

AS_DANCE

04.05.09

17:17

пробывал, вид сравнения устанваливать и до и после, и просто ставить «Больше», никак не катит (

4

Лефмихалыч

04.05.09

17:26

(3) дело в «Если Отбор.Найти(«ВрНачала») = Неопределено Тогда»

клянусь своей треуголкой: одно из двух — либо поля такого нет принципиально в данных СписокЗаданийНаДень, либо оно имеет тип какой-то не кошерный

5

AS_DANCE

04.05.09

17:31

В отладчике открываю отбор, там есть тип поля «Врначала» тип Дата, и по умолчанию тип сравнения стоит «Равно», если ставить такой-же то все работает. Но мне нужен другой тип сравнения. (

6

Alpen906

04.05.09

17:33

Попробуй перед установкой отбора

Отбор[«ВрНачала»].Использование = Ложь;

7

НЕА123

04.05.09

17:33

(0)

СписокЗаданийДень — это кто?

8

Mitriy

04.05.09

17:34

эта чего Отбор?

9

НЕА123

04.05.09

17:34

(0)

потом лезь в СП и внимательно читай про отбор этого типа.

10

AS_DANCE

04.05.09

17:34

Это регистр сведений, а ВрНачала — это его измерение

11

Gisborn

04.05.09

17:35

Если это набор записей:

Отбор (Filter)

Использование:

Только чтение.

Описание:

Тип: Отбор. Содержит объект Отбор, по которому осуществляется текущая фильтрация записей при считывании или записи набора. Список свойств объекта зависит от свойств регистра: для регистров сведений, для которых в конфигураторе установлен режим записи «Подчинение регистратору», отбор возможен только по регистратору, для периодических регистров сведений отбор возможен по периоду и значениям измерений, для непериодических — только по значению измерений.

Важно! Отбор может устанавливаться только на равенство.

12

AS_DANCE

04.05.09

17:38

Регистр у меня непериодический, и способ записи независимый,вот толькоинтересно почему отбор нельзя по другому выставить

(11)Спасибо

Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан

Ermak
02.09.2015 15:49 Прочитано: 4892

Добрый день! Подскажите как сделать отбор по табличному полю. Например в ТП есть колонка ФИО, в поле отбора я набираю фамилию Петров нажимаю поиск или ENTER и мне в ТП выдаются строки где указана фамилия Петров

Yandex
Возможно, вас также заинтересует

Реклама на портале

IBReiter
02.09.2015 17:53 Ответ № 1

Можно так:

Код 1C v 8.3

 

ПолеКомпоновкиОтбора = Новый ПолеКомпоновкиДанных(Имяколонки)

ЭлементОтбора                = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение  = ПолеКомпоновкиОтбора;
ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Подобно;
ЭлементОтбора.ПравоеЗначение = ЗначениеОтбора;

IBReiter
02.09.2015 17:59 Ответ № 2

Либо

Код 1C v 8.3

 ВидСравненияКомпоновкиДанных.Содержит   

Но этот вид, по-моему, медленно работает

Ermak
07.09.2015 11:55 Ответ № 3

Ошибка{Справочник.ЛицевыеСчетаАбонентов.Форма.ФормаСписка.Форма(235,33)}: Переменная не определена (Список)

ЭлементОтбора = <<?>>Список.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»)); (Проверка: Толстый клиент (обычное приложение))

{Справочник.ЛицевыеСчетаАбонентов.Форма.ФормаСписка.Форма(238,33)}: Переменная не определена (ЗначениеОтбора)

ЭлементОтбора.ПравоеЗначение = <<?>>ЗначениеОтбора; (Проверка: Толстый клиент (обычное приложение))

Код 1C v 8.х

 Ответсвтеный = ЭлементыФормы.СправочникСписок.Колонки.ОтветственныйКвартиросъемщик;   

Код 1C v 8.х

 ПолеКомпоновкиОтбора = Новый ПолеКомпоновкиДанных(Ответсвтеный);   

Код 1C v 8.х

 ЭлементОтбора                = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));   

Код 1C v 8.х

 ЭлементОтбора.ЛевоеЗначение  = ПолеКомпоновкиОтбора;   

Код 1C v 8.х

 ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Подобно;   

Код 1C v 8.х

 ЭлементОтбора.ПравоеЗначение = ЗначениеОтбора;   
IBReiter
07.09.2015 15:14 Ответ № 4

Проверьте имя основного реквизита, у него скорее всего другое имя, не «Список»

IBReiter
07.09.2015 15:22 Ответ № 5

Ответственный = путь к данным на форме

IBReiter
07.09.2015 15:44 Ответ № 6

У вас наверное не erp.. контейнера ЭлементыФормы не бывает в УФ.

Он называется «Элементы»

Ermak
07.09.2015 17:13 Ответ № 7

Значит я что то напутал. Программа самописнная на платформе 1С 8.2.

Ermak
07.09.2015 17:14 Ответ № 8

Отбор делаем СправочникСписок

IBReiter
07.09.2015 17:30 Ответ № 9

Элементы — это у вас ЭлементыФормы

Список — СправочникСписок

Ermak
08.09.2015 08:27 Ответ № 10

а я стал уже так делать, только не могу понять как теперь найти строку в СправочникСписок

Код 1C v 8.х

 
ОтборСтрок = СправочникСписок.Отбор; ПостроительЗапроса = Новый ПостроительЗапроса; ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ЭлементыФормы.СправочникСписок.Значение); Для Каждого ЭлементОтбора Из ОтборСтрок Цикл Если ЭлементОтбора.Использование Тогда НовыйОтбор = ПостроительЗапроса.Отбор.Добавить(ЭлементОтбора.Имя); НовыйОтбор.Использование = Истина; НовыйОтбор.ВидСравнения = ЭлементОтбора.ВидСравнения; НовыйОтбор.ЗначениеС = ЭлементОтбора.ЗначениеС; НовыйОтбор.ЗначениеПо = ЭлементОтбора.ЗначениеПо; НовыйОтбор.Значение = ЭлементОтбора.Значение; КонецЕсли; КонецЦикла; Таблица = ПостроительЗапроса.Результат.Выгрузить(); МассивСтрок = Новый Массив; Для Каждого Стр ИЗ Таблица Цикл КАдрес=Стр.КороткийАдрес; СтруктураПоиска = Новый Структура; СтруктураПоиска.Вставить("КороткийАдрес", КАдрес); КонецЦикла;
IBReiter
08.09.2015 08:40 Ответ № 11

ЭлементыФормы.СправочникСписок.ТекущаяСтрока, если вы про это

Ermak
08.09.2015 08:41 Ответ № 12

{Справочник.ЛицевыеСчетаАбонентов.Форма.ФормаСписка.Форма(262)}: Недостаточно фактических параметров

Спр = Справочники.ЛицевыеСчетаАбонентов.НайтиПоРеквизиту();

Код 1C v 8.2 УП

 Спр = Справочники.ЛицевыеСчетаАбонентов.НайтиПоРеквизиту();   

Код 1C v 8.2 УП

 Имяколонки = Спр.ОтветственныйКвартиросъемщик.Наименование;   

Код 1C v 8.2 УП

 ПолеКомпоновкиОтбора = Новый ПолеКомпоновкиДанных(Имяколонки);   

Код 1C v 8.2 УП

 ЭлементОтбора                = СправочникСписок.Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));   

Код 1C v 8.2 УП

 ЭлементОтбора.ЛевоеЗначение  = ПолеКомпоновкиОтбора;   

Код 1C v 8.2 УП

 ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Подобно;   

Код 1C v 8.2 УП

 ЭлементОтбора.ПравоеЗначение = ТекстОтбора;   
IBReiter
08.09.2015 08:51 Ответ № 13

НайтиПоРеквизиту(<ИмяРеквизита>, <ЗначениеРеквизита>, <Родитель>, <Владелец>)

Параметры:

<ИмяРеквизита> (обязательный)

Тип: Строка. Имя реквизита, как он задан в конфигураторе, по значению которого осуществляется поиск. Тип значения произвольный, кроме ХранилищеЗначения и строк произвольной длины.

<ЗначениеРеквизита> (обязательный)

Тип: Произвольный.

Значение реквизита, по которому должен выполняться поиск.

Имя и значение обязательны

IBReiter
08.09.2015 10:21 Ответ № 14

Может вот этого достаточно будет

Код 1C v 8.х

 

Процедура ФИОПриИзменении(Элемент)

ИмяОтбораДанных = "Наименование";
ЗначениеОтбора  = Элемент.Значение;

Попытка
СправочникСписок.Отбор[ИмяОтбораДанных].Использование = ЗначениеЗаполнено(ЗначениеОтбора);
Исключение
Возврат;
КонецПопытки;

Если СправочникСписок.Отбор[ИмяОтбораДанных].Использование Тогда

СправочникСписок.Отбор[ИмяОтбораДанных].ВидСравнения  = ВидСравнения.Содержит;
СправочникСписок.Отбор[ИмяОтбораДанных].Значение = ЗначениеОтбора;

КонецЕсли;

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

Ermak
08.09.2015 11:48 Ответ № 15

Выдает ошибку{Справочник.ЛицевыеСчетаАбонентов.Форма.ФормаСписка.Форма(290)}: Ошибка при установке значения атрибута контекста (ВидСравнения)

СправочникСписок.Отбор[ИмяОтбораДанных].ВидСравнения = ВидСравнения.Содержит;

по причине:

Недопустимый тип сравнения

IBReiter
08.09.2015 11:55 Ответ № 16

Покажите текст модуля

IBReiter
08.09.2015 12:00 Ответ № 17

И тип проверьте в отладчике у СправочникСписок.Отбор[ИмяОтбораДанных].ВидСравнения

Ermak
09.09.2015 09:33 Ответ № 18

СправочникСписок.Отбор[ИмяОтбораДанных].ВидСравнения Тип = ВидСравнения

ВидСравнения Тип = ПеречислениеВидСравнения

IBReiter
09.09.2015 09:52 Ответ № 19

Значит и присваивайте ему значение этого перечисления: Перечисления.ВидСравнения.ВашеЗначение

Ermak
09.09.2015 09:56 Ответ № 20

В перечесления нет ВидСравнения , где еще можно посмотреть

IBReiter
09.09.2015 10:03 Ответ № 21

В отладчике и можно посмотреть

Сделайте скрин формы ее реквизиты, какая конфигурация, платформа, модуль или процедуру-обработчик

Я так не пойму что там у вас происходит

Ermak
09.09.2015 10:20 Ответ № 22

http://zalil.su/674481 копия конфигурации, работаю над Справочник — ЛицевыеСчетаАбонентов, ФормаСписка

IBReiter
09.09.2015 10:52 Ответ № 23

Ошибку не увидел

Ermak
09.09.2015 11:26 Ответ № 24

Если ИмяОтбораДанных = «КороткийАдрес» и ИмяОтбораДанных = «Адрес» то все работает а если поставить отбор например по ИмяОтбораДанных = «ОтветственныйКвартиросъемщик» или по Код увидите ошибку

Ermak
09.09.2015 11:27 Ответ № 25

где то прописано в коде что отбор только по «КороткийАдрес» или «Адрес» но я не могу понять где

IBReiter
09.09.2015 11:31 Ответ № 26

В модуле формы списка «Процедура ПолеВвода1ПриИзменении(Элемент)» там и прописано

Ermak
09.09.2015 11:33 Ответ № 27

эта я сделал попробуйте сменить ИмяОтбораДанных = «ОтветственныйКвартиросъемщик» в «Процедура ПолеВвода1ПриИзменении(Элемент)» и вы сразу увидите ошибку когда будите делать отбор

Ermak
09.09.2015 11:34 Ответ № 28

Вот такая ошибка будет{Справочник.ЛицевыеСчетаАбонентов.Форма.ФормаСписка.Форма(290)}: Ошибка при установке значения атрибута контекста (ВидСравнения)

СправочникСписок.Отбор[ИмяОтбораДанных].ВидСравнения = ВидСравнения.Содержит;

по причине:

Недопустимый тип сравнения

IBReiter
09.09.2015 12:17 Ответ № 29

ОтветственныйКвартиросъемщик — это Справочник ФизическиеЛица, поэтому вид сравнения и нельзя такой установить

Можно вот так

Код 1C v 8.х

 

ИмяОтбораДанных = "ОтветственныйКвартиросъемщик";
ЗначениеОтбора  = Элемент.Значение;

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ Ссылка
|
|ИЗ Справочник.ФизическиеЛица
|
|ГДЕ Наименование ПОДОБНОНаименование";
Запрос.УстановитьПараметр("Наименование", "%"+ЗначениеОтбора+"%");

Результат    = Запрос.Выполнить();
СписокОтбора = Новый СписокЗначений;

Если НЕ Результат.Пустой() Тогда

Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл
СписокОтбора.Добавить(Выборка.Ссылка);
КонецЦикла;

КонецЕсли;;

Попытка
СправочникСписок.Отбор[ИмяОтбораДанных].Использование = ЗначениеЗаполнено(ЗначениеОтбора);
Исключение
Возврат;
КонецПопытки;  

Если СправочникСписок.Отбор[ИмяОтбораДанных].Использование Тогда
СправочникСписок.Отбор[ИмяОтбораДанных].ВидСравнения  = ВидСравнения.ВСписке;
СправочникСписок.Отбор[ИмяОтбораДанных].Значение      = СписокОтбора;
КонецЕсли;

Ermak
09.09.2015 14:26 Ответ № 30

что то он долго думает, как добавить в вид сравнения? или есть какой нибудь способ чтобы быстрее и лишний список убирался, оставался только который ищем

Ermak
09.09.2015 14:29 Ответ № 31

Можно же добавить в Вид Сравнения Справочник ФизическиеЛица, чтобы тоже работало для ОтветственныйКвартиросъемщик? Где это добавляется?

IBReiter
09.09.2015 14:41 Ответ № 32

ВидСравнения — это системное перечисление, туда ничего нельзя добавить

Ermak
09.09.2015 14:52 Ответ № 33

а как тогда сделать чтобы работало со справочником Справочник ФизическиеЛица, потому что как вы предложили выше не работает.

IBReiter
09.09.2015 14:58 Ответ № 34

Все там работает)) 1Cv8.zip 

Ermak
09.09.2015 15:05 Ответ № 35

Спасибо большое, все работает!

Подсказка: Вы можете добавить любую страничку в Избранное щелкнув по значку

Что то наверно накосячил, помогите найти в чем косяк. Вот код: Тип поля ВрНачало — Дата, но когда запускаю вылетает с ошибкой «Ошибка при установке значения атрибута контекста (ВидСравнения): Недопустимый тип сравнения    Отбор[«ВрНачала»].ВидСравнения    = ВидСравнения. ИнтервалВключаяГраницы; по причине: Недопустимый тип сравнения » перепробывал все типы, работает только с типом равно. в чем косяк??

сначала установи вид сравнения, а потом границы задавай

пробывал, вид сравнения устанваливать и до и после, и просто ставить «Больше», никак не катит (

дело в «Если Отбор.Найти(«ВрНачала») = Неопределено Тогда» клянусь своей треуголкой: одно из двух — либо поля такого нет принципиально в данных СписокЗаданийНаДень, либо оно имеет тип какой-то не кошерный

В отладчике открываю отбор, там есть тип поля «Врначала» тип Дата, и по умолчанию тип сравнения стоит «Равно», если ставить такой-же то все работает. Но мне нужен другой тип сравнения. (

Попробуй перед установкой отбора Отбор[«ВрНачала»].Использование = Ложь;

СписокЗаданийДень — это кто?

потом лезь в СП и внимательно читай про отбор этого типа.

Это регистр сведений, а ВрНачала — это его измерение

Если это набор записей: Использование: Только чтение. Описание: Тип: Отбор. Содержит объект Отбор, по которому осуществляется текущая фильтрация записей при считывании или записи набора. Список свойств объекта зависит от свойств регистра: для регистров сведений, для которых в конфигураторе установлен режим записи «Подчинение регистратору», отбор возможен только по регистратору, для периодических регистров сведений отбор возможен по периоду и значениям измерений, для непериодических — только по значению измерений. Важно! Отбор может устанавливаться только на равенство.

Регистр у меня непериодический, и способ записи независимый,вот толькоинтересно почему отбор нельзя по другому выставить Спасибо

Тэги:

Комментарии доступны только авторизированным пользователям

Не хочет работать ВидСравнения

Я
   AS_DANCE

04.05.09 — 17:15

Что то наверно накосячил, помогите найти в чем косяк.

Вот код:

Отбор    = СписокЗаданийДень.Отбор;

Если Отбор.Найти(«ВрНачала») = Неопределено Тогда        

   Отбор.Добавить(«ВрНачала»);

КонецЕсли;

Отбор[«ВрНачала»].Использование = Истина;

   Отбор[«ВрНачала»].ЗначениеС    = НачалоДня(ИспДата);

   Отбор[«ВрНачала»].ЗначениеПО    = КонецДня(ИспДата);

   Отбор[«ВрНачала»].ВидСравнения    = ВидСравнения.ИнтервалВключаяГраницы;

Тип поля ВрНачало — Дата, но когда запускаю вылетает с ошибкой «Ошибка при установке значения атрибута контекста (ВидСравнения): Недопустимый тип сравнения

   Отбор[«ВрНачала»].ВидСравнения    = ВидСравнения. ИнтервалВключаяГраницы;

по причине:

Недопустимый тип сравнения

»

перепробывал все типы, работает только с типом равно. в чем косяк??

   ТелепатБот

1 — 04.05.09 — 17:15

Книга знаний: Тип реквизита и тип значения

   Лефмихалыч

2 — 04.05.09 — 17:17

сначала установи вид сравнения, а потом границы задавай

   AS_DANCE

3 — 04.05.09 — 17:17

пробывал, вид сравнения устанваливать и до и после, и просто ставить «Больше», никак не катит (

   Лефмихалыч

4 — 04.05.09 — 17:26

(3) дело в «Если Отбор.Найти(«ВрНачала») = Неопределено Тогда»

клянусь своей треуголкой: одно из двух — либо поля такого нет принципиально в данных СписокЗаданийНаДень, либо оно имеет тип какой-то не кошерный

   AS_DANCE

5 — 04.05.09 — 17:31

В отладчике открываю отбор, там есть тип поля «Врначала» тип Дата, и по умолчанию тип сравнения стоит «Равно», если ставить такой-же то все работает. Но мне нужен другой тип сравнения. (

   Alpen906

6 — 04.05.09 — 17:33

Попробуй перед установкой отбора

Отбор[«ВрНачала»].Использование = Ложь;

   НЕА123

7 — 04.05.09 — 17:33

(0)

СписокЗаданийДень — это кто?

   Mitriy

8 — 04.05.09 — 17:34

эта чего Отбор?

   НЕА123

9 — 04.05.09 — 17:34

(0)

потом лезь в СП и внимательно читай про отбор этого типа.

   AS_DANCE

10 — 04.05.09 — 17:34

Это регистр сведений, а ВрНачала — это его измерение

   Gisborn

11 — 04.05.09 — 17:35

Если это набор записей:

Отбор (Filter)

Использование:

Только чтение.

Описание:

Тип: Отбор. Содержит объект Отбор, по которому осуществляется текущая фильтрация записей при считывании или записи набора. Список свойств объекта зависит от свойств регистра: для регистров сведений, для которых в конфигураторе установлен режим записи «Подчинение регистратору», отбор возможен только по регистратору, для периодических регистров сведений отбор возможен по периоду и значениям измерений, для непериодических — только по значению измерений.

Важно! Отбор может устанавливаться только на равенство.

  

AS_DANCE

12 — 04.05.09 — 17:38

Регистр у меня непериодический, и способ записи независимый,вот толькоинтересно почему отбор нельзя по другому выставить

(11)Спасибо

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Содержание:

1.       Ошибка при установке значения атрибута контекста

2.       Ошибка при получении значения атрибута контекста

Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.  

1.    Ошибка при установке значения атрибута контекста

Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута. 

Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.  

2.    Ошибка при получении значения атрибута контекста

Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.

При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).  

Специалист компании «Кодерлайн»

Александр Суворов

Ermak
02.09.2015 15:49 Прочитано: 4598

Добрый день! Подскажите как сделать отбор по табличному полю. Например в ТП есть колонка ФИО, в поле отбора я набираю фамилию Петров нажимаю поиск или ENTER и мне в ТП выдаются строки где указана фамилия Петров

Yandex
Возможно, вас также заинтересует

Реклама на портале

IBReiter
02.09.2015 17:53 Ответ № 1

Можно так:

Код 1C v 8.3

 

ПолеКомпоновкиОтбора = Новый ПолеКомпоновкиДанных(Имяколонки)

ЭлементОтбора                = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение  = ПолеКомпоновкиОтбора;
ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Подобно;
ЭлементОтбора.ПравоеЗначение = ЗначениеОтбора;

IBReiter
02.09.2015 17:59 Ответ № 2

Либо

Код 1C v 8.3

 ВидСравненияКомпоновкиДанных.Содержит   

Но этот вид, по-моему, медленно работает

Ermak
07.09.2015 11:55 Ответ № 3

Ошибка{Справочник.ЛицевыеСчетаАбонентов.Форма.ФормаСписка.Форма(235,33)}: Переменная не определена (Список)

ЭлементОтбора = <<?>>Список.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»)); (Проверка: Толстый клиент (обычное приложение))

{Справочник.ЛицевыеСчетаАбонентов.Форма.ФормаСписка.Форма(238,33)}: Переменная не определена (ЗначениеОтбора)

ЭлементОтбора.ПравоеЗначение = <<?>>ЗначениеОтбора; (Проверка: Толстый клиент (обычное приложение))

Код 1C v 8.х

 Ответсвтеный = ЭлементыФормы.СправочникСписок.Колонки.ОтветственныйКвартиросъемщик;   

Код 1C v 8.х

 ПолеКомпоновкиОтбора = Новый ПолеКомпоновкиДанных(Ответсвтеный);   

Код 1C v 8.х

 ЭлементОтбора                = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));   

Код 1C v 8.х

 ЭлементОтбора.ЛевоеЗначение  = ПолеКомпоновкиОтбора;   

Код 1C v 8.х

 ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Подобно;   

Код 1C v 8.х

 ЭлементОтбора.ПравоеЗначение = ЗначениеОтбора;   
IBReiter
07.09.2015 15:14 Ответ № 4

Проверьте имя основного реквизита, у него скорее всего другое имя, не «Список»

IBReiter
07.09.2015 15:22 Ответ № 5

Ответственный = путь к данным на форме

IBReiter
07.09.2015 15:44 Ответ № 6

У вас наверное не erp.. контейнера ЭлементыФормы не бывает в УФ.

Он называется «Элементы»

Ermak
07.09.2015 17:13 Ответ № 7

Значит я что то напутал. Программа самописнная на платформе 1С 8.2.

Ermak
07.09.2015 17:14 Ответ № 8

Отбор делаем СправочникСписок

IBReiter
07.09.2015 17:30 Ответ № 9

Элементы — это у вас ЭлементыФормы

Список — СправочникСписок

Ermak
08.09.2015 08:27 Ответ № 10

а я стал уже так делать, только не могу понять как теперь найти строку в СправочникСписок

Код 1C v 8.х

 
ОтборСтрок = СправочникСписок.Отбор; ПостроительЗапроса = Новый ПостроительЗапроса; ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ЭлементыФормы.СправочникСписок.Значение); Для Каждого ЭлементОтбора Из ОтборСтрок Цикл Если ЭлементОтбора.Использование Тогда НовыйОтбор = ПостроительЗапроса.Отбор.Добавить(ЭлементОтбора.Имя); НовыйОтбор.Использование = Истина; НовыйОтбор.ВидСравнения = ЭлементОтбора.ВидСравнения; НовыйОтбор.ЗначениеС = ЭлементОтбора.ЗначениеС; НовыйОтбор.ЗначениеПо = ЭлементОтбора.ЗначениеПо; НовыйОтбор.Значение = ЭлементОтбора.Значение; КонецЕсли; КонецЦикла; Таблица = ПостроительЗапроса.Результат.Выгрузить(); МассивСтрок = Новый Массив; Для Каждого Стр ИЗ Таблица Цикл КАдрес=Стр.КороткийАдрес; СтруктураПоиска = Новый Структура; СтруктураПоиска.Вставить("КороткийАдрес", КАдрес); КонецЦикла;
IBReiter
08.09.2015 08:40 Ответ № 11

ЭлементыФормы.СправочникСписок.ТекущаяСтрока, если вы про это

Ermak
08.09.2015 08:41 Ответ № 12

{Справочник.ЛицевыеСчетаАбонентов.Форма.ФормаСписка.Форма(262)}: Недостаточно фактических параметров

Спр = Справочники.ЛицевыеСчетаАбонентов.НайтиПоРеквизиту();

Код 1C v 8.2 УП

 Спр = Справочники.ЛицевыеСчетаАбонентов.НайтиПоРеквизиту();   

Код 1C v 8.2 УП

 Имяколонки = Спр.ОтветственныйКвартиросъемщик.Наименование;   

Код 1C v 8.2 УП

 ПолеКомпоновкиОтбора = Новый ПолеКомпоновкиДанных(Имяколонки);   

Код 1C v 8.2 УП

 ЭлементОтбора                = СправочникСписок.Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));   

Код 1C v 8.2 УП

 ЭлементОтбора.ЛевоеЗначение  = ПолеКомпоновкиОтбора;   

Код 1C v 8.2 УП

 ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Подобно;   

Код 1C v 8.2 УП

 ЭлементОтбора.ПравоеЗначение = ТекстОтбора;   
IBReiter
08.09.2015 08:51 Ответ № 13

НайтиПоРеквизиту(<ИмяРеквизита>, <ЗначениеРеквизита>, <Родитель>, <Владелец>)

Параметры:

<ИмяРеквизита> (обязательный)

Тип: Строка. Имя реквизита, как он задан в конфигураторе, по значению которого осуществляется поиск. Тип значения произвольный, кроме ХранилищеЗначения и строк произвольной длины.

<ЗначениеРеквизита> (обязательный)

Тип: Произвольный.

Значение реквизита, по которому должен выполняться поиск.

Имя и значение обязательны

IBReiter
08.09.2015 10:21 Ответ № 14

Может вот этого достаточно будет

Код 1C v 8.х

 

Процедура ФИОПриИзменении(Элемент)

ИмяОтбораДанных = "Наименование";
ЗначениеОтбора  = Элемент.Значение;

Попытка
СправочникСписок.Отбор[ИмяОтбораДанных].Использование = ЗначениеЗаполнено(ЗначениеОтбора);
Исключение
Возврат;
КонецПопытки;

Если СправочникСписок.Отбор[ИмяОтбораДанных].Использование Тогда

СправочникСписок.Отбор[ИмяОтбораДанных].ВидСравнения  = ВидСравнения.Содержит;
СправочникСписок.Отбор[ИмяОтбораДанных].Значение = ЗначениеОтбора;

КонецЕсли;

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

Ermak
08.09.2015 11:48 Ответ № 15

Выдает ошибку{Справочник.ЛицевыеСчетаАбонентов.Форма.ФормаСписка.Форма(290)}: Ошибка при установке значения атрибута контекста (ВидСравнения)

СправочникСписок.Отбор[ИмяОтбораДанных].ВидСравнения = ВидСравнения.Содержит;

по причине:

Недопустимый тип сравнения

IBReiter
08.09.2015 11:55 Ответ № 16

Покажите текст модуля

IBReiter
08.09.2015 12:00 Ответ № 17

И тип проверьте в отладчике у СправочникСписок.Отбор[ИмяОтбораДанных].ВидСравнения

Ermak
09.09.2015 09:33 Ответ № 18

СправочникСписок.Отбор[ИмяОтбораДанных].ВидСравнения Тип = ВидСравнения

ВидСравнения Тип = ПеречислениеВидСравнения

IBReiter
09.09.2015 09:52 Ответ № 19

Значит и присваивайте ему значение этого перечисления: Перечисления.ВидСравнения.ВашеЗначение

Ermak
09.09.2015 09:56 Ответ № 20

В перечесления нет ВидСравнения , где еще можно посмотреть

IBReiter
09.09.2015 10:03 Ответ № 21

В отладчике и можно посмотреть

Сделайте скрин формы ее реквизиты, какая конфигурация, платформа, модуль или процедуру-обработчик

Я так не пойму что там у вас происходит

Ermak
09.09.2015 10:20 Ответ № 22

http://zalil.su/674481 копия конфигурации, работаю над Справочник — ЛицевыеСчетаАбонентов, ФормаСписка

IBReiter
09.09.2015 10:52 Ответ № 23

Ошибку не увидел

Ermak
09.09.2015 11:26 Ответ № 24

Если ИмяОтбораДанных = «КороткийАдрес» и ИмяОтбораДанных = «Адрес» то все работает а если поставить отбор например по ИмяОтбораДанных = «ОтветственныйКвартиросъемщик» или по Код увидите ошибку

Ermak
09.09.2015 11:27 Ответ № 25

где то прописано в коде что отбор только по «КороткийАдрес» или «Адрес» но я не могу понять где

IBReiter
09.09.2015 11:31 Ответ № 26

В модуле формы списка «Процедура ПолеВвода1ПриИзменении(Элемент)» там и прописано

Ermak
09.09.2015 11:33 Ответ № 27

эта я сделал попробуйте сменить ИмяОтбораДанных = «ОтветственныйКвартиросъемщик» в «Процедура ПолеВвода1ПриИзменении(Элемент)» и вы сразу увидите ошибку когда будите делать отбор

Ermak
09.09.2015 11:34 Ответ № 28

Вот такая ошибка будет{Справочник.ЛицевыеСчетаАбонентов.Форма.ФормаСписка.Форма(290)}: Ошибка при установке значения атрибута контекста (ВидСравнения)

СправочникСписок.Отбор[ИмяОтбораДанных].ВидСравнения = ВидСравнения.Содержит;

по причине:

Недопустимый тип сравнения

IBReiter
09.09.2015 12:17 Ответ № 29

ОтветственныйКвартиросъемщик — это Справочник ФизическиеЛица, поэтому вид сравнения и нельзя такой установить

Можно вот так

Код 1C v 8.х

 

ИмяОтбораДанных = "ОтветственныйКвартиросъемщик";
ЗначениеОтбора  = Элемент.Значение;

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ Ссылка
|
|ИЗ Справочник.ФизическиеЛица
|
|ГДЕ Наименование ПОДОБНОНаименование";
Запрос.УстановитьПараметр("Наименование", "%"+ЗначениеОтбора+"%");

Результат    = Запрос.Выполнить();
СписокОтбора = Новый СписокЗначений;

Если НЕ Результат.Пустой() Тогда

Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл
СписокОтбора.Добавить(Выборка.Ссылка);
КонецЦикла;

КонецЕсли;;

Попытка
СправочникСписок.Отбор[ИмяОтбораДанных].Использование = ЗначениеЗаполнено(ЗначениеОтбора);
Исключение
Возврат;
КонецПопытки;  

Если СправочникСписок.Отбор[ИмяОтбораДанных].Использование Тогда
СправочникСписок.Отбор[ИмяОтбораДанных].ВидСравнения  = ВидСравнения.ВСписке;
СправочникСписок.Отбор[ИмяОтбораДанных].Значение      = СписокОтбора;
КонецЕсли;

Ermak
09.09.2015 14:26 Ответ № 30

что то он долго думает, как добавить в вид сравнения? или есть какой нибудь способ чтобы быстрее и лишний список убирался, оставался только который ищем

Ermak
09.09.2015 14:29 Ответ № 31

Можно же добавить в Вид Сравнения Справочник ФизическиеЛица, чтобы тоже работало для ОтветственныйКвартиросъемщик? Где это добавляется?

IBReiter
09.09.2015 14:41 Ответ № 32

ВидСравнения — это системное перечисление, туда ничего нельзя добавить

Ermak
09.09.2015 14:52 Ответ № 33

а как тогда сделать чтобы работало со справочником Справочник ФизическиеЛица, потому что как вы предложили выше не работает.

IBReiter
09.09.2015 14:58 Ответ № 34

Все там работает)) 1Cv8.zip 

Ermak
09.09.2015 15:05 Ответ № 35

Спасибо большое, все работает!

Подсказка:Вы можете добавить любую страничку в Социальные закладки щелкнув по значку соцсетей (в вверху)

Что то наверно накосячил, помогите найти в чем косяк. Вот код: Тип поля ВрНачало — Дата, но когда запускаю вылетает с ошибкой «Ошибка при установке значения атрибута контекста (ВидСравнения): Недопустимый тип сравнения    Отбор[«ВрНачала»].ВидСравнения    = ВидСравнения. ИнтервалВключаяГраницы; по причине: Недопустимый тип сравнения » перепробывал все типы, работает только с типом равно. в чем косяк??

сначала установи вид сравнения, а потом границы задавай

пробывал, вид сравнения устанваливать и до и после, и просто ставить «Больше», никак не катит (

дело в «Если Отбор.Найти(«ВрНачала») = Неопределено Тогда» клянусь своей треуголкой: одно из двух — либо поля такого нет принципиально в данных СписокЗаданийНаДень, либо оно имеет тип какой-то не кошерный

В отладчике открываю отбор, там есть тип поля «Врначала» тип Дата, и по умолчанию тип сравнения стоит «Равно», если ставить такой-же то все работает. Но мне нужен другой тип сравнения. (

Попробуй перед установкой отбора Отбор[«ВрНачала»].Использование = Ложь;

СписокЗаданийДень — это кто?

потом лезь в СП и внимательно читай про отбор этого типа.

Это регистр сведений, а ВрНачала — это его измерение

Если это набор записей: Использование: Только чтение. Описание: Тип: Отбор. Содержит объект Отбор, по которому осуществляется текущая фильтрация записей при считывании или записи набора. Список свойств объекта зависит от свойств регистра: для регистров сведений, для которых в конфигураторе установлен режим записи «Подчинение регистратору», отбор возможен только по регистратору, для периодических регистров сведений отбор возможен по периоду и значениям измерений, для непериодических — только по значению измерений. Важно! Отбор может устанавливаться только на равенство.

Регистр у меня непериодический, и способ записи независимый,вот толькоинтересно почему отбор нельзя по другому выставить Спасибо

Тэги:

Комментарии доступны только авторизированным пользователям

Ermak27

4 / 4 / 0

Регистрация: 16.01.2013

Сообщений: 1,228

1

1C 8.x

Отобратьпо колонке в ТаблицаЗначений

19.08.2016, 09:59. Показов 3443. Ответов 2

Метки нет (Все метки)


Доброе утро! Встала задача отобрать в таблице по колонке, написал такой код

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Процедура ГрупповаяПриИзменении(Элемент)
    
    ИмяОтбораДанных = "Групповая";
    ЗначениеОтбора  = Элемент.Значение;
    
    Построитель = Новый ПостроительЗапроса;
    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаГаза);
    
    СтрокаОтбора = Построитель.Отбор.Добавить(ИмяОтбораДанных);
    СтрокаОтбора.ВидСравнения = ВидСравнения.Равно;
    СтрокаОтбора.Значение = ЗначениеОтбора;
    СтрокаОтбора.Использование = Истина;
    
    Построитель.Выполнить();
    ТаблицаГаза.Очистить();
    ТаблицаГаза = Построитель.Результат.Выгрузить();
    
    
КонецПроцедуры

Выдает ошибку
{Форма.Форма.Форма(174)}: Ошибка при установке значения атрибута контекста (ВидСравнения)
СтрокаОтбора.ВидСравнения = ВидСравнения.Равно;
по причине:
Недопустимый тип сравнения

Перепробовал различные ВидСравнения не работает, почему?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

Dethmontt

Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

19.08.2016, 14:54

2

Лучший ответ Сообщение было отмечено Ermak27 как решение

Решение

Ermak27, может лучше заюзать отборСтрок элемента содержащего таблицу данных?

Расширение табличного поля табличной части (Tabular section table box extension)
Свойства:

НастройкаОтбораСтрок (RowFilterSettings)
ОтборСтрок (RowFilter)
ПроверкаОтображенияНовойСтроки (NewRowShowCheck)

Описание:

Дополнительные свойства элемента управления ТабличноеПоле, предназначеные для интерактивной работы с табличной частью. Для данного расширения свойства ТекущаяСтрока и ТекущиеДанные имеют значения типа Строка табличной части

Доступность:

Толстый клиент.

Добавлено через 53 секунды

Цитата
Сообщение от Ermak27
Посмотреть сообщение

Перепробовал различные ВидСравнения не работает, почему?

потому что у тебя с типами лажа какая-то!!!

Добавлено через 56 секунд

1C
1
2
3
4
СтрокаОтбора = ЭлементыФормы.ТаблицаГаза.ОтборСтрок.Добавить(ИмяОтбораДанных);
СтрокаОтбора.ВидСравнения = ВидСравнения.Равно;
СтрокаОтбора.Значение = ЗначениеОтбора;
СтрокаОтбора.Использование = Истина;

Добавлено через 4 минуты
если не табличная часть, то можно так

1C
1
ТаблицаГаза = ТаблицаГаза.Скопировать(Новый Структура("Групповая", ЗначениеОтбора));

1

583 / 370 / 63

Регистрация: 22.07.2009

Сообщений: 875

Записей в блоге: 4

20.08.2016, 06:17

3

Цитата
Сообщение от Ermak27
Посмотреть сообщение

Перепробовал различные ВидСравнения не работает, почему?

А какие возможны типы у колонки по которой проходит отбор (нельзя отбирать по нетипизированной колонке через построитель)

0

IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

20.08.2016, 06:17

3

Несоответствие типов 1С

Ошибка по причине Несоответствие типов в 1С 8.3 связана с передачей параметров в командах и запросах 1С.

Изучив статью, вы:

  • ознакомитесь с порядком исправления ошибки в запросе и командах 1С и узнаете, как исправить;
  • получите два внешних отчета, демонстрирующих ошибочный и правильный коды.

В какой момент выходит ошибка

Как правило, параметры в командах 1С идут в определенной очередности и ссылаются на данные конкретного типа. Ошибка в указании параметра не на том месте или не того типа приводит к появлению сообщения о несоответствии типов:

Исправляется подобная ошибка восстановлением правильной последовательности в строке параметров команды или указанием нужного типа данных Ошибка 1С Несоответствие типов наиболее часто появляется при написании запросов и при некорректном указании параметров команды.

Рассмотрим причины ее возникновения и исправление на конкретном примере.

Ошибка в таблице запроса

При чтении цен номенклатуры по регистру сведений Цены номенклатуры из внешнего отчета появляется ошибка Неоднозначное поле «ТипЦен.Номенклатура».

В окне сообщений уже указано место возникновения ошибки: Несоответствие типов Параметр номер «1» в строке Регистр сведений.ЦеныНоменклатуры.СрезПоследних(&&ТипЦен,) КАК ЦеныНоменклатурыСрезПоследних.

Для исправления ошибки необходимо открыть отчет в Конфигураторе 1С и найти в модуле формы указанную строчку.

Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1 С Предприятие:

Из описания видно, что команда СрезПоследних имеет 2 параметра:

  • Период;
  • Отбор.

Если параметр Период не указывается, место в команде остается пустым, а через запятую указывается параметр отбора, в нашем случае: ТипЦен. Исправленная команда выглядит следующим образом: СрезПоследних(, ТипЦен = &ТипЦен ).

После исправления команды запустите отчет в 1 С Бухгалтерия по кнопке Главное меню — Файл — Открыть:

Теперь отчет формируется правильно!

Исправление ошибки в команде 1С

При поиске ссылок на контрагента в отчете 1С появляется ошибка Несоответствие типов (параметр номер 2):

1С сообщает место ошибки — Параметр номер 2 при нажатии кнопки ERROR.

Для ее исправления необходимо открыть отчет в Конфигураторе 1С и найти в модуле формы строчку с командой НайтиПоСсылкам.

Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1С:

Из описания идно, что команда НайтиПоСсылкам имеет 4 параметра:

  • СписокСсылок;
  • ОбластьПоиска;
  • ВключитьОбъекты;
  • ИсключитьОбъекты.

Параметр ОбластьПоиска имеет тип «массив», а в нашем примере указано число 1: НайтиПоСсылкам(МассивПоиска, 1, , МассивИсключений)Область поиска — необязательный параметр, поэтому исправленная команда может выглядеть следующим образом: НайтиПоСсылкам(МассивПоиска,  ,  , МассивИсключений).

После исправления команды запустите внешний отчет в 1С по кнопке Главное меню — Файл — Открыть:

Теперь команда поиска ссылок на контрагента отрабатывает правильно.

Вот так можно получить ошибку 1С Несоответствие типов в 1С, поэтому контролируйте правильность указания параметров в запросах и командах 1С в Синтаксис-Помощнике

Обслуживание

Заказать консультацию

По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.

Здравствуйте.
У пользователя при открытии обработки «Подбор номенклатуры» из документов выскакивает ошибка:

Цитата

{Обработка.ПодборНоменклатуры.Форма.Форма.Форма(2490)}: Ошибка при установке значения атрибута контекста (ВидСравнения)

                                                                             НайденныйОтбор.ВидСравнения        = ТекОтбор.ВидСравнения;

по причине:

Недопустимый тип сравнения

У других пользователей все работает.

Конфигурации:  «Альфа-Авто: Автосалон+Автосервис+Автозапчасти, украинская версия 4.1» (4.1.17.01)
Платформа: 1С:Предприятие 8.2 (8.2.19.130)

Принтскрины по ссылке ниже:

http://i.piccy.info/i9/8815fbb683317666ebdeeafb54538f94/1516438720/46825/12­14547/2018_01_20_101213.png
http://i.piccy.info/i9/ef2e3ac8fb6224c778063985eb661413/1516438768/46878/12­14547/2018_01_20_101234.png

Может как то обнулить настройки пользователя в 1С?

Изменено: Евгений Галкин20.01.2018 12:04:05

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • 1с ошибка не обнаружена установленная версия 1с предприятия
  • 1с ошибка при установке значения атрибута контекста картинка
  • 1с ошибка при установке значения атрибута контекста имякоманды
  • 1с ошибка нарушение целостности системы что делать
  • 1с ошибка при установке значения атрибута контекста значение

  • Добавить комментарий

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: