1С ошибка времени выполнения

1C, План обмена, ошибка «Неизвестный получатель»

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

Для того, чтобы мы могли производить обновление через конфигуратор, нам необходимо открыть конфигурацию «Конфигурация» > «Открыть конфигурацию». На некоторое время окно 1С зависнет, а после этого слева появится панель «Конфигурация». Обновляемся:

  1. «Конфигурация» > «Поддержка» > «Обновить конфигурацию».
  2. «Выбор файла обновления» (мы уже скачали и распаковали нужные файлы).
  3. Выбираем каталог с файлами обновлений. Обычно это C:\Users\dTI\AppData\Roaming\1C\1cv8\tmplts\1c
  4. Нажимаем Далее, применяем все изменения. Если мы закроем конфигуратор, перейдём в режим предприятия, то после зупуска процесс обвноления снова прервётся примерно на 88% выполнения. Поэтому мы
  5. не закрываем конфигуратор и не переходим в режим предприятия после обновления! Мы запускаем отладку кнопкой «F5», либо идём в меню «Отладка» > «Начать отладку». У вас запуститься обычное окно 1С:Предприятие, только в режиме отладки. Вот в нём мы и дождёмся завершения процедуры обновления. После того, как мы миновали релиз 3.0.43.236, обновления должны заработать в штатном режиме. Если этого не происходит, продолжайте обновляться через конфигуратор и завершайте обновление через отладку.

Сегодня я хочу поговорить о такой часто возникающей необходимости как проверка заполнения реквизитов. Если пользователь должен предоставить вводные данные, которые будут использоваться во время выполнения некого алгоритма, то перед тем как приступить к расчетам в обязательном порядке необходимо выполнить соответствующие проверки. Пожалуй, самой типичной проверкой является — тест на заполненность входных параметров. Если не заполнен важный параметр, без которого не может выполнится алгоритм, то нет смысла что-то продолжать делать.

Начнем с самого элементарного — ответим на вопрос: “Как можно делать проверки?”. Я обычно для этого завожу отдельную процедуры и в ней описываю алгоритмы проверок. В самом простом случае, конечно, алгоритмы описывать не требуется, т.к. имеется всего лишь одно условие — заполненность реквизита.

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

Ошибка при чтении изменений при обмене РИБ

Определяем список реквизитов для проверки. Если проверяем все имеющиеся реквизиты, то список делать не нужно. Достаточно пробежаться по метаданным и перебрать у объекта все имеющиеся реквизиты. В случаях, когда часть входных данных вводится не в реквизиты, а в элементы управления (например, обычное поле ввода, расположенное на форме), то удобно выставлять таким элементам свойство “АвтоОтметкаНезаполненного” в ИСТИНА. Такие пустые элементы управления будут автоматически выделены красной чертой, свидетельствующей о необходимости обязательного заполнения. Во время проверки можно запросто перебрать все реквизиты формы с установленным флагом “АвтоОтметкаНезаполненного” и выполнить необходимые проверки.

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

С появлением платформы версии 8.2 ситуация в плане выполнения проверок немножко изменилась. Разработчики реализовали в платформе обработчик события ОбработкаПроверкиЗаполнения() и теперь выполнять проверку заполненности реквизитов рекомендуется в с его помощью. Если следовать новой методике, то алгоритм работы будет таким:

1. Выставляем для реквизитов, которые должны подвергаться проверкам, значение свойства “Проверка заполнения” в “Выдавать ошибку”.
2. Определяем в модуле объекта предопределенную процедуру “ОбработкаПроверкиЗаполнения()”. Описывается она следующим образом:

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) // Вставить содержимое обработчика. КонецПроцедуры

Первый параметр (Отказ) принимает значение типа Булево и если передать ИСТИНА, то проверка будет считаться не удавшейся и прервется дальнейшая работа. Во втором параметре передается массив путей к реквизитам для которых будет выполнена проверка (т.е. те реквизиты, для которых мы переопределили свойство “Проверка заполнения”.

3. Описываем в данной процедуре все необходимые проверки. Стоит заменить, что если мы ничего не опишем (и даже не определим саму процедуру), то для реквизитов с переопределенным свойством “Проверка заполнения” будет автоматически выполнятся проверка на заполненность.

Практика

Все вышеописанное мы рассмотрим на практике, но, это будет в следующем посте….

Ошибка времени выполнения

Я
Segate Выборка = Справочники.ПодразделенияОрганизаций.Выбрать(); Подр = новый Структура; Пока Выборка.Следующий() цикл Подр.вставить(УбратьЛишниеСимволы(Выборка.Наименование),Выборка.Ссылка); КонецЦикла; НУжно сформировать структуру из подразделения и его имени(из которого убрано все лишнее)На одном из подразделений все падает. В соседней базе все отрабатывает без проблем. Куда копать?

ЗЫ база клиент-серверная, Функция «УбратьЛишниеСимволы» отрабатывает нормально, говорит отладчик.

Segate

скрин ошибки.

vicof

по-моему отладчик падает на строке 1757

Segate

(2) Ты просто гений

vicof

(3) Я знаю. А ты похоже остановку по ошибке не можешь сделать.

Segate (4) а ты думаешь как я этот скрин извлек?

Я привел тебе пример кода:

Подр = новый Структура; Пока Выборка.Следующий() цикл Ключ =УбратьЛишниеСимволы(Выборка.Наименование);///Ключ на выходе тип строка. Значение =Выборка.Ссылка; /// Значение тип справочник ссылка подразделение Подр.вставить(Ключ,Значение); /// это строка 1758, на ней все падает. при чем на одном конкретном подразделении. Остановка по ошибке дает именно такой результат, который показан на скрине. Я с такой ошибкой сталкиваюсь в первый раз.

Ошибка при обновлении конфигурации Бух. 8.2

В конфигурации с такой же точно структурой, все отрабатывает без проблем. КонецЦикла;

ДенисЧ

Значит в строке Ключ корявые данные, например, непечатные символы

Segate (6)из строки Ключ убраны все символы, кроме букв рус/лат и цифр. Вот по такой маске:ПравильныеСимволы=»QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnmЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮйцукенгшщзхъфывапролджэячсмитьбю1234567890″)
Так что тоже не вариант… hhhh

(7) цифры тоже убирай. Зачем цифры туда запендюрил?

ДенисЧ

похоже, таки черепашка…

Segate

(8) потому что подразделение имеет название по адресу. И на одной улице может быть несколько подразделений… так что цифры нужны

vde69 вставь перед этой строкой сообщить(типЗнч(Ключ)); сообщить(типЗнч(Значение))

есть подозрение на null

hhhh (10) тогда чего удивляешься? Хотя бы сделай тогда
Подр.вставить(«Поле» + УбратьЛишниеСимволы(Выборка.Наименование),Выборка.Ссылка); H A D G E H O G s

Цифры впереди букоф.

vde69

Ключ =»_»+УбратьЛишниеСимволы(Выборка.Наименование);

Segate (11)http://s45.radikal.ru/i109/1505/71/ce3d3e6366a7.jpg

Тип: «Самключ» Тип: «СамоЗначение» падает именно на этом подразделении

ДенисЧ

(16) у тебя ключ на цифру начинается. О чём тебе уже долго твердят.

H A D G E H O G s

Нельзя в Структуру много данных писать.

Segate

(17) Пятница дает о себе знать… читал сп, но почему то не придал значение…
(13),(15)Все решилось, спасибо всем.

(18) там не сильно много много.

Наведи порядок в своей работе используя конфигурацию 1C «Управление IT-отделом 8»

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *