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

&НаКлиенте

Процедура КомандаДляКнопок(Элемент)

    Кнопка = ЭтаФорма.ТекущийЭлемент;

    Сообщение = Новый СообщениеПользователю;

    Сообщение.Текст = «Нажата «+Кнопка.Имя;

    Сообщение.Сообщить();

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

&НаСервере

Процедура СоздатьКнопкиНаСервере();

    ОбъектН = Новый COMОбъект(«Scripting.FileSystemObject»);

    Индекс = 1;

Для Каждого Drive Из ОбъектН.Drives Цикл

    Если Drive.DriveType = 1 Тогда

        Имя = «Кнопка»+Индекс;

        НоваяКнопка = Элементы.Добавить(Имя,Тип(«КнопкаФормы»),Элементы.Группа5);

        НоваяКнопка.Вид = ВидКнопкиФормы.ОбычнаяКнопка;

        НоваяКнопка.Заголовок = «Drive.path»;

        НоваяКнопка.ИмяКоманды = «КомандаДляКнопок»;

        Индекс = Индекс + 1;

    КонецЕсли;

КонецЦикла;

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

Пишет

{Форма.Форма.Форма(55)}: Ошибка при установке значения атрибута контекста (ИмяКоманды)

        НоваяКнопка.ИмяКоманды = «КомандаДляКнопок»;

по причине:

Недопустимое значение

не могу поняь почему

Содержание:

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

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

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

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

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

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

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

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

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

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

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

Изучаю программирование. Что прочесть, чтобы сделать управляемую форму с компонентами, создаваемыми программно?

Что я сделал:
1. Создал чистую конфигурацию
2. Создал обработку
3. Создал форму
4. Внес в модуль формы код

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
&НаСервере 
Процедура СоздатьПолеКнопок()
    ГруппаКнопок = Элементы.ГруппаКнопок;
    Для ии = 0 по 9 Цикл
        ИмяГруппы = "ГруппаКнопок"+ии;
        НоваяГруппа = Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"), ГруппаКнопок);
        НоваяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
        НоваяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
        НоваяГруппа.ОтображатьЗаголовок = Ложь;
        
        Для йй = 0 по 9 Цикл 
            ИмяКнопки = "Кнопка"+(ии*10+йй);
            НоваяКнопка = Элементы.Добавить(ИмяКнопки, Тип("КнопкаФормы"), НоваяГруппа);
            НоваяКнопка.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
            НоваяКнопка.Заголовок = Прав("0"+(ии*10+йй),2);
            НоваяКнопка.ИмяКоманды = "КомандаДляКнопок";
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры
 
&НаКлиенте
Процедура СоздатьКнопки(Команда)
    СоздатьПолеКнопок();
КонецПроцедуры
 
&НаКлиенте
Процедура КомандаДляКнопок(Команда)
    Кнопка = ЭтаФорма.ТекущийЭлемент;
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Нажата "+Кнопка.Имя;
    Сообщение.Сообщить();
КонецПроцедуры

5. Сохранил конфигурацию, обновил конфигурацию базы данных
6. Начал отладку.
7. Открыл созданную обработку — там нет ничего, пустота, только крестик и кнопка еще.
Что я делаю не так?

Я надеюсь, так можно.

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

Код 1C v 8.3

 // Реквизиты
ДобавляемыеРеквизиты = Новый Массив;

ИмяТаблицы = "КомандыДополнительныхОбработок";
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ДополнительныеОтчетыИОбработки"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ВариантЗапуска", Новый ОписаниеТипов("ПеречислениеСсылка.СпособыВызоваДополнительныхОбработок"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИмяЭлемента", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Идентификатор", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ЭтоОтчет", Новый ОписаниеТипов("Булево"), ИмяТаблицы));

Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);

//реквизит
ИмяЭлемента = "Добавлен" + ИндексЭлемента;
Реквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеТипов);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);

//команда печать
ИмяКомандыПечать = "ДобавленПечать" + ИндексЭлемента;
КомандаПечать = Команды.Добавить(ИмяКомандыПечать);
КомандаПечать.Действие = "ПечатьДокумента";
КомандаПечать.Подсказка = НСтр("ru = 'Печать документа...'");

//элемент формы
//Родитель                     = Элементы.ГруппаСформированныеДокументы;
Элемент                      = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементГруппа);
Элемент.Вид                  = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным          = ИмяЭлемента;
Элемент.Гиперссылка          = Истина;
Элемент.ПоложениеЗаголовка   = ПоложениеЗаголовкаЭлементаФормы.Нет;

ЭтаФорма[ИмяЭлемента] = Документ;

//кнопка печать
ИмяЭлементаПечать = "ДобавленПечать" + ИндексЭлемента;
ЭлементПечать = Элементы.Добавить(ИмяЭлементаПечать, Тип("КнопкаФормы"), ЭлементГруппа);
ЭлементПечать.Картинка = БиблиотекаКартинок.Печать;
ЭлементПечать.Отображение = ОтображениеКнопки.Картинка;
ЭлементПечать.ИмяКоманды = ИмяКомандыПечать;

Ошибка при установке значения атрибута контекста (Формат)

Автор AnnaZ., 06 авг 2015, 20:49

0 Пользователей и 1 гость просматривают эту тему.

Здравствуйте.Возникает проблема с процедурой.Вроде бы синтаксис верен,но выдает ошибку:
Ошибка
{Документ.ЗаявкаНаПлатеж.Форма.ФормаДокумента.Форма(278)}: Ошибка при установке значения атрибута контекста (Формат)
         ЭлементыФормы.СуммаПоДокументу.Формат = ПрочитатьПараметрыПрописи(Валюта.ПараметрыПрописиНаРусском);//строка на которую ругается
по причине:
Недопустимое значение параметра (параметр номер ‘1’)
Код:
Процедура ПриОткрытии()      
   мКолонкиОКДП = ЭлементыФормы.РашифровкаПоОКДП.Колонки;   
         Если ЭтоНовый() Тогда   
         ДатаДок = ТекущаяДата();            
      Подразделение = ПараметрыСеанса.Подразделение.Ссылка;            
НомерЧисловой = ПолучитьНовыйНомерЗаявки(ПараметрыСеанса.Подразделение,ДатаДок);
      Номер = ПараметрыСеанса.Подразделение.ПрефиксЗаявокНаПлатеж + Строка(НомерЧисловой);
      Исполнитель = Справочники.Исполнители.НайтиПоРеквизиту(«ИмяПользователяИБ»,Строка(ПользователиИнформационнойБазы.ТекущийПользователь()));
      Если Подписи.Количество() = 0 Тогда // Проверка от копирования
         Для каждого Согласующий  Из Подразделение.Согласование Цикл
            Подпись = Подписи.Добавить();
            Подпись.Должность = Согласующий.Должность;
               Подпись.ФамилияИО = Согласующий.ФамилияИО;
                  КонецЦикла;
            КонецЕсли;   
         // Если происходит копирование
         Если Валюта = Справочники.Валюты.ПустаяСсылка() Тогда
               Валюта = Справочники.Валюты.РоссийскийРубль.Ссылка;
            КонецЕсли;
                 ЭлементыФормы.РашифровкаПоОКДП.Колонки.Сумма.Формат = ПрочитатьПараметрыПрописи(Валюта.ПараметрыПрописиНаРусском);      
         ЭлементыФормы.СуммаПоДокументу.Формат = ПрочитатьПараметрыПрописи(Валюта.ПараметрыПрописиНаРусском);//строка на которую ругается
                     Иначе  // Курс на изменение документа
         ЭлементыФормы.СуммаПоДокументу.Формат = ПрочитатьПараметрыПрописи(Валюта.ПараметрыПрописиНаРусском);
      ЭлементыФормы.РашифровкаПоОКДП.Колонки.Сумма.Формат = ПрочитатьПараметрыПрописи(Валюта.ПараметрыПрописиНаРусском);

      КонецЕсли;
      ДоступностьИзмененияРасчетногоСчета();
КонецПроцедуры


Ну, а где код процедуры ПрочитатьПараметрыПрописи?


Цитата: vitasw от 07 авг 2015, 09:52
Ну, а где код процедуры ПрочитатьПараметрыПрописи?

Функция ПрочитатьПараметрыПрописи(ПараметрыПрописиНаРусском)
  СтрокаПараметров = СтрЗаменить(ПараметрыПрописиНаРусском, «,», Символы.ПС);
Возврат «ЧДЦ=» + СокрЛП(СтрПолучитьСтроку(СтрокаПараметров, 9));
КонецФункции


А что отладчик говорит?
Как правило, параметры прописи, которые достаются из спр. валют относятся к строковому представлению. Ну и странно что такой сложный код только для того чтобы задать число символов дробной части.


Цитата: vitasw от 07 авг 2015, 11:16
А что отладчик говорит?
Как правило, параметры прописи, которые достаются из спр. валют относятся к строковому представлению. Ну и странно что такой сложный код только для того чтобы задать число символов дробной части.

Я в 1с новичок.А по работе требуют перенести базу из версии 8.1 на 8.2
В предыдущей версии форма прекрасно работает с таким кодом.Если вы поможете упростить код,буду очень признательна.


Если честно, что-то конкретное даже не возьмусь советовать. Я не понимаю что вообще творится и зачем. Приведенный код — это что-то в высшей степени ОЧЕНЬ для меня непонятное. Начиная с необходимости задания формата элементов формы(??? и не очень понятно это элемент формы или просто надпись)  и заканчивая вопросами оптимальности выполнения кода.
Разве что могу посоветовать почитать в СП про Формат.


Теги:

  • Форум 1С

  • Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4

  • Конфигурирование, программирование в 1С Предприятие 8

  • Ошибка при установке значения атрибута контекста (Формат)

Похожие темы (5)

Рейтинг@Mail.ru

Rambler's Top100

Поиск

Ошибка «Недопустимое значение» при установке имени команды

Ошибка возникает в момент установки команды в кнопке  — при отсутствии ее в командах формы

Ошибка при установке имени команды 0

Подробная ошибка

Ошибка при установке имени команды

Проверки:

  • Проверить имя команды на предмет наличия опечатки
  • При отсутствии, добавить саму команду и ее обработчик, тогда ошибка выходить не будет

Команды/Команды формы/Добавить, задать «Имя» и обработчик в поле «Действие»

Добавление Команды формы

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

Студворк — интернет-сервис помощи студентам

Изучаю программирование. Что прочесть, чтобы сделать управляемую форму с компонентами, создаваемыми программно?

Что я сделал:
1. Создал чистую конфигурацию
2. Создал обработку
3. Создал форму
4. Внес в модуль формы код

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
&НаСервере 
Процедура СоздатьПолеКнопок()
    ГруппаКнопок = Элементы.ГруппаКнопок;
    Для ии = 0 по 9 Цикл
        ИмяГруппы = "ГруппаКнопок"+ии;
        НоваяГруппа = Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"), ГруппаКнопок);
        НоваяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
        НоваяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
        НоваяГруппа.ОтображатьЗаголовок = Ложь;
        
        Для йй = 0 по 9 Цикл 
            ИмяКнопки = "Кнопка"+(ии*10+йй);
            НоваяКнопка = Элементы.Добавить(ИмяКнопки, Тип("КнопкаФормы"), НоваяГруппа);
            НоваяКнопка.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
            НоваяКнопка.Заголовок = Прав("0"+(ии*10+йй),2);
            НоваяКнопка.ИмяКоманды = "КомандаДляКнопок";
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры
 
&НаКлиенте
Процедура СоздатьКнопки(Команда)
    СоздатьПолеКнопок();
КонецПроцедуры
 
&НаКлиенте
Процедура КомандаДляКнопок(Команда)
    Кнопка = ЭтаФорма.ТекущийЭлемент;
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Нажата "+Кнопка.Имя;
    Сообщение.Сообщить();
КонецПроцедуры

5. Сохранил конфигурацию, обновил конфигурацию базы данных
6. Начал отладку.
7. Открыл созданную обработку — там нет ничего, пустота, только крестик и кнопка еще.
Что я делаю не так?

Я надеюсь, так можно.

Пишет {Форма.Форма.Форма}: Ошибка при установке значения атрибута контекста (ИмяКоманды) по причине: Недопустимое значение не могу поняь почему

Команда <> обработчик команды.

Ты тотал коммандер на 1С пишешь что ли?

Я руки пристроил к тому месту к которому их пристраивать не стоит) И не могу оторваться. А так да.

Это что кнопки с серверными дисками получаются?

НоваяКнопка.ИмяКоманды = Новый Действие(«КомандаДляКнопок»);

Да, создал команду, заработало

Тэги: 1С 8

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

Понравилась статья? Поделить с друзьями:
  • 1с предприятие ошибка 404
  • 1с предприятие логи ошибок
  • 1с предприятие код ошибки 10034
  • 1с предприятие выдает ошибку
  • 1с постоянно вылетает непредвиденная ошибка