Меню

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

Содержание:

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

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

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

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

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

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

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

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

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

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

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

   Masi4

15.05.14 — 16:46

БП 3.0

Тонкий клиент

Права: группа ролей Бухгалтер

Необходимо выполнить создание элемента справочника «Договоры контрагентов», но при попытке выполнить нижеприведённый код возникает ошибка : «Не удалось записать «Договор Контрагента»!».

&НаСервере

Процедура КомандаСоздатьДоговорНаСервере()

    Договор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент ();

    Договор.Владелец                = Справочники.Контрагенты.НайтиПоКоду («000027477»);

    Договор.Наименование            = «0100059144»;

    Договор.Организация                = Справочники.Организации.НайтиПоКоду («000000001»);

    Договор.ВидДоговора                = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;

    Договор.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду («978»);

    Договор.РасчетыВУсловныхЕдиницах = Истина;

    Договор.Валютный = Истина;

    Договор.Записать ();

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

Тот же вариант со справочником «Номенклатура» возваращает «Нарушение прав доступа.

&НаСервере

Процедура КомандаСоздатьТоварНаСервере()

    СпрТовары = Справочники.Номенклатура.СоздатьЭлемент ();

    СпрТовары.Наименование = «123456789»;

    СпрТовары.Записать ();

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

Если тоже самое выполнить с полными права — всё работает. Подскажите, как создавать элементы справочников под ролями Бухгалтеров в БП3.0?

ПС. Не посылайте в яндекс или гугл.

   Wobland

1 — 15.05.14 — 16:47

дать прав пробовал?

   salvator

2 — 15.05.14 — 16:49

А в чем глубинный смысл создавать один договор программно?

   Masi4

3 — 15.05.14 — 17:02

(1) Если тоже самое выполнить с полными права — всё работает. (2) Договора, как и товары создаются пачками в мегамодулях. Я всего лишь привёл простой пример проблемного кода.

   xXeNoNx

4 — 15.05.14 — 17:04

Рлс глянь, права дай

   salvator

5 — 15.05.14 — 17:04

(3) Кури настройки ролей.

   Naumov

6 — 15.05.14 — 17:05

После ругни смотришь на что ругается и добавляешь в права.

   Wobland

7 — 15.05.14 — 17:05

(3) а от нас чего хочешь?

   Ymryn

8 — 15.05.14 — 17:05

Если не изменяет память там есть отдельная роль на работу/запись с Нормативно справочной информаций (или просто Справочной информацией). Дай пользователю эту роль.

   xXeNoNx

9 — 15.05.14 — 17:06

УстановитьПревилигированныйрежим

   Naumov

10 — 15.05.14 — 17:06

*смотришь в журнале регистрации

   Wobland

11 — 15.05.14 — 17:06

(9) фу. ты этим ртом потом хлебушек будешь кушать

   xXeNoNx

12 — 15.05.14 — 17:07

(11) Какой вопрос, такой ответ…

   Masi4

13 — 15.05.14 — 17:11

(4) Давал разные права, но работает только с полными правами.

   Masi4

14 — 15.05.14 — 17:12

(7) От вас лично ничего. Но вопрос я задал вполне конкретно: «Подскажите, как создавать элементы справочников под ролями Бухгалтеров в БП3.0?»

   Wobland

15 — 15.05.14 — 17:14

(14) лично я не знаю, и мне поровну. а сам найти ответ не хочешь

   Wobland

16 — 15.05.14 — 17:14

+(15) ?

   Masi4

17 — 15.05.14 — 17:16

(15) (16) Понятно, что всем или многим поровно. Искал, читал, у 1С спрашивал (и они даже ответили через 3 часа). Нигде ничего…

   Wobland

18 — 15.05.14 — 17:17

только разве вЖР не ходил

   acsent

19 — 15.05.14 — 17:18

установить привилегированный режим

   Masi4

20 — 15.05.14 — 17:19

(8) Роли выданные пользователю: «Добавление и изменение базовой нормативно-справочной информации», «Добавление и изменение общей базовой нормативно-справочной информации», «Добавление и изменение общей бухгалтерской нормативно-справочной информации»

   Masi4

21 — 15.05.14 — 17:21

(9) (19) Не помогло

   Masi4

22 — 15.05.14 — 17:22

(18) а ЖР это вкуда?

   Ymryn

23 — 15.05.14 — 17:22

(20) установлено ли ограничение доступа по уровням записей? Если да, то были ли запущены регламентная обработка после этого и были ли установлены соответствующие разрешения?

   Ymryn

24 — 15.05.14 — 17:22

(22) журнал регистрации я так предполагаю.

   acsent

25 — 15.05.14 — 17:24

(21) во внешней обработке конечно не поможет

   Masi4

26 — 15.05.14 — 17:26

(5) Курил, только в теории получается что все права уже есть: у пользователя установлена роль «Добавление и изменение данных бухгалтерии», а у этой роли есть и создание и изменение элементов справочника.

   Masi4

27 — 15.05.14 — 17:32

(10) (24) ЖР — оказывается полезная весчь. Вот что он мне сказал:

{ОбщийМодуль.ОбменДаннымиВызовСервера.Модуль(87)}: Ошибка при получении значения атрибута контекста (ДатаОбновленияПовторноИспользуемыхЗначенийМРО)

        Если ПараметрыСеанса.ДатаОбновленияПовторноИспользуемыхЗначенийМРО <> АктуальнаяДата Тогда

по причине:

Нарушение прав доступа!

   Wobland

28 — 15.05.14 — 17:33

(27) можешь не благодарить

   Masi4

29 — 15.05.14 — 17:36

(28) Не, не. За это спасибо! Я и не думал что от него такая польза…

   Masi4

30 — 15.05.14 — 17:39

(27) Вот только зайти туда дебагером не смогу. С ограниченными правами туда не пустят в конфигуратор, а с полными ошибка не появляется…

   Wobland

31 — 15.05.14 — 17:50

(30) надо как-то заставить запустить отладку от имени ущербного юзера

   Masi4

32 — 15.05.14 — 17:58

(31) Дал пользователю много прав. Запустил конфигуратор из под него. Отнял права. Запустил тонкий клиент. Дал права — подключил клиента к отладке. Он выдал много новых сообщений, но мои точки остановка в обоначенных местах продинамил.

{Форма.Форма.Форма(155)}: Ошибка при вызове метода контекста (Записать)

    СпрТовары.Записать ();

по причине:

Ошибка при выполнении обработчика — ‘ПередЗаписью’

по причине:

{ОбщийМодуль.ОбменДаннымиВызовСервера.Модуль(477)}: Ошибка при получении значения атрибута контекста (ИспользуемыеПланыОбмена)

    СпрТовары.Записать ();

по причине:

Нарушение прав доступа!

по причине:

Ошибка при выполнении обработчика — ‘ПередЗаписью’

по причине:

{ОбщийМодуль.ОбменДаннымиВызовСервера.Модуль(477)}: Ошибка при получении значения атрибута контекста (ИспользуемыеПланыОбмена)

по причине:

Нарушение прав доступа!

{ОбщийМодуль.ОбменДаннымиВызовСервера.Модуль(477)}: Ошибка при получении значения атрибута контекста (ИспользуемыеПланыОбмена)

    Если ПараметрыСеанса.ИспользуемыеПланыОбмена.Количество() > 0 Тогда

по причине:

Нарушение прав доступа!

Нарушение прав доступа!

   batmansoft

33 — 15.05.14 — 18:03

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

   Masi4

34 — 15.05.14 — 18:39

(33) Мне нельзя править конфу. Ни под каким предлогом. Это как бы условие обязательное.

   Masi4

35 — 16.05.14 — 11:27

(31) Запустил от ущербного пользователя. Создал файловую локальную базу. Дал права администратора. Запустил конфигуратор. Отнял права администратора. Запустил толстый клиент (управляемое приложение). И уже 10 минут тыкаю F11.

   Wobland

36 — 16.05.14 — 11:36

   Masi4

37 — 16.05.14 — 11:43

(36) Это я итак знаю и сделал. Но спасибо за участие.

   Masi4

38 — 16.05.14 — 11:46

(35) В итоге я нашел источник ошибки. Я правда не знаю пока почему туда входит выполнение.

Насколько я понял у пользователя нет прав сюда:

Если ПараметрыСеанса.ИспользуемыеПланыОбмена.Количество() > 0 Тогда

   Wobland

39 — 16.05.14 — 11:47

>Нарушение прав доступа! Ошибка при получении значения атрибута контекста (ИспользуемыеПланыОбмена)

кажется, да. но я не уверен

   Masi4

40 — 16.05.14 — 11:49

(39) Именно на этом месте деббагер останавливается и появляется ошибка. Теперь думаю какие из стандартных прав позволят обойти это.

   Wobland

41 — 16.05.14 — 12:01

ну расскажи, каким ролям это позволено, не молчи 😉

   Masi4

42 — 16.05.14 — 12:04

(41) Кто знает в БП 3.0 весь доступ поделён на кучу ролей в конфигураторе, а в конфигурации (режим предприятие) есть пять групп ролей. Это предыстория. Так вот единственная более менее безвредная роль — это администрирование. Я не знаю как и где смотреть доступ к переменной «ПараметрыСеанса», так что могу только предполагать.

   Wobland

43 — 16.05.14 — 12:07

(42) а это совсем ни разу не переменная. даже напротив: это параметры сеанса

   Masi4

44 — 16.05.14 — 12:09

(43) Да, я это уже посмотрел) Оказывается не параметрах сеанса дело… Потому что у роли Администрирование тоже нет доступа к «Параметрам сеанса».

   hhhh

45 — 16.05.14 — 12:13

(44) то что «Потому что у роли Администрирование тоже нет доступа к «Параметрам сеанса».» ничего не следует.

   Masi4

46 — 16.05.14 — 12:17

(45) Возможно, но с этой ролью в дополнение к группе ролей Бухгалтер — всё работает.

   hhhh

47 — 16.05.14 — 12:25

что за группа ролей такая?

   Masi4

48 — 16.05.14 — 12:31

Проблема не в Параметрах сеанса. Что-то другое мешает. С простыми правами я получаю отказ на изменение данных в процедуре «ПередЗаписью». С дополнением роли Администрирование  — не получаю отказа…

   Masi4

49 — 16.05.14 — 12:43

Я нашёл (надеюсь) место проблемное:

ОбменДаннымиВызовСервера.ПроверитьКэшМеханизмаРегистрацииОбъектов ();

Здесь возникает первая ошибка и здесь я получаю отказ. Почему — не знаю…

   Wobland

50 — 16.05.14 — 12:43

а ЖР знает?

   Masi4

51 — 16.05.14 — 12:56

(50) Нет. ЖР знает только это:

{ОбщийМодуль.ОбменДаннымиВызовСервера.Модуль(87)}: Ошибка при получении значения атрибута контекста (ДатаОбновленияПовторноИспользуемыхЗначенийМРО)

        Если ПараметрыСеанса.ДатаОбновленияПовторноИспользуемыхЗначенийМРО <> АктуальнаяДата Тогда

по причине:

Нарушение прав доступа!

Целых 5 раз.

   Masi4

52 — 16.05.14 — 12:59

А вот когда выполнение сваливается в исключение как можно посмотреть описание ошибки кроме функции «ОписаниеОшибки ()»? Функция возвращает пусто…

   Masi4

53 — 16.05.14 — 13:08

Я дал пользователю все права кроме «Полных» и «Административных»… и всё равно не получается.

   Masi4

54 — 16.05.14 — 13:08

Плакать хочется… %-)

   hhhh

55 — 16.05.14 — 13:15

но вообще у вас настроен обмен? Всё четко там? Он работает?

   Masi4

56 — 16.05.14 — 13:20

(55) Прошу прощения, но я не совсем понял какой обмен… У нас только одна база, и задача стоит: создавать из внешней обработки товары и договора…

   hhhh

57 — 16.05.14 — 13:25

(56) ну и? не видите, что у вас обмен данными? Если хотите чтобы бухгалтер обмены фигачил между базами, настройте ему обмен.

   Masi4

58 — 16.05.14 — 13:28

(57) Ещё раз. У нас 1 база 1С. В этой базе нужно создать (не загружать, не обмениваться), просто создать по кнопке из внешней обработки договор или товар.

   Masi4

59 — 16.05.14 — 13:31

Вопрос в другом. Почему некоторые элементы параметров сеанса (ПараметрыСеанса) доступны при обращении из внешней обработке, а другие нет? Как не вводя обработку в конфу позволить ей делать всё то, что может делать пользователь, под которым обработка запустилась?

   Поpyчик-4

60 — 16.05.14 — 13:40

(0) УстановитьПривилегированныйРежим(Истина) в вашей обработке ещё не предлагали?

  

   Masi4

61 — 16.05.14 — 13:44

(60) Вот здесь (9) и здесь (19) …

   singlych

62 — 16.05.14 — 13:47

УстановитьПривилегированныйРежим не будет работать в обработках, которые открываются через файл-открыть и в дополнительных с безопасным режимом, вроде. А следовательно, записать договор не судьба без полных прав. Попробуй поставь небезопасный.

   Masi4

63 — 16.05.14 — 13:48

(62) Прошу прощение: поставить небезопасный что?

   singlych

64 — 16.05.14 — 13:49

(63) режим. Ты же вроде дополнительную обработку пишешь?

   Masi4

65 — 16.05.14 — 13:51

(64) {Форма.Форма.Форма(142)}: Ошибка при вызове метода контекста (УстановитьБезопасныйРежим)

    УстановитьБезопасныйРежим (Ложь);

по причине:

В данной процедуре/ функции не был установлен безопасный режим

   Masi4

66 — 16.05.14 — 13:52

(64) Угу — дополнительную пишу…

   singlych

67 — 16.05.14 — 13:58

(66) если ты будешь открывать ее через файл-открыть, он не установится никогда. устанавливай в СведенияОВнешнейОбработке() и регистрируй в базе.

   Masi4

68 — 16.05.14 — 14:06

(67) Прошу не бить ногами, но как обработку зарегистрировать в базе?

   Поpyчик-4

69 — 16.05.14 — 14:07

(68) Искать в гугле. Вопрос уже давно обсосан до дыр.

   Masi4

70 — 16.05.14 — 14:42

(69) Не помогло…

   Поpyчик-4

71 — 16.05.14 — 14:55

   Masi4

72 — 16.05.14 — 14:56

Конкретизирую.

Функция СведенияОВнешнейОбработке() Экспорт

    РегистрационныеДанные = Новый Структура();

    РегистрационныеДанные.Вставить («Наименование», «Установка»);

    РегистрационныеДанные.Вставить («БезопасныйРежим», Истина);

    РегистрационныеДанные.Вставить («Версия», «v 1.4»);

    РегистрационныеДанные.Вставить («Информация», «v 1.0»);

    РегистрационныеДанные.Вставить («Вид», «ДополнительнаяОбработка»);

    
    МассивНазначений = Новый Массив;

    МассивНазначений.Добавить («Справочник.*»);

    РегистрационныеДанные.Вставить («Назначение», МассивНазначений);

    тз = Новый ТаблицаЗначений;

    тз.Колонки.Добавить(«Идентификатор»);

    тз.Колонки.Добавить(«Использование»);

    тз.Колонки.Добавить(«Представление»);

    НоваяСтрока = тз.Добавить();

    НоваяСтрока.Идентификатор = «ОткрытьОбработку»;

    НоваяСтрока.Использование = «ОткрытиеФормы»;

    НоваяСтрока.Представление = «Открыть»;

    РегистрационныеДанные.Вставить(«Команды», тз);

    Возврат РегистрационныеДанные;

КонецФункции

&НаСервере

Процедура Команда1НаСервере()

    //УстановитьБезопасныйРежим (Ложь);

    
    УстановитьПривилегированныйРежим (Истина);

    
    СпрТовары = Справочники.Номенклатура.НайтиПоКоду («0085991»).ПолучитьОбъект ();

    СпрТовары.Записать ();

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

Подключил к базе. Запустил. Та же ошибка.

   Masi4

73 — 16.05.14 — 14:57

(71) Это вы мне предлагаете за 300 рублей решить мою проблему? 🙂 Или за 300 рублей вы мне пароль для файла дадите? 🙂

   singlych

74 — 16.05.14 — 15:02

(73) эмм.. кому я что говорил..

убери уже УстановитьПривилегированныйРежим и сделай РегистрационныеДанные.Вставить («БезопасныйРежим», Ложь);

   Masi4

75 — 16.05.14 — 15:15

(74) Тестовая обработка отработала. Сейчас перенесу всё в мегамодуль и проверю.

  

Masi4

76 — 16.05.14 — 15:28

Получилось! Спасибо всем за помощь!

  1. добрый день.

    Программно создаю документ.
    ДокументОбъект = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
    ДокументОбъект.Дата = ТекущаяДата();

    Выдает ошибку: Ошибка при установке значения атрибута контекста (Дата) по причине «Документ не выбран». Что это значит ?

    — Объединение сообщений, 16 июл 2014

    конфигурация УТ для Украины 2.3.18.1


  2. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Где создаете? На сервере, на клиенте ?

  3. обычное приложение, на сервер выходит


  4. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Реквизит точно Дата? отладчиком пользоваться можете?

  5. да, реквизит дата, с типом дата, это стандартынй реквизит документа. Если вычислить выражение ДокументОбъект.Дата то показывает значение 01010001000000 тип дата

    — Объединение сообщений, 16 июл 2014

    ТекущаяДата() 16.07.2014 11:50:11 Дата

    ДокументОбъект.Дата 01.01.0001 0:00:00 Дата


  6. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    У меня все создается нормально…


  7. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Точно на сервере создаете? Отладчиком пройдитесь


  8. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    1) это весь код?
    2) Переменную ДокументОбъект переименуйте во что нибудь другое.

  9. я пытался создать документ рту с модуля формы «чек ккм» , перенес все в общий модуль, и все ок ) спасибо )


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Ошибка в 1С 8. Ошибка при получении значения атрибута контекста (ОсновнаяРоль), Недопустимо использование свойства ОсновнаяРоль

Описание ошибки:
Проблема стала возникать после того, как в серверную базу УТ 10.3 был добавлен функционал Библиотеки МДЛП. Ошибка не проявляла себя явно при работе в режиме 1С: Предприятие, но негативно влияла на выполнение некоторых регламентных заданий, так что они аварийно прерывались.

Найденные решения:

{ОбщийМодуль.Пользователи.Модуль(116)}: Ошибка при получении значения атрибута контекста (ОсновнаяРоль)
по причине:
Недопустимо использование свойства «ОсновнаяРоль»

Проблема стала заметна случайно лишь тогда, когда в частности регламентное фоновое задание «Наличие новых ЭД» стало прерываться в процессе своего выполнения из за ошибки.

1С 8 как исправить ошибку при получении значения атрибута контекста ОсновнаяРоль
Рис. 1. Пример ошибки «Ошибка при получении значения атрибута контекста (ОсновнаяРоль)» в регламентном задании «Наличие новых эд в сервисе ЭДО« 

Так же и в другом регламентном задании стала проявляться ошибка «Ошибка при получении значения атрибута контекста (ОсновнаяРоль) по причине: Недопустимо использование свойства «ОсновнаяРоль».


Рис. 2. Пример ошибки «Недопустимо использование свойства «ОсновнаяРоль» в регламентном задании «Выполнение обмена по сценарию…»

Удивителен тот факт, что код «Метаданные.ОсновнаяРоль» вполне нормальный. Т.е. конструкция вызывается в конфигураторе при конфигурировании как свойство объекта «Метаданные». Так же не возникает ошибок при проверка кода при сохранении изменений конфигурации. 

Нажатие на изображении увеличит его

Рис. 3. Причина ошибки в коде, конструкция «Метаданные.ОсновнаяРоль = Неопределено».

Релиз используемой платформы 1С в базе, в которой возникла проблема — 8.3.18.1741


Рис. 4. Сведения о конфигурации, версии платформы и параметры конфигурации.

Удивительно, что описание данного свойства «ОсновнаяРоль» отсутствует в Синтакс-помощнике. Хотя, как уже было коротко упомянуто, свойство «ОсновнаяРоль» глобального свойства «Метеданные» используется в библиотеке МДЛП. Исходно основное назначение библиотеки — для конфигураций, работающих в режиме управляемого приложения. Конфигурация 1С: Управление торговлей 10.3 работает в другом режиме — обычного приложения. Поэтому получается, что конструкция кода эксплуатируется в редко используемой библиотеке и ее работоспособность не совсем понятна в текущем релизе платформы.

В сети оказалось достаточно мало вспомогательной информации об этой ошибке. Из найденного, что может кому-то помочь — это обсуждение на форуме forum.1c.ru «После обновления на 2.0.15.8 выпадает ошибка: Недопустимо использование свойства «ОсновнаяРоль».

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

1С 8 свойство метода метаданные конфигурации ОсновнаяРоль
Рис. 5. Отсутствие в «Синтакс-помощнике» описания метода «ОсновнаяРоль»

Поэтому решением данной проблемы стало изменение кода на конструкцию: Метаданные.ОсновныеРоли.Количество()

Нажатие на изображении увеличит его

Рис. 6. Устранение ошибки «Ошибка при получении значения атрибута контекста (ОсновнаяРоль)» заменой текста кода.

Таким образом код стал актуальным для исполнения и в дальнейшем не вызывал ошибку.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

21-07-2022

Журавлев А.С.
(Сайт azhur-c.ru)

Konstantan

1 / 1 / 1

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

Сообщений: 74

1

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

11.10.2018, 12:33. Показов 5662. Ответов 3

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


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
33
34
35
36
37
38
39
40
41
42
43
44
Процедура УдалениеСтрокНажатие(Элемент)
    
    Запрос = Новый Запрос;  
    Запрос.УстановитьПараметр("Номенклатура",Номенклатура);
    Запрос.Текст =
    "ВЫБРАТЬ
    |   РеализацияТоваровУслугТовары.Ссылка
    |ИЗ
    |   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    |ГДЕ
    |   РеализацияТоваровУслугТовары.Номенклатура = &Номенклатура";
    
    Выборка = Запрос.Выполнить();
    МассивТоваров=новый Массив; 
    Значения= Выборка.Выбрать();
    Пока Значения.Следующий() Цикл
        ссылка = Значения.ссылка ;
        ДокументОбъект = ссылка.ПолучитьОбъект();
        i=0;
        Для каждого ТекСтрока Из ДокументОбъект.Товары Цикл
            Если ТекСтрока.Номенклатура = Номенклатура Тогда
                МассивТоваров.Добавить(ТекСтрока);
                Сообщить("Значение: "+ ТекСтрока.Номенклатура +" подходит!"); 
                i=i+1
            Иначе
                Сообщить("Значение: "+ТекСтрока.Номенклатура+ " не подходит!");
            КонецЕсли
        КонецЦикла;
        Для  каждого ТекСтрокаМас Из    МассивТоваров Цикл
            Если Вопрос("Удалить строку со значением  " + ТекСтрокаМас.Номенклатура + "?" ,РежимДиалогаВопрос.ДаНет,15)=КодВозвратаДиалога.Да Тогда
                
                
                ДокументОбъект.Товары.Удалить(ТекСтрокаМас);
                
                
                Сообщить("Строка удалена!");
            Иначе
                Сообщить("Отмена удаления!");
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    
    
КонецПроцедуры

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

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



0



Тест

Эксперт 1С

383 / 162 / 56

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

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

11.10.2018, 12:44

2

В каком месте то ошибка происходит?



0



856 / 655 / 111

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

Сообщений: 2,410

11.10.2018, 13:36

3

Полный текст ошибки выложите



0



Эксперт 1С

841 / 604 / 211

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

Сообщений: 2,101

11.10.2018, 20:10

4

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

Решение

Konstantan, МассивТоваров не очищается перед обработкой следующего документа.



2



Ошибка при получении значения атрибута контекста (ТекущийПользователь)

bless18
06.04.2010 09:32 Прочитано: 49814

Ошибка при получении значения атрибута контекста (ТекущийПользователь): Попытка получения неинициализированного значения параметра сеанса
Пользователь = ПараметрыСеанса.ТекущийПользователь;
по причине:
Попытка получения неинициализированного значения параметра сеансаКод 1C v 8.х

 Процедура ПриНачалеРаботыСистемы()
Пользователь = ПараметрыСеанса.ТекущийПользователь;
Если обЗначениеНеЗаполнено(Пользователь.Сотрудник) Тогда
ИмяПользователя = СокрЛП(Пользователь.Наименование);
Иначе
ИмяПользователя = СокрЛП(Пользователь.Сотрудник.Наименование);
КонецЕсли;
Предупреждение("Здравствуйте уважаемый пользователь """+ИмяПользователя+"""
|Система готова к работе.", 3);
КонецПроцедуры

Где происходит их инициализация?

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

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

E_Migachev
06.04.2010 09:48 Ответ № 1

Когда в Общие — Параметры сеанса добавил ТекущийПользователь, то его нужно определять при загрузке:
так же в процедуре ПриНачалеРаботыСистемы пишешь что то типо:
Код 1C v 8.х

 ИмяПользователя = ИмяПользователя();
Если Не ПустаяСтрока(ИмяПользователя) Тогда
ТекущийПользователь = Справочники.Пользователи.НайтиПоКоду(ИмяПользователя);
КонецЕсли;
ПараметрыСеанса.ТекущийПользователь = ТекущийПользователь;

Это работает при условии, что ИмяПользователя заданное в конфигураторе, равно Имени введенному в справочнике Пользователей в реквизит Код

bless18
06.04.2010 09:56 Ответ № 2

А если не совпадают, можно как-нибудб привязать пользователя к сотруднику?

E_Migachev
06.04.2010 09:57 Ответ № 3

А лучше добавить процедуру в Модуль сеанса(Правой клавишей щелкаещь на названии конфигурации и выбираешь Открыть модуль сеанса)

В ней создаешь Процедура УстановкаПараметровСеанса () и в ней пишешь код который я предложил выше или так, Если не совпадают:

Код 1C v 8.х

 Процедура УстановкаПараметровСеанса()
Спр = Справочники.Сотрудники;
ПараметрыСеанса.ТекущийПользователь=Спр.НайтиПоРеквизиту("Пользователь1С", ИмяПользователя());
КонецПроцедуры
//где Пользователь1С, это реквизит справочника сотрудники, и именем как вбито в конфигураторе

Эта процедура вызывается раньше чем ПриНачалеРаботыСистемы.

Ну а дальше подставлять сопоставленное значение при создании соответствующего документа:

Код 1C v 8.х

  Док.Пользователь=ПараметрыСеанса.Пользователь;   

События модуля сеанса:
Глобальный контекст
УстановкаПараметровСеанса (SessionParametersSetting)
Синтаксис:
УстановкаПараметровСеанса(<Требуемые параметры>)
Параметры:
<Требуемые параметры>
Тип: Массив; Неопределено. Массив устанавливаемых идентификаторов параметров сеанса, которые нужно инициализировать, если обработчик вызывается перед использованием неинициализированных параметров сеанса.
Неопределено, если обработчик события вызывается системой при начале сеанса или при захвате соединения из пула.
Описание:
Событие предназначено для инициализации параметров сеанса.
Вызывается системой:
при установке соединения с информационной базой или при захвате соединения с информационной базой из пула до вызова всех остальных обработчиков. Значение параметра «Параметры сеанса» — Неопределено;
перед фактическим использованием значений параметров сеанса, которые не были инициализированы ранее. В этом случае значением параметра «Параметры сеанса» является массив идентификаторов неинициализированных параметров сеанса, значения которых используются. Если после выполнения обработчика хотя бы один из перечисленных параметров сеанса остается неинициализированным, то возникает исключение.

bless18
06.04.2010 12:13 Ответ № 4

Спасибо вам огромное! Вы мне очень помогли!

bless18
06.04.2010 12:15 Ответ № 5

Спасибо вам огромное! Вы мне очень помогли!

E_Migachev
06.04.2010 15:44 Ответ № 6

Пожалуйста )

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

Ошибка «Выполнение операции невозможно, так как строка была удалена»

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:

Позволяет прочесть данные заново. Недопустим для нового объекта.
Пример:

(12) Ты умеешь нормально выражать свои мысли? Я спросил в чем разница между картинкой и текстом, информативность одинаковая.

(11) В модуле объекта документа, я СОБРАЛСЯ читать документ

(0)Это происходит потому, что при вызове Прочитать() перечитываются и пересоздаются в памяти все данные документа, в том числе и ТЧ, которую перебираешь.

Комиссия премии Дарвина берет на карандашик программистов, которые пишут такой код.

Ошибка при заполнении документа «Начисление зарплаты»(«Зарплата и кадры» 1.0.45.1)

Здравствуйте!<br>При заполнении сотрудниками документа «Начисление зарплаты» («Зарплата и кадры бюджетного учреждения» 1.0.45.1)<br>появляется такая ошибка:<br>: Ошибка при получении значения атрибута контекста (ВидРасчета) Если Строка.ВидРасчета = Неопределено ИЛИ Строка.ДатаНачала > ДатаОкончания Тогдапо причине:Выполнение операции невозможно, т.к. строка была удалена.<br> <br>Причем мы заметили с помощью подбора сотрудников, что эта ошибка появляется у сотрудников принятых по внутреннему совместительству и уволенных (с внутреннего совместительства) в расчетном периоде. Проверили правильность всех документов — никаких ошибок не увидели. В чем может быть проблема. <br>Пожалуйста подскажите что не так? Спасибо.

Ошибка Обработка.НачислениеПроцентом

Добрый день!
Платформа 1С:Предприятие 8.3 (8.3.15.1830), КАМИН:Расчет заработной платы. Версия 3.0 (3.0.107.5)
проблема имеет место с Версии 3.0 (3.0.107.4)
Ошибка при заполнении документа Начисление простое, используя помощник Начисление процентом — добавление сотрудника.
«: Ошибка при получении значения атрибута контекста (Процент)
п_Стр.Сумма = Окр(п_Стр.База*п_Стр.Процент/100,ОкруглениеСуммы);
по причине:
Выполнение операции невозможно, так как строка была удалена.»

Проблема в обработке Начисление процентом модуль формы
Процедура РассчитатьТаблицу(МассивСтрок,п_ПараметрНоваяСтрока = Ложь)
строка 1857
л_Строка = МассивСтрок[0];
РассчитатьСтроку(л_Строка);

л_Строка ссылается на удаленную строку в ТаблицаОбработки. Строка удаляется в теле процедуры ОпределимБазуПоСтроке(л_Массив, МассивСтрок) ранее.

Дополнительно возможна некорректная работа модуля в Процедура ОпределимБазуПоСтроке(п_СпСотр = Неопределено,п_МассивСтрокРасчета = Неопределено)
строка 1149
Если ФлагПоДокументу Тогда
переменная ФлагПоДокументу содержит значение не булево, а цифру.

243
457

Здравствуйте,
На релизе КАМИН:Расчет заработной платы. Версия 3.0 (3.0.107.5) ошибка не воспроизводится.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка при получении значения атрибута контекста данныеключасессииисмп
  • Ошибка при получении значения атрибута контекста владелецформы