Ошибка при выполнении команды 1с
Любая программа, установленная на компьютер, может время от времени работать неправильно. Периодические сбои, которые приводят к невозможности использования ПО, называются ошибки. Чтобы суметь диагностировать и устранять ошибки в 1С, пользователь должен хотя бы немного разбираться в особенностях работы программ. Наличие минимальных знаний позволяет решать проблемы самостоятельно.
Прежде чем рассматривать основные разновидности ошибок, стоит заметить, что они отличаются между собой по происхождению. Приложение может привести к физическому или логическому сбою. В результате 1С просто не запускается или начинает работать в режиме «Конфигуратор». Пользовательский режим бывает недоступен или, при использовании определенных команд, будет появляться сбой.
Чтобы научиться быстро исправлять ошибки в 1С необходимо изначально их проанализировать. Часто во всплывающем окне написана суть некорректного поведения, что помогает решить проблему.
Причины появления ошибки в 1С
Разберем основные моменты, связанные с частым появлением сбоев при работе с базой данных. Они возникают в разных ситуациях, и определить их истинную причину не всегда возможно.
Одна из самых частых причин нарушение работы связанна с компьютером, на который установлена база данных 1С. Рабочая область может автоматически закрываться из-за нехватки оперативной памяти на сервере. Все возникающие неисправности должны быстро устраняться. В противном случае есть вероятность потери данных.
Часто возникающие ошибки 1С
Все имеющиеся сбои выводят на экран разные уведомления. Одинакового текста не бывает. Чтобы проще ориентироваться, разделим существующие ошибки 1С на следующие пункты:
- Недостаточно памяти.
- Ошибка доступа.
- Ошибка формата потока.
- Ошибка СУБД: Файл базы данных поврежден.
- Неправильное отображение блоков формы.
- Внутренняя ошибка компоненты dbeng.
- Dump при запуске.
- Неверный формат хранилища.
- Ничего не работает.
Для того, чтобы научиться исправлять возникающие ошибки, рассмотрим каждый пункт по отдельности.
Недостаточно памяти
Подобный сбой проявляется только в том случае, если на выполнение операций с программой выделено мало оперативной памяти. Приложение не может обрабатывать большие объемы информации, поэтому выдает «Недостаточно памяти 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С».
Если это не критичная ошибка, она должна исправляться при установке актуальной версии программного комплекса. В остальных ситуациях необходимо пользоваться помощью профессиональных мастеров, которые отлично понимают принцип подобных продуктов.
Хотите получать подобные статьи по четвергам?
Быть в курсе изменений в законодательстве?
Подпишитесь на рассылку
Статья рассчитана в первую очередь на тех, кто недостаточно много работал с 1С и не успел набить шишек при встрече с часто встречающимися ошибками. Обычно можно определить для себя несколько действий благодаря которым можно определить решится ли проблема за несколько минут или же потребует дополнительного анализа. В первое время сталкиваясь с простыми ошибками тратил уйму времени на то, чтобы с ними разобраться. Конечно, интернет сильно помогает в таких вопросах, но не всегда есть возможность им воспользоваться. Поэтому надеюсь, что эта статья поможет кому-нибудь сэкономить время.
В информационных базах на платформе 1С могут возникнуть множество различных ошибок:
нарушение логической/физической целостности базы, ошибки пользователей, «кривой» код разработчика и многое другое.
Причин может быть множество: отключили свет, и не было источника бесперебойного питания, или вечер пятницы удался, и пользователь уже и не может вспомнить в понедельник, что он натворил такого.
Во-первых, стоит задать несколько уточняющих вопросов пользователю:
1) Релизы платформы/конфигурации.
4) Возникает ли если запустить 1с с другого компьютера/от другого пользователя? Это даст нам пищу для размышлений – сможет ли помочь очистка кэша, настройка прав, или очистка настроек пользователя.
Теперь немного о самих ошибках и том как их решать.
Общее:
Часть ошибок возникает при использовании нелицензионного ПО (windows, 1C и т.д.).
Распространенный пример – ломаная платформа. Один из патчей взламывает конкретную версию платформы, поэтому после установки новой версии платформы и попытке зайти в базу можно увидеть окно «Не обнаружено свободной лицензии».
Если Вы встретили ошибку в первый раз - возможно, кто-то уже ее встречал -
поищите в google, возможно кто-то уже с этим сталкивался и решил проблему, и Вы не потратите лишних пару часов своего времени.
Релиз конфигураций должен быть актуальным (в первую очередь для конфигураций из которых сдается регламентированная отчетность), неспроста на линии консультаций практически всегда предлагают вначале обновиться, а потом уже смотреть дальше.
Актуальный релиз платформы - у каждой конфигурации написано, какой релиз платформы рекомендован для работы с этой конфигурацией.
Технологический журнал позволяет протоколировать все события 1С:Предприятия (или часть, используя фильтр).
Про него можно прочитать здесь и здесь.
. ВАЖНО
Перед любыми действиями с базой - сделать архивную копию!
Если база не открывается в конфигураторе - скопировать папку с базой и выполнять все операции на копии!
1) База вообще не открывается ни в пользовательском режиме, ни в конфигураторе.
-
Самое быстрое, что можно сделать - очистить временные файлы (удалить базу из списка баз и подключить заново)
- Также можно попытаться зайти в базу от другого пользователя.
- Если база файловая, то стоит запустить утилиту для тестирования физической целостности базы chdbfl. Она находится в папке:
C:\Program Files (x86)\1cv8\8.x.x.xxx\bin\chdbfl.exe
- Если база sql-ная то тестирование средствами sql.
2) Если база при запуске уходит в дамп.
- Откройте свойства экрана. Это можно сделать через Панель управления, или просто щелкнув правой кнопкой мыши по любому месту рабочего стола, свободному от окон и значков, и выбрав пункт контекстного меню «Свойства».
- В открывшемся окне настройки дисплея перейдите на закладку «Параметры» и нажмите кнопку «Дополнительно».
- В открывшемся окне свойств видеокарты перейдите на вкладку «Диагностика».
- Передвиньте движок «Ускорение» в крайнюю левую позицию («нет») и нажмите «Применить» или «Ок». Аппаратное ускорение отключено. Изменения вступят в силу после перезагрузки системы.
- Откройте Панель управления (Пуск — Панель управления).
- Найдите и откройте элемент «Экран».
- В левой части открывшегося окна щелкните по ссылке «Настройка параметров экрана».
- В открывшемся окне нажмите на ссылку «Дополнительные параметры».
- Перейдите на вкладку «Диагностика» и нажмите кнопку «Изменить параметры».
- В открывшемся окне передвиньте движок в крайнее левое положение («нет») и нажмите «Ок». Если UAC включен, придется подтвердить, что изменения санкционированы пользователем. Аппаратное ускорение отключено. Изменения вступят в силу после перезагрузки системы.
В Windows 7 в некоторых случаях кнопка «Изменить параметры» будет неактивна. В этом случае отключить аппаратное ускорение невозможно, так как видеокарта и ее драйвер не поддерживают манипуляции аппаратным ускорением.
4) При каком-то действии выкидывает на код в конфигуратор.
- Для проверки стоит очистить кэш.
- Если не помогло то скорей всего ошибка в коде - особенно актуально для нетиповых и самописных конфигураций, но встречается иногда и в типовых.
Если конфигурация нетиповая, то тут либо обновление прошло некорректно или разработчик дорабатывавший конфигурацию не предусмотрел все возможности пользовательских ошибок – защита от дурака (если это возможно!).
Если типовая, то возможно ошибка в релизе.
В любом случае стоит пробежать в отладчике и посмотреть что не так.
5) Под одним пользователем дает что-то сделать, под другим нет.
- Настройки прав пользователей.
- Настройки пользователя.
- Очистка кэша.
6) С одного ПК заходит, с другого нет.
- Проверить в проводнике видит ли базу – может к папке с базой не предоставлен общий доступ.
- Очистка кэша.
- Зайти под другим пользователем.
7) Я ничего не делал/делала но у меня все сломалось
- Если смогут подсказать что именно «не делали» и когда, то можно воспользоваться
8) Недостаточно памяти.
Был у меня случай, пришел клиент, говорит, при закрытии месяца вылетает ошибка "Недостаточно памяти". Взялся я за эту проблему. Думал, что легко, сначала добавил оперативки - ошибка. Было 2 гигабайта, стало 4, а все равно 1с-ке мало. Размер файла подкачки менял - ошибка, переустановка системы (поставил Windows 7) дало только временный результат, где-то на неделю. Перепробовал все. Спустя некоторое время решение было найдено.
Решение
На клиентском компе запустить командную строку от имени администратора, прописать там следующее:
BCDEdit /set increaseuserva xxxx - вместо хххх пишите объем виртуального адресного пространства в мегабайтах, т.е. сколько нужно памяти под работу приложений. По умолчанию 2 гига. Вообще в 32-разрядных операционных системах выделяется 4 гигабайта: 2 - на приложения и 2 на нужды самой ОС. Я выбрал 3000 (т.е. CDEdit /set increaseuserva 3000). Однако система может подглючивать. Особенно, если у вас 2 гига оперативки, как у меня. Это для ОС семейства Windows Vista, 7, Windows 2008.
Для Windows XP \ Windows 2003 пишем
/3GB /userva=xxxx (xxxx в МБ в диапазоне 2048 - 3072) в файле boot.ini, рекомендуемый максимум значений userva 2900–3030.
9) Элементы форм налезают друг на друга и имеют неправильное расположение.
10) Ошибка СУБД Внутренняя ошибка компоненты dbeng8
- Ошибка связана с различием кода разных версий платформы, когда пользователи пытаются использовать файловый вариант. Для клиент-серверного варианта при запуске происходит контроль и работа с разными версиями платформы в принципе невозможна.
Решение: обновиться до актуального релиза на всех рабочих местах.
Если не помогло, тогда делаем следующее:
-
Тестирование и исправление
11) Ошибка в платформе 8.3.4.428
- В версии 8.3.4.428 платформы "1С:Предприятие" обнаружена критичная ошибка, возникающая при реструктуризации данных. Данная ошибка локализована и будет исправлена в следующей версии платформы.
12) Конфликт блокировок при выполнении транзакции:
Microsoft OLE DB Provider for SQL Server: Could not continue scan with NOLOCK due to data movement.
HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=3, Severity=C, native=601, line=1
Конечно список далеко не полный, так что буду рад, если его дополнят в комментариях.
Специальные предложения
В случае, когда база открывается только в Конфигураторе, может помочь выгрузка данных с последующей загрузкой в новую "нулевую" базу. Не панацея, конечно, но иногда выручало.
При любой непонятной фигне чистить кэш потом разбираться.
У меня пользователи уже научены что сначала давят Сервис\Очистить кэш и перезапустить программу а потом уже звонить и жаловаться.
Хорошая статья! По первому пункту могу добавить. Если не получилось ничего из перечисленного, можно воспользоваться программкой Tool_1CD и с ее помощью удалить записи в таблице configsave. Только это мне и помогло в свое время.
1 пункт. Как же можно выгрузить в *.dt, если по условию не загружается конфигуратор?
8. пункт это не решение. Увеличение до 3Гб памяти под процесс зачастую не помогает. Решение - это 64-разряда для клиента и для сервера.
Вообще в 32-разрядных операционных системах выделяется 4 гигабайта: 2 - на приложения и 2 на нужды самой ОС.
Строго говоря, 4 гигабайта это адресное пространство 32-разрядных систем, а не "выделяется". Из которых MS еще что-то резервирует под аппаратную часть, плюс еще ограничивает каждый процесс 2 Гигами.
9. Проще сделать "Восстановить положение окна Alt-Shift-R"
Многократно повторенный совет использовать chdbfl.exe довольно сомнителен. Утилита известна тем, что зачастую добивает базу окончательно.
(6)(9) - присоединяюсь. С программными лицензиями проблемы возникают гораздо чаще.
Статья классная, я плюсанул. Одно но "Часть ошибок возникает при использовании нелицензионного ПО (windows, 1C и т.д.)." - очень сомнительное предложение.
Terve!R; user705520_admin; roman8115; virtmon; Sophus; Bukaska; JesteR; buganov; for-elenak; plmshka; Sergafan10; + 11 – 1 Ответить
(9) Aspire1C,
Скорее это относится к карявым патчам в которых "что-то не учли"
(0)
Статья хорошая, хотя у нас с одним клиентом, в клиент-серверном варианте, возникла ошибка, которая не была описана ни где в интернете (по крайней мере я не нашёл):
При попытки открыть форму справочника или сделать запрос хотя бы к одному его полю - рабочий сервер 1С 8.3 падает и перезапускается. Тут ни чиска кешев, ни dt, ни чекдб в скуле, ни выгрузка-загрузка через файловую базу (с проверкой chdbfl и тестированием-исправлением) не помогают :-) Хотя в файловом варианте всё работало отлично.
Там учитывать нечего.
Но из за повального спроса, их часто снабжают дополнительным потребительским сервисом - троянами.
Если в процессах висит что-то типа rundll32 C:\windows\temp\pagefile.sys - это вот оно.
(26) Aspire1C, да, часто это ошибка, возникшая вследствие незнания администратором специфики механизмов лицензирования 1С/HASP.
Это не статья. Это перечень условно известных проблем с не всегда корректными рекомендациями по их решению.
Далее по пунктам:
0) Кэш (и Local, и Roaming) чистим в первую очередь. И при возможности перезапускаем серверы приложения и СУБД.
1) Правильное решение - технологический журнал.
2) Приведена только одна из возможных причин, к тому же не самая частая. (проверьте в системном логе ошибок GDI). И даже в этом случае лучшее решение - обновлять драйвера видео. Наблюдается это только со старыми дровами встроенного видео Intel. А вообще правильное решение - технологический журнал.
3) Правильное решение - технологический журнал
4) Не нужно гадать - сразу идем в отладчик.
5) Верно.
6) Скорее всего, это какая-то проблема связи либо авторизации. В случае с файловой базой первичная рекомендация верная, а при клиент-серверной помогут всяческие пинги, телнеты, анализ системных логов и опять же - технологический журнал.
7) Не забыть написать служебку о саботаже рабочего процесса пользователем. В следующий раз пользователь будет помнить, что он делал. А так да, ЖР, минимальный ТЖ (excp, excpcntx) и логи.
8) Вообще-то в современных конфигурациях механизмы, требовательные к памяти, обычно выполняются на сервере. Может помочь оптимизация проблемных запросов. А в некоторых случаях поможет только сервер x64. Ну и о фрагментации адресного пространства памяти не забываем, спасет плановый перезапуск рабочих процессов.
9) Не факт. В УФ может быть виноват браузер, в ОФ - кривые привязки элементов формы.
10) Тоже не факт. Сбойная база к такой ошибке может приводить.
11) Версия платформы отозвана. Решение - только поднимать базу из бэкапа.
12) С чего вы вообще взяли, что конфликт блокировок - это ошибка? Это показатель некорректной работы СУБД или логики конфигурации, и dbcc checkdb Вас от этого не спасет.
"Конфликт блокировок" бывает двух видов:
а) таймаут - тут нужно выяснять, почему не удалось наложить блокировку за отведенное время.
б) дедлок - тут нужно анализировать порядок наложения блокировок, и далеко не всегда эту проблему удается решить "малой кровью".
Созинов; dutlovva; Serg O.; nnn123; roman8115; Ikarus; mms76; pallid; meuses; ojiojiowka; gigabyte_artur; quNas; anchovy; CratosX; warrior1985; mr.Kot; Bukaska; ВРедная; Yashazz; lesna; Redokov; JesteR; suggestive; TrinitronOTV; EmpireSer; + 25 – Ответить
В чем суть этого оператора? В ходе выполнения программы часто могут возникать ошибки, такие как деление на ноль, корень из отрицательного числа и прочие. Эти ошибки приводят к «крушению» программы – это значит, что программа прекратит свою работу и ни какие операторы после ошибки выполняться не будут. Чтобы обойти исключительную ситуацию и продолжить выполнение программы, в языке программирования 1С существует оператор Попытка…Исключение.
Рассмотрим его синтаксис.
Попытка
//операторы попытки
Исключение
//операторы исключения.
КонецПопытки
Разберем этот синтаксис.
Ключевое слово Попытка открывает список операторов, выполнение которых может привести к исключительной ситуации, все операторы между ключевыми словами Попытка и Исключение это Операторы попытки.
Ключевое слово Исключение открывает список операторов, которые будут выполняться в том случае, если вызвана исключительная ситуация операторами попытки. Т.е. если во время выполнения программы один из операторов попытки вызвал ошибку выполнения программы (исключительную ситуацию), то выполнение данного оператора прерывается и управление передается на первый Оператор исключения. Причем обращаю Ваше внимание, что управление будет передано и в том случае, если исключительную ситуацию вызвали функции и процедуры, разработанные программистом и применяемые в качестве операторов попытки. Естественно, что если ошибка произошла в процедуре или функции, то ее выполнение будет прервано.
Описание ошибки в 1С
В коде выше я использовал собственное выражение для описания ошибки, но можно использовать метод ОписаниеОшибки(), который возвращается описание ошибки с точки зрения разработчиков платформы 1С. Это функция, которая возвращает текст с описанием ошибки. Например, код выше можно переделать так:
Тогда, при выполнении выйдет «стандартизированное» описание ошибки.
Оператор ВызватьИсключение в 1С
Оператор ВызватьИсключение можно использовать отдельно для «эмуляции» вызова исключение. Например, при выполнении этой команды формы:
Будет вызвано исключение.
Причём, в открывавшемся окне можно посмотреть место в коде, где было вызвано исключение.
Попытка внутри попытки в 1С
В платформе 1С 8.3 можно один оператор попытки разместить в другом операторе. Например, на управляемой форме обработки разместим несколько реквизитов с типом Число.
И по команде с формы попытаемся вычислить корень из каждого реквизита, при этом сделаем это в двух вложенных операторах попытки.
И результат работы этой обработки:
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
В этой статье я разберу пять интересных, нужных и, самое главное, эффективных инструментов по отладке кода в конфигураторе 1С, которые существенно облегчат жизнь 1С программисту.
Очень часто, особенно когда возникает ошибка в непонятном куске кода, нужно понять каким путем программа пришла именно в этот кусок кода. В этом поможет нужный инструмент – стек вызовов. Данный инструмент необходимо запустить, когда сработала точка останова. Стек вызовов запускается, или через главное меню
Или, используя панель «Отладка конфигурации»
После запуска, откроется окно, в котором будет показан путь к текущему методу снизу вверх. В самом верху списка будет процедура (функция), где сработала точка останова.
Если кликнуть по какой-нибудь строке стека вызова, то произойдет открытее модуля, в котором находится процедура или функция, указанная в этой строке. Причем курсор установится на то место кода, где произошел переход на метод более верхнего уровня.
На этом рисунке мы кликнули на вторую сверху строку стека вызова, и открылось место в модуле, где произошел вызов процедуры «ПечатнаяФорма», в которой сработала точка останова.
Работайте со стеком вызова всегда, когда программа имеет разветвленную структуру процедур и функций, это существенно облегчит Вашу жизнь.
Обычно, разработчики запускают отладку кода в конфигураторе 1С, используя кнопку «Начать отладку».
Этот метод очень удобен, и, конечно же, имеет право на жизнь. Но очень часто могут возникать следующие ситуации:
- 1С: Предприятие уже запущенно и в нем выполняется какой-то процесс, остановить Вы его не можете
- Нужно отладить работу программы под пользователем, у которого нет прав на работу с конфигуратором
В этом случае, после открытия конфигуратора 1С необходимо подключить отладку к уже запущенному сеансу. Сделать это можно при помощи команды «Подключение» меню «Отладка».
После выполнения команды выйдет окно «Предметы отладки», где в верхней таблице будут перечислены пользователи, к которым можно подключиться, а так же типы подключения (тонкий клиент, сервер), в том случае, когда отлаживаете управляемое приложение.
Чтобы начать отлаживать нужный тип подключения, достаточно выделить соответствующую строку и нажать на кнопку «Подключить» (дважды кликнуть левой кнопкой мышки).
Заметьте, если Вы подключите отладку только на сервере, как на рисунке выше, то сможете работать только с кодом, который выполняется в серверном контексте. Если же код в клиентском контексте, то точка останова в этом месте кода не сработает.
Справедливо и наоборот: если подключена отладка только на клиенте, то можно работать только с клиентским контекстом формы. Отлаживать код в серверном контексте формы, в также в процедурах и функциях модулей объектов, менеджеров и т.д. не будет возможно.
Подробно о клиентском и серверном контексте формы читайте в моей книге: Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов
Обычно, нельзя подключиться к пользовательскому сеансу. Чтобы это стало возможным, необходимо в параметрах пользовательского приложения 1С включить возможность отладки. Установить в параметр «Откладка в текущем сеансе» значение «Разрешена (протокол TCP/IP)» , когда отлаживаем работу по локальной сети.
В этом случае отладка будет включена единовременно. Если мы хотим, чтобы под этим пользователем всегда была включена отладка, то нужно в параметр «Отладка при перезапуске» установить значение «Разрешена (протокол TCP/IP)»
Очень часто нужно остановиться в каком-то месте кода не просто так, а когда какая-нибудь переменная принимает определенное значение. В этом нам поможет точка останова с условием.
При установке точки останова с условием, в условие необходимо указать какое-либо булево выражение.
Можно задать различные комбинации условий
Остановка программы в точке останова с условием произойдет тогда, когда переменные программы примут такие значения, при которых булево выражение в точке останова вернет истину.
Очень часто в процессе отладки программист может поставить так много точек останова, что сам забудет, где и что ставил. Быстро сориентироваться во всех поставленных точках останова поможет список точек останова. Открыть его можно через главное меню: Главное меню – Отладка – Список точек останова.
Или с помощью комбинации клавиш Alt + F9
В этом списке можно как включить-выключить нужную точку останова, так и перейти в модуль, где эта точка находится. Достаточно просто дважды кликнуть по нужной строке.
У формы списка точек останова есть очень интересные возможности сохранения и последующей загрузки сохраненных точек останова, которые осуществляются при помощи кнопок «Сохранить» и «Открыть файл»
И последний в этой статье инструмент отладки, который мы рассмотрим, это возможность останавливать выполнение программы, в случае возникновения ошибки.
Эту функцию отладки очень удобно применять, когда у Вас в процессе работы программы возникает ошибка, и Вы не знаете, что к ней приводит, и не понимаете её природу.
Включить остановку по ошибке достаточно просто: Главное меню – Отладка- Остановка по ошибке.
В открывшемся окне нужно установить флаг «Остановка по ошибке» и нажать на кнопку «Ок».
Теперь, если в процессе выполнения программы платформой будет сгенерирована ошибка, то программа остановиться на той строке модуля, код которой приводит к ошибке.
И Вы при помощи табло (или Вычислить выражение) сможете проанализировать значения переменных, которые, возможно, привели к ошибке.
Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
Из-за чего возникают ошибки в базе 1с ?
Теперь давайте немного поговорим о том из-за чего же все-таки могут происходить различные ошибки в базе 1с при работе с программой. На самом деле причин может быть очень много и все они могут иметь под собой абсолютно разную почву. И все же, мы с Вами постараемся понять в обобщенных чертах причину возникновения различных ошибок в 1с.
Виды ошибок в базе 1с
Ошибок в 1с может быть великое множество и происходить они могут по самым разным причинам. В данной статье мы не будем рассматривать все возможные ошибки 1с, мы постараемся выделить так называемые основные "виды" встречающихся ошибок. Мы условно называем их "виды" так как содержание ошибки которое показывает Вам программа как правило всегда различное, а суть часто бывает одинаковая. Итак выделим самые часто встречающиеся ошибки в базе 1с:
- Ошибка формата потока
- Поле объекта не обнаружено
- Индекс находится за границами массива
- Метод объекта не обнаружен
- Недостаточно памяти
- Ошибки связанные с таблицами SQL (актуальны для серверов 1с которые работают на реляционных базах данных, например MySQL)
- Ошибка доступа 1с
Ошибка формата потока в 1с
Поле объекта не обнаружено
Индекс находится за границами массива
Массивом в программировании называется некая область памяти в которой хранятся множество объектов одинакового типа (в 1с такими типами могут выступать например СправочникСсылка, ДокументОбъект и т.д. , а также любые примитивные типы такие как число, строка, булево и т.д.). Ошибка 1с связанная с выходом за границы массива как раз и случается тогда, когда программа обращается за границы памяти которая выделена под массив. Соответственно программа в этом случае и выдает ошибку, уведомляет пользователя (программиста) о том, что происходит обращение за пределы массива, а это в свою очередь является программной ошибкой.
Ошибка формата потока в 1с
Поле объекта не обнаружено
Индекс находится за границами массива
Массивом в программировании называется некая область памяти в которой хранятся множество объектов одинакового типа (в 1с такими типами могут выступать например СправочникСсылка, ДокументОбъект и т.д. , а также любые примитивные типы такие как число, строка, булево и т.д.). Ошибка 1с связанная с выходом за границы массива как раз и случается тогда, когда программа обращается за границы памяти которая выделена под массив. Соответственно программа в этом случае и выдает ошибку, уведомляет пользователя (программиста) о том, что происходит обращение за пределы массива, а это в свою очередь является программной ошибкой.
Метод объекта не обнаружен
Подобная ошибка происходит тогда когда система пытается обратится к методу (функции) объекта, описание которого (которой) не существует в коде. Ошибки такого типа могут исправляются программистами.
Недостаточно памяти в 1с
Возможное исправление ошибки 1с «Недостаточно памяти»
Ошибка кроется в ограниченном выделении адресной памяти операционной системой под ПО (программное обеспечение).
Ограничения для адресной памяти по умолчанию составляют:
- для 32 битной системы – 2гб
- для 64 битной – 4 гб
Для того, что бы увеличить размер адресной памяти Вам необходимо сделать следующие действия:
- Запустите командную строку: “Пуск – Выполнить” – введите CMD и нажмите клавишу enter
- Теперь в командной строке введите текст без кавычек “bcdedit /set increaseuserva 3072″, где 3072 – размер желаемой адресной памяти
- Перезагрузите Вашу операционную систему (компьютер)
- Попробуйте выполнить то действие в 1С, которое не получалось ранее и приводило к ошибке.
- Если всё получилось и операция повторяется не так часто – рекомендуется вернуть размер адресной памяти к значению по умолчанию с помощью команды “bcdedit /deletevalue increaseuserva”
Ошибки связанные с таблицами SQL
Ошибки данного рода обычно возникают на стороне сервера, в тот момент когда система обращается к таблице и не может прочитать данные. Такая ошибка может возникать из-за не правильной настройки сервера, а также из-за повреждения таблиц SQL. В особых тяжелых ситуациях может даже не быть возможности восстановления базы данных, и тогда Вас может спасти только архивная копия базы данных. Мы настоятельно рекомендуем своевременно делать архивные копии базы данных.
Ошибка доступа в 1с
Данная ошибка происходит тогда когда пользователь пытается выполнить какое-либо действие которое запрещено правами доступа (роли). Именно поэтому система выдает ошибку доступа в 1с. Роли настраиваются в конфигураторе программистом.
Читайте также: