ошибка при использовании функции ПредопределенноеЗначение |
Я |
01.03.19 — 10:05
Переношу обработку из УТ 11.1 в УТ 11.4
Перестал работать код
ТипыНоменклатуры.Добавить(ПредопределенноеЗначение(«Перечисления.ТипыНоменклатуры.Товар»));
Ошибка:
{ВнешняяОбработка.УстановкаЦенНоменклатуры.Форма.Форма.Форма(2833)}: Ошибка при вызове метода контекста (ПредопределенноеЗначение)
ТипыНоменклатуры.Добавить(ПредопределенноеЗначение(«Перечисления.ТипыНоменклатуры.Товар»));
по причине:
Предопределенное значение «Перечисления.ТипыНоменклатуры.Товар» не найдено.
1 — 01.03.19 — 10:16
ПеречислениЕ?
2 — 01.03.19 — 10:19
(1)+1 а уверен что раньше работало?
3 — 01.03.19 — 10:33
(1) Да!
Два дня назад городил огород чтобы получить пустую ссылку по имеющемуся типу, про ПредопределенноеЗначение не вспомнил((
4 — 01.03.19 — 10:41
не могло раньше работать, ну никак
5 — 01.03.19 — 10:44
(3)ОписаниеТипов.ПривестиЗначение
6 — 01.03.19 — 10:46
(5) Это я рассматривал, но что-то не взлетело
так предлагаешь ОписаниеТипов.ПривестиЗначение(Неопределено)?
7 — 01.03.19 — 10:54
Если не передавать значение то возвращается значение по умолчанию данного типа. Для справочника например это будет пустая ссылка
8 — 01.03.19 — 11:06
(7) Да, норм.
А я для теста засунул конструкцию типа
(Новый ОписаниеТипов(«СправочникСсылка.Банки»)).ПривестиЗначение()
в табло, получил ошибку и пошел другим путём.
9 — 01.03.19 — 13:01
(1) (2) Уверен, да и через пробел само все пишется, так что ошибки в написание нет.
Сделал в общем так:
ПолучитьПеречисл()
&НаСервере
Функция ПолучитьПеречисл()
Возврат Перечисления.ТипыНоменклатуры.Товар;
КонецФункции
10 — 01.03.19 — 13:07
(9) очень некрасиво сделал. с клиента сервер вызывать из за этого. а если это в цикле, то вообще ужас
11 — 01.03.19 — 13:08
(10) что поделать, переписывать что то там кардинально из-за этого не целесообразно. Но это и не в цикле
12 — 01.03.19 — 13:19
(9)»так что ошибки в написание нет»
Хм, а СП утверждает, что есть:
Синтаксис:
ПредопределенноеЗначение(<ИмяПредопределенногоЗначения>)
Параметры:
<ИмяПредопределенногоЗначения> (обязательный)
Тип: Строка.
Содержит полный путь до предопределенного значения, включая имя самого значения. Например, «ПланСчетов.Основной.Счет41».
Синтаксис описания предопределенного значения совпадает с синтаксисом оператора ЗНАЧЕНИЕ языка запросов:
<Тип предопределенного значения>.<Имя объекта метаданных>.<Значение>.
Тип предопределенного значения> может быть:
Справочник (Catalog);
ПланВидовХарактеристик (ChartOfCharacteristicTypes);
ПланСчетов (ChartOfAccounts);
ПланВидовРасчета (ChartOfCalculationTypes);
Документ (Document) — только пустая ссылка;
Перечисление (Enum);
БизнесПроцесс (BusinessProcess) — только пустая ссылка и получение точек бизнес процесса;
Задача (Task) — только пустая ссылка.
13 — 01.03.19 — 13:22
будтл бы предопределенное значение на сервер не ходит?
14 — 01.03.19 — 13:23
(13)Один раз же, потом кэш.
15 — 01.03.19 — 13:24
(9)Молодец, надо быть уверенным в себе, исправляют и проверяют только трусы
16 — 01.03.19 — 13:42
(12) ну я же говорю система через ctrl+пробел дописывает как надо. Через точку все видит.
(15) это не критично, поэтому не понимаю зачем мне логику какую то менять.
Но вот код:
&НаКлиенте
Процедура ПодборВычеркнуть(Команда)
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить(«Заголовок», НСтр(«ru = ‘Подбор вычеркнуть'»));
ПараметрыФормы.Вставить(«ЗаголовокКнопкиПеренести», НСтр(«ru = ‘Вычеркнуть из списока'»));
ПараметрыФормы.Вставить(«УникальныйИдентификатор», ЭтаФорма.УникальныйИдентификатор);
ПараметрыФормы.Вставить(«РежимВыбора», Истина);
ТипыНоменклатуры = Новый Массив();
ТипыНоменклатуры.Добавить(ПолучитьТипТовар());
ОтборПоТипуНоменклатуры = Новый ФиксированныйМассив(ТипыНоменклатуры);
ПараметрыФормы.Вставить(«ОтборПоТипуНоменклатуры», ОтборПоТипуНоменклатуры);
ОткрытьФорму(«Обработка.ПодборТоваровПоОтбору.Форма», ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
Куда же мне убрать лишний вызов сервера?
Единственное могу поставить &НаСервереБезКонтекста
17 — 01.03.19 — 13:46
«ну я же говорю система через ctrl+пробел дописывает как надо. Через точку все видит»
правильно, система не может ошибаться, это же 1С, самая надежная система в мире.
18 — 01.03.19 — 13:50
(16)А скрин можно? И платформу. У меня на 8.3.10.2580 всё согласно СП, просто академический интерес.
Wefast
19 — 01.03.19 — 14:13
(18) начал делать скрины восстанавливая тот код и все работает.
В (0) и правда опечатка
Неловко, что так упорно сопротивлялся, извините.
Поверил на слово, что раньше работало.
Уверен, что проверял что через пробел все заполняется. Может не сохранил после проверки.
Может не увидел разницы когда заново строчку написал. Хз короче куда смотрел.
ES_Dr 0 / 0 / 0 Регистрация: 25.03.2012 Сообщений: 6 |
||||
1 |
||||
1C 8.x Заполнение документа. Поле объекта не обнаружено15.03.2013, 13:18. Показов 9532. Ответов 18 Метки нет (Все метки)
Здравствуйте! При заполнении документа возникает ошибка:»Поле объекта не обнаружено» Подскажите, пожалуйста, способы устранения.
Миниатюры
0 |
Xomych 856 / 655 / 111 Регистрация: 01.11.2012 Сообщений: 2,411 |
||||
15.03.2013, 13:45 |
2 |
|||
0 |
Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
|
15.03.2013, 13:46 |
3 |
…………..
0 |
Fenomen 900 / 877 / 8 Регистрация: 15.03.2012 Сообщений: 2,680 |
||||
15.03.2013, 13:47 |
4 |
|||
Объект.Товары.ТоварыТипТовара Видимо должно быть:
Только если я понимаю логику, это не поможет.
0 |
ES_Dr 0 / 0 / 0 Регистрация: 25.03.2012 Сообщений: 6 |
||||
15.03.2013, 13:53 [ТС] |
5 |
|||
Изначально и было
. Ошибка та же. Может, как-то с функцией делать? Или аргументы какие-то передать на сервер?
0 |
Xomych 856 / 655 / 111 Регистрация: 01.11.2012 Сообщений: 2,411 |
||||||||
15.03.2013, 14:09 |
6 |
|||||||
Изначально у вас написано
Найдите 10 отличий
0 |
0 / 0 / 0 Регистрация: 15.03.2013 Сообщений: 8 |
|
15.03.2013, 14:38 |
7 |
Dethmontt, та, на которой меняем Номенклатуру. Та строка, на которой это делаем и должна изменяться.
0 |
Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
|
15.03.2013, 14:41 |
8 |
Dethmontt, та, на которой меняем Номенклатуру. Та строка, на которой это делаем и должна изменяться. И где это у вас в коде?
0 |
0 / 0 / 0 Регистрация: 15.03.2013 Сообщений: 8 |
|
15.03.2013, 14:46 |
9 |
Сейчас вы меня пристыдили… Я пока еще слабо разбираюсь в этом, что то еще не знаю, что то уже не помню… Но думал что такие вещи мне по силам… Мы ведь вызываем это в обработчике события НоменклатураПриИзменении, разве в таком случае не однозначно определяется строка?
0 |
Dethmontt Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
||||
15.03.2013, 14:51 |
10 |
|||
Вызывается всего лишь обработчик определенного события (в некоторых случаях с параметрами) А в обработчике вы сами уже показываете что вам нужно работать только с одной строкой или со всей таблицей и т.д. (вариаций полно)…
Добавлено через 1 минуту
0 |
0 / 0 / 0 Регистрация: 15.03.2013 Сообщений: 8 |
|
15.03.2013, 14:53 |
11 |
Вот наверно это то, что я забыл. Спасибо, сейчас попробуем.
0 |
Dethmontt Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
||||
15.03.2013, 14:59 |
12 |
|||
1 |
0 / 0 / 0 Регистрация: 15.03.2013 Сообщений: 8 |
|
15.03.2013, 16:08 |
13 |
Вот этого и не знал. Век живи — век учись) Спасибо, будем пробовать. Добавлено через 1 час 5 минут
0 |
Dethmontt Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
||||||||
15.03.2013, 16:24 |
14 |
|||||||
Добавлено через 2 минуты
1 |
Serglih 0 / 0 / 0 Регистрация: 15.03.2013 Сообщений: 8 |
||||
15.03.2013, 17:01 |
15 |
|||
Сделали как вы говорите, но ругается на перечисления:
0 |
Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
|
15.03.2013, 23:23 |
16 |
Перечисления Вы очень не внимательны!!!
Перечисление Найдите отличие! Перечисления — Перечисление Добавлено через 58 секунд
ПредопределенноеЗначение(«Перечисление.ИмяПеречисления.Значение») ////
2 |
0 / 0 / 0 Регистрация: 25.03.2012 Сообщений: 6 |
|
19.03.2013, 15:43 [ТС] |
17 |
Спасибо за помощь. Всё работает. Теперь другой вопрос: как из формы документа обратиться к константе?
0 |
856 / 655 / 111 Регистрация: 01.11.2012 Сообщений: 2,411 |
|
19.03.2013, 17:39 |
18 |
Через функцию на сервере
0 |
0 / 0 / 0 Регистрация: 25.03.2012 Сообщений: 6 |
|
19.03.2013, 17:45 [ТС] |
19 |
Спасибо, разобрались.
0 |
0
Как получить ПредопределенноеЗначение?
Чтобы обратиться к предопределенному значению перечисления на клиенте нужно использовать метод глобального контекста ПредопределенноеЗначение (PredefinedValue)
Синтаксис:
Код 1C v 8.2 УП
ПредопределенноеЗначение(<ИмяПредопределенногоЗначения>)
Параметры: <ИмяПредопределенногоЗначения> (обязательный)
Тип: Строка. Содержит полный путь до предопределенного значения, включая имя самого значения. Например, «ПланСчетов.Основной.Счет41».
Синтаксис описания предопределенного значения совпадает с синтаксисом оператора ЗНАЧЕНИЕ языка запросов:
<Тип предопределенного значения>.<Имя объекта метаданных>.<Значение>
Тип предопределенного значения> может быть:
Справочник (Catalog);
ПланВидовХарактеристик (ChartOfCharacteristicTypes);
ПланСчетов (ChartOfAccounts);
ПланВидовРасчета (ChartOfCalculationTypes);
Перечисление (Enum);
БизнесПроцесс (BusinessProcess)
В качестве <Имя объекта метаданных> указывается имя объекта метаданных, как оно задано в конфигураторе.
Для перечислений, определенных в конфигурации, <Значение> указывается как имя соответствующего объекта метаданных типа ЗначениеПеречисления. Для всех остальных типов предопределенных значений <Значение> указывается как имя предопределенного элемента данных, как оно указано в конфигураторе, или ПустаяСсылка для указания пустой ссылки.
Для точек маршрутов бизнес-процессов имя предопределенного значения имеет вид:
БизнесПроцесс.<Имя объекта метаданных>.ТочкаМаршрута.<Имя точки маршрута>
Также метод может быть использован для получения значения системного перечисления. В этом случае параметр формируется как:
<ИмяСистемногоПеречисления>.<ИмяЗначенияСистемногоПеречисления>
Описание: Возвращает ссылку на предопределенный элемент из предопределенных данных, прикладных перечислений и точек маршрута бизнес-процессов, а также значения системных перечислений.
Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Вызов метода выполняет обращение к серверу.
Код 1C v 8.2 УП
&Наклиенте
Процедура ГрафикРемонтовСпособВыполненияПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.ГрафикРемонтов.ТекущиеДанные;
Если СтрокаТабличнойЧасти.СпособВыполнения = ПредопределенноеЗначение("Перечисление.СпособыВыполненияРемонтныхРабот.Подрядный") Тогда
Элементы.ГрафикРемонтовИсполнитель.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.Контрагенты");
иначе
Элементы.ГрафикРемонтовИсполнитель.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.ПодразделенияОрганизации");
КонецЕсли;
КонецПроцедуры
Программируя функционал в платформе 8.2 Управляемые Формы нужно четко понимать где он будет исполняться (на сервере или клиенте). Многие привычные методы теперь не работают так как раньше. И элементарная проверка заполнения реквизита на предопределенное значение на клиенте будет иметь следующий вид:
Код 1C v 8.х
&НаКлиенте
Процедура ПриИзменениеСтатусаЗаказа()
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказов.Завершен") Тогда
ЗакрытьЗаказ();
КонецЕсли;
КонецПроцедуры
Вот так работать не будет:
Код 1C v 8.х
// НЕ РАБОТАЕТ
&НаКлиенте
Процедура ПриИзменениеСтатусаЗаказа()
Если Объект.Статус = Перечисления.СтатусыЗаказов.Завершен Тогда
ЗакрытьЗаказ();
КонецЕсли;
КонецПроцедуры
- Главная
- —
- Форум
- —
- ТЕХПОДДЕРЖКА
- —
- ЭКСЕЛОН — Загрузка в 1С из EXCEL
- —
- Ошибка при вызове метода контекста (Записать)
Вчера заметил, что перестали обновляется цены, проверил выгрузку и обнаружил что часть номенклатуры не записывается. Номенклатура_СоздатьОбновить 020: {ВнешняяОбработка.APPLIX_RU_ЗагрузкаИзExcel_ЗМ.МодульОбъекта(70081)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПередЗаписью’: {Справочник.Номенклатура.МодульМенеджера(2911)}: Преобразование значения к типу Булево не может быть выполнено |
|
Ошибка при попытке обновить номенклатуру |
|
1С:Предприятие 8.3 (8.3.20.1674) Прикрепленные файлы |
|
Модуль создал номенклатуру, теперь ее невозможно открыть ТекстыЗапросов = Новый Массив; ИменаОбъектовМетаданных = Новый Массив; Для Каждого СсылкиПоТипу Из СсылкиПоТипам Цикл ПолноеИмяОбъектаМетаданных = ОбъектМетаданных.ПолноеИмя(); Прикрепленные файлы |
|
пришлите ваш файл и скриншоты всех настроек колонок |
|
у нас загрузилось нормально доступ к базе дадите? попробуем на вашей базе отладкой посмотреть что не так |
|
Сергей Юданов Пользователь Сообщений: 23 |
#9
30.05.2022 15:03:02 Разобрались сами. На некоторые позиции номенклатуры в поле (Вид номенклатуры) было назначено не значение, а почему-то название категории в котором содержались значения. |
ПОСЛЕДНИЕ СООБЩЕНИЯ
Сейчас на форуме (гостей: 44)
Всего зарегистрированных пользователей: 2224
Приняло участие в обсуждении: 367
Всего тем: 822
Возвращает ссылку на предопределенный элемент данных (справочника, плана видов характеристик, перечисления и т.п.) и точек маршрута бизнес-процессов, а также значения системных перечислений.
Синтаксис
Функция ПредопределенноеЗначение()
имеет следующий синтаксис:
ПредопределенноеЗначение(ПутьКДанным)
А также альтернативный англоязычный синтаксис:
PredefinedValue(Path)
Параметры
Описание параметров функции ПредопределенноеЗначение()
:
Имя параметра* | Тип | Описание |
---|---|---|
ПутьКДанным | Строка | Содержит полный путь до предопределенного значения, включая имя прототипа данных (Справочник, Документ и т.п.), имя объекта метаданных и имя самого значения. Например:
Для пустых ссылок на объекты:
Для системных перечислений:
|
*Жирным шрифтом выделены обязательные параметры |
Описание
Функция ПредопределенноеЗначение()
возвращает ссылку на предопределенный элемент из предопределенных данных, прикладных перечислений и точек маршрута бизнес-процессов, а также значения системных перечислений.
Внимание! Данный метод доступен для версии платформы 1С:Предприятие 8.2.9 и выше
Доступность
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Внимание!! Если вызов метода происходит в контексте клиента, выполняется обращение к серверу. Результат выполнения кэшируется при первом обращении до изменения конфигурации или версии платформы.
Пример использования
Пример кода с использованием функции ПредопределенноеЗначение()
:
&НаКлиенте Процедура ПередЗаписью(Отказ) Если Объект.ВидНоменклатуры = ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка") Тогда Отказ = Истина; КонецЕсли; КонецПроцедуры
Поделиться страницей в соц.сетях
Метки: Метки 1С:Предприятие 8.2.9+