Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Поле объекта недоступно для записи
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
Vofka
Написал простенькую функцию



Функция УдалениеВедущихНулей(Номер) Экспорт
Пока Лев(Номер, 1)="0" Цикл
Номер = Прав(Номер, СтрДлина(Номер)-1);
КонецЦикла;
Возврат Номер;
КонецФункции


Не работает, пишет:
Поле объекта недоступно для записи (ТабельныйНомер) (Табельный номер как раз передается в эту функцию, тип его Строка).
sad.gif
Batchir
А как ты получаешь объект у которого меняешь ТабельныйНомер? Возможно для вначале нужно выполнить следующее, например,


ДокОбъект = ДокументСсылка.ПолучитьОбъект();
ТабНомер = ДокОбъект.ТабельныйНомер;
ДокОбъект.ТабельныйНомер = УдалениеВедущихНулей(ТабНомер);
Vofka
Ты это имеешь ввиду?


Область.Параметры.ТабельныйНомер = ОбщийМодуль.УдалениеВедущихНулей(ВложеннаяВыборка.ТабельныйНомер);
Batchir
Нет, но я же не знал что такое "ТабельныйНомер" и предположил что это реквизит какого-то объекта.
Ну тут две проблемы может быть:
1. Область.Параметры.ТабельныйНомер недоступен для записи (хз почему, несталкивался с таким)
2. Передавать нужно не ВложеннаяВыборка.ТабельныйНомер напрямую, а через промежуточную переменную (более вероятно)
т.е. попробуй
ТабНомер = ВложеннаяВыборка.ТабельныйНомер;
Область.Параметры.ТабельныйНомер = ОбщийМодуль.УдалениеВедущихНулей(ТабНомер);

а то у тебя получается что в своей функции меняешь значение выборки
Hantinka
Добрый день!
Появилась необходимость, чтобы в документе в зависимости от вида операции автоматически выбиралось определённое значение реквизита (в Платёжном поручении входящем при его создании при операции "Оплата от покупателя" в реквизит "Статья декларации по Единому налогу" автоматически подтягивалось определённая запись справочника).
В модуле документа в Процедуре ПриОткрытии я написала:

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


При попытке создания документа ошибка "Поле объекта недоступно для записи (СтатьяДекларацииПоЕдиномуНалогу)"

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

Спасибо!

Конфигурация: Бухгалтерия для Украины 1.2.32.2
Платформа: 8.3.5.16.25
Petre
Если через элемент формы, то:
ЭлементыФормы.СтатьяДекларацииПоЕдиномуНалогу.Значение = СтДек;

Но лучше через реквизит:
СтатьяДекларацииПоЕдиномуНалогу = СтДек;

Название реквизита может не совпадать с названием элемента.
Hantinka
Цитата(Petre @ 06.11.15, 9:14) необходимо зарегистрироваться для просмотра ссылки
Если через элемент формы, то:
ЭлементыФормы.СтатьяДекларацииПоЕдиномуНалогу.Значение = СтДек;

Но лучше через реквизит:
СтатьяДекларацииПоЕдиномуНалогу = СтДек;

Название реквизита может не совпадать с названием элемента.


И в первом, и во втором варианте ошибки нет, но и поле на форме пустое.
Если написать
ЭтотОбъект.СтатьяДекларацииПоЕдиномуНалогу.Значение = СтДек;

Тоже ошибки нет, но и реквизит пустой. Стабильность
Petre
Да, совсем забыл, что в платежных поручениях все данные записываются в первую строку табличной части "РасшифровкаПлатежа".
Hantinka
Проблему решил Doom2w с инфостарта

Код должен выглядеть следующим образом

Если   ВидОперации = Перечисления.ВидыОперацийПоступлениеБезналичныхДенежныхСредств.ОплатаПокупателя Тогда
    СтДек=Справочники.СтатьиНалоговыхДеклараций.ЕННК_ДоходыРеализация;
    ЭлементыФормы.СтатьяДекларацииПоЕдиномуНалогу.Значение=СтДек;
    ЭтотОбъект.СтатьяДекларацииПоЕдиномуНалогу=СтДек;
КонецЕсли;


И его нужно дописывать в конце процедуры ПриОткрытии, т.к. цитирую "при открытии его что-то сбрасывает".
Самое обидное, что код я таки написала правильно, а вот понять что он не пашет, потому что написан в начале процедуры, а не в конце - на это ума не хватило sad.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.