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

   batmansoft

17.07.14 — 11:36

Добрый день. Делаю так (на сервере):

&НаСервере

Процедура ОбработкаМоделейНаСервере()

    Запрос=Новый Запрос;

    Запрос.Текст=

    «ВЫБРАТЬ

    |    Номенклатура.Ссылка

    |ИЗ

    |    Справочник.Номенклатура КАК Номенклатура

    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты

    |        ПО Номенклатура.Ссылка = НоменклатураДополнительныеРеквизиты.Ссылка

    |            И (НоменклатураДополнительныеРеквизиты.Свойство = &Свойство)

    |ГДЕ

    |    НоменклатураДополнительныеРеквизиты.Значение ЕСТЬ NULL »

    ;

    лСвойство=Константы.шапСвойствоМодель.Получить();

    Запрос.УстановитьПараметр(«Свойство»,лСвойство);

    Выборка=Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл

        лОбъект=Выборка.Ссылка.ПолучитьОбъект();

        Пробел=Найти(лОбъект.Наименование,» «);

        Модель=лев(лОбъект.Наименование,Пробел-1);

        стр=ЛОбъект.ДополнительныеРеквизиты.Добавить();

        стр.Свойство=лСвойство;

        стр.Значение=Модель;

        стр.ТекстоваяСтрока=Модель;

        лОбъект.Записать();

        сообщить(лОбъект);

    КонецЦикла;

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

и говорит:

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

        стр=ЛОбъект.ДополнительныеРеквизиты.Добавить();

по причине:

Объект недоступен для изменения.

Подскажите пожалуйста, как лечить?

   mikecool

1 — 17.07.14 — 11:40

что такое ЛОбъект.ДополнительныеРеквизиты в отладчике?

   drcrasher

2 — 17.07.14 — 11:50

(1) в ут11 — табчасть

(0) права есть на тч?

   mikecool

3 — 17.07.14 — 11:52

(2) телепат? )

   drcrasher

4 — 17.07.14 — 11:52

(3) погодь, пусть тс чонить скажет =)

   jsmith82

5 — 17.07.14 — 11:58

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

   jsmith82

6 — 17.07.14 — 11:58

а не произвольных методах формы

   jsmith82

7 — 17.07.14 — 11:59

а, хотя там же дополнительные свойства

   drcrasher

8 — 17.07.14 — 12:00

(7) угу. свойства. у объекта

   batmansoft

9 — 17.07.14 — 12:04

(1) В отладчике это вот:

«Выражение    Значение    Тип

ЛОбъект.ДополнительныеРеквизиты    СправочникТабличнаяЧасть.Номенклатура.ДополнительныеРеквизиты    СправочникТабличнаяЧасть.Номенклатура.ДополнительныеРеквизиты»

(2) Да, это УТ 11, тч номенклатуры. Работаю под полными правами.

   drcrasher

10 — 17.07.14 — 12:24

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

   zva

11 — 17.07.14 — 12:33

на форме случайно нет реквизитов стр или лОбъект?

   drcrasher

12 — 17.07.14 — 12:39

(11) &НаСервере

Процедур….

   batmansoft

13 — 17.07.14 — 12:58

(10) Что то странно:

если делать вот так:

&НаСервере

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

    лСвойство=Константы.шапСвойствоМодель.Получить();

    спр=Объект.Проба.ПолучитьОбъект();

    стр=спр.ДополнительныеРеквизиты.Добавить();

    стр.Свойство=лСвойство;

    стр.Значение=»12312″;

    стр.ТекстоваяСтрока=»12312″;

    спр.Записать();

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

то работает.

Но почему тогда в выборке не прокатывает эта фигня? Как мне тогда все элементы справочника перебрать и обработать?

   batmansoft

14 — 17.07.14 — 12:59

нет, таких реквизитов нету. но пробую переименовать

   batmansoft

15 — 17.07.14 — 13:01

Воообще странно. Попробовал так:

&НаСервере

Процедура ОбработкаМоделейНаСервере()

    Запрос=Новый Запрос;

    Запрос.Текст=

    «ВЫБРАТЬ

    |    Номенклатура.Ссылка

    |ИЗ

    |    Справочник.Номенклатура КАК Номенклатура

    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты

    |        ПО Номенклатура.Ссылка = НоменклатураДополнительныеРеквизиты.Ссылка

    |            И (НоменклатураДополнительныеРеквизиты.Свойство = &Свойство)

    |ГДЕ

    |    НоменклатураДополнительныеРеквизиты.Значение ЕСТЬ NULL

    |    И НЕ Номенклатура.ЭтоГруппа»

    ;

    лСвойство=Константы.шапСвойствоМодель.Получить();

    Запрос.УстановитьПараметр(«Свойство»,лСвойство);

    Выборка=Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл

        лОбъект1=Выборка.Ссылка.ПолучитьОбъект();

        Пробел=Найти(лОбъект1.Наименование,» «);

        Модель=лев(лОбъект1.Наименование,Пробел-1);

        стр1=ЛОбъект1.ДополнительныеРеквизиты.Добавить();

        стр1.Свойство=лСвойство;

        стр1.Значение=Модель;

        стр1.ТекстоваяСтрока=Модель;

        лОбъект1.Записать();

        сообщить(лОбъект1);

    КонецЦикла;

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

Кто нибудь может объяснить, что это за НЕХ происходила?

   batmansoft

16 — 17.07.14 — 13:02

так вот как в (15) сработало

   SUA

17 — 17.07.14 — 13:04

лобъект это реквизит формы который уже где-то определен, как вариант

   batmansoft

18 — 17.07.14 — 13:19

(17) смотрел, нет у формы таких реквизитов, стр. тоже нет

   sirsp

19 — 17.07.14 — 13:37

(15) Пытался изменить для группы?

    |    И НЕ Номенклатура.ЭтоГруппа»

  

batmansoft

20 — 17.07.14 — 13:50

(19) ХЗ, может быть, кажется, я эту шнягу вставил и забыл…

Я
   batmansoft

17.07.14 — 11:36

Добрый день. Делаю так (на сервере):

&НаСервере

Процедура ОбработкаМоделейНаСервере()

    Запрос=Новый Запрос;

    Запрос.Текст=

    «ВЫБРАТЬ

    |    Номенклатура.Ссылка

    |ИЗ

    |    Справочник.Номенклатура КАК Номенклатура

    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты

    |        ПО Номенклатура.Ссылка = НоменклатураДополнительныеРеквизиты.Ссылка

    |            И (НоменклатураДополнительныеРеквизиты.Свойство = &Свойство)

    |ГДЕ

    |    НоменклатураДополнительныеРеквизиты.Значение ЕСТЬ NULL »

    ;

    лСвойство=Константы.шапСвойствоМодель.Получить();

    Запрос.УстановитьПараметр(«Свойство»,лСвойство);

    Выборка=Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл

        лОбъект=Выборка.Ссылка.ПолучитьОбъект();

        Пробел=Найти(лОбъект.Наименование,» «);

        Модель=лев(лОбъект.Наименование,Пробел-1);

        стр=ЛОбъект.ДополнительныеРеквизиты.Добавить();

        стр.Свойство=лСвойство;

        стр.Значение=Модель;

        стр.ТекстоваяСтрока=Модель;

        лОбъект.Записать();

        сообщить(лОбъект);

    КонецЦикла;

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

и говорит:

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

        стр=ЛОбъект.ДополнительныеРеквизиты.Добавить();

по причине:

Объект недоступен для изменения.

Подскажите пожалуйста, как лечить?

   mikecool

1 — 17.07.14 — 11:40

что такое ЛОбъект.ДополнительныеРеквизиты в отладчике?

   drcrasher

2 — 17.07.14 — 11:50

(1) в ут11 — табчасть

(0) права есть на тч?

   mikecool

3 — 17.07.14 — 11:52

(2) телепат? )

   drcrasher

4 — 17.07.14 — 11:52

(3) погодь, пусть тс чонить скажет =)

   jsmith82

5 — 17.07.14 — 11:58

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

   jsmith82

6 — 17.07.14 — 11:58

а не произвольных методах формы

   jsmith82

7 — 17.07.14 — 11:59

а, хотя там же дополнительные свойства

   drcrasher

8 — 17.07.14 — 12:00

(7) угу. свойства. у объекта

   batmansoft

9 — 17.07.14 — 12:04

(1) В отладчике это вот:

«Выражение    Значение    Тип

ЛОбъект.ДополнительныеРеквизиты    СправочникТабличнаяЧасть.Номенклатура.ДополнительныеРеквизиты    СправочникТабличнаяЧасть.Номенклатура.ДополнительныеРеквизиты»

(2) Да, это УТ 11, тч номенклатуры. Работаю под полными правами.

   drcrasher

10 — 17.07.14 — 12:24

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

   zva

11 — 17.07.14 — 12:33

на форме случайно нет реквизитов стр или лОбъект?

   drcrasher

12 — 17.07.14 — 12:39

(11) &НаСервере

Процедур….

   batmansoft

13 — 17.07.14 — 12:58

(10) Что то странно:

если делать вот так:

&НаСервере

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

    лСвойство=Константы.шапСвойствоМодель.Получить();

    спр=Объект.Проба.ПолучитьОбъект();

    стр=спр.ДополнительныеРеквизиты.Добавить();

    стр.Свойство=лСвойство;

    стр.Значение=»12312″;

    стр.ТекстоваяСтрока=»12312″;

    спр.Записать();

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

то работает.

Но почему тогда в выборке не прокатывает эта фигня? Как мне тогда все элементы справочника перебрать и обработать?

   batmansoft

14 — 17.07.14 — 12:59

нет, таких реквизитов нету. но пробую переименовать

   batmansoft

15 — 17.07.14 — 13:01

Воообще странно. Попробовал так:

&НаСервере

Процедура ОбработкаМоделейНаСервере()

    Запрос=Новый Запрос;

    Запрос.Текст=

    «ВЫБРАТЬ

    |    Номенклатура.Ссылка

    |ИЗ

    |    Справочник.Номенклатура КАК Номенклатура

    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты

    |        ПО Номенклатура.Ссылка = НоменклатураДополнительныеРеквизиты.Ссылка

    |            И (НоменклатураДополнительныеРеквизиты.Свойство = &Свойство)

    |ГДЕ

    |    НоменклатураДополнительныеРеквизиты.Значение ЕСТЬ NULL

    |    И НЕ Номенклатура.ЭтоГруппа»

    ;

    лСвойство=Константы.шапСвойствоМодель.Получить();

    Запрос.УстановитьПараметр(«Свойство»,лСвойство);

    Выборка=Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл

        лОбъект1=Выборка.Ссылка.ПолучитьОбъект();

        Пробел=Найти(лОбъект1.Наименование,» «);

        Модель=лев(лОбъект1.Наименование,Пробел-1);

        стр1=ЛОбъект1.ДополнительныеРеквизиты.Добавить();

        стр1.Свойство=лСвойство;

        стр1.Значение=Модель;

        стр1.ТекстоваяСтрока=Модель;

        лОбъект1.Записать();

        сообщить(лОбъект1);

    КонецЦикла;

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

Кто нибудь может объяснить, что это за НЕХ происходила?

   batmansoft

16 — 17.07.14 — 13:02

так вот как в (15) сработало

   SUA

17 — 17.07.14 — 13:04

лобъект это реквизит формы который уже где-то определен, как вариант

   batmansoft

18 — 17.07.14 — 13:19

(17) смотрел, нет у формы таких реквизитов, стр. тоже нет

   sirsp

19 — 17.07.14 — 13:37

(15) Пытался изменить для группы?

    |    И НЕ Номенклатура.ЭтоГруппа»

  

batmansoft

20 — 17.07.14 — 13:50

(19) ХЗ, может быть, кажется, я эту шнягу вставил и забыл…

Прочитай, хотя бы, Митичкина «Разработка в системе 1С:Предприятие 8». Волшебник

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

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

потому что Док не объект ни разу

{Форма.ФормаОтчета.Форма}: Значение не является значением объектного типа (ДокументыОснования)     табл=Реал.ДокументыОснования;     Так уже пробовала

потому, что нет такой табличной части ДокументыОснования

В документе счетфактуравыданный есть в БП 2.0

значит вот такого не может быть при вызове Реал = Док.ПолучитьОбъект; табл=Реал.ДокументыОснования; просто. не может.

показывай уже весь НОВЫЙ код

а часом Реал это не ревизит формы или объекта?

закешированная версия, не та обработка

поменяла Реал на Реал1 все заработало. Прикольно…

Приучите себя давать переменным осознанные имена — ДокОбъект, СтрокаТЧ….

например, такое имя: ПризнакТогоЧтоВОтправителиПолучателиТЗУжеПозиционировалисьНаНужногоОтправителя = Ложь;

Иной раз только такие меня и позволяют что-то понять в коде, который на 100500 строк.

а я наоборот, дальше 10-го символа имя уже не читаю.

ГенаТыПомнишьТыПросил… вот мульт про таких программистов: Уродство этой переменной ни каким образом не может дискредитировать идею понятного именования переменных

Тэги:

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

Содержание

  1. Решение проблемы
  2. Исправляем ситуацию
  3. Контекстные правила и методы
  4. Несоблюдение правил и методов программного контекста
  5. Ошибки команд
  6. Как узнать правильный метод?
  7. Что полезно знать об ошибках

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

Как в любом языке программирования, в платформе 1С есть предопределенные методы, которые облегчают жизнь разработчикам. Но выполнение этих команд требует правильного соблюдения синтаксиса языка программирования.

Самые распространенные ошибки при вызове типовых методов:

  • Записать
  • Создать
  • Подключиться
  • Connect
  • ПроверитьВывод
  • PreviewFile1C
  • Прочитать
  • Выполнить
  • ВыполнитьПакет
  • ПрочитатьИзменения

Рассмотрим пример. Мы программно создали запрос (справочник по запросам), передав в параметры «текст» вот такой фрагмент:

Получите 267 видеоуроков по 1С бесплатно:

В конструкции «ГДЕ» мы преднамеренно ошиблись, поставив «И», но не прописав еще одно условие. Совершенно логично, что 1С не сможет справиться с таким запросом и выдаст ошибку:

<МодульСеанса(21)>: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >

Рассмотрим еще один пример:

Перенесем ошибочный код в обработчик «ПередЗаписью» справочника «Версии программ» и попробуем записать справочник программно. Видим ошибку:

<МодульСеанса(8)>: Ошибка при вызове метода контекста (Записать)
Выборка.ПолучитьОбъект().Записать();
по причине:
Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
<Справочник.ВерсииПрограмм.МодульОбъекта(20)>: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >

Несмотря на то, что ошибка заключается в выполнения метода «Выполнить», система ругается и на строчку кода, где вызывается программная запись объекта.

Решение проблемы

Для решения проблемы достаточно понять, в чем именно заключается ошибка. В 99% случаев проблема решается банальным чтением справки и анализом проблемы.

Для того чтобы узнать, как пользоваться тем или иным методом, достаточно установить курсор на интересующей Вас функции и нажать «Ctrl + F1». Платформа 1С выдаст Вам контекстную подсказку по требуемому методу:

Проверьте параметры, передаваемые в функцию, и правильность её использования.

Другие статьи по 1С:

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

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

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

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

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

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

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

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

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

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

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

Понимание принципов функционирования метода контекста поможет избежать ошибок при работе в 1С.

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

Любой программный продукт архитектурно состоит из модулей (module, англ.), частей. Модульные части программы 1С и их местоположение показаны на рисунке:

Программные модули, в свою очередь, состоят из разделов:

Контекст (context, англ.) — это одно из важнейших понятий в программировании. В 1С под ним понимается окружение модуля и его разделов, — какие именно переменные, свойства, объекты, метод (method) и события могут быть ему доступны в каждой конкретной точке. В разных точках context, как правило, уже другой.

Разработчик (доработчик) должен понимать — какие контекстные свойства имеет точка и какой method является доступным для использования в ней.

В восьмёрке выделены контекстные виды:

  • В любой точке конфигурации доступен Глобальный context. Отдельная ветка синтаксис-помощника показывает доступные для вызова функции:
  • Локальный context (более низкого уровня) доступен в точках каждой модульной части;
  • Ещё ниже уровень — локальный context процедуры и так далее.

Базовыми являются основные четыре правила для доступа процедур, переменных, и ф-ций в модулях:

  • В общих модульных частях не будут доступными для экспорта переменные, процедуры и ф-ции модульных приложений;
  • В модульных приложениях есть доступ для экспорта процедур и ф-ций общих модулей;
  • Для общих мод. частей открыт доступ к экспорту процедур и ф-ций прочих общих модулей;
  • Для модульных прикладных объектов и для модульных форм являются доступными переменные, функции и процедуры модулей приложений для экспорта и общих модулей.

Если какой-либо форме присвоен основной реквизит, то в контексте этой формы будут содержаться свойство и method, отвечающие этому основному реквизиту. К примеру, в модуле формы для элемента справочника Номенклатура доступен method и свойства объекта СправочникОбъект.Номенклатура.

Иллюстрация приведённых правил на схеме:

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

Несоблюдение правил и методов программного контекста

Все программисты встречались с уведомлением об ошибке 1С при вызове метода контекста. Рассмотрим такой пример:

Ошибки команд

При создании запроса в справочнике в его параметре «текст» был внесён фрагмент:

В конструкции «ГДЕ» было внесено «И», но само условие осталось непрописанным.

Реакция программы была такой:

<МОДСеанса(21)>: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();

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

Для того чтобы получить подсказку платформы 1С о том, как использовать какой-либо method, поставьте курсор на нужную функцию и нажмите «Ctrl + F1». При возникновении ошибок нужно проверить параметры, которые передаются в функцию, а также правильность использования функции.

Что полезно знать об ошибках

Напоследок проведём общий анализ ошибок в 1С. Любая из них может быть причиной тех, которым посвящена тема статьи:

  • Нарушение как логической, так физической целостности информационной базы;
  • Ошибки пользователей при обращении с платформой;
  • Ошибочно введённый разработчиком (доработчиком) код;
  • Человеческий фактор — например, забывчивость;
  • Чрезвычайные ситуации (отсутствие света, метель, дождь, град, ураган, наводнение).

Провести анализ ошибки:

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

Дополнительно о причинах ошибок:

  • Часть ошибок — это результат использования нелицензионного программного обеспечения (и windows тоже);
  • Повреждённая платформа — это самый распространённый пример. Всего один патч способен взломать версию платформы. После чего можно не обнаружить базу (или лицензию);
  • При первичном столкновении с ошибкой стоит поискать решение в поисковике — возможно решение её уже кем-то найдено;
  • Следите за актуальностью релиза конфигурации (особенно если из них сдаётся регламентированная отчётность);
  • Актуальность релиза платформы — для каждой конфигурации рекомендован свой релиз;
    Все события, происходящие в 1С, протоколируются в технологическом журнале!
  • Перед началом каких-то действий с базой необходимо делать архивную копию!

Теперь вы знаете что такое context, почему возникают связанные с ним ошибки, как анализировать ошибки в 1С и как их решать.

Для начинающих разработчиков 1С 8.3 трудно понять, почему же они так часто получают ошибку — Поле объекта недоступно для записи 1С (РабочаяДата, Код, Таблица, Номер, Дата и т.д.)
. Разберемся, почему эта ошибка может появятся, и как с ней бороться.

Если Вы понятия не имеете, что такое программирование, то лучше ничего не трогать. Скорее всего, программисты, которые дорабатывали Вашу конфигурацию, просто допустили досадную ошибку. Просто вызовите специалиста, который работал с Вами. Данная ошибка решается достаточно быстро (если она не тянет за собой другие, более сложные проблемы). Если контакты с личными программистами потеряны, Вы можете обратиться к нашим высококвалифицированным профессионалам, подробности на странице — .

Если ошибка возникла после обновления конфигурации 1С 8.2 или 8.3
, скорее всего, Вам необходимо до последней
актуальной версии.

Получите 267 видеоуроков по 1С бесплатно:

Если говорить в общем, то Вы пытаетесь в программном коде изменить данные, которые не имеете права менять. Рассмотрим конкретные случаи:

Меняй объект, а не ссылку

Хит-парад причин появления этой ошибки возглавляет попытка присвоения ссылке элемента новых атрибутов. Делают это обычно примерно так:

Петров =
Справочники.
ФизическиеЛица.
НайтиПоНаименованию(«Петров Иван»
)
;

Петров.
НомерПаспорта =
«2156363»
;

И вот на этом моменте новичок получает ошибку — Поле объекта недоступно для записи 1С.

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

Правильное решение задачи:

ПетровСсылка =
Справочники.
ФизическиеЛица.
НайтиПоНаименованию(«Петров Иван»
)
;

ПетровОбъект =
ПетровСсылка.
ПолучитьОбъект()
;

ПетровОбъект.
НомерПаспорта =
«2156363»
;

ПетровОбъект.
Записать()
;

Попытка изменить системные поля

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

  • номер строки табличной части;
  • использование ТекущаяСтрока, вместо ТекущиеДанные;
  • и так далее.

———

Nokia N91-1
определённых обстоятельствах
однократное
длительное
Музыкальный проигрыватель


«.

А

1020e4fe.cre

P.S. Решил написать про решение данной проблемы именно здесь, а не в комментах к файлам, дабы данное решение нигде не затерялось и ушло в копилку знаний

DimonVideo
DimonVideo

2010-02-28T11:02:49Z
2010-02-28T11:02:49Z

Объект недоступен. Восстановлена стд. функция клавиши


———

Вот уже 2-ой раз за всё время использования старого доброго Nokia N91-1
столкнулся с этой, казалось бы, небольшой, но, тем не менее, очень неприятной проблемой — при определённых обстоятельствах
телефон отказывается реагировать на однократное
нажатие MM-клавиши (MultiMedia), в то время как длительное
нажатие — приводит к запуску Visual Radio. И лишь в целевом приложении (Музыкальный проигрыватель

) смартфон хоть как-то откликался: «Объект недоступен. Восстановлена стд. функция клавиши.

«.

А определёнными обстоятельствами служили
: в первый раз — полудохлая зарядка, которая то заряжала телефон, то нет, а во второй раз — точно такого же состояния, что и зарядка, mini-usb кабель. Причём, что интересно, помимо того, что MM-клавиша переставала выполнять свою функцию, дык и на винчестере устройства появлялись фантом-файлы:

Внимание! У вас нет прав, для просмотра скрытого текста.

И если с решением последнего проблем не возникало, а вот с первым вопросом было не всё так просто — . А решать вопрос хард-ресетом телефона, как я это сделал в 1-ый раз от отчаяния , не очень-то и хотелось — не будешь же каждый раз этим безобразием заниматься:D

Вот и пришлось искать альтернативные пути. Для начала попробовал воспользоваться программой для переназначения клавиш, но нужного в ней не нашёл. Решил попробовать так, как советует автор — опять промах, Anykey.exe не собирался делать того, что я от него ждал В итоге пришёл к этому — , предварительно, естественно, разблокировав смартфон. Но и это не дало желаемого результата — ну ещё бы, если пытаюсь заставить телефон делать то, что у него и так уже прописано, нового ничего ведь не добавляю (мне же не нужны какие-либо посторонние программы на MM, нужен именно Муз. проигрыватель). Но вот здесь — C:/private/10202be9/persists/
— нашёл очень интересный файлик под названием 1020e4fe.cre

. И сыграло во мне любопытство — предварительно забэкапив его, так, на всякий случай , удалил с диска. И… О чудо! Не пришлось даже перезагружать телефон, как он откликнулся на однократное нажатие мультимедийной клавиши и показал заветный Музыкальный проигрыватель. На этом мои мучения были закончены и, получив удовлетворение от результата, не взирая на кучу потраченного свободного времени, я отправился делиться маленькой, но приятной находкой именно сюда

Вот ведь бывает же Очень надеюсь, что кому-то данная маленькая, но крайне полезная заметонька поможет, и не придётся камраду лишний раз хардрезетить свой девайс;)

P.S. Решил написать про решение данной проблемы именно здесь, а не в комментах к файлам, дабы данное решение нигде не затерялось и ушло в копилку знаний «>

Наверняка многие из вас сталкивались с ошибкой Сбой загрузки программы. Программу <Имя программы> не удалось загрузить в настоящий момент
. Эта ошибка происходит или во время установки приложения из App Store или во время его обновления .

Причём ошибка характеризуется тем, что непонятно по каким алгоритмам она возникает. Например, я могу обновлять 50 программ, 47 обновятся нормально, а три покажут это сообщение.

Причина:
в большинстве случаев данное сообщение означает какие-то проблемы с интернетом или магазином App Store.

Что делать?

Действие 1. Самое очевидное

Попробуйте нажать кнопку “Ещё раз”. Есть вероятность, что приложение всё-таки загрузится.

Действие 2

Нажмите кнопку Готово
. Приложение перестанет грузиться. Зайдите в App Store в раздел Обновления
. И нажмите на кнопку Обновить
возле проблемного приложения.

Возможно второй раз обновление стоит запустить через несколько минут. Если в данный момент какие-то проблемы со связью, то стоит подождать.

Действие 3

Если приложение висит и явно не желает обновляться, можно его удалить и заново скачать в App Store. Делать это не рекомендую, если в приложении есть какие-нибудь документы или это игра, сохранения от которой вы не хотите потерять.

Действие 4

Действие 5

Ещё, как хороший вариант, можно считать перелогинивание в App Store. В разделе Подборка листайте в самый низ. В левом нижнем углу тыкайте по кнопке с вашим аккаунтом. Нажмите “Выйти” (или Sign Out). Дальше снова жмите по кнопке в левом нижнем углу. В появившемся окне вводите свой Apple ID и пароль.

Действие 6

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

Итог:

Если ничего не помогает, но при этом у вас ранее приложения грузились и обновлялись без проблем, значит это какие-то проблемы либо на стороне провайдера, либо на стороне Apple. Рекомендую просто подождать несколько минут/часов до разрешения ситуации. В это время можно пробовать обновить приложение или скачать заново и смотреть ушла ли проблема.

Во время пользования приложением пользователь часто сталкивается с «вежливым» окошком, предупреждающим о возникновении той или иной ошибки. Порождаются такие ошибки и во время попыток открыть какую-нибудь фотографию или отослать ее другу. Одной из таких ошибок является сообщение: «Этот элемент фото больше недоступен Viber». Что стоит за этим сообщением?

Этот элемент фото больше недоступен в Viber: что это?

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

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

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

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

Этот элемент фото больше недоступен в Viber: возможные решения

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

Для решения вопроса с ошибкой по ситуации с отправкой фотографий при загрузке, очевидно, понадобится выполнить всего лишь несколько шагов:

  • Дождаться полной загрузки фото из сети Интернет.
  • Перейти в папку загрузок на мобильном устройстве.
  • Перекопировать загруженные изображения в папку, где хранятся пользовательские изображения Вибера. Так мы позволим Виберу получить доступ к этим изображениям.
  • Отправить искомые фото другу.

В другой ситуации решением стало бы создание бекапа данных Вибера: контактов, файлов, с которыми работает это приложение, включая и фотографии. Бекап создается на случай непредвиденных ситуаций, как это случилось с пользователем, который запустил Clean Master и нечаянно удалил файлы, с которыми работал Вайбер. Осторожное обращение с программой позволит не допускать появления ошибок вида «Этот элемент фото больше недоступен Viber».

В декабре 2012 года произошло событие, которого многие пользователи устройств Apple в России и странах СНГ ждали с нетерпением — . Однако, законопослушные жители России уже успели создать себе американские аккаунты, что позволяло покупать музыку и другой контент, недоступный в российском App Store.

Данный аккаунт требовал обязательной привязки одноразовых виртуальных банковских карт или покупки подарочных сертификатов, так как в US iTunes Store карты Российских банков попросту не поддерживались.

С приходом полноценного iTunes Store в Россию необходимость в американской учетной записи отпадает сама собой. Данная инструкции поможет Вам сменить страну действующего Apple ID.

Помимо очевидных плюсов, таких как и поддержка отечественных банковских карт, смена аккаунта имеет и негативные стороны:

1.
Необходимо будет потратить все деньги на счету и отказаться от подписки iTunes Match.

2.
При смене страны-магазина Вы потеряете возможность автоматически обновлять, купленный в US Store контент. То есть можно будет зайти на страницу приложения и нажать кнопку обновить, но в разделе обновлений появляться программы не будут.

3.
Вы не сможете загрузить на свое устройство контент (игры, программы и т.д.), который отсутствует в Российском iTunes Store.

4.
При переходе в Российский магазин необходимо будет ввести данные банковской карты, действующей на территории России. В крайнем случае подойдут .

Теперь непосредственно переходим к самой инструкции:

«Обнуление» аккаунта

Если на Вашем счету осталась сумма, кратная 99 центам, то можно просто купить приложения. Если же сумма меньше 99 центов, то придется написать письмо в поддержку Apple.

Для этого необходимо запустить iTunes на компьютере и выбрать справа пункт «Support»
.

Затем в открывшемся окне снова нажать на кнопку «Support»
. После этого в браузере откроется страничка Apple, где в меню слева необходимо выбрать самый нижний пункт — «Contact Support»
. Далее нажать на ссылку «Contact iTunes Store support»
.

На открывшейся страничке выбрать пункт «Account Management»
, отметить поле «The topic is not listed»
и в поле ниже ввести тему запроса: списание остатка на счету или отказ от подписки iTunes Match. После нажатия на клавишу Enter будет произведен поиск решений и после этого появится кнопка Email, на которую и необходимо будет нажать.

Затем откроется страница, где Вам необходимо будет ввести свои персональные данные: имя и фамилию, почту для связи и почту, которую Вы используйте для входа в свой Apple ID. Все данные должны совпадать с данными, указанными при регистрации Американского аккаунта. На этой странице также нужно указать причину обращения.

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

Примерно через день на почту придет сообщение с уведомлением о списании средств с аккаунта. После этого можно приступить к смене страны в магазине.

Отказ от подписки на сервис iTunes Match

Если на Ваш американский Apple ID была оформлена подписка на сервис iTunes Match, то заранее необходимо загрузить всю медиатеку на компьютер из iCloud и выполнить все действия так же как и при списании средств. Но в качестве темы указать: «disable iTunes Match subscribition”. После этого с Вами свяжется сотрудник поддержки и уведомит Вас о том, что Ваш контент будет недоступен после отмены подписки, и предложит Вам возмещение оставшихся месяцев пользования сервисом. Необходимо ответить на этот e-mail, что Вы скачали все свои песни и хотите получить компенсацию.

Примерный текст: «Hello. I’m sure I want to cancel my iTunes Match subscribition and I want to receive partial refund».

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

Смена страны в iTunes Store

Нажимаем на Apple ID слева и в выпадающем меню выбираем пункт «Account»
.

На этой страничке ищем пункт «Change Country or Region”
.

Выбираем в списке «Russia»
и нажимаем кнопку «Change»
, затем «Continue»
, затем соглашаемся с правилами iTunes Store и нажимаем кнопку “Принять”
. После этого необходимо ввести Вашу платежную информацию. После этого можно спокойно пользоваться Русским магазином приложений и музыки от Apple. Для того, что бы загрузить уже купленную в US Store программу, на странице с описанием программы надо нажать кнопку «Купить», при этом система сообщит Вам, что обновление бесплатно, так как у Вас уже имеется предыдущая версия этого объекта. При этом данная программа не будет отображаться в истории покупок, следовательно и обновления автоматически появляться не будут.

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

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

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


	 Запрос = Новый Запрос;
	 Запрос.Текст =
	         "ВЫБРАТЬ
	          |        Номенклатура.Ссылка КАК Ссылка,
	          |        Номенклатура.ВерсияДанных КАК ВерсияДанных,
	          |        Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	          |        Номенклатура.Родитель КАК Родитель,
	          |        Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	          |        Номенклатура.Код КАК Код,
	          |        Номенклатура.Наименование КАК Наименование,
	          |        Номенклатура.Артикул КАК Артикул,
	          |        Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	          |        Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	          |        Номенклатура.Предопределенный КАК Предопределенный,
	          |        Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	          |ИЗ
	          |        Справочник.Номенклатура КАК Номенклатура
	          |ГДЕ
	          |         ";
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 КонецЦикла;

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

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


	 Запрос = Новый Запрос;
	            Запрос.Текст =
	                       "ВЫБРАТЬ
	                        |          Номенклатура.Ссылка КАК Ссылка,
	                        |          Номенклатура.ВерсияДанных КАК ВерсияДанных,
	                        |          Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	                        |          Номенклатура.Родитель КАК Родитель,
	                        |          Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	                        |          Номенклатура.Код КАК Код,
	                        |          Номенклатура.Наименование КАК Наименование,
	                        |          Номенклатура.Артикул КАК Артикул,
	                        |          Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	                        |          Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	                        |          Номенклатура.Предопределенный КАК Предопределенный,
	                        |          Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	                        |ИЗ
	                        |          Справочник.Номенклатура КАК Номенклатура
	                        |ГДЕ
	                        |          НЕ Номенклатура.ЭтоГруппа ";
	 НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
	 КонецЦикла;

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

Рис.3 Синтакс-помощник

Рис.3 Синтакс-помощник

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

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

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

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    !
    Правила раздела:

    • Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
    • Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
    • Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.

    Высказать своё мнение о модераторах раздела можно здесь: evGenius

    >
    1С 8.1 Добавление записи в табличную часть справочника

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    05.10.09, 10:55

      Senior Member

      ****

      Рейтинг (т): 0

      Как сделать сабж?


      evGenius



      Сообщ.
      #2

      ,
      05.10.09, 11:46

        ExpandedWrap disabled

          НоваяСтрокаТабЧасти = ЭлементСправочника.НазваниеТабличнойЧасти.Добавить();


        hawk1



        Сообщ.
        #3

        ,
        05.10.09, 12:28

          Senior Member

          ****

          Рейтинг (т): 0

          {Документ.ПриходнаяНакладная.Форма.ФормаДокумента(18)}: Ошибка при вызове метода контекста (Добавить): Объект недоступен для изменения.
          НоваяСтрока = СпрСкладыТаблЧасть.Добавить();
          по причине:
          Объект недоступен для изменения.


          Outlander



          Сообщ.
          #4

          ,
          05.10.09, 13:00

            что такое СпрСкладыТаблЧасть?


            hawk1



            Сообщ.
            #5

            ,
            05.10.09, 13:50

              Senior Member

              ****

              Рейтинг (т): 0

              ExpandedWrap disabled

                СпрСкладыТаблЧасть = Справочники.Склады.НайтиПоНаименованию(Склад).НаличиеМатериалов;


              evGenius



              Сообщ.
              #6

              ,
              06.10.09, 05:27

                ExpandedWrap disabled

                  СпрСкладыТаблЧасть = Справочники.Склады.НайтиПоНаименованию(Склад).ПолучитьОбъект().НаличиеМатериалов;


                hawk1



                Сообщ.
                #7

                ,
                06.10.09, 09:41

                  Senior Member

                  ****

                  Рейтинг (т): 0

                  ExpandedWrap disabled

                        СпрСкладыТаблЧасть = Справочники.Склады.НайтиПоНаименованию(Склад).ПолучитьОбъект().НаличиеМатериалов;

                        Для каждого СтрТаблЧасти Из ПереченьМатериалов Цикл

                            НайденнаяСтрока = СпрСкладыТаблЧасть.Найти(СтрТаблЧасти.Материал,»Материал»);

                            Если НайденнаяСтрока = Неопределено Тогда

                                НоваяСтрока = СпрСкладыТаблЧасть.Вставить(1);

                                НоваяСтрока.Количество = СтрТаблЧасти.Количество;

                                НоваяСтрока.Материал = СтрТаблЧасти.Материал;

                            Иначе

                                НайденнаяСтрока.Количество = НайденнаяСтрока.Количество + СтрТаблЧасти.Количество;

                            КонецЕсли;

                        КонецЦикла;

                  Но ниче не добавляется.


                  evGenius



                  Сообщ.
                  #8

                  ,
                  06.10.09, 11:08

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


                    hawk1



                    Сообщ.
                    #9

                    ,
                    06.10.09, 12:09

                      Senior Member

                      ****

                      Рейтинг (т): 0

                      ExpandedWrap disabled

                            Справочники.Склады.НайтиПоНаименованию(Склад).ПолучитьОбъект().Записать();

                      Так?


                      Outlander



                      Сообщ.
                      #10

                      ,
                      06.10.09, 12:15

                        не совсем так ты получишь новую версию объекта ;)


                        hawk1



                        Сообщ.
                        #11

                        ,
                        06.10.09, 12:36

                          Senior Member

                          ****

                          Рейтинг (т): 0

                          Как же?


                          Outlander



                          Сообщ.
                          #12

                          ,
                          06.10.09, 13:35

                            ExpandedWrap disabled

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

                              СпрСкладыТаблЧасть = СпрСклад.НаличиеМатериалов;

                              ….

                              СпрСклад.Записать();


                            evGenius



                            Сообщ.
                            #13

                            ,
                            07.10.09, 04:08

                              Мндаааа… Книжки — наше всё.

                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                              0 пользователей:

                              • Предыдущая тема
                              • 1С: Проблемы и решения
                              • Следующая тема

                              Рейтинг@Mail.ru

                              [ Script execution time: 0,0373 ]   [ 15 queries used ]   [ Generated: 25.06.23, 02:03 GMT ]  

                              Войти или зарегистрироваться

                              [РЕШЕНО] Объект недоступен для изменения.

                              Тема в разделе «Конфигурирование на платформе «1С:Предприятие 8″», создана пользователем alboldinov, 7 ноя 2014.




                              0/5,
                              Голосов: 0
                              1. TopicStarter Overlay

                                alboldinov

                                Offline

                                alboldinov
                                Опытный в 1С

                                Регистрация:
                                8 сен 2014
                                Сообщения:
                                195
                                Симпатии:
                                0
                                Баллы:
                                26

                                Код:
                                Выборка=Справочники.Контрагенты.НайтиПоКоду(код);
                                              ПОбъект = Выборка.ПолучитьОбъект();
                                           стр=ПОбъект.КонтактнаяИнформация.Добавить();
                                

                                При попытке добавить в табличную часть значение выдает сообщение «Объект недоступен для изменения»


                                alboldinov,
                                7 ноя 2014
                                #1

                              2. nomad_irk

                                Online

                                nomad_irk
                                Гуру в 1С

                                Регистрация:
                                20 окт 2008
                                Сообщения:
                                9.900
                                Симпатии:
                                1.035
                                Баллы:
                                204

                                А КонтактнаяИнформация какой тип имеет?


                                nomad_irk,
                                7 ноя 2014
                                #2
                              3. TopicStarter Overlay

                                alboldinov

                                Offline

                                alboldinov
                                Опытный в 1С

                                Регистрация:
                                8 сен 2014
                                Сообщения:
                                195
                                Симпатии:
                                0
                                Баллы:
                                26

                                Табличная часть


                                alboldinov,
                                7 ноя 2014
                                #3

                              4. nomad_irk

                                Online

                                nomad_irk
                                Гуру в 1С

                                Регистрация:
                                20 окт 2008
                                Сообщения:
                                9.900
                                Симпатии:
                                1.035
                                Баллы:
                                204

                                Хорошо. Контрагент точно найден и получен не пустой Объект?


                                nomad_irk,
                                7 ноя 2014
                                #4
                              5. TopicStarter Overlay

                                alboldinov

                                Offline

                                alboldinov
                                Опытный в 1С

                                Регистрация:
                                8 сен 2014
                                Сообщения:
                                195
                                Симпатии:
                                0
                                Баллы:
                                26

                                Точно. не пустой


                                alboldinov,
                                7 ноя 2014
                                #5

                              6. nomad_irk

                                Online

                                nomad_irk
                                Гуру в 1С

                                Регистрация:
                                20 окт 2008
                                Сообщения:
                                9.900
                                Симпатии:
                                1.035
                                Баллы:
                                204

                                Хорошо. Приложите скриншот объекта метаданных Справочник.Контрагенты так, чтобы были видны его табличные части.


                                nomad_irk,
                                7 ноя 2014
                                #6
                              7. TopicStarter Overlay

                                alboldinov

                                Offline

                                alboldinov
                                Опытный в 1С

                                Регистрация:
                                8 сен 2014
                                Сообщения:
                                195
                                Симпатии:
                                0
                                Баллы:
                                26

                                Хотя спасибо, натулкнули на мысль сейчас проверю

                                — Объединение сообщений, 7 ноя 2014

                                объект оказался группой. Спасибо


                                alboldinov,
                                7 ноя 2014
                                #7
                              (Вы должны войти или зарегистрироваться, чтобы ответить.)
                              Показать игнорируемое содержимое
                              Похожие темы

                              1. Pilokarpios

                                8.х
                                Объекты: Недоступен на сервере 1С:Предприятие.

                                Pilokarpios,
                                3 июн 2007
                                , в разделе: Конфигурирование на платформе «1С:Предприятие 8»
                                Ответов:
                                2
                                Просмотров:
                                1.899
                                Эмин
                                6 июн 2007

                              2. Slon747

                                8.х
                                Объект сервера 1С:Предприятие недоступен (800706BA)

                                Slon747,
                                12 фев 2008
                                , в разделе: Установка платформы «1С:Предприятие 8»
                                Ответов:
                                4
                                Просмотров:
                                2.246
                                Slon747
                                20 фев 2008

                              3. dj_lexa

                                8.х
                                Объект сервера 1С:Предприятия недоступен (80070534)

                                dj_lexa,
                                19 дек 2008
                                , в разделе: Установка платформы «1С:Предприятие 8»
                                Ответов:
                                3
                                Просмотров:
                                1.161
                                dj_lexa
                                22 дек 2008

                              4. alboldinov

                                [РЕШЕНО]
                                Недоступен товар для документа

                                alboldinov,
                                8 ноя 2014
                                , в разделе: Конфигурирование на платформе «1С:Предприятие 8»
                                Ответов:
                                25
                                Просмотров:
                                1.584
                                alboldinov
                                9 ноя 2014

                              Загрузка…
                              Ваше имя или e-mail:
                              У Вас уже есть учётная запись?
                              • Нет, зарегистрироваться сейчас.
                              • Да, мой пароль:
                              • Забыли пароль?

                              Запомнить меня


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

                              Поиск

                              • Искать только в заголовках
                              Сообщения пользователя:

                              Имена участников (разделяйте запятой).

                              Новее чем:
                              • Искать только в этой теме
                              • Искать только в этом разделе
                                • Отображать результаты в виде тем

                              Быстрый поиск

                              • Последние сообщения

                              Больше…

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

                              потому что Док не объект ни разу

                              {Форма.ФормаОтчета.Форма}: Значение не является значением объектного типа (ДокументыОснования)     табл=Реал.ДокументыОснования;     Так уже пробовала

                              потому, что нет такой табличной части ДокументыОснования

                              В документе счетфактуравыданный есть в БП 2.0

                              значит вот такого не может быть при вызове Реал = Док.ПолучитьОбъект; табл=Реал.ДокументыОснования; просто. не может.

                              показывай уже весь НОВЫЙ код

                              а часом Реал это не ревизит формы или объекта?

                              закешированная версия, не та обработка

                              поменяла Реал на Реал1 все заработало. Прикольно…

                              Приучите себя давать переменным осознанные имена — ДокОбъект, СтрокаТЧ….

                              например, такое имя: ПризнакТогоЧтоВОтправителиПолучателиТЗУжеПозиционировалисьНаНужногоОтправителя = Ложь;

                              Иной раз только такие меня и позволяют что-то понять в коде, который на 100500 строк.

                              а я наоборот, дальше 10-го символа имя уже не читаю.

                              ГенаТыПомнишьТыПросил… вот мульт про таких программистов: Уродство этой переменной ни каким образом не может дискредитировать идею понятного именования переменных

                              Тэги:

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

                            • Ошибка при вызове метода контекста xmlзначение ошибка преобразования данных xml
                            • Ошибка при вызове метода контекста добавить несоответствие типов параметр номер 1
                            • Ошибка при вызове метода контекста worksheets произошла исключительная ситуация 0x8002000b
                            • Ошибка при вызове метода контекста добавить недопустимое значение параметра
                            • Ошибка при вызове метода контекста windows произошла исключительная ситуация 0x8002000b