Версия для печати темы (https://pro1c.org.ua/index.php?showtopic=1415)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.1 (8.0) _ Поле объекта недоступно для записи

Автор: Vofka 02.03.10, 14:14

Написал простенькую функцию



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


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

Автор: Batchir 02.03.10, 14:19

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



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

Автор: Vofka 02.03.10, 14:22

Ты это имеешь ввиду?



Область.Параметры.ТабельныйНомер = ОбщийМодуль.УдалениеВедущихНулей(ВложеннаяВыборка.ТабельныйНомер);

Автор: Batchir 02.03.10, 14:47

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

а то у тебя получается что в своей функции меняешь значение выборки

Автор: Hantinka 05.11.15, 19:10

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

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


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

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

Спасибо!

Конфигурация: Бухгалтерия для Украины 1.2.32.2
Платформа: 8.3.5.16.25

Автор: Petre 06.11.15, 9:14

Если через элемент формы, то:

ЭлементыФормы.СтатьяДекларацииПоЕдиномуНалогу.Значение = СтДек;

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

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

Автор: Hantinka 06.11.15, 11:22

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

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

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


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

Тоже ошибки нет, но и реквизит пустой. Стабильность

Автор: Petre 06.11.15, 12:27

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

Автор: Hantinka 06.11.15, 12:59

Проблему решил Doom2w с инфостарта

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

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


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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua