|
|||
| Лунтик
19.06.18 — 15:55 |
Если поставить в конфигураторе в свойствах ПоляВвода >»Отбор.Производитель(Элементы.Товары.Текущие данные.Производитель)»
Ошибка |
||
| Лунтик
1 — 19.06.18 — 16:17 |
так некрасиво получилось.. как здесь цитаты оформляются? |
||
| ам794123
2 — 19.06.18 — 16:26 |
СвязьПараметраВыбора (ChoiceParameterLink)
Только чтение.
Тип: Строка. |
||
| ам794123
3 — 19.06.18 — 16:27 |
«Элементы.Товары.ТекущиеДанные.Производитель» — 2 точки |
||
| perester
4 — 19.06.18 — 16:29 |
как то делал обработку с программным формированием тз, у меня тип такого получилось
НоваяКолонка = Элементы.Добавить(«ТЗХарактеристика», Тип(«ПолеФормы»), Элементы.ТаблицаЗначений); |
||
| Лунтик
5 — 19.06.18 — 16:38 |
(4) Может суть в том, что у вас сначала связиПараметровВыбора обнуляются? Сейчас попробую. Как оно вообще может не работать, если тупо скопировано из конфигуратора??? |
||
| perester
6 — 19.06.18 — 16:42 |
(5) кажется так и было |
||
| hhhh
7 — 19.06.18 — 17:00 |
(5) побуквенное сравнение показывает: у вас Новый ПараметрВыбора у него Новый СвязьПараметраВыбора |
||
|
Лунтик 8 — 19.06.18 — 17:24 |
(7) Точно! Точно! Точно! Как вы увидели с полувзгляда?? Спасибо огромное) |
![]() |
|
TurboConf — расширение возможностей Конфигуратора 1С |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
1с связи параметров выбора не работает
Автор: Admin Сентябрь 25, 2019 0 комментария
Продолжаем наполнять рубрику ‘Джуниор 1с’ полезными заметками. Сегодня у нас так на рассмотрении такое простое свойства элемента формы как ‘Связи параметров выбора’ (ChoiceParameterLinks), которое облегчает жизнь пользователю при выборе значений реквизита формы.
По простому – это свойство отвечает за формирование списка элементов в форме выбора по установленном отбору. Рассмотрим простой пример.
У нас есть справочник [Футбольные клубы] и у него есть реквизит [Страна]:
Пользователь хочет, что бы при выборе футбольного клуба в обработке, появлялся только список из клубов, указанной ранее страны:
Делается это очень просто через свойство элемента формы ‘Клуб’ / ‘Связи параметров выбора’:
Программа нам уже сама подсказывает, через какие поля мы сможем сделать нужный нам отбор. В данном примере делаем отбор через реквизит формы ‘Страна’:
По-простому: указываем какой отбор мы будем применять в списке выбора и реквизит, откуда отбор возьмет необходимое значение. Параметр ‘Режим изменения связанного значения’ определяет, будет ли при изменении реквизита отбора ‘Страна’ очищаться значение в реквизите ‘Клуб’.
Так же стоит заметить что здесь мы можем задать одновременно несколько необходимых нам отборов!
Если конфигурация типовая и не хочется сильно напрягаться с обновлением форм, то эти связи параметров выбора можно сделать и программно:
а еще web-программист, разработчик android и просто толковый ИТшник 😉
Если на форме два поля, один из которых подчинён другому по структуре данных, то часто бывает необходимо ограничить ввод данных по владельцу. Например, есть поле Партнёр и Вид цены поставщика.
Для того, чтобы в поле Вид цены поставщика автоматически выбирались только данные выбранного Партнера, необходимо в свойстве СвязиПараметровВыбора поля Вид цены поставщика сделать настройку Отбор.Владелец(Объект.Партнер).
Проблема в том, что это не совсем очевидно. Ведь в дереве свойств конфигуратора в это поле нельзя ввести данные, это нужно делать через вспомогательную форму.

Связи параметров выбора
Теперь необходимо в колонке Имя вместо Партнер ввести текст Отбор.Владелец. Задача выполнена!
Подчиненные владельцу реквизиты — элементы справочников, которые должны выбираться пользователем в контексте элемента-владельца. В тестовом примере у нас будут справочники «Контрагенты», «Договора» и документ «ПриходнаяНакладная» с реквизитами «Контрагент» и «Договор».
Cправочник «Договора» подчинен справочнику «Контрагенты»:

Для документа «ПриходнаяНакладная» в свойствах реквизита «Договор» выставляем «Связи параметров выбора: Отбор.Владелец(Контрагент)»

Для этого по нажатию […] выбираем в списке «Связи параметров выбора» реквизит «Контрагент»:

В таблице Имя-Реквизит-Режим изменения должно стоять: Отбор.Владелец — Контрагент — Очищать

Если в поле «Имя» стоит что-то другое, нужный вариант можно выбрать из выпадающего списка:
Источник
Связи параметров выбора программно
Добрый день, коллеги!
Вопрос по установки связи параметров выбора не в свойствах реквизита, а в коде. Как я делаю, написал процедуру:
И вставляю при открытии формы. Но при открытии он пишет ошибку:
Ошибка при установке значения атрибута контекста (СвязиПараметровВыбора)
Элементы.НоменклатураЗаказаПереработчика.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив);
по причине:
Недопустимое значение
В чем может быть проблема?
Заранее спасибо
(5) в серверный модуль. Взял из бп 3.0, увы вызова там нигде нет.
Вот попробовал сперва очистить параметры, а потом добавить как в Вашем примере, вроде установилось
(1) Судя по описанию там «Фиксированный массив из элементов типа СвязьПараметраВыбора.»
(5) в серверный модуль. Взял из бп 3.0, увы вызова там нигде нет.
Вот попробовал сперва очистить параметры, а потом добавить как в Вашем примере, вроде установилось
В ERP ХарактеристикаНоменклатуры может быть подчинена как самой Номенклатуре, так и быть общей для ВидаНоменклатуры, который является реквизитом Номенклатуры. В последнем случае связь с владельцем получается не прямая, и использовать «Отбор.Владелец» не имеет смысла. Попробуйте вместо «Отбор.Владелец» указать «Номенклатура». В этом случае в ФормеВыбора ХаракеристикиНоменклатуры в процедуре ПриСозданииНаСервере выполняется анализ, кто является настоящим владельцем Характеристики и устанавливается соответствующий отбор.
Если Параметры.Отбор.Свойство(«Владелец») Тогда
// Перенесем «стандартный» отбор по владельцу в свойство ПараметрВладелец
Параметры.ПараметрВладелец = Параметры.Отбор.Владелец;
Параметры.Отбор.Удалить(«Владелец»);
КонецЕсли;
Если Параметры.Свойство(«ПараметрВладелец», ВладелецХарактеристик) И ЗначениеЗаполнено(ВладелецХарактеристик) Тогда
ПодборТоваровСервер.УстановитьОтборПоВладельцуХарактеристик(ЭтаФорма);
ИначеЕсли Параметры.Свойство(«Номенклатура», Номенклатура) И ЗначениеЗаполнено(Номенклатура) Тогда
Если Справочники.Номенклатура.ПроверитьИспользованиеХарактеристикИПолучитьВладельцаДляВыбо ра(Номенклатура, ВладелецХарактеристик) Тогда
Если ВладелецХарактеристик = Неопределено Тогда
ТекстИсключения = НСтр(«ru = ‘Для данной номенклатуры характеристики не заданы.’»);
ВызватьИсключение ТекстИсключения;
Иначе
ПодборТоваровСервер.УстановитьОтборПоВладельцуХарактеристик(ЭтаФорма);
КонецЕсли;
Иначе
ТекстИсключения = НСтр(«ru = ‘Для данной номенклатуры отключено использование характеристик.’»);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецЕсли;
Источник
Свойство элемента формы ‘СвязиПараметровВыбора’
Автор: Admin 25 сентября, 2019 0 комментария
Продолжаем наполнять рубрику ‘Джуниор 1с’ полезными заметками. Сегодня у нас так на рассмотрении такое простое свойства элемента формы как ‘Связи параметров выбора’ (ChoiceParameterLinks), которое облегчает жизнь пользователю при выборе значений реквизита формы.
По простому – это свойство отвечает за формирование списка элементов в форме выбора по установленном отбору. Рассмотрим простой пример.
У нас есть справочник [Футбольные клубы] и у него есть реквизит [Страна]:
Пользователь хочет, что бы при выборе футбольного клуба в обработке, появлялся только список из клубов, указанной ранее страны:
Делается это очень просто через свойство элемента формы ‘Клуб’ / ‘Связи параметров выбора’:
Программа нам уже сама подсказывает, через какие поля мы сможем сделать нужный нам отбор. В данном примере делаем отбор через реквизит формы ‘Страна’:
По-простому: указываем какой отбор мы будем применять в списке выбора и реквизит, откуда отбор возьмет необходимое значение. Параметр ‘Режим изменения связанного значения’ определяет, будет ли при изменении реквизита отбора ‘Страна’ очищаться значение в реквизите ‘Клуб’.
Так же стоит заметить что здесь мы можем задать одновременно несколько необходимых нам отборов!
Если конфигурация типовая и не хочется сильно напрягаться с обновлением форм, то эти связи параметров выбора можно сделать и программно:
Источник
1с связи параметров выбора не работает
Автор: Admin Сентябрь 25, 2019 0 комментария
Продолжаем наполнять рубрику ‘Джуниор 1с’ полезными заметками. Сегодня у нас так на рассмотрении такое простое свойства элемента формы как ‘Связи параметров выбора’ (ChoiceParameterLinks), которое облегчает жизнь пользователю при выборе значений реквизита формы.
По простому – это свойство отвечает за формирование списка элементов в форме выбора по установленном отбору. Рассмотрим простой пример.
У нас есть справочник [Футбольные клубы] и у него есть реквизит [Страна]:
Пользователь хочет, что бы при выборе футбольного клуба в обработке, появлялся только список из клубов, указанной ранее страны:
Делается это очень просто через свойство элемента формы ‘Клуб’ / ‘Связи параметров выбора’:
Программа нам уже сама подсказывает, через какие поля мы сможем сделать нужный нам отбор. В данном примере делаем отбор через реквизит формы ‘Страна’:
По-простому: указываем какой отбор мы будем применять в списке выбора и реквизит, откуда отбор возьмет необходимое значение. Параметр ‘Режим изменения связанного значения’ определяет, будет ли при изменении реквизита отбора ‘Страна’ очищаться значение в реквизите ‘Клуб’.
Так же стоит заметить что здесь мы можем задать одновременно несколько необходимых нам отборов!
Если конфигурация типовая и не хочется сильно напрягаться с обновлением форм, то эти связи параметров выбора можно сделать и программно:
а еще web-программист, разработчик android и просто толковый ИТшник 😉
Если на форме два поля, один из которых подчинён другому по структуре данных, то часто бывает необходимо ограничить ввод данных по владельцу. Например, есть поле Партнёр и Вид цены поставщика.
Для того, чтобы в поле Вид цены поставщика автоматически выбирались только данные выбранного Партнера, необходимо в свойстве СвязиПараметровВыбора поля Вид цены поставщика сделать настройку Отбор.Владелец(Объект.Партнер).
Проблема в том, что это не совсем очевидно. Ведь в дереве свойств конфигуратора в это поле нельзя ввести данные, это нужно делать через вспомогательную форму.

Связи параметров выбора
Теперь необходимо в колонке Имя вместо Партнер ввести текст Отбор.Владелец. Задача выполнена!
Подчиненные владельцу реквизиты — элементы справочников, которые должны выбираться пользователем в контексте элемента-владельца. В тестовом примере у нас будут справочники «Контрагенты», «Договора» и документ «ПриходнаяНакладная» с реквизитами «Контрагент» и «Договор».
Cправочник «Договора» подчинен справочнику «Контрагенты»:

Для документа «ПриходнаяНакладная» в свойствах реквизита «Договор» выставляем «Связи параметров выбора: Отбор.Владелец(Контрагент)»

Для этого по нажатию […] выбираем в списке «Связи параметров выбора» реквизит «Контрагент»:

В таблице Имя-Реквизит-Режим изменения должно стоять: Отбор.Владелец — Контрагент — Очищать

Если в поле «Имя» стоит что-то другое, нужный вариант можно выбрать из выпадающего списка:
Источник
Связи параметров выбора в 1С
1. Свойство связи параметров выбора в 1С
С появлением механизма управляемых форм в 1С значительно расширились возможности настройки поведения форм и элементов форм прикладных объектов 1С (справочника, документа и пр.).
Формы прикладных объектов — это именно те элементы интерфейса программы, которые видит и с которыми работает пользователь.
Именно это обстоятельство является главным фактором требующего наличие как можно более развитого и гибкого механизма настройки поведения форм прикладных объектов при работе с ними пользователей (в пользовательском режиме, режиме 1С:Предприятие).
И вот начиная с версии платформы 1С 8.3 появилось большое количество настраиваемых свойств у реквизитов объектов метаданных конфигурации, а также реквизитов и элементов управляемых форм.
Зачастую в процессе работы пользователя с формами и элементами форм возникает необходимость ограничивать объем предлагаемых для выбора данных, другими словами, использовать фильтр.
Вот именно одним из таких «фильтров» является свойство «Связи параметров выбора» (Рисунок 1).

Это свойство предназначено для настройки фильтра формы выбора без написания кода программы, т.е. без программирования.
Другими словами, это свойство позволяет указать список реквизитов, которые будут поставлять значения, используемые при выборе значения реквизита, при открытии формы выбора, при отображении списка быстрого выбора и при выполнении ввода по строке.
2. Реквизиты объектов метаданных и элементы формы в 1С 8.3. Разница в использовании свойства «Связи параметров выбора»
Следует отметить, что свойство «Связи параметров выбора» есть и у реквизитов объектов метаданных в 1С (Рисунок 2).

И у элементов формы в 1С 8.3(Рисунок 3)

Разница в использовании этого свойства у реквизита объекта метаданных и элемента формы в том, что в случае использования свойства связи параметров выбора в 1С реквизита, установленные настройки будут распространяться (действовать) во всех формах объекта метаданных (справочника, документа и пр.) у реквизита, где это свойство настроено. В случае же использования этого свойства у элемента формы настройки будут распространяться только на данную форму объекта и в других формах действовать не будут.
В большинстве случаев с методологической точки зрения корректнее настраивать свойство «Связи параметров выбора» у реквизита объекта метаданных.
3. Как использовать свойства связи параметров выбора в 1С. Пример
Одним из типичных и распространенных примеров подобной ситуации является случай, когда после выбора в документе поступления товаров поставщика при последующем выборе договора не нужно выбирать из всех договоров, а необходимо ограничить список только договорами, заключенными именно с этим поставщиком.
Рассмотрим использование свойства связи параметров выбора в 1С на простейшем примере.
Вот данные справочника «Контрагенты» (Рисунок 4).

И соответственно данные справочника «Договоры» (Рисунок 5).

При пустом значении свойства «Связи параметров выбора» (Рисунок 6).

. В режиме 1С:Предприятия в документе «Приходная накладная» при выборе договора отображается полный список договоров, по всем контрагентам (Рисунок 7).

Теперь установим значение свойства «Связи параметров выбора» (Рисунок 8, Рисунок 9, Рисунок 10).



И вот что получаем (Рисунок 11).

Как видно на скрине, после настройки свойства «Связи параметров выбора» список договоров фильтруется по выбранному в документе контрагенту.
При настройке свойства в конфигураторе 1С Связи параметров выбора в форме настройки есть параметр «Режим изменения связанного значения» установленный в значение «Очищать» (Рисунок 12).

При таком параметре в случае изменения или очистки значения поля «Контрагент» значение поля «Договор» тоже будет очищено.
Такие настройки позволяют получить большую достоверность вводимых данных и минимизировать ошибки при вводе данных уменьшая влияние человеческого фактора.
Значения, указанные в данном свойстве, будут переданы в открываемую форму через структуру Параметры передавая их при вызове метода ОткрытьФорму()
4. Связи параметров выбора в 1С программно
Также у элементов формы можно устанавливать и изменять связи параметров выбора в коде 1С программно.
Если рассматривать пример выше, то фрагмент программного кода будет выглядеть так:

Вызывать процедуру установки связи нужно из процедуры:
Источник
|
tarlance0 0 / 0 / 0 Регистрация: 02.11.2021 Сообщений: 3 |
||||
|
1 |
||||
|
1C 8.x Заполнение списка выбора с условием в УФ02.11.2021, 13:49. Показов 1112. Ответов 5 Метки нет (Все метки)
Здравствуйте. Я новичок, передо мной стоит такая задача. Есть реквизиты табличной части документа ВидДефекта (ссылка на справочник) и Операция (ссылка на перечисление). Нужно сделать выпадающий список выбора в поле реквизита ВидДефекта, который будет отбирать данные по текущему значению поля Операции . ( Если в Операции стоит «Лазер» то в выпадающем списке будут представлены дефекты по такой операции). Формы управляемые. РежимВыбораИзСписка = Истина + Кнопка выпадающего списка.
Собственно список выводит правильные значения по условию. Только есть серьезные проблемы:
Думаю проблемы взаимосвязаны друг с другом, но сколько не сидел, решить не смог..
__________________
0 |
|
1785 / 1209 / 438 Регистрация: 16.01.2015 Сообщений: 5,322 |
|
|
02.11.2021, 16:44 |
2 |
|
tarlance0, Смотри Параметры выбора и Связи параметров выбора
1 |
|
Dethmontt |
|
03.11.2021, 00:46
|
|
Не по теме:
Смотри Параметры выбора и Связи параметров выбора добавлю еще.
0 |
|
0 / 0 / 0 Регистрация: 02.11.2021 Сообщений: 3 |
|
|
03.11.2021, 10:57 [ТС] |
4 |
|
polax, Dethmontt, спасибо большое ребята! Отбор правильно работает, код убрал, только вот мне нужно чтобы при незаполненном поле Операция список выводил все значения справочника. С пустым полем он даже справочника не видит (при наборе первых букв даже подсказок нет) ПараметрыВыбора не решают особо, весь отбор через СвязиПараметровВыбора. Пробовал как-то настроить Выбор, пытался программно задать условие, но не вышло. Как-то можно реализовать? Миниатюры
0 |
|
tarlance0 0 / 0 / 0 Регистрация: 02.11.2021 Сообщений: 3 |
||||
|
03.11.2021, 17:29 [ТС] |
5 |
|||
|
polax, Dethmontt, Пробую писать код, который отключает СвязьПараметровВыбора при незаполненном значении поля Операции:
Результат: При введенном значении список формируется нормально, но при незаполненном значении после прохода по коду выдает ошибку:
0 |
|
Dethmontt Модератор
3697 / 2897 / 569 Регистрация: 10.03.2011 Сообщений: 11,398 Записей в блоге: 1 |
||||
|
03.11.2021, 19:14 |
6 |
|||
1 |
22 ноября, 2021
27 июля, 2022
Сегодня опишу такую вещь как “связи параметров выбора” (СвязиПараметровВыбора). Много раз пользовался этим механизмом в конфигураторе, настраивая связи.
Но как всегда полет мысли пользователя и моя погоня за удобством работы пользователя в форме провели к тому, что данный функционал нужно было использовать программно.
Вот простой пример кода который иллюстрирует программное использование:
|
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда НоваяСвязь = Новый СвязьПараметраВыбора(«Отбор.Контрагент», «Объект.Контрагент»); НовыйМассив = Новый Массив(); НовыйМассив.Добавить(НоваяСвязь); НовыеСвязи = Новый ФиксированныйМассив(НовыйМассив); Элементы.Маршрут.СвязиПараметровВыбора = НовыеСвязи; КонецЕсли; |
Как видно, ничего сложного в этом коде нет. Главное правильно без ошибок указать имена реквизитов и их путь в конструкторе СвязьПараметраВыбора.
Программное использование позволит более гибко использовать параметры выбора, например если их использование необходимо не всегда, а только в зависимости от заполнения других реквизитов формы.
Так же можно использовать более сложные конструкции и даже использовать те реквизиты, которые не доступны для выбора в режиме конфигуратора.
Это самый просто пример, но он позволит начать изучение темы.
Совместно с использованием заполнения списка выбора этот код позволяет сделать динамические ограничения ввода и фильтрацию в поле ввода в режиме ввода текста, режиме выбора из списка и выбора в форме выбора.

