|
|||
pnamik
07.11.15 — 11:27 |
Конфа самописная. 8.2.19.30 |
||
pnamik
1 — 07.11.15 — 12:07 |
Ни у кого нет идей, как устранить ошибку? |
||
PuhUfa
2 — 07.11.15 — 12:10 |
Попросить конфигуратор с отладчиком -) |
||
pnamik
3 — 07.11.15 — 12:14 |
(2) Ничего отладчиком невозможно выловить. до этого даже не доходит |
||
pnamik
4 — 07.11.15 — 12:17 |
не понимаю, что еще можно делать. может кто смелее, дам доступ по тиму |
||
Defender aka LINN
5 — 07.11.15 — 12:39 |
(0) Значит, у тебя что-то другое записывается при этом |
||
pnamik
6 — 07.11.15 — 12:45 |
Есть реквизиты Группа Уровень, Разрешение, Новый элемент Есть форма списка, без кода, а в модуле справочника есть код
Процедура ПередЗаписью(Отказ) КонецПроцедуры Как выловить, без знаю |
||
pnamik
7 — 07.11.15 — 12:52 |
в режиме совместимостью с 8.1 ошибка не появлется |
||
pnamik
8 — 07.11.15 — 12:54 |
в редиме 8.1 в свойствах реквизитов Новый элемент и Разрешение Значение заполнения — Ложь стоит |
||
pnamik
9 — 07.11.15 — 12:55 |
для режима 8.2 выбирать Ложь для Значение заполнения невозможно. Выбор ограничивается Да или Нет |
||
pnamik
10 — 07.11.15 — 13:20 |
Ошибку удалось устранить добавлением в модуль Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Не знаю, насколько верно |
||
pnamik 11 — 07.11.15 — 13:35 |
и еще. есть стандартные реквизиты наименование и код, которые недоступны в конфигураторе. Для реквизита наименование ставил не проверять. Все стало на свои места. До этого не понимал, потому, что реквизит наименование не видно было среди реквизитов справочника. Может эти решения кому поможет |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
greenLiss |
|
||
---|---|---|---|
База УТ11, но это не важно. Платформа 8.3 Есть документы, которые нельзя провести из-за не правильного заполнения, и это логично, так и должно быть. Правильно или не правильно, определяется в обработке проверки заполнения. Но вот в чём проблема, если пытаться провести из формы документа(когда Отказ = Истина), то будут появляться сообщения только те, которые прописаны в коде конфигурации(это хорошо), а вот если попытаться провести из формы списка документов, то будет появляться сообщение типа:»При проверке заполненности данных произошли ошибки», и на каждый такой документ, придется нажимать «ОК». Как можно обойти этот механизм, что бы пользователям не нужно было нажимать «ОК»? Заранее, спасибо. |
Yandex |
|
||
---|---|---|---|
IBReiter |
|
||
---|---|---|---|
А документ должен проверятся или нет? |
greenLiss |
|
||
---|---|---|---|
Да, что бы работало так же, как и всегда, но без этого сообщения Вы думали на счет стандартного инструмента «ПроведениеДокументов»? Если да, но это не подходит, к сожалению… |
EMigachev |
|
||
---|---|---|---|
если выдается сообщение — значит в документе не все правильно! — надо же исправить проблему или вам все-равно как проводится!? |
greenLiss |
|
||
---|---|---|---|
|
Да я же не против того, что не проводится… Проблема в самом сообщении, вот нужно пользователю провести 20 документов, он в списке их выделил, нажал «Провести», а там 10 ошибок (которые и так видно в окне сообщений), и он должен еще 10 раз нажать на «ОК». Зачем? Вот именно это и нужно убрать… Просто что бы не выдавалось терминирующее сообщение, с кнопкой «Ок», всё, что нужно, пользователь видит в обычных сообщениях… |
IBReiter |
|
||
---|---|---|---|
Тогда код нужно исправлять, другого варианта не вижу |
greenLiss |
|
||
---|---|---|---|
Конфига изменена, так что, проблемы изменения кода нет. Но где его менять??? Для примера: создаю новую конфигу, добавляю документ, в модуле объекта делаю только одну проц. «ОбработкаПроверкиЗаполнения» и пишу одну строку Отказ = Истина; И этого достаточно, что бы выходило сообщение при проведении из списка… |
EMigachev |
|
||
---|---|---|---|
Нужно понять каким образом выводится это предупреждение: 1. Это механизм платформы — проверка заполнения реквизита: 2. это написано в коде Проверить можно отладчиком и отключить это механизм проверки |
greenLiss |
|
||
---|---|---|---|
В ответе №6, можно понять, что это механизм платформы, сообщение выдаётся, когда Отказ в стандартных проц. равен истине. Но что делать дальше? Отказ = истине, когда что-то не правильно, и так должно быть (Иначе бы воспользовался стандартной «Проведение документов»)… |
EMigachev |
|
||
---|---|---|---|
отключите проверку на реквизиты по которым ругается |
greenLiss |
|
||
---|---|---|---|
Кроме проверки реквизитов происходит еще куча дополнительных проверок, которые обязательны… Отключение части проверок — не вариант. Нужно только отключить сообщение при отказе, но сам отказ должен остаться… Я так понимаю, что на данный момент, это не возможно. Напишу письмо в 1С, вдруг… |
IBReiter |
|
||
---|---|---|---|
Попробуйте, действительно, вдруг…;) |
rudnitskij |
|
||
---|---|---|---|
Можно попробовать использовать команду ВОЗВРАТ при невыполнении условия проверки, без использования команды ОТКАЗ. Чтоб документ не проводился — вам всего лишь нужно не выполнить процедуру ОбработкаПроведения до конца, прервать ее в нужном вам месте. Значение флажка ОТКАЗ на это никак не влияет |
Подсказка: Вы получили ответ на свой вопрос — закройте вопрос! |
Обновлено: 12.02.2023
В процессе активного использования разных программ могут возникать глюки и ошибки, но, когда появляются, как правило, неожиданно, критические ошибки в работе базы данных 1С, которые могут просто остановить розничную торговлю и частично парализовать работу организации, тогда у вас должен быть уже готов минимальный план действий для таких ситуаций т.к. счёт в таком случае будет идти на минуты. Сегодня мы рассмотрим с вами три базовых варианта того, что необходимо сделать в первую очередь для исправления ошибок базы данных в 1С.
Тестирование и исправление
Если ошибка не сильно критична и у вас остался доступ к режиму Конфигуратор, тогда можно воспользоваться функционалом для тестирования и исправления в информационной базе разных проблем, который был изначально предусмотрен для того, чтобы пользователи могли самостоятельно решать многие проблемы в работе базы данных. Итак, чтобы им воспользоваться, открываем платформу 1С, выделяем проблемную базу из списка и нажимаем Конфигуратор.
Выбираем пользователя, вводим пароль если он имеется и нажимаем Войти.
На вкладке Администрирование, выбираем Тестирование и исправление.
И в окне с напоминанием о создании резервной копии, нажимаем Продолжить.
Откроется форма Тестирование и исправление информационной базы, где нам с вами нужно выбрать тип проверки и прочие режимы. Как правило, достаточно выбрать все варианты проверки, отметить пункт Тестирование и исправление, выбрать чуть ниже Не изменять в обоих случаях, проверить и просто нажать на кнопку Выполнить. Собственно, как и показано на скриншоте ниже.
Вот в целом и всё.
Стандартная утилита chdbfl
Если дела настолько плохи, что у вас нет доступа к режиму Конфигуратора, тогда можно воспользоваться стандартной утилитой с необычным названием chdbfl, представляющим из себя сокращение от фразы check database files или проверка файлов базы данных. Из названия сразу понятно, что данная утилита позволяет организовать проверку базы данных на наличие ошибок в обход Конфигуратора.
Утилиту Chdbfl не нужно скачивать отдельно т.к. она по умолчанию находится в папке с названием bin, которая находится в папке с установленной платформой 1С у нас на компьютере по стандартному пути C:Program Files (x86)1cv8. И более того, если вы захотите скачать её из интернета, то можете нарваться на какой-нибудь вирус и получить больше проблем. Итак, откроем папку с платформой 1С.
Далее заходим в папку bin.
И находим здесь утилиту с изображением цилиндра, галки и названием chdbfl.
Тогда откроем платформу, выделяем путь к проблемной базе данных, нажимаем правой кнопкой мышки и выбираем Копировать.
Возвращаемся к окну утилиты и нажимаем на троеточие.
Вставляем путь к базе на верхней строке навигации, нажимаем Enter, выделяем файл 1Cv8 и нажимаем Открыть.
Внимательно перепроверим путь к файлу, отмечаем Исправлять обнаруженные ошибки и нажимаем Выполнить.
Появится статус о том, что Выполняется проверка файла базы данных.
После которой, либо ошибки будут исправлены, либо они не обнаружатся.
Вот в целом и всё.
Очистка кэша базы данных
Затем, выделяем проблемную базу и нажимаем Удалить.
И, собственно, подтверждаем удаление базы данных из списка.
Затем, перезапускаем платформу и нажимаем Добавить.
Выбираем Добавление в список существующей ИБ и нажимаем Далее.
Затем, нажимаем на троеточие.
Вставляем путь к базе на верхней строке навигации, нажимаем Enter, проверяем и нажимаем Выбор папки.
Перепроверяем указанный путь к базе, вводим название для базы и жмём Далее.
На последнем шаге можно просто оставить всё как есть и нажать Готово.
И база данных с отвязанным кэшем снова добавиться в список
Вот в целом и всё.
Жмём сразу Далее на второе окно, добавим параметр /ClearCache и жмём Готово.
Затем, собственно, просто запускаем базу данных и тестируем её поведение.
Вот в целом и всё.
Аналогичным образом, откроем вторую папку Local, которая находится по пути C:Users***AppDataLocal1C1cv8 вручную, или с помощью отдельной команды %LOCALAPPDATA%1C1Cv8, которую мы таким же образом копируем, вставляем в строку навигации Windows, нажимаем Enter и удалим такие же папки с кэшем.
База УТ11, но это не важно. Платформа 8.3
Есть документы, которые нельзя провести из-за не правильного заполнения, и это логично, так и должно быть.
Правильно или не правильно, определяется в обработке проверки заполнения.
А документ должен проверятся или нет?
или вам все-равно как проводится!?
Тогда код нужно исправлять, другого варианта не вижу
Конфига изменена, так что, проблемы изменения кода нет. Но где его менять.
Нужно понять каким образом выводится это предупреждение:
2. это написано в коде
Проверить можно отладчиком и отключить это механизм проверки
Но что делать дальше?
отключите проверку на реквизиты по которым ругается
Попробуйте, действительно, вдруг. 😉
Можно попробовать использовать команду ВОЗВРАТ при невыполнении условия проверки, без использования команды ОТКАЗ.
Обработчик события ОбработкаПроверкиЗаполнения
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1.2. Данным обработчиком следует пользоваться в случаях, когда для проверки корректности значений реквизитов обычной проверки на заполненность уже недостаточно (например, значение реквизита логически связано со значением другого реквизита), или же требование к тому, чтобы значение реквизита было заполнено не является безусловным.
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
НепроверяемыеРеквизиты = Новый Массив();
.
Процедура УдалитьНепроверяемыеРеквизитыИзМассива(МассивРеквизитов, МассивНепроверяемыхРеквизитов) Экспорт
Для Каждого ЭлементМассива Из МассивНепроверяемыхРеквизитов Цикл
// перед удалением реквизита из массива необходимо проверить, что он там есть
// (не был удален ранее платформой или в коде).
ПорядковыйНомер = МассивРеквизитов.Найти(ЭлементМассива);
Если ПорядковыйНомер <> Неопределено Тогда
МассивРеквизитов.Удалить(ПорядковыйНомер);
КонецЕсли;
1.3. Следует учитывать, что обработчик ОбработкаПроверкиЗаполнения вызывается не при каждой записи объекта, в частности, он не вызывается в случаях если запись были инициирована программно.
Методическая рекомендация (полезный совет)
Проверки, выполняемые в и вне транзакции записи объекта
2.1. Проверки в обработчике ОбработкаПроверкиЗаполнения выполняются вне транзакции записи объекта. Поскольку в случае некорректного заполнения объекта выполнение операции будет прервано еще до записи объекта в базу данных, то размещение проверок в этом обработчике является наиболее эффективным.
Для транзакционных проверок, в свою очередь, выделяются два случая:
Наиболее частые ошибки в 1С 8.3
Помощь персонального менеджера, оперативность сдачи отчетности, соответствие законодательству РФ
При работе с программами 1С Предприятие 8.3 пользователь может столкнуться с различного рода ошибками. Типичные ошибки 1С возникают вследствие программного сбоя, из-за некорректного выхода из программы или человеческого фактора. При этом причиной может стать сбой работы сети, отключение электроэнергии, сбой при динамическом обновлении и т.п.
Рассмотрим, наиболее частые ошибки при работе 1С.
Ошибка Формата потока
Устранение ошибки. В папке с установленной программой, кроме файла с информационной базой, имеются служебные временные файлы. При аварийном выключении программы также могут сохраниться файлы блокировок (которые автоматически должны были удалиться при выключении программы). Один из вариантов решения проблемы – это удаление из этой папки всех этих файлов. Такие файлы будут сформированы вновь при запуске программы, поэтому их можно смело удалить. Файл 1Cv8.1CD – файл информационной базы. Его удалять нельзя.
Кроме этого, следующим шагом (если первый вариант не дал результата) должно стать удаление информационной базы из списка в окне запуска 1С (кнопка «Удалить») и добавление ее обратно (кнопка «Добавить»). Тем самым мы очистим кэш.
Но такой вариант очистки кэша программы не очень верный, так как файлы при добавлении базы создаются новые, а старые так и остаются на диске. Поэтому при очистке кэша лучше их просто удалять самим вручную.
Посмотреть, где располагаются временные файлы программы, можно в кнопке «Настройка. » в окне запуска 1С. В поле «Каталоги шаблонов и конфигурация» видно, в какой папке располагаются временные файлы. В нашем примере в папке пользователя, далее в папке AppDataRoaming1Ctmplts.
Чтобы очистить кэш, необходимо удалить временные файлы из указанной папки.
Некоторые ошибки могут прямо указывать на папку с временными файлами, сообщая о проблеме. Например, ошибка «Неверный формат хранилища». Здесь видно, что программа указывает путь к папке с временными файлами. И чтобы очистить кэш вручную, надо удалить папки из указанной директории.
Неверный формат хранилища
На рисунке видно, что ошибка указывает на папку с временными файлами – AppData/Local/1C и далее папка с цифрами в названии.
Ошибка СУБД. Внутренняя ошибка компоненты dbeng
Ошибка СУБД сама говорит о нарушении структуры базы данных. Довольно распространенная ошибка этого рода – «Внутренняя ошибка компоненты dbeng8».
Компонента dbeng8.dll находится в папке bin установленной платформы 1С.
Поэтому первый вариант решения проблемы – переустановка платформы 1С. При этом если компьютеры составляют сеть, на всех компьютерах должна быть установлена одна версия платформы 1С, а если нет возможности обновлять платформу, то можно просто скопировать этот файл из другой папки установки.
Если переустановка платформы не помогла, то переходим к варианту тестирования и исправления базы данных. Другие ошибки касающиеся СУБД также решаются этим способом.
«Ошибка СУБД: Файл базы данных поврежден»
Например, «Ошибка СУБД: Файл базы данных поврежден» решается тестированием и исправлением файла информационной базы.
Тестирование и исправление информационной базы с помощью утилиты chdbfl.exe
Одним из вариантов тестирования и исправления при возникновении ошибок, связанных с СУБД, является использование утилиты chdbfl.exe. Она предназначена для проверки физической целостности базы данных при работе с файловой информационной базой. Этот способ используется также, когда база 1С не запускается в режиме Конфигуратора.
Хотелось бы напомнить, что перед любыми действиями с информационной базой необходимо выполнить резервное копирование – в режиме Конфигуратора через пункт меню «Администрирование»-«Выгрузить информационную базу». Или можно скопировать файл информационной базы – 1Сv8.CD, из каталога, где она размещается.
Файл утилиты chdbfl.exe находится в папке bin, установленной платформы 1С – обычно в папке Program Files (х86)-1cv8, а далее папка с релизом платформы.
Запустив утилиту, в поле «Имя файла БД» указываем путь к файлу базы данных. Здесь надо установить галочку «Исправлять обнаруженные ошибки» и нажать кнопку «Выполнить». В результате утилита проверит физическую целостность базы данных и в случае обнаружения ошибок исправит их.
Если данный способ тестирования не решил проблему, то необходимо провести тестирование информационной базы в режиме «Конфигуратор».
Тестирование информационной базы в Конфигураторе
Для тестирования и исправления информационной базы запустим программу в режиме «Конфигуратор». В пункте меню «Администрирование» выберем «Тестирование и исправление. ».
В открывшемся окне тестирования базы устанавливаем необходимые для тестирования галочки.
«Реиндексация таблиц информационной базы» – исправляет ошибки, связанные со сбоем индексов. В программе ошибки могут проявляться наличием незаполненных полей, например, в документе отсутствует наименование или количество и т.п. При тестировании и исправлении рекомендуется выбирать этот пункт, так как он помогает решить большинство проблем, реиндексируя все таблицы.
«Проверка ссылочной целостности» – решает проблемы, связанные с возникновением ссылок на несуществующие объекты, которые появляются в результате сбоя или непосредственного удаления объекта. При обнаружении таких объектов необходимо выбрать вариант действия – создать, удалить объект, изменять его.
«Пересчет итогов». При сбое в программе в отчетах могут отображаться неверные данные, при расшифровке которых не видно их детализации, т.е. «цифра» есть, а данных о ней нет. В результате установки этой галочки будут пересчитаны все итоги в информационной базе, и данные восстановятся согласно существующим документам заново.
«Сжатие таблиц информационной базы». При установлении данной галочки происходит физическое удаление записей в таблицах, которые ранее были помечены на удаление в программе. Ведь при удалении объектов в базе, в таблицах они все равно сохраняются, накапливаясь и создавая объем. В результате этой операции таблицы информационной базы становятся меньше.
«Реструктуризация таблиц информационной базы» – данное действие создает новые таблицы, перенося в них данные из старых таблиц. То же самое происходит при выполнении обновления программы. Установление этой галочки исправляет некоторые ошибки.
После установки необходимых галочек нажимаем кнопку «Выполнить» и ждем окончания тестирования. По окончании тестирования программа выведет информацию о результатах тестирования.
Данные ошибки возможны в файловых информационных базах. В любом случае, возникающие ошибки в программе необходимо анализировать. Но при их появлении, первые действия, которые можно предпринять, это:
- Очистить кэш;
- Провести тестирование и исправление с помощью утилиты chdbfl.exe;
- Тестирование и исправление базы в режиме «Конфигуратор»;
- Обновить платформу «1С:Предприятие».
При этом, конечно же, версия программы должна быть актуальной. Некоторые ошибки устраняются после установки обновления программы. Если проблемы с возникновением ошибок не удалось решить, обратитесь к нашим специалистам: мы проконсультируем и подберем для вас оптимальный тариф сопровождения и стоимость доработки 1С, исходя из ваших конкретных задач и потребностей.
Обработчик события ОбработкаПроверкиЗаполнения
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1.2. Данным обработчиком следует пользоваться в случаях, когда для проверки корректности значений реквизитов обычной проверки на заполненность уже недостаточно (например, значение реквизита логически связано со значением другого реквизита), или же требование к тому, чтобы значение реквизита было заполнено не является безусловным.
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
НепроверяемыеРеквизиты = Новый Массив();
.
Процедура УдалитьНепроверяемыеРеквизитыИзМассива(МассивРеквизитов, МассивНепроверяемыхРеквизитов) Экспорт
Для Каждого ЭлементМассива Из МассивНепроверяемыхРеквизитов Цикл
// перед удалением реквизита из массива необходимо проверить, что он там есть
// (не был удален ранее платформой или в коде).
ПорядковыйНомер = МассивРеквизитов.Найти(ЭлементМассива);
Если ПорядковыйНомер <> Неопределено Тогда
МассивРеквизитов.Удалить(ПорядковыйНомер);
КонецЕсли;
1.3. Следует учитывать, что обработчик ОбработкаПроверкиЗаполнения вызывается не при каждой записи объекта, в частности, он не вызывается в случаях если запись были инициирована программно.
Методическая рекомендация (полезный совет)
Проверки, выполняемые в и вне транзакции записи объекта
2.1. Проверки в обработчике ОбработкаПроверкиЗаполнения выполняются вне транзакции записи объекта. Поскольку в случае некорректного заполнения объекта выполнение операции будет прервано еще до записи объекта в базу данных, то размещение проверок в этом обработчике является наиболее эффективным.
Для транзакционных проверок, в свою очередь, выделяются два случая:
Как убрать проверку заполнения через модуль?
Как убрать проверку заполнения через модуль? Добавлено через 6 минут Ну типо Проверка.
Условие на проверку заполнения поля
Здравствуйте. Подскажите с составлением условия на проверку заполненности свойства Text.
проверку правильности заполнения таблицы истинности
Помогите добавить проверку правильности заполнения таблицы истинности и проверку, избавляющую от.
AleXadr999, какая конфигурация?
Чаще всего проверка заполнения реализована не в свойствах реквизита, а как раз в коде.
Посмотрите процедуры ОбработкаПроверкиЗаполнения(), ПередЗаписью(), например.
AleXadr999, какая конфигурация?
Чаще всего проверка заполнения реализована не в свойствах реквизита, а как раз в коде.
Посмотрите процедуры ОбработкаПроверкиЗаполнения(), ПередЗаписью(), например.
1С:Предприятие 8.3 (8.3.10.2667) Лицензия
Да я знаю что такие процедуры есть , только как кодом это отобразить.В том то и дело никак не выходит.Через условное оформление пробовал. Не работает, хотя подчеркивает строку.
Вот и прошу помочь с кодом.
Решение
Программно снять галочку с MenuItem
Доброго времени суток! В проекте есть меню. 2 меню итема со свойством "IsCheckable". Подскажите.
Как программно снять объединение ячеек?
надо на выделенном диапазоне ячеек,если стоит галка на фОРМАТ ЯЧЕЕК -> ОБЪЕДИНЕНИЕ ЯЧЕЕК . убрать.
Как программно снять фокус с кнопки
В общем создал фейк-объект и передаю ему фокус, но может есть какие-то нормальные способы.
Как снять защиту листа программно?
Нужно срочно изменить формулу на защищенном листе, но пароль где то потерялся, выручте пожалуйста.
Программно снять флажки с 20 боксов сразу
Подскажите пожалуйста как программно снять флажки с 20 боксов сразу, (Value = False) нажатием на.
Как убрать проверку обязательности заполнения поля email в форме?
есть файл для отправки заявок на почту. Как убрать проверку обязательности заполнения поля email в.
Читайте также:
- Как сделать пиксельный шрифт в фотошопе
- Прошить xbox 360 в воскресенске
- Программа measure для компьютера
- Adobe audition лагает голос
- 1с disablestartupmessages c завершитьработупользователей сам не закрывается
9 / 9 / 0 Регистрация: 01.06.2015 Сообщений: 45 |
|
1 |
|
Снять проверку заполнения программно01.03.2018, 17:40. Показов 32533. Ответов 4
Возникли проблемы.
__________________
0 |
3051 / 1998 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
|
01.03.2018, 23:11 |
2 |
AleXadr999, какая конфигурация?
0 |
9 / 9 / 0 Регистрация: 01.06.2015 Сообщений: 45 |
|
02.03.2018, 06:22 [ТС] |
3 |
AleXadr999, какая конфигурация? 1С:Предприятие 8.3 (8.3.10.2667) Лицензия
0 |
Dethmontt Модератор 3700 / 2899 / 570 Регистрация: 10.03.2011 Сообщений: 11,418 Записей в блоге: 1 |
||||
02.03.2018, 14:15 |
4 |
|||
Сообщение было отмечено AleXadr999 как решение Решение
2 |
9 / 9 / 0 Регистрация: 01.06.2015 Сообщений: 45 |
|
02.03.2018, 14:53 [ТС] |
5 |
Большое спасибо.
0 |
Механизм проверки заполнения позволяет автоматически проверить, заполнены ли указанные реквизиты объекта. Для этого нужно воспользоваться свойством ПроверкаЗаполнения
, которое есть у реквизитов объектов конфигурации.
Если установить это свойство в значение «Выдавать ошибку», поле Поставщик
в форме будет помечено как обязательное для заполнения. А при записи накладной платформа будет контролировать заполненность этого реквизита. Если реквизит окажется не заполнен, платформа выдаст автоматическое сообщение и запись накладной будет отменена.
Разработчик может повлиять на стандартную проверку заполнения, выполняемую платформой. Для этого у него есть два события:
- Одно событие —
ОбработкаПроверкиЗаполненияНаСервере
— можно обработать в модуле формы. - Другое событие —
ОбработкаПроверкиЗаполнения
— можно обработать в модуле прикладного объекта.
У формы, как правило, есть основной реквизит (редактируемый объект) и могут быть реквизиты, не относящиеся к редактируемому объекту, а являющиеся лишь частью формы:
Поэтому серверное событие формы ОбработкаПроверкиЗаполненияНаСервере
предназначено для проверки заполнения тех реквизитов формы, которые не относятся к редактируемому объекту. Это данные только формы, у формы могут быть свои причины и алгоритмы для проверки этих данных.
Напротив, событие объекта ОбработкаПроверкиЗаполнения
предназначено для для того, чтобы проверить реквизиты основного реквизита формы.
Обработчики обеих событий имеют параметр ПроверяемыеРеквизиты
, в который платформа передает массив имен тех реквизитов, которые подлежат проверке. Если после выхода из обработчика в этом массиве все еще останутся какие-то имена реквизитов — платформа выполнит автоматическую проверку оставшися реквизитов.
Поэтому существует несколько сценариев того, как разработчик может встроить свой алгоритм в механизм проверки заполнения:
- самостоятельно проверить заполненность всех реквизитов и очистить массив
ПроверяемыеРеквизиты
, чтобы платформа не выполняла их проверку - проверить часть реквизитов самостоятельно, удалить их из массива
ПроверяемыеРеквизиты
, а оставшиеся оставить на проверку платформе - добавить в массив
ПроверяемыеРеквизиты
какие-то реквизиты, чтобы платформа проверила и их тоже - вообще отказаться от проверки заполненности реквизитов, очистив массив
Все эти сценарии реализуются довольно просто. Например, чтобы самостоятельно проверить заполненность реквизитов, можно выполнить следующий код:
Если Поставщик = Справочники.Поставщики.ПустаяСсылка() Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Необходимо заполнить поставщика!"; Сообщение.Поле = "Поставщик"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; КонецЕсли; // Проверка остальных реквизитов // .......... // Очистить массив проверяемых реквизитов, чтобы платформа // не выполняла их автоматическую проверку ПроверяемыеРеквизиты.Очистить();
Чтобы проверить лишь часть реквизитов, можно выполнить такой код:
Если Поставщик = Справочники.Поставщики.ПустаяСсылка() Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Необходимо заполнить поставщика!"; Сообщение.Поле = "Поставщик"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; // Удалить поставщика из массива проверяемых реквизитов ИндексПоляПоставщик = ПроверяемыеРеквизиты.Найти("Поставщик"); Если ИндексПоляПоставщик <> Неопределено Тогда ПроверяемыеРеквизиты.Удалить(ИндексПоляПоставщик); КонецЕсли; КонецЕсли;
Добавить в массив проверяемых реквизитов еще один реквизит можно следующим образом:
ПроверяемыеРеквизиты.Добавить("Комментарий");
А очистить массив проверяемых реквизитов, чтобы ничего не проверять ни самому, ни платформе, можно так:
ПроверяемыеРеквизиты.Очистить();
Вторым параметром в обработчиках этих событий является параметр Отказ
. Если ему присвоить значение Истина
, то после выхода из обработчика дальнейшая запись объекта будет отменена. Таким образом этот параметр нужно устанавливать в значение Истина
тогда, когда ваш алгоритм приходит к выводу, что реквизит не заполнен. В этом случае запись объекта выполнена не будет.
Справка
ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправляемаяФорма.ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
Отказ
. Тип:Булево
. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значениеИстина
, то запись выполнена не будет. Значение по умолчаниюЛожь
.ПроверяемыеРеквизиты
. Тип:Массив
. Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.
Вызывается расширением формы при необходимости проверки заполнения реквизитов при записи в форме, а также при выполнении метода ПроверитьЗаполнение()
. Для вызова проверки заполнения системой необходимо, чтобы у формы (с которой происходит работа) было установлено свойство ПроверятьЗаполнениеАвтоматически
. В этом случае вначале будет вызван данный обработчик, а затем обработчик ОбработкаПроверкиЗаполнения()
модуля объекта.
Позволяет разработчику самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана.
Для формы документа, если при конфигурировании для документа свойство Проведение
установлено в Разрешить
, событие вызывается только при проведении. Если документ не проводится (свойство Проведение
установлено в Запретить
), то вызывается при записи.
ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
ДокументОбъект.ИмяДокумента.ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Отказ
. Тип:Булево
. Если в теле процедуры-обработчика установить данному параметру значениеИстина
, то будет выполнен отказ от продолжения работы после выполнения проверки заполнения. Значение по умолчаниюЛожь
.ПроверяемыеРеквизиты
. Тип:Массив
. Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.
Вызывается расширением формы при необходимости проверки заполнения реквизитов при записи или при проведении документа в форме, а также при выполнении метода ПроверитьЗаполнение()
. Если для документа при конфигурировании свойство Проведение
установлено в Разрешить
, то вызывается только при проведении. Если документ не проводится (установлено Запретить
), то вызывается при записи.
Позволяет разработчику конфигурации самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана.
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) // Проверим заполненность реквизита «Покупатель» Покупатель = ПроверяемыеРеквизиты.Найти("Покупатель"); Если Не ЗначениеЗаполнено(Покупатель) Тогда // Если он не заполнен, сообщим об этом пользователю Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Не указан Покупатель, на которого выписывается товарная накладная!"; Сообщение.Поле = "Покупатель"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); // Сообщим платформе, что мы сами обработали проверку заполнения реквизита «Покупатель» ПроверяемыеРеквизиты.Удалить(Покупатель); // Так как информация не консистентна, то продолжать работу дальше смысла нет Отказ = Истина; КонецЕсли; // Сообщим платформе, что мы сами обрабатываем проверку реквизита товар в табличной части «Товары» ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары.Товар")); // Обходим строки и проверяем заполнение реквизита Для Индекс = 0 По Товары.Количество()-1 Цикл СтрокаТовар = Товары.Получить(Индекс); Если Не ЗначениеЗаполнено(СтрокаТовар.Товар) Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "В строке " + Индекс + " не заполнено значение товара"; Сообщение.Поле = "Товары[" + Индекс + "].Товар"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; КонецЕсли; КонецЦикла; КонецПроцедуры
Поиск:
1С:Предприятие • Обработка проверки заполнения • Проверяемые реквизиты • Реквизит • Управляемая форма
Если вашу 1С уже кто-то обслуживает — предложу условия лучше!
- Профессионально — опыт 8 лет
- 137 выполненных проектов
- Работаю по договору
- Качественно и быстро
Цена решения проблемы ~1000р. срок ~1 час
Но чтобы дать конечную оценку, надо смотреть и уточнять детали… позвоните обсудим.
Обычно порядок работ следующий: приезжаю или подключаюсь удаленно, смотрю, даю оценку работ, устраивает — делаю.
Работаю на результат
Мои услуги
- Решение когда при проверке заполненности данных произошли ошибки 1С
- Продажа и настройка 1С:Предприятие «под ключ»
- Загрузка товаров в 1С из Excel, dbf, xml, txt и т.д.
- Обучение — курсы по работе с 1С
- Обновление 1С (7.7, 8.1, 8.2 и 8.3)
- Исправление и восстановление баз 1С
- Сброс забытых паролей
- Программирование в 1С — любые задачи
- Гарантия конфиденциальности!
Работаю с конфигурациями 1С: Управление торговлей, Розница, УНФ, Бухгалтерия. А так же отраслевыми конфигурациями Рарус Альфа-авто (версии 3, 4, 5, 6) и 1С Автосервис.
Цены на 1С
Наименование услуги | Стоимость |
---|---|
При проверке заполненности данных произошли ошибки 1С | от 1000 руб. |
Настройка сети и VРN (только для Zyхеl и Мikrоtik) | от 3000 руб. |
Помощь в решении задачи | от 300 руб. |
Настройка 1С | от 800 руб. |
Обучение 1С (план обучения) |
по договору |
Торговое оборудование |
|
Настройка ЕГАИС и онлайн-касс | от 800 руб. |
Подключение сканера штрих-кода, эквайринга к 1С | от 1000 руб. |
Настройка принтера этикеток, принтера чеков, дисплея покупателя, весов и т.д | от 600 руб. |
Обновление 1С |
|
При заказе обновления, проверка базы на ошибки | БЕСПЛАТНО |
Обновление типовой базы 1С | от 800 руб. |
Доработка 1C | |
Обрезать свернуть базу 1С (7.7, 8.3) | по договору |
Создание нового отчета 1С | от 600 руб. |
Разработка новой печатной формы 1С | от 500 руб. |
Рассылка SMS из 1С | по договору |
Загрузка товаров в 1С из Excel | по договору |
Настройка и сопровождение серверов, сетей и ПК | от 1200 руб.мес |
Сопровождение (обслуживание) 1С Предприятие | от 2400 руб.мес |
Продажа 1С Предприятие 8.3 (лицензия) | по договору (подробнее) |
Работы по настройке сервера 1С (удаленный доступ, VPN и т.д.) | по договору |
Цена часа работ | оценка по задачам |
Доверие клиентов
Сферы деятельности моих клиентов: торговля одеждой, строительными материалами, авто запчастями, услуги СТО (автосервис), торговля косметикой, мебелью, инструментами (для ремонта), электрикой, розничная торговля и т.д.
Мои клиенты, — в это компании в сфере торговли. Которые обращаются по оперативным работам в 1С и когда при проверке заполненности данных произошли ошибки 1С.