В этой статье речь пойдет о достаточно редкой ошибке, которая может встретиться при работе с отчетами на СКД или динамическими списками. Дословно текст ошибки такой: “Ошибка в элементе отбора глобальные элементы отбора обязательно должны использовать поля“. Что это значит, как воспроизвести и как исправить?
Содержание
Немного об устройстве отбора в СКД
Начну издалека. В настройках системы компоновки данных есть объект Отбор, с типом ОтборКомпоновкиДанных. И его элементы представляют собой либо группы, либо отдельные элементы отбора.
У каждого элемента отбора СКД есть несколько основных свойств: Левое значение, Правое значение, Вид сравнения и Использование. Как в левом, так и в правом значениях можно указать либо поле компоновки данных, либо конкретное значение.
Внимание! На момент написания публикации, указанная на скриншоте выше настройка динамического списка приводит к падению платформы.
На скриншоте видно, что первая строка отбора содержит ПолеКомпоновкиДанных(“Номер”) в левом значении, а у второй строки и левое и правое значение – это конкретные даты.
Для объекта с типом ДинамическийСписок указание в левом значении любого значения, кроме какого-либо поля компоновки данных, приводит к вылету платформы. Но только при включенном флажке “Использование”!
Причина возникновения ошибки
Суть ошибки сводится к тому, что в корневом элементе отбора присутствуют строки, у которых и ЛевоеЗначение и ПравоеЗначение не имеют тип ПолеКомпоновкиДанных. И в подавляющем большинстве случаев это возникает из-за неверной программной установки отбора. Но тем не менее, и через настройки в конфигураторе эту ошибку также можно воспроизвести.
Отличие отбора в динамическом списке и СКД
В системе компоновки данных отбор можно задавать отдельно на каждом уровне структуры отчета например, у нас может быть отчет по продажам с группировками Контрагент >> Номенклатура >> Детальные записи. И на каждую группировку мы можем наложить свой отбор.
В динамическом списке отбор накладывается всегда на корневой элемент структуры – т.е. элементы отбора динамического списка всегда будут глобальные.
Воспроизводим ошибку в коде для динамического списка
В приведенном ниже фрагменте кода мы намеренно присваиваем левому значению число 10, а правому значению – булево значение Ложь. Важно понимать, что должны быть соблюдены условия, что именно оба поля не являются полями с типом ПолеКомпоновкиДанных.
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ПолеРодитель = Новый ПолеКомпоновкиДанных("Родитель"); ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = 10; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Ложь; ЭлементОтбора.Использование = Истина; КонецПроцедуры
Ошибка в элементе отбора: глобальные элементы отбора обязательно должны использовать поля — как исправить?
Возможны два варианта – нужно чтобы как минимум либо ЛевоеЗначение, либо ПравоеЗначение имело тип ПолеКомпоновкиДанных.
Например:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ПолеЭтоГруппа = Новый ПолеКомпоновкиДанных("ЭтоГруппа"); ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = ПолеЭтоГруппа; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Ложь; ЭлементОтбора.Использование = Истина; КонецПроцедуры
Но и наоборот также будет работать!
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ПолеЭтоГруппа = Новый ПолеКомпоновкиДанных("ЭтоГруппа"); ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Ложь; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = ПолеЭтоГруппа; ЭлементОтбора.Использование = Истина; КонецПроцедуры
Воспроизводим ошибку в настройках СКД
- Возьмем любой отчет, использующий систему компоновки данных, и откроем настройки.
- Перейдем на закладку Отбор, и добавим новую строку. Далее у нас есть два варианта, приводящих к ошибке.
- В качестве левого значения укажем поле из имеющихся параметров данных, например ПараметрыДанных.НачалоПериода. В качестве правого значения укажем конкретную дату.
Второй вариант – в качестве левого и правого значения укажем что-нибудь, не являющееся полем компоновки данных: Дату, Строку, Булево или Число. Т.е. конкретные значения. - В пользовательском режиме укажем какое-нибудь значение параметра и попробуем сформировать отчет.
- Получим ошибку: “глобальные элементы отбора обязательно должны использовать поля“
Однако, если мы перенесем эти же элементы отбора не на уровень отчета, а на уровень любой группировки, то отчет будет работать корректно!
В динамическом списке такую настройку произвести невозможно – как уже говорил выше, конфигуратор при попытке сохранить настройки вылетает. В пользовательском режиме с нуля такие настройки тоже воспроизвести нельзя – только если они изначально заданы в конфигураторе.
13.02.22 — 08:34
Доброго дня!
после обновления бухгалтерии на 3.0.107.37 и платформы на 8.3.18.1741 релиз.
перестал работать отбор в списках документов.
отбор настроен был в расширении, подскажите как поправить чтобы работало
&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
Если не РольДоступна(«ПолныеПрава») Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, «Ответственный», ПользователиКлиентСервер.ТекущийПользователь());
ЗапрещенныеВОтбореПоля = Новый Массив;
ЗапрещенныеВОтбореПоля.Добавить(«Ответственный»);
ЗапрещенныеВОтбореПоля.Добавить(«Ссылка»);
Список.УстановитьОграниченияИспользованияВОтборе(ЗапрещенныеВОтбореПоля);
КонецЕсли;
КонецПроцедуры
1 — 13.02.22 — 08:34
+ пишет ошибку: Параметры Отбора, Сортировки, Группировки или список отображаемых полей заданы неверно. Не найдено поле отбора Ответственный
2 — 13.02.22 — 08:38
(1)[Не найдено поле отбора Ответственный]
и ?
3 — 13.02.22 — 08:40
(2) до этого обновления год работало норм. куда пропало поле ответственный? в форме списка это поле есть.
4 — 13.02.22 — 08:49
?
5 — 13.02.22 — 08:57
что ни кто не подскажет ?
6 — 13.02.22 — 08:57
Продам кнопку F11. Безумно дорого.
7 — 13.02.22 — 09:04
(6) подскажи что добавить чтобы заработало, посмотрел процедуру «ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора» код не менялся в обновлении
8 — 13.02.22 — 09:27
как добавить поле отбора Ответственный ? если в самом списке уже есть
9 — 13.02.22 — 09:30
так оно на конкретном списке каком-то падает? На других продолжает работать без ошибки?
10 — 13.02.22 — 09:32
У меня была ошибка по полю Ответственный, только не в БП, а в УТ и в КА
Там оказалось, что поле переименовано в Менеджер. Тип у поля тот же. Смысл этого поля тот же. Но самого Ответственный нет, а есть Менеджер. Хз, зачем такое делать.
11 — 13.02.22 — 09:34
По моей имхо-логике было бы логично сделать в универсальном решении — Пользователь и отстальные поля как угодно называть. Но нет, не делают так.
12 — 13.02.22 — 09:35
(9) там документов штук 10, ни в одной форме списка отбор не работает, перестал видеть поле «Ответственный»
13 — 13.02.22 — 09:35
+ у всех пользователей с ограниченными правами
14 — 13.02.22 — 09:37
(13) уверен, что платформа адекватно работает после обновления конфиги?
Нам пришлось ставить 20-ую
на 18-ой ветке устали с глюками бороться.
15 — 13.02.22 — 09:41
(14) думаешь в платформе дело?
16 — 13.02.22 — 09:42
(14) какой лучше поставить релиз ?
17 — 13.02.22 — 09:43
(14) а какие глюки были на 18ой?
18 — 13.02.22 — 09:59
(17) Обновление версии конфигурации убивает базу. С разными ошибками.
При использовании именно БП в последнем обновлении пришлось через ТИИ стартовать реструктуризацию, хотя по умолчанию при обновлении конфы платформа должна была это дселать сама.
И такая реструктуризация не всегда помогает.
Очистка кэшей тоже не имела эффекта.
и т.п.
19 — 13.02.22 — 09:59
Открой расширение в конфигураторе и посмотри проблемные места. Возможно, достаточно будет обновить форму и восстановить недостающий реквизит. Обычное дело…
20 — 13.02.22 — 09:59
еще Итоги пришлось пересчитывать в ТИИ конфигуратора
21 — 13.02.22 — 10:02
(18) Более ста баз на 18 платформе, ни разу подобных глюков не было замечено.
22 — 13.02.22 — 10:02
(19) там нет реквизитов, просто процедура добавилась
23 — 13.02.22 — 10:09
развернул архивную до обновления, все работает, значит причина не в платформе
24 — 13.02.22 — 10:10
какие еще могут быть варианты, почему поле «Ответственный» стало не доступно ?
25 — 13.02.22 — 10:18
(24) Развернул куда? В файловом варианте?
Кстати, что я выше написал об ошибках — в файловом режиме они не выскакивали.
26 — 13.02.22 — 10:19
(24) Звезды так сошлись сегодня. Завтра отпустит…
27 — 13.02.22 — 10:23
(25) база серверная, развернул в копию
28 — 13.02.22 — 10:26
(27) осталось попробовать из обновленной боевой развернуть копию на _новое_ место.
29 — 13.02.22 — 10:27
(22) Не всё посмотрел. Смотри поле, которое недоступно. И форму посмотри.
30 — 13.02.22 — 10:29
(29) Он уже 2 часа душнит на форуме, интересно насколько его хватит еще … Не подсказывай.
31 — 13.02.22 — 10:30
(29) форму удалял из расширения, и по новой добавлял
32 — 13.02.22 — 10:32
(31) Удалять было не обязательно. Ты найди на этой форме недоступный реквизит и сделай доступным в свойствах.
33 — 13.02.22 — 10:34
(32) Доступность галка стоит, каким образом еще сделать доступным?
34 — 13.02.22 — 10:37
(33) Проверь доступность после открытия формы. Возможно, доступность закрывается программно еще где-нибудь.
35 — 13.02.22 — 10:37
ТолькоПросмотр=Ложь
36 — 13.02.22 — 10:43
(35) не нашел
37 — 13.02.22 — 10:43
(30) форум для того и нужен чтобы обмениваться опытом
38 — 13.02.22 — 10:45
(36) Сначала найди форму, где этот реквизит должен отображаться. Потом найди эту форму в конфигураторе. Потом в модуле формы поищи по наименованию реквизита.
(37) не отвлекайся )
39 — 13.02.22 — 10:51
(37) ЖЭто не обмен опытом, а так, профанация. Тебе в (10) дали наводку.
40 — 13.02.22 — 10:52
(38) «Сначала найди форму, где этот реквизит должен отображаться. Потом найди эту форму в конфигураторе. Потом в модуле формы поищи по наименованию реквизита.» в модуле формы этого реквизита нет
41 — 13.02.22 — 10:53
(39) (10) смотрел
42 — 13.02.22 — 10:53
в Список.Отбор.ДоступныеПоляОтбора.Элементы, реквизит есть
43 — 13.02.22 — 10:55
(41) И таки чо, есть менеджер поле ?
44 — 13.02.22 — 10:55
Щас качну 107.37 чисто из интереса
45 — 13.02.22 — 10:58
(43) нет «менеджера» поля, есть ответственный во всех документах
46 — 13.02.22 — 10:59
и почему то во всех не доступен
47 — 13.02.22 — 11:00
(46) а тот архив, в котором расширение еще не сломалось — там какой релиз конфигурации остался?
48 — 13.02.22 — 11:02
(18) а это на последней 18 платформе было?
49 — 13.02.22 — 11:07
(47) Бухгалтерия предприятия, редакция 3.0 (3.0.104.28)
50 — 13.02.22 — 11:08
+ расширение проходит проверку в конфигураторе, т.е ошибок не выдает, но и не работает
51 — 13.02.22 — 11:21
(50) Я бы тогда попробовал заново создать расширение. Не тоже самое править, а именно новое создать. Маленькое. И поставить эту процедуру туда. А в старое расширение убрать, чтоб оно не перехватывало формы.
52 — 13.02.22 — 11:22
(51) попробую
53 — 13.02.22 — 11:22
добавил код в основную конфигурацию, работает
54 — 13.02.22 — 11:37
(48) не на самой последней, но все-таки на 18-ой
Глючить начало после из-за накатывания обновлений конфы. Причем, прикольно так :
— ставишь на старый релиз конфы самый ближний к нему (чтоб режим совместимости не менялся) — глюков не появляется.
— ставишь любой последующий релиз — не появляется
— как ставишь такой, где меняется режим совместимости конфы с 8.3.14 на 8.3.16 — ломается.
А если сразу ставишь новую платформу, а только после этого начинаешь обновлять конфы — уже не ломается.
Но и еще от греха подальше, я все расширения, в которых были хоть малейшие сомнения, пересобрал заново.
Но это уже было дополнительной перестраховкой. Глючить начинало без учета того, есть там расширения или нет. Именно в серверном режиме. Не в файловом.
55 — 13.02.22 — 12:02
(51) создал новое расширение, так же не работает «Не найдено поле отбора Ответственный»
56 — 13.02.22 — 12:06
есть еще варианты ?
57 — 13.02.22 — 12:11
(54) так новые релизы БП требуют строго последней 18( если из 18ых)
у нас всё на 18ой, перевёл всех на последнюю 18ую, все обновились — вроде всё норм
58 — 13.02.22 — 12:24
(57) Открой код и посмотри. В коде типовых требования «строго последней 18-го релиза» нет.
Поэтому наступили на эти грабли. После топтания по этим граблям приняли решение взамен ветки 18 поставить ветку 20 и работать уже на ней.
Т.е. перескочить через глючные релизы платформы. Если повезет. Пока повезло. Надолго или нет — хз.
Не исключаю вероятность, что перескочить глючный релиз можно было попытаться оставаясь в пределах 18-ой ветки.
Но отвращение к смене релизов, вообще, а к 18-ой ветке, в частности, перебороть не смогли.
59 — 13.02.22 — 12:47
закоментировал
//ЗапрещенныеВОтбореПоля = Новый Массив;
//ЗапрещенныеВОтбореПоля.Добавить(«Ответственный»);
//ЗапрещенныеВОтбореПоля.Добавить(«Ссылка»);
//Список.УстановитьОграниченияИспользованияВОтборе(ЗапрещенныеВОтбореПоля);
расширение заработало
60 — 13.02.22 — 12:48
вопрос к знатокам, как теперь закрыть доступ пользователям, чтобы у них не было возможности редактировать настройки?
61 — 13.02.22 — 13:03
все разобрался, благодарю
62 — 13.02.22 — 14:43
(61) для счастливого конца — отпиши здесь
63 — 13.02.22 — 15:22
(62) для сабжа достаточно:
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, «Ответственный», ПользователиКлиентСервер.ТекущийПользователь());
при программно установленном отборе по полю «Ответственный», у пользователя нет возможности изменить отбор по этому полю, но есть ньюансы, завтра буду смотреть
64 — 13.02.22 — 15:23
правильнее Нюансы ))
Новый1сник2
65 — 13.02.22 — 15:29
(64) значит буду смотреть Нюансы))
Ошибка записи! Не установлен отбор по регистратору
При записи последовательности после обновления конфигурации выходит:
Ошибка записи! Не установлен отбор по регистратору (Последовательность: Партионный учет (управленческий))
Код такой, стандартный:
НаборЗаписейПоследовательности = Последовательности.ПартионныйУчет.СоздатьНаборЗаписей();
НаборЗаписейПоследовательности.Отбор.Регистратор.Установить(Ссылка);
НоваяЗапись = НаборЗаписейПоследовательности.Добавить();
НоваяЗапись.Период = Дата;
НоваяЗапись.Регистратор = Ссылка;
НаборЗаписейПоследовательности.Записать();
Причина
Документ не типовой, соответственно отсутствует в списке последовательности:
- Заходим в нужную последовательность на вкладку «Использование»
- Нажимаем кнопку «Редактировать»
- Ставим флажок на новом документе
- OK
Применение изменений потребует монопольного режима
Реклама нужна товарам, так как они:
— мало чем отличаются друг от друга;
— большинству людей не нужны.
Содержание:
1. Фиксированные настройки в отчёте
2. Ошибка «Невозможно применить фиксированные настройки. Пересекаются элементы отбора»
1. Фиксированные настройки в отчёте
С понятием фиксированных настроек пользователь 1С:Предприятия встречается при использовании отчётов и при работе с формами списка или с формами выбора.
Рассмотрим вариант в отчётах, фиксированные настройки в 1С Предприятие обычно служат для того, чтобы оградить отчёт от изменений, которые могли бы быть внесены в него при изменении параметров обычных и пользовательских настроек.
При включении в конфигурации разработчиком определённого элемента настройки, такого как отбор или условное оформление, в число пользовательских настроек, такой элемент становится доступен к использованию при работе в режиме 1С:Предприятия. При этом обычные настройки – доступные к изменению из варианта отчёта – будут замещены пользовательскими настройками, если те, в свою очередь, были определены.
Итак, фиксированные настройки представляют собой некоторые предопределённые на этапе внедрения и разработки настройки, которые будут иметь приоритет над другими настройками, в том числе пользовательскими, даже если те установлены явно.
2. Ошибка «Невозможно применить фиксированные настройки. Пересекаются элементы отбора»
При работе со списками (документов), формами выбора также возможно произвести отбор, используя меню <Ещё> <Настроить список…>. Иногда пользователь может встретиться с сообщением об ошибке, в котором будет говориться о фиксированных настройках:
«Невозможно применить фиксированные настройки. Пересекаются элементы отбора».
Дело в том, что во время открытия формы происходит передача отбора в данном виде параметра, однако в случае, когда на форме уже имеется созданный в пользовательском режиме отбор, а сами отборы при этом пересекаются, выдаётся ошибка Пересекаются элементы отбора.
Для её устранения можно воспользоваться механизмом очистки пользовательских настроек, так, например, для конфигурации 1С 8.3 Управление Торговлей 11, это можно сделать через меню <Администрирование> — <Настройки пользователей и прав> – <Очистка настроек>. Недостатком данного способа является то, что при установлении пользователем новых пересекающихся элементов отбора с тем, который заложен в фиксированных настройках, ошибка может возникнуть снова.
Другой способ устранения «Невозможно применить фиксированные настройки. Пересекаются элементы отбора» потребует визита в Конфигуратор, однако он позволит устранить появление этой проблемы в следующий раз. Потребуется найти форму списка или форму выбора после открытия и где конкретно выходит текущая ошибка «Невозможно применить фиксированные настройки. Пересекаются элементы отбора», далее в свойствах списка задать значение «ЛОЖЬ» для поля «АвтоматическоеСохранениеПользовательскихНастроек».
Специалист компании «Кодерлайн»
Колесников Дмитрий
открытие формы выбора с отбором |
Я |
falselight
02.12.16 — 12:41
есть перечисление, оно задано реквизиту справочника
есть реквизит у этого справочника, типа другого справочника
где так же есть реквизит типа перечисления
как при открытии формы справочника, устанавливать отбор элементов
в форме выбора равному значению перечисления?
DrShad
1 — 02.12.16 — 12:43
присвоить отбору значение
Ёпрст
2 — 02.12.16 — 12:43
Если смотреть сбоку, то сверху кажется, что снизу ничего не видно
falselight
3 — 02.12.16 — 12:45
(1) средствами свойств конфигурации?
falselight
4 — 02.12.16 — 12:50
или кодом накладывать?
DrShad
5 — 02.12.16 — 12:53
кодом конечно, программа сама не знает чего ты хочешь
DrShad
6 — 02.12.16 — 12:54
можешь в типовых посмотреть как открываются формы выбора программно, глядишь и наткнешься на установку отбора
falselight
7 — 02.12.16 — 13:38
почему может ругаться на такую конструкцию, не соответсвие типов
&НаКлиенте
Процедура ДежурныйНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗначениеОтбора = Новый Структура(«ЭксплуатационныйРайон», Объект.ЭксплуатационныйРайон);
ПараметрыВыбора = Новый Структура(«Отбор», ЗначениеОтбора);
ОткрытьФорму(«Справочник.Дежурный.ФормаВыбора», ПараметрыВыбора, Элемент);
КонецПроцедуры
DrShad
8 — 02.12.16 — 13:41
а такой отбор точно есть в форме выбора?
falselight
9 — 02.12.16 — 13:48
(8) подскажите пожалуйста, где это посмотреть?
falselight
10 — 02.12.16 — 13:51
(8) видимо нет, взял пример, но не знаю как его приделать
SergTheGreat
11 — 02.12.16 — 13:58
(9) Напиши коротенький пример, без туманных намеков как в (0).
falselight
12 — 02.12.16 — 14:09
(11) я сделал как в примере (7)
у формы создал параметр «Отбор»
falselight
13 — 02.12.16 — 14:10
(12) у формы владельца есть реквизит перечисление
у формы выбора есть параметр отбор типа этого перечисления
есть реквизит типа этого перечисления у подчиненного справочника
Lexey_
14 — 02.12.16 — 14:10
(7) из-за совпадения имени переменной ПараметрыВыбора с параметром формы
Lexey_
15 — 02.12.16 — 14:13
(7) вообще, в подробном тексте ошибки всё написано, но ты за 10 лет так и не научился ни читать его, ни копировать на Мисту
falselight
16 — 02.12.16 — 14:16
(15) от туда не перенесешь его
Lexey_
17 — 02.12.16 — 14:17
(16) откуда?
falselight
18 — 02.12.16 — 14:21
(17) текст ошибки с сервера
Lexey_
19 — 02.12.16 — 14:22
(18) нет ничего невозможного для человека с интеллектом
falselight
20 — 02.12.16 — 14:34
(19) ну ошибка называется «несоответствие типов»
на строке ПараметрыВыбора = Новый Структура(«Отбор», ЗначениеОтбора);
чт опоправить, до меня не доходит (((
falselight
21 — 02.12.16 — 14:37
(11) просто нужно открыть форму выбора справочника с отбором
Lexey_
22 — 02.12.16 — 14:40
(20) в (14) написано, думай
falselight
23 — 02.12.16 — 14:45
(22) ну понятно, я создал параметр формы отбор
и в строке (20) тоже отбор
так он же и должен совпадать?
как иначе то?????
falselight
24 — 02.12.16 — 14:58
(22) ну изменю значение параметра на другое, попробую
непомогло
falselight
25 — 02.12.16 — 15:08
ПОДСКАЖИТЕ В ЧЕМ ДЕЛО?
Lexey_
26 — 02.12.16 — 15:10
(25) еще раз: ошибка возникает из-за того, что имя переменной ПараметрыВыбора совпадает с именем параметра формы ПараметрыВыбора
falselight
27 — 02.12.16 — 15:35
(26) я не могу сделать, ты можешь сказать как нужно поправить?
falselight
28 — 02.12.16 — 15:41
везде одинаковые примеры
ЗначениеОтбора = Новый Структура(«Контрагент», «ОАО Рога и копыта»);
ПараметрыВыбора = Новый Структура(«Отбор», ЗначениеОтбора);
ОткрытьФорму(«Документ.ПриходнаяНакладная.ФормаСписка», ПараметрыВыбора);
falselight
29 — 03.12.16 — 07:38
ребят продолжаю, развернул маленькую конфигурацию у себя на компе
имитирую этот момент, ошибка та же, подскажите как исправить???
{Справочник.Сотрудники.Форма.ФормаЭлемента.Форма(6)}: Ошибка при установке значения атрибута контекста (ПараметрыВыбора)
ПараметрыВыбора = Новый Структура(«Отбор», ЗначениеОтбора);
по причине:
Несоответствие типов
&НаКлиенте
Процедура ВидРубкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗначениеОтбора = Новый Структура(«СпособРубки», Объект.СпособРубки);
ПараметрыВыбора = Новый Структура(«Отбор», ЗначениеОтбора);
ОткрытьФорму(«Справочник.ВидыРубок.ФормаВыбора», ПараметрыВыбора, Элемент);
КонецПроцедуры
falselight
30 — 03.12.16 — 07:40
Уважаемый Lexey_, говорит что дело в имени переменной ПараметрыВыбора.
Как исправить, подскажите кто понимает?
Я всяко разно пробовал. Причем во всех примерах все так же, у меня не работает ((((
falselight
31 — 03.12.16 — 07:46
Согласно (26) исправил, понимая буквально замечание, на
&НаКлиенте
Процедура ВидРубкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗначениеОтбора = Новый Структура(«СпособРубки», Объект.СпособРубки);
ПараметрыВыбора1 = Новый Структура(«Отбор», ЗначениеОтбора);
ОткрытьФорму(«Справочник.ВидыРубок.ФормаВыбора», ПараметрыВыбора1, Элемент);
КонецПроцедуры
Но сейчас нет ошибки, но и отбор не устанавливается в форме выбора справочника, подскажите почему?
falselight
32 — 03.12.16 — 07:48
и так пробую
&НаКлиенте
Процедура ВидРубкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗначениеОтбора = Новый Структура(«СпособРубки», Объект.СпособРубки);
//ПараметрыВыбора1 = Новый Структура(«Отбор», ЗначениеОтбора);
//ОткрытьФорму(«Справочник.ВидыРубок.ФормаВыбора», ПараметрыВыбора1, Элемент);
ОткрытьФорму(«Справочник.ВидыРубок.ФормаВыбора», ЗначениеОтбора, Элемент);
КонецПроцедуры
falselight
33 — 03.12.16 — 07:50
нужно ли как то саму форму дорабатывать на какие либо параметры
используя (31) или (32)
МимохожийОднако
34 — 03.12.16 — 07:58
Возьми фрагмент «НачалоВыбора(» и полным поиском в типовой конфигурации найдешь кучку примеров
falselight
35 — 03.12.16 — 07:59
(34) да я в интернете много примеров нахожу
все они подобные, но не работает у меня (((((
falselight
36 — 03.12.16 — 07:59
(34) в конфигурации какой? в УТ 11.3 попробую поискать
МимохожийОднако
37 — 03.12.16 — 08:01
(35) Так бывает…
(36) в типовой или в своей, если типовая.
falselight
38 — 03.12.16 — 08:01
(37) в которой я стал делать пример
там вообще пара объектов, не доделанные
falselight
39 — 03.12.16 — 08:10
реально не понимаю (((( все подобно везде!!!!
falselight
40 — 03.12.16 — 08:13
не работает отбор (
falselight
41 — 03.12.16 — 08:20
СтандартнаяОбработка = Ложь;
ЗначениеОтбора = Новый Структура(«СпособыРубок», Объект.СпособРубки);
ПараметрыВыбора1 = Новый Структура(«Отбор», ЗначениеОтбора);
ОткрытьФорму(«Справочник.ВидыРубок.ФормаВыбора», ПараметрыВыбора1, Элемент);
вот так сработало, важно было в значении отбора, установить название параметра таким же как у справочника
EvgeniuXP
42 — 03.12.16 — 13:22
Посмотри курсы, чтобы множество вопросов у тебя отпало — и с энономишь кучу времени себе и другим.
Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
Несоответствие типов 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С в Синтаксис-Помощнике!
Заказать консультацию
По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.
Построитель
Автор Альбина, 16 мар 2010, 17:41
0 Пользователей и 1 гость просматривают эту тему.
Всем добрый день!
Помогите разобраться, пожалуйста, с возникшей проблемой.
Суть:
Формируется отчёт с помощью построителя с отбором по дате.
Необходимо проверить роль активного пользователя, и если это не «Администратор», то добавить отбор по сотруднику(по текущему пользователю) без возможности снятия этого отбора.
Добавляю отбор так:
Сотрудник = ПараметрыСеанса.ТекущийПользователь;
Если (НЕ РольДоступна("Администратор"))
Тогда
ОтборСотрудник = ПостроительОтчетаТрудозатраты.Отбор.Добавить("Сотрудник");
ОтборСотрудник.Значение = Сотрудник;
ОтборСотрудник.ВидСравнения = ВидСравнения.Равно;
ПостроительОтчетаТрудозатраты.Отбор.Сотрудник.Использование = Истина;
Выдаёт ошибку:
Ошибка при установке значения атрибута контекста (Значение): Неверный тип значения
ОтборСотрудник.Значение = Сотрудник;
Пожалуйста,кто-нибудь подкиньте идейку.Мои идеи уже исчерпали себя(((((
Заранее,спасибо
проверь значения (ПараметрыСеанса.ТекущийПользователь)
Проверила,Там всё в норме.
а какой тип у «ОтборСотрудник.Значение»?
Что значит в норме???? Типы через отладчик посмотри. тип «ПараметрыСеанса.ТекущийПользователь» и тип «ОтборСотрудник.Значение»
— они разные у тибя
я не понимаю, как мне их к одинаковому типу привести.
спасибо всем большое)Всё заработало)
)) хоросе
Теги:
- Форум 1С
- ►
Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 - ►
Конфигурирование, программирование в 1С Предприятие 8 - ►
Построитель
Похожие темы (5)
Поиск
&НаКлиенте Он стал выдавать ошибку. {Документ.УведомлениеКлиентТаможеннаяПроцедура.Форма.ФормаДокумента.Форма}: Ошибка при установке значения атрибута контекста (ПараметрыВыбора) ПараметрыВыбора = Новый Структура(«Отбор», ЗначенияОтбора); по причине: СписКлиентДТО имеет тип массив из СправочникСсылка.Партнеры Подскажите в чем может быть дело.
переименуй переменную ПараметрыВыбора
теперь так надо отбор делать? раньше то у меня работал этот код
см и Отбор можно использовать, но он считается устаревшим параметром, оставлен только для совместимости..
&НаКлиенте И ошибка теперь {Документ.УведомлениеКлиентТаможеннаяПроцедура.Форма.ФормаДокумента.Форма}: Ошибка при установке значения атрибута контекста (ПараметрыВыбора) ПараметрыВыбора = Новый Структура(«ФиксированныеНастройки», ФиксированныеНастройки); по причине: Несоответствие типов
как обычно те же грабли ))) Спасибо огромное…
Вот то что взлетело, но отбор списком не выводит &НаКлиенте Процедура КлиентНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СписКлиентДТО — список значений со ссылками на справочник партнеры
если список ссылок помещать в массив, то тоже не работает
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
1 февраля, 2017
21 апреля, 2017
Дано
- 1С конфигурация бухгалтерия предприятия 2.0
- Ошибка печати ПКО (приходный кассовый ордер):
{ОбщаяФорма.ФормаПечати.Форма(18)}: Ошибка при установке значения атрибута контекста ЭлементыФормы.ПолеДокумента.ПолеСверху по причине: Несоответствие типов |
Анализ проблемы
На первый взгляд все ужасно:
- в конфигураторе видно, что система пытается выполнить строчку кода:
ЭлементыФормы.ПолеДокумента.ПолеСверху = ПечатныйДокумент.ПолеСверху; |
- в отладке видно, что обе переменные типа “Число”,
- синтакс-помощник говорит что:
ТабличныйДокумент (SpreadsheetDocument) ПолеСверху (TopMargin) Использование: Чтение и запись. |
То есть ПолеСверху доступно для записи и обе переменные типа число и все тут корректно, но система говорит “Несоответствие типов” – полный бред.
Решение
На решение проблемы натолкнула фраза “Ошибка при установке значения атрибута контекста”, значит что-то не так с доступом.
Оказалось в базе нет ни одного пользователя и работа осуществлялась под пользователем НеАвторизован. После создания пользователя с необходимыми правами все заработало.
Дополнено 2017.04.10
Проблема повторилась, но уже при печати РТУ и с использованием уже настроенной учетной записи.
Помогло создание нового пользователя с такими же правами доступа. То есть нового создаем, старого удаляем и после этого все работает.
Ошибка Несоответствие типов в 1С 8.3 связана с передачей параметров в командах и запросах 1С.
Изучив статью, вы:
- ознакомитесь с порядком исправления ошибки в запросе и командах 1С;
- получите два внешних отчета, демонстрирующих ошибочный и правильный коды.
Содержание
- Несоответствие типов в 1С 8.3
- Ошибка в таблице запроса
- Исправление ошибки в команде 1С
Как правило, параметры в командах 1С идут в определенной очередности и ссылаются на данные конкретного типа. Ошибка в указании параметра не на том месте или не того типа приводит к появлению сообщения о несоответствии типов:
Поиск
&НаКлиенте Он стал выдавать ошибку. {Документ.УведомлениеКлиентТаможеннаяПроцедура.Форма.ФормаДокумента.Форма}: Ошибка при установке значения атрибута контекста (ПараметрыВыбора) ПараметрыВыбора = Новый Структура(«Отбор», ЗначенияОтбора); по причине: СписКлиентДТО имеет тип массив из СправочникСсылка.Партнеры Подскажите в чем может быть дело.
переименуй переменную ПараметрыВыбора
теперь так надо отбор делать? раньше то у меня работал этот код
см и Отбор можно использовать, но он считается устаревшим параметром, оставлен только для совместимости..
&НаКлиенте И ошибка теперь {Документ.УведомлениеКлиентТаможеннаяПроцедура.Форма.ФормаДокумента.Форма}: Ошибка при установке значения атрибута контекста (ПараметрыВыбора) ПараметрыВыбора = Новый Структура(«ФиксированныеНастройки», ФиксированныеНастройки); по причине: Несоответствие типов
как обычно те же грабли ))) Спасибо огромное…
Вот то что взлетело, но отбор списком не выводит &НаКлиенте Процедура КлиентНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СписКлиентДТО — список значений со ссылками на справочник партнеры
если список ссылок помещать в массив, то тоже не работает
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
1 февраля, 2017
21 апреля, 2017
Дано
- 1С конфигурация бухгалтерия предприятия 2.0
- Ошибка печати ПКО (приходный кассовый ордер):
{ОбщаяФорма.ФормаПечати.Форма(18)}: Ошибка при установке значения атрибута контекста ЭлементыФормы.ПолеДокумента.ПолеСверху по причине: Несоответствие типов |
Анализ проблемы
На первый взгляд все ужасно:
- в конфигураторе видно, что система пытается выполнить строчку кода:
ЭлементыФормы.ПолеДокумента.ПолеСверху = ПечатныйДокумент.ПолеСверху; |
- в отладке видно, что обе переменные типа “Число”,
- синтакс-помощник говорит что:
ТабличныйДокумент (SpreadsheetDocument) ПолеСверху (TopMargin) Использование: Чтение и запись. |
То есть ПолеСверху доступно для записи и обе переменные типа число и все тут корректно, но система говорит “Несоответствие типов” – полный бред.
Решение
На решение проблемы натолкнула фраза “Ошибка при установке значения атрибута контекста”, значит что-то не так с доступом.
Оказалось в базе нет ни одного пользователя и работа осуществлялась под пользователем НеАвторизован. После создания пользователя с необходимыми правами все заработало.
Дополнено 2017.04.10
Проблема повторилась, но уже при печати РТУ и с использованием уже настроенной учетной записи.
Помогло создание нового пользователя с такими же правами доступа. То есть нового создаем, старого удаляем и после этого все работает.
Ошибка Несоответствие типов в 1С 8.3 связана с передачей параметров в командах и запросах 1С.
Изучив статью, вы:
- ознакомитесь с порядком исправления ошибки в запросе и командах 1С;
- получите два внешних отчета, демонстрирующих ошибочный и правильный коды.
Содержание
- Несоответствие типов в 1С 8.3
- Ошибка в таблице запроса
- Исправление ошибки в команде 1С
Как правило, параметры в командах 1С идут в определенной очередности и ссылаются на данные конкретного типа. Ошибка в указании параметра не на том месте или не того типа приводит к появлению сообщения о несоответствии типов:
Исправляется подобная ошибка восстановлением правильной последовательности в строке параметров команды или указанием нужного типа данных Ошибка 1С Несоответствие типов наиболее часто появляется при написании запросов и при некорректном указании параметров команды.
Рассмотрим причины ее возникновения и исправление на конкретном примере.
Ошибка в таблице запроса
При чтении цен номенклатуры по регистру сведений Цены номенклатуры из внешнего отчета появляется ошибка Неоднозначное поле «ТипЦен.Номенклатура».
В окне сообщений уже указано место возникновения ошибки: Параметр номер «1» в строке Регистр сведений.ЦеныНоменклатуры.СрезПоследних(&&ТипЦен,) КАК ЦеныНоменклатурыСрезПоследних.
Для исправления ошибки необходимо открыть отчет в Конфигураторе 1С и найти в модуле формы указанную строчку.
Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1С:
Из описания видно, что команда СрезПоследних имеет 2 параметра:
- Период;
- Отбор.
Если параметр Период не указывается, место в команде остается пустым, а через запятую указывается параметр отбора, в нашем случае: ТипЦен. Исправленная команда выглядит следующим образом: СрезПоследних(, ТипЦен = &ТипЦен ).
После исправления команды запустите отчет в 1С по кнопке Главное меню — Файл — Открыть:
Теперь отчет формируется правильно!
Скачать внешний отчет Вывод списка цен номенклатуры
Исправление ошибки в команде 1С
При поиске ссылок на контрагента в отчете 1С появляется ошибка Несоответствие типов (параметр номер 2):
1С сообщает место ошибки — Параметр номер 2 при нажатии кнопки ERROR.
Для ее исправления необходимо открыть отчет в Конфигураторе 1С и найти в модуле формы строчку с командой НайтиПоСсылкам.
Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1С:
Из описания идно, что команда НайтиПоСсылкам имеет 4 параметра:
- СписокСсылок;
- ОбластьПоиска;
- ВключитьОбъекты;
- ИсключитьОбъекты.
Параметр ОбластьПоиска имеет тип «массив», а в нашем примере указано число 1: НайтиПоСсылкам(МассивПоиска, 1, , МассивИсключений). Область поиска — необязательный параметр, поэтому исправленная команда может выглядеть следующим образом: НайтиПоСсылкам(МассивПоиска, , , МассивИсключений).
После исправления команды запустите внешний отчет в 1С по кнопке Главное меню — Файл — Открыть:
Теперь команда поиска ссылок на контрагента отрабатывает правильно.
Скачать внешний отчет Поиск ссылок на контрагента
Вот так можно получить ошибку 1С Несоответствие типов в 1С, поэтому контролируйте правильность указания параметров в запросах и командах 1С в Синтаксис-Помощнике!
См. также:
- Неоднозначное поле в запросе
- Исправление технических ошибок при работе с 1С:Бухгалтерия: для начинающих и опытных пользователей
- Метод объекта не обнаружен
- Неизвестный идентификатор формы
- Переменная не определена
Если Вы еще не подписаны:
Активировать демо-доступ бесплатно →
или
Оформить подписку на Рубрикатор →
После оформления подписки вам станут доступны все материалы Бухэксперт8, записи поддерживающих эфиров и вы сможете задавать любые вопросы по программе 1С.
Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно