Інтернет Windows Android

1с 8.3 як зробити поле недоступним.

// Попутно заповнимо поле ПІБ об'єкта, якщо необходімоЕслі Чи не ЗначеніеЗаполнено (Об'ект.ФІО) Тоді СтруктураФІО \u003d ФізіческіеЛіцаКліентСервер.ФаміліяІмяОтчество (Трег (Об'ект.Наіменованіе)); НаіменованіеФізЛіца \u003d СокрЛП (СтруктураФІО.Фамілія + "" "" + СтруктураФІО.Імя + "" "" + СтруктураФІО.Отчество); Об'ект.ФІО \u003d НаіменованіеФізЛіца; Об'ект.Запісать (); КонецЕсли; // Про всяк випадок перевіримо, є записи в регістрі для поточного елементаДанниеФЛ \u003d РегістриСведеній.ФІОФізіческіхЛіц.СрезПоследніх (ТекущаяДатаСеанса (), Новий Структура ( "" ФізіческоеЛіцо "", Посилання)); Якщо ДанниеФЛ.Колічество () \u003d 0 Тоді // Заповнення регістра ПІБ фізичних осіб для бухгалтерії підприємства 3.0 СтруктураФІО \u003d ФізіческіеЛіцаКліентСервер.ФаміліяІмяОтчество (Трег (Об'ект.ФІО)); Період \u003d? (ЗначеніеЗаполнено (Об'ект.ДатаРожденія), Об'ект.ДатаРожденія, Дата (1900, 1, 1)); СтруктураФІО.Вставіть ( "" Період "", Період); СтруктураФІО.Вставіть ( "" ФізіческоеЛіцо "", Посилання); Набір \u003d РегістриСведеній.ФІОФізіческіхЛіц.СоздатьНаборЗапісей (); Набор.Отбор.ФізіческоеЛіцо.Установіть (Посилання); Запис \u003d Набор.Добавіть (); ЗаполнітьЗначеніяСвойств (Запис, СтруктураФІО); Набор.Запісать (); КонецЕсли; Регістр нормально заповниться, якщо найменування елементів довідника або поле ПІБ заповнені впорядковано, тобто в форматі Прізвище Ім'я По батькові. З вас сто рублів на телефон в профілі в якості подяки. // експортованих ПРОЦЕДУРИ І ФУНКЦІІПроцедура вЗагрузітьОбработкі (ДоступниеОбработкі, ВибранниеОбработкі) Експорт Форми \u003d ЕтотОб'ект.Метаданние (). Форми; Для кожного Форма з Форми Цикл Якщо Форма.Імя \u003d "" ПодборІОбработка "" АБО Форма.Імя \u003d "" ФормаНастроек "" АБО Форма.Імя \u003d "" ШаблонОбработкі "" Тоді Продовжити; КонецЕсли; НайденнаяСтрока \u003d ДоступниеОбработкі.Строкі.Найті (Форма.Імя, "" ІмяФорми ""); Якщо НЕ НайденнаяСтрока \u003d Не визначено Тоді Якщо НЕ НайденнаяСтрока.Обработка \u003d Форма.Сінонім Тоді НайденнаяСтрока.Обработка \u003d Форма.Сінонім; КонецЕсли; Якщо НЕ ЕтотОб'ект.ПолучітьФорму (Форма.Імя) .мІспользоватьНастройкі Тоді НайденнаяСтрока.Строкі.Очістіть (); КонецЕсли; продовжити; КонецЕсли; НоваяОбработка \u003d ДоступниеОбработкі.Строкі.Добавіть (); НоваяОбработка.Обработка \u003d Форма.Сінонім; НоваяОбработка.ІмяФорми \u003d Форма.Імя; КонецЦікла; МассівДляУдаленія \u003d Новий Масив; Для кожного ДоступнаяОбработка з ДоступниеОбработкі.Строкі Цикл Якщо Форми.Найті (ДоступнаяОбработка.ІмяФорми) \u003d Не визначено Тоді МассівДляУдаленія.Добавіть (ДоступнаяОбработка); КонецЕсли; КонецЦікла; Для Індекс \u003d 0 по МассівДляУдаленія. Кількість () - 1 Цикл ДоступниеОбработкі.Строкі.Удаліть (МассівДляУдаленія [Індекс]); КонецЦікла; МассівДляУдаленія.Очістіть (); Для кожного ВибраннаяОбработка з ВибранниеОбработкі Цикл Якщо ВибраннаяОбработка.СтрокаДоступнойОбработкі \u003d Не визначено Тоді МассівДляУдаленія.Добавіть (ВибраннаяОбработка); Інакше Якщо ВибраннаяОбработка.СтрокаДоступнойОбработкі.Родітель \u003d Не визначено Тоді Якщо ДоступниеОбработкі.Строкі.Найті (ВибраннаяОбработка.СтрокаДоступнойОбработкі.ІмяФорми, "" ІмяФорми "") \u003d Не визначено Тоді МассівДляУдаленія.Добавіть (ВибраннаяОбработка); КонецЕсли; Інакше Якщо ДоступниеОбработкі.Строкі.Найті (ВибраннаяОбработка.СтрокаДоступнойОбработкі.Родітель.ІмяФорми, "" ІмяФорми "") \u003d Не визначено Тоді МассівДляУдаленія.Добавіть (ВибраннаяОбработка); КонецЕсли; КонецЕсли; КонецЕсли; КонецЦікла; Для Індекс \u003d 0 по МассівДляУдаленія.Колічество () - 1 Цикл ВибранниеОбработкі.Удаліть (МассівДляУдаленія [Індекс]); КонецЦікла; КонецПроцедури // вЗагрузітьОбработкі () 1С: Підприємство 8.2 (8.2.18.61) Товстий клієнт конф не стандартна.

Ось ще: ось вирішив спробувати заміну значень в довіднику в табличній частині, треба відібрати і просто видалити значення (замінити на порожнє) і ось після відбору: "" (Форма.ПодборІОбработка.Форма (991)): Помилка при виклику методу контексту (Вивести ): Помилка виведення результату: Помилка при виведенні результату: Помилка отримання даних: Помилка створення набору даних "" НаборДаннихЗапроса "": Помилка при виконанні запиту набору даних: ((223, 31)): Невірні параметри в операції порівняння. Не можна порівнювати поля необмеженої довжини і поля несумісних типів. ТабліцаСсилок.Ссилка.Раціони\u003e \u003d & П "".


Параметри теми Ваші права Форум Відповідей Ост. Повідомлення Важлива: Обробка (кероване і звичайна програма, обмін даними УТ 10.3 / 10.2 - БП 3.0) Призначена для перенесення документів і довідників з бази УТ 10.3 / УТ 10.2 в базу БП 3.0 без використання планів обміну.: Arrow: Підтримувані релізи (для платформ 1С Підприємства 8.1, 8.2, 8.3): Управління торгівлею: 79 Сб 09 Сен, 2017 00:22 Обробка (кероване додаток) Дозволяє спростити процес налагодження та тестування зовнішніх обробок заповнення, в тому числі табличних частин, або створення зв'язаних об'єктів (введення на підставі ) для конфігурацій 1С: Підприємства 8.2 / 8.3, розроблених 39 Вт 18 Кві, 2017 19:43 Обробка (кероване і звичайна програма) Призначена для перегляду / зміни ролей (прав доступу) користувачів інформаційної бази як в режимі керованого, так і звичайного застосування без прив'язки до конкретної конфігурації. Для групового зміни ролей 8 Чт 02 Лют, 2017 19:45 Обробка (кероване і звичайна програма), обмін даними Призначення: універсальна обробка для реєстрації, скасування реєстрації змін (управління реєстрацією) в планах обмінів, моніторингу стану обміну даними як в режимі керованого, так і звичайного застосування без 28 Пт 18 Авг, 2017 1:06 Універсальний механізм контролю заповнення реквізитів об'єктів в режимі підприємства (звичайне додатку Універсальний механізм контролю заповнення реквізитів (контроль незаповнених реквізитів) шапки і табличних частин об'єктів конфігурації (довідників, документів, бізнес-процесів , завдань, планів обміну, планів видів 15 Чт 09 Лип, 2015 15:29.

Помістив кнопку в формі списку довідника, написав код: Процедура ДействіяФормиНомера (Кнопка) Вибірка \u003d Справочнікі.СпісокУпражненій.Вибрать (); Поки Виборка.Следующій () Цикл Якщо Виборка.Родітель.Наіменованіе \u003d "" Тоді Якщо Виборка.ГруппаМишц. 14 жовтня 10, 17:20 Відповісти | Цитувати Повідомити модератору. Re: Поле об'єкта недоступно для запису. 1c8.2 Довідник Співробітники Модуль форми елемента. Процедура відкриття () Якщо не ЕтоНовий () Тоді.


При роботі з 1С досить часто може з'являтися повідомлення про помилку «Поле об'єкту недоступно для запису». Розглянемо, які дії можуть привести до неї, і як її можна усунути. Причини виникнення помилки До появи системного вікна з цією помилкою може привести 6 факторів: Спроба зміни значень в полях, зміна яких безглузда; Помилка в коді; Спроба зміни системних полів; Недостатньо прав на зміну; Застаріла конфігурація 1С; В керованої формі використовується елемент і реквізит з одним ім'ям.

Спроба зміни значень в полях, зміна яких безглузда Наприклад, в програмі відбувається спроба заміни посилання, а не об'єкта. Але зробити цього неможливо. Якщо змінити посилання, то, по-перше, вона буде посилатися на неіснуючий об'єкт (в нікуди), по-друге, потрібний об'єкт по ній ви більше не знайдете. Приклад неправильного фрагмента коду: Іванов \u003d Справочнікі.ФізіческіеЛіца.НайтіПоНаіменованію ( «Іванов Петро»); Іванов.НомерПаспорта \u003d «2175353»; І при введенні останнього рядка з'являється помилка «Поле об'єкту недоступно для запису». Причина в тому, що відбувається спроба редагування властивостей або реквізитів посилання. У зазначеному прикладі параметру «НомерПаспорта» ви намагаєтеся задати певне значення. Але ці дані можна змінювати тільки у об'єкта.

В даному прикладі «Іванов» - це саме посилання, яка призначена для читання. По ній людина ідентифікується в базі даних. У другій сходинці вказана «точка» - «Іванов.НомерПаспорта». Але це також не об'єкт, тому що при зверненні до «точки» виконується все той же запит до бази даних. Зроблено це для зручності використання 1С. Як виправити помилку?

Щоб повідомлення «Поле об'єкту недоступно для запису» більше не з'являлося, потрібно прописати наступне: ІвановСсилка \u003d Справочнікі.ФізіческіеЛіца.НайтіПоНаіменованію ( «Іванов Петро»); ІвановОб'ект \u003d ІвановСсилка.ПолучітьОб'ект (); ІвановОб'ект.НомерПаспорта \u003d «2175353»; ІвановОб'ект.Запісать (); Тепер за посиланням виконується звернення до об'єкта, а потім вже він редагується. Після цього об'єкт записується, тобто фіксується його новий стан. Помилка в коді Можливо причина в тому, що програміст, який працював з поточної конфігурацією 1С, припустився помилки при доопрацюванні. Тоді виправити її зможе також тільки фахівець. Бажано, щоб це був саме той чоловік, який спочатку налаштовував 1С.

Спроба зміни системних полів Користувач намагається редагувати ті дані, на заміну яких він не має прав. Наприклад, номер рядка в таблиці, установка «ТекущаяСтрока» замість «ТекущіеДанние» і т. Іноді помилка виникає через простій неуважності. Якщо звертатися до правильних полях - помилка з'являтися не буде. Недостатньо прав на зміну Іноді поле, яке намагається змінити користувач, є тільки для читання. Це пов'язано з правами на об'єкти конкретного користувача. Щоб усунути виникає помилку, необхідно проаналізувати права на конкретний об'єкт і або дозволити користувачеві доступ до відповідного полю (на запис), або взагалі виключити поле (або цілий об'єкт) з розгляду.

Застаріла конфігурація 1С Іноді помилка «Поле об'єкту недоступно для запису» з'являється при оновленні 1С. Щоб прибрати її, потрібно оновитися до найсвіжішої версії платформи. Усунути помилку зазвичай не складно і зробити це може сам користувач. Якщо ж серйозно порушена конфігурація 1С, виправити становище зможе тільки фахівець. В керованої формі використовується елемент і реквізит з одним ім'ям Досить рідко помилка «Поле об'єкту недоступно для запису» з'являється при збігу імен реквізиту і елемента керованої форми.

Щоб усунути помилку, необхідно явно прописати звернення до реквізиту або елементу форми. Наприклад, у формі 1С є реквізит з ім'ям «Сума».

З таким же ім'ям на формі знаходиться елемент «Сума».

Для початківців розробників 1С 8.3 важко зрозуміти, чому ж вони так часто отримують помилку - Поле об'єкта недоступно для запису 1С (РабочаяДата, Код, Таблиця, Номер, Дата і т.д.). Розберемося, чому ця помилка може з'являться, і як з нею боротися.

Якщо Ви не уявляєте, що таке програмування, то краще нічого не чіпати. Швидше за все, програмісти, які допрацьовували Вашу конфігурацію, просто припустилися прикрої помилки. Просто викличте спеціаліста, який працював з Вами. Дана помилка вирішується досить швидко (якщо вона не тягне за собою інші, більш складні проблеми). Якщо контакти з особистими програмістами втрачені, Ви можете звернутися до наших висококваліфікованим професіоналам, подробиці на сторінці -.

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

Отримайте 267 відеоуроків по 1С безкоштовно:

Якщо Ви початківець програміст 1С

Якщо говорити в загальному, то Ви намагаєтеся в програмному коді змінити дані, які не маєте права змінювати. Розглянемо конкретні випадки:

Міняй об'єкт, а не посилання

Хіт-парад причин появи цієї помилки очолює спроба привласнення посиланням елемента нових атрибутів. Роблять це зазвичай приблизно так:

Петров \u003d Довідники. Фізичні особи. НайтіПоНаіменованію ( "Петров Іван"); Петров. НомерПаспорта \u003d "2156363";

І ось на цьому моменті новачок отримує помилку - Поле об'єкту недоступно для запису 1С.

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

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

ПетровСсилка \u003d Довідники. Фізичні особи. НайтіПоНаіменованію ( "Петров Іван"); ПетровОб'ект \u003d ПетровСсилка. ПолучітьОб'ект (); ПетровОб'ект. НомерПаспорта \u003d "2156363"; ПетровОб'ект. Записати ();

Спроба змінити системні поля

Другий за популярністю причиною виникнення даної помилки є спроба змінити реквізити, які не піддаються зміні.

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

Початківці програмісти 1С достатньо часто бачать перед собою повідомлення про помилку недоступності поля об'єкта під час запису. Існує всього три шляхи появи цієї помилки, але на практиці з нею зустрічаються досить часто, тому розробнику треба знати, як виправити ситуацію. Зрозумівши один раз причини появи повідомлення системи «Поле об'єкту недоступно для запису», ви перестанете отримувати його раз і назавжди.

Чому з'являється ця помилка?

Якщо ви простий користувач і бачите перед собою таку помилку, то навряд чи ви зможете з нею впоратися самостійно. Проблема не в ваших діях, а в помилку в коді програми. Щоб виправити її, необхідно проаналізувати алгоритми. Тому, побачивши помилку «Поле недоступно для запису», повідомте розробнику і чекайте його вказівок. Якщо в штаті вашої компанії немає програмістів 1С, то до вас на допомогу прийдуть сторонні фахівці.

Розробники виділяють 3 поширені причини появи вікна з помилкою:

Спроба зміни посилання, а не об'єкта. В системі 1С існують певні правила, і одне з них свідчить: «Змінювати можна тільки об'єкти». Проблема в тому, що посилання - просто адреса об'єкта в базі даних, створений для унікальності. Важливо зрозуміти різницю між посиланням і об'єктом, тому що при деяких операціях з ними результат буде однаковий.

Якщо ви випадково або через незнання спробували змінити реквізит посилання і отримали помилку, то необхідно додати всього пару рядків коду. У платформі 8.3 закладена функція отримання об'єкта по посиланню, і для зміни значення реквізитів доведеться нею скористатися. Тобто перед зміною потрібно отримати об'єкт за посиланням, змінити реквізит і записати об'єкт.

НЕПРАВИЛЬНИЙ КОД: СсилкаНаНоменклатуру \u003d Справочнікі.Номенклатура.НайтіПоНаіменованію ( "Сметана 25%"); СсилкаНаНоменклатуру.Наіменованіе \u003d "Сметана Вологодська 25%"; СсилкаНаНоменклатуру.Запісать (); ПРАВИЛЬНИЙ КОД: СсилкаНаНоменклатуру \u003d Справочнікі.Номенклатура.НайтіПоНаіменованію ( "Сметана 25%"); НоменклатураОб'ект \u003d СсилкаНаНоменклатуру.ПолучітьОб'ект (); НоменклатураОб'ект.Наіменованіе \u003d "Сметана Вологодська 25%"; НоменклатураОб'ект.Запісать ();

Ще одне джерело даної помилки по частотності є код, в якому розробник намагається поміняти заборонені до зміни реквізити. Цим грішать недосвідчені програмісти 1С, намагаючись змінити номер рядка в табличній частині, ідентифікатори і так далі.

ДокументОб'ект \u003d Документи.ПоступленіеТоваровУслуг.НайтіПоНомеру ( "000000003"). ПолучітьОб'ект (); Для кожного рядок з ДокументОб'ект.Товари цикл строчка.НомерСтрокі \u003d 2; КонецЦікла; ДокументОб'ект.Запісать ();

Ще однією причиною появи подібної помилки є оновлення. 1С випускає їх досить часто і для конфігурацій, і для платформ. Проблема в тому, що далеко не всі зміни піддаються ретельному тестуванню, і користувачі мимоволі виконують цю роботу. Саме тому рекомендується користуватися тестовою базою для поновлення, на якій перевіряти працездатність нового релізу 1С, зіставляти на ній значення і параметри.

Що робити, якщо після оновлення ви все-таки не можете працювати, спостерігаючи помилку недоступності поля об'єкта для запису?

Фахівці радять або встановити самий останній випуск конфігурації і платформи 1С, або, навпаки, повернутися до попереднього працездатного і чекати виправлень. Звичайно, можна залізти в код типової конфігурації і поправити помилку, але для цього необхідно бути висококваліфікованим розробником 1С і пам'ятати, що після зміни ви не зможете оновлюватися в автоматичному режимі.

Якщо ви вирішили звернутися за допомогою, майте на увазі, що у вашій компанії може бути встановлено кілька програмних продуктів від 1С, тому для полегшення роботи програмістів при зверненні повідомте їм докладні дані. До потрібних параметрах відноситься найменування програми, її версія і дії, які призвели до появи помилки. З цими вступними розробник в рази швидше розбереться з виниклою проблемою.