1с специальныйрежимвводатекста не работает

Обновлено: 04.07.2024

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

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

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

Причины появления ошибки в 1С

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

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

Часто возникающие ошибки 1С

Все имеющиеся сбои выводят на экран разные уведомления. Одинакового текста не бывает. Чтобы проще ориентироваться, разделим существующие ошибки 1С на следующие пункты:

  1. Недостаточно памяти.
  2. Ошибка доступа.
  3. Ошибка формата потока.
  4. Ошибка СУБД: Файл базы данных поврежден.
  5. Неправильное отображение блоков формы.
  6. Внутренняя ошибка компоненты dbeng.
  7. Dump при запуске.
  8. Неверный формат хранилища.
  9. Ничего не работает.

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

Недостаточно памяти

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

Пользователь может самостоятельно решить проблему с памятью. По умолчанию операционная система выделят фиксированное значение гигабайт на обслуживание приложения: 32 bit ОС – 2 Гб, 64 bit – 4 Гб.

Увеличить размер выделенной памяти можно вручную. Для этого запускается адресная строка (Пуск – Выполнить, вводиться фраза cmd). После нажатия «Ентер» достаточно ввести фразу bcdedit /set increaseuserva 4096 и подтвердить действие (клавиша «Enter»). Цифра 4096 – новый выделяемый объем «оперативки». Выполняется перезагрузка системы. Проблема должна быть устранена.

Ошибка доступа

Она возникает, если учетная запись не имеет достаточно прав. Проявляется при выполнении определенного действия, которое доступно только ограниченному кругу пользователей. Для исправления ситуации достаточно изменить роль выбранного профиля в конфигураторе (вкладка «Администрирование – Пользователи»). В некоторых случаях это увеличивает безопасность базы данных, если необходимо защитить файлы от изменения сторонними людьми.

Ошибка формата потока

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

Устранение подобной ошибки 1С выполняется простой чисткой кэша. Для этого необходимо перейти в папку, где хранятся временные файлы. В Windows 7 и выше она находится по адресу C:\Users\Username\AppData\Local\1C или C:\Users\Username\AppData\Roaming\1C. Для Windows ХР другой путь – Local Settings\Application Data\1C\. Все файлы, начинающиеся на 1cv8, кроме «1Cv8.1CD» полностью удаляются.

Если «Ошибка формата потока» возникает в процессе работы, то нужно провести тестирование (Администрирование – Тестирование и исправление), выбрать первые 2 галочки и запустить процесс.

Ошибка СУБД: Файл базы данных поврежден

Если всплывает информационное окно с подобной надписью, неисправность базы данных решается тестированием файла и всей информационной базы. Такое мероприятие может проводиться 2 способами:

  • Запуск утилиты chdbfl.exe. Эта программа предназначена для того, чтобы проверять целостность базы данных при совместном ее использовании с информационной базой. Данный метод хорош тем, что дает возможность решать сбои даже в тех ситуациях, когда конфигуратор запустить невозможно. Сначала выполняется резервное копирование информации. В папке, где установлен 1С (директория bin) находится файл chdbfl.exe. Он запускается, в окне прописывает путь к файлу базы данных и ставится галочка, чтобы провести исправление ошибок. Нажимается кнопка «Выполнить». После завершения процесса все должно заработать. Если нет – используется конфигуратор.
  • Через конфигуратор. Нужное окно вызывается после нажатия «Администрирование – Тестирование и исправление». На экране появляется форма, где выставляются галочки на следующе строчки: «Реиндексация таблиц…», «Проверка логической целостности…», «Проверка ссылочной…», «Реструктуризация таблиц…», «Тестирование и исправление» и 2 раза «Создать объекты». Нажимается кнопка «Выполнить». После завершения процедуры сбой устраняется.

Неправильное отображение блоков формы

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

Если приведенные методы не помогают, рационально будет провести обновление платформы.

Внутренняя ошибка компоненты dbeng

Dump при запуске

Возвращение 1С в рабочее состояние проводится простым обновлением MS Visual Studio (Visual C++) и дополнительными манипуляциями. Чтобы отследить конкретный файл, в котором возникает ошибка, открывается «Просмотр событий». Для этого пользователь переходит в «Панель управления – Система и безопасность – Администрирование». С левой стороны раскрывается «Журнал Windows – Приложение».

На экране появляется список ошибок и точное расположение поврежденного файла. После установки новой версии MS Visual Studio (Visual C++) с папки System32 копируется одноименный файл dll и вставляется в папку платформы 1С. Проблема решилась.

Неверный формат хранилища

Ничего не работает

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

  • чистится кэш;
  • открывается файл chdbfl.exe из папки установки приложения и выполняется исправление;
  • выполняется запуск «Конфигуратора» для тестирования и исправления сбоев;
  • обновление «1С».

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

Внимание. По какой то причине статья не отображается в IE. Поэтому, тем кто не может просмотреть статью на сайте, рекомендую скачать doc-файл.

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

До перехода на новую платформу 1С 8.2, я, признаться, даже не задумывался, где именно исполняется написанный в модуле формы код – на клиенте или на сервере. Писал код, «как получится». Субъективно, в 1С 8.1 этому не придавалось значения. Объективно, конечно, в книгах давались рекомендации по оптимизации кода, но, как это часто в жизни бывает – я думал, зачем соблюдать какие-то правила, когда можно обойтись без них и получить рабочий результат? Оптимальность кода становилась актуальной, только когда в системе появлялись серьезные «затыки» и приходилось разбираться «отчего так получилось?». И «тяжелое» место в коде было не всегда очевидно. Пляски с бубном, замеры производительности, детальный разбор узких мест…

Теперь в 1С 8.2 применяется новый подход к программированию форм. Благодаря этому многое разложилось по полочкам, но чтобы окончательно во всем разобраться, пришлось потратить какое-то время и перестроить мозги на работу в логике клиент-серверного взаимодействия. Причем все оказалось несколько сложнее, чем казалось первоначально (как всегда).

Пока не разобрался в теории, постоянно допускал ошибки на практике и задавался вопросом «почему не работает?».

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

Серверу и клиенту доступны разные объекты, а также их свойства и методы встроенного языка. Сервер выполняет действия связанные с доступом к данным БД и их обработкой , а клиент выполняет отображение этих данных и взаимодействие с пользователем . Таким образом, клиент-серверное взаимодействие определяет ряд правил при разработке кода.

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

&НаСервере

&НаКлиенте

&НаСервереБезКонтекста

&НаКлиентеНаСервереБезКонтекста

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

Если директива компиляции перед описанием процедуры или функции отсутствует, то считается, что данная процедура или функция исполняется на сервере ( &НаСервере ) .

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

&НаСервере

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

&НаКлиенте

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

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

&НаСервереБезКонтекста

Директива указывает на то, что код будет исполняться на сервере, при этом контекст формы будет недоступен. А значит получить доступ к реквизитам и элементам формы из процедуры или функции выполняемой с данной директивой – не получится. Но с другой стороны вызов такой процедуры или функции существенно «легче» по объему передаваемых данных на сервер. Для тонкого клиента или веб-клиента это играет важную роль. Если реквизиты и элементы формы не потребуются для исполнения кода на сервере, то вызов процедуры или функции скомпилированной с директивой &НаСервереБезКонтекста - верный выбор.

&НаКлиентеНаСервереБезКонтекста

Данная директива определяет, что процедура или функция может исполняться как в контексте клиента, так и в контексте сервера. Когда такое может понадобиться при разработке? Скорее всего тогда, когда нужно выполнить одинаковые действия в обеих частях приложения. Чтобы не создавать две одинаковые процедуры с разными директивами – можно сделать одну, с директивой &НаКлиентеНаСервереБезКонтекста.

Процедура ОтчествоОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка)
Объект.Наименование = Объект.Фамилия + " " Объект.Имя + " " Объект.Отчество;
КонецПроцедуры

К примеру ввожу Иванов Петр Сидорович

В результате Наименование получается Иванов Петр
Поле ввода Отчество очищается почему, что я делаю не так?
2.
Полее ввода Телефон по событию ОкончаниеВводаТекста
Требуется провести поиск по реквизиту телефоон справочнику Контрагенты
Но 1С предлагает создать только процедуры наКлиенте или Наклиенте и На сервереБезКонтекста как в таком случае передать значение на сервер для поиска?

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

(0) вот это просто 5:
Объект.Наименование = Объект.Фамилия + " " Объект.Имя + " " Объект.Отчество;
В результате в наименовании будет:
Фамилия Пробел ПереводСтроки. Имя Пробел ПереводСтроки. Отчество
"+" добавь после пробелов. И прежде чем ломиться на форум посмотри в отладчике результирующие данные. Почему обновление Наименования поставлено в ПриОкончанииВводаТекста, а не в ПриИзменении? Так критично сразу поменять наименование?

про пункт 2: Параметры процедуры/функции используй.

(3) а наименование? Фамилия(50)+Имя(50)+Отчество(50)=Наименование(сколько?) например, 25 стандартная длина наименования в справочнике что в ней останется?
И это надо ставить на изменение всех трех полей, а не только на Отчество.
Попробую приизменении но вот почему очищается поле после выполнения любого кода в таком варианте не понятно
(7) могу только предположить, что введённый текст выделяется и при нажатии любой клавиши просто очищается.
(10) Такой же как приизменении, только приокончанииввода
Оно используется в других случаях
(12) До сих пор фигней маешься? Тебе в во втором посте уже все сказали.
(13) плюнул и сделал все что нужно было через приизменении

Расширение поля формы для поля ввода.ОкончаниеВводаТекста (Form field extension for a text box.TextEditEnd)
Расширение поля формы для поля ввода (Form field extension for a text box)
ОкончаниеВводаТекста (TextEditEnd)
Синтаксис:

ОкончаниеВводаТекста(<Текст>, <ДанныеВыбора>, <ПараметрыПолученияДанных>, <СтандартнаяОбработка>)
Параметры:

Тип: Строка.
Строка текста, введенная в поле ввода.
Тип: СписокЗначений.
Параметр заполняется списком значений для последующего выбора одного из них и размещения его в поле ввода. Пометки элементов этого списка значений могут использоваться для отметки значений, соответствующих помеченным на удаление объектам. В том случае, если пользователь выберет одно из помеченных значений, система выдаст стандартное предупреждение о выборе помеченного на удаление объекта.

Список может содержать как конкретное значение, так и структуру, в которой может быть указана следующая информация (по именам ключей в структуре):
Тип: Структура; Неопределено.
Содержит параметры поиска, которые будут переданы в метод ПолучитьДанныеВыбора.
Структура, в которой обязательно должны содержаться следующие ключи:
Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет.
Параметр позволяет отменить стандартное заполнение системой ДанныеВыбора. При этом все действия (отображение списка, предупреждения) выполняются системой на основе возвращенного значения параметра <ДанныеВыбора> независимо от значения параметра <СтандартнаяОбработка>.
Для типов Число, Строка, Дата, если установить данному параметру значение Истина, то выполняется стандартное присвоение значения на основе введенного текста, без использования значения параметра <ДанныеВыбора>. В противном случае поле ввода обрабатывает получаемый в <ДанныеВыбора> список значений аналогично другим типам.
Значение по умолчанию: Истина.
Описание:

Возникает при формировании значения по отредактированному тексту. Например, в момент перехода на другой элемент управления формы, при закрытии формы и т.д.
Примечание:

В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.
--------------------------------------------------------------------------------

Читайте также: