1
2
3
4
5
..6
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Николай Иванов
активный пользователь
офлайн
Дата регистрации: 13.04.2017
Сообщений: 31
Здравствуйте. Используется последний релиз Зарплата и управление персоналом КОРП, редакция 2.5 (2.5.184.1). Платформа 1С:Предприятие 8.3 (8.3.18.1289).
Формируется регламентный отчет «Расчет по страховым взносам» за 1-й квартал 2023 г.. Отчет формируется по новой форме, ошибок не возникает. Но при попытке заполнить отчет по соответствующей кнопке возникает ошибка «Во время заполнения отчета произошла ошибка: Ошибка при вызове метода контекста (Выполнить)». Никакой дополнительной информации не указывается, в журнале регистрации также никакой информации по ошибке нет. В отладчике видно, что ошибка возникает в процедуре “РасчетПоказателей_РСВ_2023», на этапе выполнения запроса, когда обрабатывается свойство «ЧисленностьЗастрахованныхВРазрезеТарифов2023». Отследить детально сложно, одно из подозрений, что не заполнены какие-то справочные данные, хотя вроде как тарифы заполнены.
Возможно нужно сделать какие-то дополнительные настройки для выполнения этого отчета, но какие – непонятно.
Может быть, кто-то сталкивался с этой ошибкой, подскажите пожалуйста пути решения. Или же, может быть, это ошибка релиза?
gvf
активный пользователь
офлайн
Дата регистрации: 10.04.2023
Сообщений: 5
Николай Иванов,
Проблема в общем модуле «ЗаполнениеРегламентированнойОтчетности» процедуре «РасчетПоказателей_РСВ_2023»
в этом коде (здесь ничего не отбирается):
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(Перечисление.ТарифыСтраховыхВзносов.ОрганизацииЗанимающиесяОбщепитом),
| Доходы.Период,
| Доходы.ФизЛицо
|ИЗ
| ВТЗастрахованныеЛицаОрганизации КАК Доходы
| ЛЕВОЕ СОЕДИНЕНИЕ ВТВидыТарифныхСтавокОрганизаций КАК ВидыТарифныхСтавокОрганизаций
| ПО Доходы.Период = ВидыТарифныхСтавокОрганизаций.Период
|ГДЕ
| Доходы.ЗастрахованПФР
| И ЕСТЬNULL(ВидыТарифныхСтавокОрганизаций.ВидТарифаСтраховыхВзносов, ЗНАЧЕНИЕ(Перечисление.ТарифыСтраховыхВзносов.ОбщийНалоговыйРежим)) = ЗНАЧЕНИЕ(Перечисление.ТарифыСтраховыхВзносов.ОрганизацииЗанимающиесяОбщепитом)
| И Доходы.ВидТарифаСтраховыхВзносов В (ЗНАЧЕНИЕ(Перечисление.ТарифыСтраховыхВзносов.ОрганизацииЗанимающиесяОбщепитом), ЗНАЧЕНИЕ(Перечисление.ТарифыСтраховыхВзносов.ОбщийНалоговыйРежим))
и этом (обращение к «КодыТарифов», похоже нет соединения с временной таблицей):
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗастрахованныеНаОПС.ВидТарифаСтраховыхВзносов КАК ВидТарифаСтраховыхВзносов,
| ЕСТЬNULL(КодыТарифов.Код, «»??»») КАК КодТарифа,
| МЕСЯЦ(ЗастрахованныеНаОПС.Период) КАК Период,
| ЗастрахованныеНаОПС.ФизЛицо КАК ФизЛицо,
| 1 КАК КоличествоОПС
|ПОМЕСТИТЬ ВТЗастрахованныеПоМесяцам
|ИЗ
| ВТЗастрахованныеНаОПС КАК ЗастрахованныеНаОПС»;
И еще в форме «ФормаОтчета2023Кв1» самого отчета процедуре «ФормаОтчета2023Кв1» (цикл по неопределенно) в э
том коде;
Для Каждого ДопСтрока Из ДопСтрокСтраницы Цикл
СвойстваМнЧУровня2 = СвойстваМногострочныхЧастей.Найти(ДопСтрока.Ключ, «ИД»);
Если СвойстваМнЧУровня2 <> Неопределено Тогда
СвойстваМнЧУровня2.ТекущееКоличествоСтрок = 0;
КонецЕсли;
КонецЦикла;
gvf
активный пользователь
офлайн
Дата регистрации: 10.04.2023
Сообщений: 5
Николай Иванов,
* И еще в форме «ФормаОтчета2023Кв1» самого отчета процедуре «ЗаполнитьАвто» (цикл по неопределенно) в э
том коде;
Николай Иванов
активный пользователь
офлайн
Дата регистрации: 13.04.2017
Сообщений: 31
gvf,
Спасибо большое, эту процедуру и имел ввиду, что ошибка возникает в этой процедуре. И что-то были сомнения на строчку запроса
| ЕСТЬNULL(КодыТарифов.Код, «»??»») КАК КодТарифа,
— возможно, не прав, но это обращение к временной таблице, а поля там возможно нет такого, хотя в процедуре много временных таблиц, возможно и ошибаюсь.
А варианты исправления Вы не знаете случайно или ждать обновление/исправления от 1С?
gvf
активный пользователь
офлайн
Дата регистрации: 10.04.2023
Сообщений: 5
Николай Иванов,
«А варианты исправления Вы не знаете случайно или ждать обновление/исправления от 1С?»
Не знаю можно ли здесь писать варианты исправления, для этого нужно понимать суть происходящего в отчете (чего я не знаю).
В запросе с этим кодом «| ЕСТЬNULL(КодыТарифов.Код, «»??»») КАК КодТарифа,» , если смотреть на предыдущий код в этой же процедуре не хватает соединения с ВТ «ВТКодыТарифов»
NadinPr
активный пользователь
офлайн
Дата регистрации: 26.03.2012
Сообщений: 9
gvf, спасибо тебе, добрый человек! сэкономил массу времени
NadinPr
активный пользователь
офлайн
Дата регистрации: 26.03.2012
Сообщений: 9
Николай Иванов, как уже сказано выше, необходимо найти кусок кода и подправить, а потом уже можно ждать у
моря погоды
обновление:
1.общий модуль — заполнениеРегламентированнойОтчетности — РасчетПоказателей_РСВ_2023
поискать строку ВТЗастрахованныеНаОПС КАК ЗастрахованныеНаОПС
добавить туда кусок кода:
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗастрахованныеНаОПС.ВидТарифаСтраховыхВзносов КАК ВидТарифаСтраховыхВзносов,
| ЕСТЬNULL(КодыТарифов.Код, «»??»») КАК КодТарифа,
| МЕСЯЦ(ЗастрахованныеНаОПС.Период) КАК Период,
| ЗастрахованныеНаОПС.ФизЛицо КАК ФизЛицо,
| 1 КАК КоличествоОПС
|ПОМЕСТИТЬ ВТЗастрахованныеПоМесяцам
|ИЗ
| ВТЗастрахованныеНаОПС КАК ЗастрахованныеНаОПС
//Вставлено 12 апреля 2023
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКодыТарифов КАК КодыТарифов
| ПО ЗастрахованныеНаОПС.ВидТарифаСтраховыхВзносов = КодыТарифов.ВидТарифаСтраховыхВзносов
| И (ГОД(ЗастрахованныеНаОПС.Период) МЕЖДУ КодыТарифов.ГодС И КодыТарифов.ГодПо)
//Вставлено 12 апреля 2023
2. отчеты — РегламентированныйОтчетРасчетПоСтраховымВзносам — ФормаОтчета2023Кв1
в алгоритме формы найти строку СвойстваМнЧУровня2 = СвойстваМногострочныхЧастей.Найти(ДопСтрока.Ключ, «ИД»)
заменить это
Для Каждого ДопСтрока Из ДопСтрокСтраницы Цикл
СвойстваМнЧУровня2 = СвойстваМногострочныхЧастей.Найти(ДопСтрока.Ключ, «ИД»);
Если СвойстваМнЧУровня2 <> Неопределено Тогда
СвойстваМнЧУровня2.ТекущееКоличествоСтрок = 0;
КонецЕсли;
КонецЦикла;
на это
Если ДопСтрокСтраницы <> Неопределено Тогда
Для Каждого ДопСтрока Из ДопСтрокСтраницы Цикл
СвойстваМнЧУровня2 = СвойстваМногострочныхЧастей.Найти(ДопСтрока.Ключ, «ИД»);
Если СвойстваМнЧУровня2 <> Неопределено Тогда
СвойстваМнЧУровня2.ТекущееКоличествоСтрок = 0;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Николай Иванов
активный пользователь
офлайн
Дата регистрации: 13.04.2017
Сообщений: 31
NadinPr, NadinPr, NadinPr, gvf,
Понятно, спасибо!
Надеюсь это многим пригодится!
Ларионов Сергей
Дата регистрации: 11.04.2023
Сообщений: 3
NadinPr,
Класс, Спасибо! Заработало!
vitaly smetanin
Дата регистрации: 12.04.2023
Сообщений: 3
Скажите, пожалуйста
Есть кусок кода | ВТЗастрахованныеНаОПС КАК ЗастрахованныеНаОПС»;
Куда вставить код нужно? Вместо?
Читают тему:
|
|||
| prima2017
11.04.17 — 12:29 |
При заполнении отчета Расчет по страховым взносам за 1 кв 2017 года сразу же выходит сообщение » Во время заполнения отчета произошла ошибка: Ошибка при вызове метода контекста (Выполнить)». Может быть кто-то столкнулся с такой же проблемой. Релиз программы Зарплата и Управление Персоналом, редакция 2.5 (2.5.117.1) |
||
| Крэкпэк
1 — 11.04.17 — 12:30 |
Сменить платформу на 8.3 |
||
| Amra
2 — 11.04.17 — 12:34 |
(1) С какой стати? |
||
| prima2017
3 — 11.04.17 — 12:40 |
Если можно поконкретнее где искать ошибку? Варианты возможных событий |
||
| Крэкпэк
4 — 11.04.17 — 12:45 |
(2) С такой, что валится ошибка на запросе, в котором использованы новые возможности языка запросов. |
||
| Amra
5 — 11.04.17 — 12:47 |
(4) Да? А почему у десятка контор, где стоит 8.2, ничего не падает? |
||
| Крэкпэк
6 — 11.04.17 — 12:48 |
(5) Значит повезло. Я пишу как я решил эту проблему. |
||
| Amra
7 — 11.04.17 — 12:50 |
(6) В 1С надеюсь написал? 2.5.117 по 1Сному мнению требует 8.2.14 |
||
| Крэкпэк
8 — 11.04.17 — 12:51 |
(7) Больше делать что ли нечего. И проблема еще с 116 релиза. |
||
| АяПелаИплясала
9 — 11.04.17 — 12:53 |
А может кто-нибудь подсказать в этот отчет допустим пособия до 1,5 лет должны попадать ???подраздел 1.2. строка 030 |
||
| prima2017
10 — 11.04.17 — 12:54 |
В другой организации в релизе 116 ошибка не возникла, всё заполнилось, может что-то надо в учетной политике менять? может там какие-то периоды перекрываются? |
||
| Крэкпэк
11 — 11.04.17 — 13:00 |
(10) Платформа какая ? |
||
| prima2017
12 — 11.04.17 — 13:01 |
8.2 редакция 2.5 (2.5.117.1) |
||
| Крэкпэк
13 — 11.04.17 — 13:01 |
(12) не конфы, а платформы |
||
| Крэкпэк
14 — 11.04.17 — 13:01 |
(13) + 8.2.??? |
||
| Крэкпэк
15 — 11.04.17 — 13:03 |
(14) + проверил, не обязательно 8.3 можно и последнюю 8.2 |
||
| prima2017
16 — 11.04.17 — 13:03 |
8.2 да |
||
| Крэкпэк
17 — 11.04.17 — 13:04 |
(16) все цифирки напиши из версии |
||
| prima2017
18 — 11.04.17 — 13:06 |
1С:Предприятие 8.2 (8.2.14.528) |
||
| Крэкпэк
19 — 11.04.17 — 13:09 |
(18) поставь что то по свежее, хотя бы 8.2.19 |
||
| prima2017
20 — 11.04.17 — 13:11 |
Спасибо за совет, попробую в работающей базе действительно стоит 8.2.19.130 |
||
|
prima2017 21 — 11.04.17 — 16:09 |
После обновления платформы всё заработало |
Вопрос задал
Инна К. (Киров, Кировская область)
Ответственный за ответ:
Пьянкова Елена (★9.85/10)
После обновления на релиз Зарплата и управление персоналом КОРП, редакция 2.5 (2.5.184.1) неверно заполняется Расчет по страховым взносам за 1 кв.2023
не верно заполняется сумма начисленных страховых взносов по сотрудникам, у которых был больничный в расчетном периоде, причем сумма начислений увеличивается ровно в 4 раза. Прикладываем скриншоты
Проблема: При попытке сдать годовой отчёт во время заполнения появляется ошибка следующего плана:
Ошибка: Неспецифицированная ошибка работы с ресурсом. Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm: Недостаточно свободной памяти для выполнения операции.
Оборудование: 1С 8.3.15.1700, 1С: Бухгалтерия 8.3.2.0.66.88
Решение проблемы: На моей памяти подобное в небольших организациях начинает происходить ежегодно — в январе, когда нужно готовить годовые отчёты для сдачи в различные контролирующие ведомства. Ошибка появляется не обязательно при сохранении. А может просто появиться, когда вносятся какие-либо данные. При этом на одном компьютере всё происходит до ужаса стабильно раз в год. На других — по обстоятельствам.
Есть в Интернете несколько вариантов решения проблемы:
1) Увеличить ОЗУ. Ну, тут, как говорится, смотря по обстоятельствам. Однако отмечу такой факт: на компьютере, где ошибка возникает ежегодно, база рабочая весит не более 1,6 Гб, а ОЗУ стоит 16 Гб (кстати, увеличен объём в последние два года дважды — сначала с 4 до 8, а потом с 8 до 16 Гб!!). Если дело тут в памяти, то тогда как работают остальные на куда менее «объёмо-памятных» ПК?
2) Сам по себе глючный сервис /e1cib/logForm. И вроде как там стоит выбирать время, то, сё… пятое-десятое… Однако при работе на разных БД в одно и то же время бывало так, что один работает нормально, а другой — вот такое выдаёт.
Есть ещё всякие разные объяснения подобной ошибке. Мне в 5 случаях из 6 (единственный иной заключался в том, что я ещё, ничего не зная, просто сделал отчёт у себя на домашнем ПК по архивной БД) помогло следующее:
а) Урезание журнала БД. Делается это классическим способом: либо в конфигураторе, либо при закрытой базе просто удалением файлов журнала в папке, если этот журнал не жалко.
б) Проверкой и переиндексацией БД. Тут тоже можно проявить вариации: либо сделать это в конфигураторе, либо внешней утилитой (если кто сомневается, вдруг чего) chdbfl.exe.
Обе процедуры просты и тривиальны, потому, думаю, можно обойтись без скриншотов, как их выполнять.
Обе процедуры помогают (проверено мной). Понятное дело, что на очень-очень мало мощном компьютере с убитой ОС и старым ПО вряд ли и эти процедуры смогут помочь. Так что не стоит доводить всё до абсурда и утопии.
А потому: желаю всем качественного ПО и спокойной работы над поддержанием его работоспособности.
Можно попробовать использовать команду ВОЗВРАТ при невыполнении условия проверки, без использования команды ОТКАЗ.
Чтоб документ не проводился — вам всего лишь нужно не выполнить процедуру ОбработкаПроведения до конца, прервать ее в нужном вам месте. Значение флажка ОТКАЗ на это никак не влияет
Обработчик события ОбработкаПроверкиЗаполнения
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1.1. В данном обработчике модуля объекта выполняются действия, связанные с проверкой правильности заполнения значений реквизитов объектов (измерений, ресурсов, реквизитов табличных частей и т.п., далее: просто «реквизиты»).
1.2. Данным обработчиком следует пользоваться в случаях, когда для проверки корректности значений реквизитов обычной проверки на заполненность уже недостаточно (например, значение реквизита логически связано со значением другого реквизита), или же требование к тому, чтобы значение реквизита было заполнено не является безусловным.
Если проверка заполнения какого-либо реквизита — условная (т.е. зависит от значений других реквизитов или значения параметризированной функциональной опции) в обработчике следует предусмотреть код, который удаляет имя такого реквизита из массива проверяемых реквизитов ПроверяемыеРеквизиты . В общем виде, схема проверки заполнения выглядит следующим образом:
- создать массив НепроверяемыеРеквизиты ;
- в процессе проверки условий, добавлять в этот массив имена непроверяемых реквизитов (табличных частей);
- вызвать процедуру для удаления непроверяемых реквизитов (текст процедуры УдалитьНепроверяемыеРеквизитыИзМассива приведен ниже).
При этом не рекомендуется использовать другие схемы проверки заполнения значений реквизитов, так как они затрудняют анализ логики работы конфигурации, поскольку скрывают из свойства «Проверка заполнения» случаи условной проверки заполнения значений объектов.
Например, неправильно:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
// Проверка значения реквизита на соответствие некоторым требованиям
Если НЕ ИННСоответствуетТребованиям(ИНН) Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр(«ru = ‘ИНН задан неверно.’»);
Сообщение.Поле = «ИНН»;
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
// Значение реквизита не должно быть пустым в зависимости от значения другого реквизита
Если ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо Тогда
// Для индивидуального предпринимателя должно быть сопоставлено физ. лицо
ПроверяемыеРеквизиты.Добавить(«ИндивидуальныйПредприниматель»);
КонецЕсли;
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
НепроверяемыеРеквизиты = Новый Массив();
.
// Проверка значения реквизита на соответствие некоторым требованиям
Если НЕ ИННСоответствуетТребованиям(ИНН) Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр(«ru = ‘ИНН задан неверно.’»);
Сообщение.Поле = «ИНН»;
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
НепроверяемыеРеквизиты.Добавить(«ИНН»);
КонецЕсли;
.
// Значение реквизита не должно быть пустым в зависимости от другого реквизита
Если ЮрФизЛицо <> Перечисления.ЮрФизЛицо.ФизЛицо Тогда
НепроверяемыеРеквизиты.Добавить(«ИндивидуальныйПредприниматель»);
КонецЕсли;
Процедура УдалитьНепроверяемыеРеквизитыИзМассива(МассивРеквизитов, МассивНепроверяемыхРеквизитов) Экспорт
Для Каждого ЭлементМассива Из МассивНепроверяемыхРеквизитов Цикл
// перед удалением реквизита из массива необходимо проверить, что он там есть
// (не был удален ранее платформой или в коде).
ПорядковыйНомер = МассивРеквизитов.Найти(ЭлементМассива);
Если ПорядковыйНомер <> Неопределено Тогда
МассивРеквизитов.Удалить(ПорядковыйНомер);
КонецЕсли;
1.3. Следует учитывать, что обработчик ОбработкаПроверкиЗаполнения вызывается не при каждой записи объекта, в частности, он не вызывается в случаях если запись были инициирована программно.
Методическая рекомендация (полезный совет)
1.4. В случае использования в конфигурации подсистемы «Обмен данными» Библиотеки стандартных подсистем обработчик ОбработкаПроверкиЗаполнения вызывается при проведении документов, после их загрузки из сообщения обмена. Для отключения некоторых проверок в этом режиме в обработчике можно анализировать дополнительное свойство объекта ДополнительныеСвойства . ОтложенноеПроведение .
Проверки, выполняемые в и вне транзакции записи объекта
2.1. Проверки в обработчике ОбработкаПроверкиЗаполнения выполняются вне транзакции записи объекта. Поскольку в случае некорректного заполнения объекта выполнение операции будет прервано еще до записи объекта в базу данных, то размещение проверок в этом обработчике является наиболее эффективным.
При выполнении внетранзакционных проверок в обработчике ОбработкаПроверкиЗаполнения необходимо учитывать тот факт, что новое состояние объекта еще не записано. Если требуется выполнить запрос к тем или иным данным системы, например, прочитать признак ВидНоменклатуры для товаров, выбранных в табличной части документа, «отталкиваясь» от данных документа, то такую поверку можно выполнить, применяя сохранение необходимых для запроса данных во временные таблицы.
2.2. В то же время, в обработчике ОбработкаПроверкиЗаполнения не следует размещать проверки, которые должны гарантировать целостное состояние объекта или зависящих от него данных (например, движений) на которые рассчитывает система. Поэтому для реквизитов, некорректные значения которых могут привести к рассогласованности данных в информационной базе, проверку корректности следует выполнять в обработчиках событий, возникающих в транзакции записи — ПередЗаписью , ПриЗаписи , ОбработкаПроведения (для документов).
Для транзакционных проверок, в свою очередь, выделяются два случая:
- Проверка состояния движений, формируемых документами оперативного учета. Такие проверки довольно часто встречаются в приложениях с оперативным учетом.
- Проверка состояния других объектов информационной базы, ссылки на которых содержатся в текущем объекте. Такие проверки следует применять очень редко. Не следует злоупотреблять количеством проверок в транзакции записи объекта. Следует помнить, что внутри транзакции записи имеет смысл выполнять только проверки таких ресурсов или таких правил соответствия объектов друг другу, которые не изменяются без проверок всеми участниками процесса.
В первом случае, проверку остатков некоторого ресурса имеет смысл выполнять в транзакции записи только в том случае, если все документы выполняют такую же проверку в транзакции записи. Если хоть один из документов, изменяющих ресурс, делает это без проверок, выполнение проверок другими участниками процесса бессмысленно и такие проверки необходимо выполнять вне транзакции. Исключением может быть только случай, когда документ, который выполняет изменение контролируемого ресурса без проверок, вводится крайне редко. Например, не смотря на то, что документ «Инвентаризация товаров» изменяет остатки товаров без проверок, эта ситуация допустима в виду того, что он вводится крайне редко. Каждое такое исключение из правила должно быть оправданным.
Во втором случае, если при записи Подразделения в транзакции записи выполняется проверка, что сотрудник, выбранный в качестве руководителя подразделения, имеет должность «Руководитель», то при записи Сотрудника также должна выполняться и «встречная» проверка этого же правила: нельзя записать Сотрудника с должностью отличной от «Руководитель», если он указан руководителем того или иного подразделения. Поскольку правило, что «Сотрудник», выбранный руководителем подразделения, должен иметь должность «Руководитель», может быть нарушено как при записи подразделения, так и при записи сотрудника, то и проверка должна выполняться или в транзакции записи обоих объектов, или вне транзакции записи обоих объектов (а может и не выполняться вообще).
Наиболее частые ошибки в 1С 8.3
Помощь персонального менеджера, оперативность сдачи отчетности, соответствие законодательству РФ
При работе с программами 1С Предприятие 8.3 пользователь может столкнуться с различного рода ошибками. Типичные ошибки 1С возникают вследствие программного сбоя, из-за некорректного выхода из программы или человеческого фактора. При этом причиной может стать сбой работы сети, отключение электроэнергии, сбой при динамическом обновлении и т.п.
В результате сбоя может быть нарушена логическая или физическая целостность программы. В зависимости от этого, программа может или совсем не открываться, или открываться в режиме «Конфигуратор», но не запускаться в пользовательском режиме, или работать, но при работе с определенными объектами выдавать сообщение об ошибке.
Если вашу программу сопровождает компания-франчайзи 1С, то без проблем можно обратиться за консультацией 1С. Также можно попытаться разобраться самому, и первое, что при возникновении нештатной ситуации нужно сделать пользователю, — проанализировать ошибку. Зачастую непосредственно в сообщении описывается ее суть, что может подсказать, как ее устранить. Необходимо проверить при работе в сети, запускается ли программа или появляется ли ошибка на другом компьютере. Если ошибка возникает при запуске программы – причину необходимо искать в кэше, если сбой происходит при попытке сформировать отчет или провести документ непосредственно в самой программе, то ошибка кроется непосредственно в информационной базе.
Рассмотрим, наиболее частые ошибки при работе 1С.
Ошибка Формата потока
Иногда при запуске программы пользователь может столкнуться с сообщением программы «Ошибка формата потока».
Устранение ошибки. В папке с установленной программой, кроме файла с информационной базой, имеются служебные временные файлы. При аварийном выключении программы также могут сохраниться файлы блокировок (которые автоматически должны были удалиться при выключении программы). Один из вариантов решения проблемы – это удаление из этой папки всех этих файлов. Такие файлы будут сформированы вновь при запуске программы, поэтому их можно смело удалить. Файл 1Cv8.1CD – файл информационной базы. Его удалять нельзя.
Кроме этого, следующим шагом (если первый вариант не дал результата) должно стать удаление информационной базы из списка в окне запуска 1С (кнопка «Удалить») и добавление ее обратно (кнопка «Добавить»). Тем самым мы очистим кэш.
Но такой вариант очистки кэша программы не очень верный, так как файлы при добавлении базы создаются новые, а старые так и остаются на диске. Поэтому при очистке кэша лучше их просто удалять самим вручную.
Посмотреть, где располагаются временные файлы программы, можно в кнопке «Настройка. » в окне запуска 1С. В поле «Каталоги шаблонов и конфигурация» видно, в какой папке располагаются временные файлы. В нашем примере в папке пользователя, далее в папке AppDataRoaming1Ctmplts.
Чтобы очистить кэш, необходимо удалить временные файлы из указанной папки.
Некоторые ошибки могут прямо указывать на папку с временными файлами, сообщая о проблеме. Например, ошибка «Неверный формат хранилища». Здесь видно, что программа указывает путь к папке с временными файлами. И чтобы очистить кэш вручную, надо удалить папки из указанной директории.
Неверный формат хранилища
На рисунке видно, что ошибка указывает на папку с временными файлами – AppData/Local/1C и далее папка с цифрами в названии.
То есть о решении проблемы уже сказано в самом сообщении. Для устранения ошибки необходимо очистить кэш, находящийся в указанной папке. В данном примере временные файлы находятся в папке Local, и очистка кэша должна решить проблему.
Ошибка СУБД. Внутренняя ошибка компоненты dbeng
Ошибка СУБД сама говорит о нарушении структуры базы данных. Довольно распространенная ошибка этого рода – «Внутренняя ошибка компоненты dbeng8».
Компонента dbeng8.dll находится в папке bin установленной платформы 1С.
Поэтому первый вариант решения проблемы – переустановка платформы 1С. При этом если компьютеры составляют сеть, на всех компьютерах должна быть установлена одна версия платформы 1С, а если нет возможности обновлять платформу, то можно просто скопировать этот файл из другой папки установки.
Если переустановка платформы не помогла, то переходим к варианту тестирования и исправления базы данных. Другие ошибки касающиеся СУБД также решаются этим способом.
«Ошибка СУБД: Файл базы данных поврежден»
Например, «Ошибка СУБД: Файл базы данных поврежден» решается тестированием и исправлением файла информационной базы.
Тестирование и исправление информационной базы с помощью утилиты chdbfl.exe
Одним из вариантов тестирования и исправления при возникновении ошибок, связанных с СУБД, является использование утилиты chdbfl.exe. Она предназначена для проверки физической целостности базы данных при работе с файловой информационной базой. Этот способ используется также, когда база 1С не запускается в режиме Конфигуратора.
Хотелось бы напомнить, что перед любыми действиями с информационной базой необходимо выполнить резервное копирование – в режиме Конфигуратора через пункт меню «Администрирование»-«Выгрузить информационную базу». Или можно скопировать файл информационной базы – 1Сv8.CD, из каталога, где она размещается.
Файл утилиты chdbfl.exe находится в папке bin, установленной платформы 1С – обычно в папке Program Files (х86)-1cv8, а далее папка с релизом платформы.
Запустив утилиту, в поле «Имя файла БД» указываем путь к файлу базы данных. Здесь надо установить галочку «Исправлять обнаруженные ошибки» и нажать кнопку «Выполнить». В результате утилита проверит физическую целостность базы данных и в случае обнаружения ошибок исправит их.
Если данный способ тестирования не решил проблему, то необходимо провести тестирование информационной базы в режиме «Конфигуратор».
Тестирование информационной базы в Конфигураторе
Для тестирования и исправления информационной базы запустим программу в режиме «Конфигуратор». В пункте меню «Администрирование» выберем «Тестирование и исправление. ».
В открывшемся окне тестирования базы устанавливаем необходимые для тестирования галочки.
«Реиндексация таблиц информационной базы» – исправляет ошибки, связанные со сбоем индексов. В программе ошибки могут проявляться наличием незаполненных полей, например, в документе отсутствует наименование или количество и т.п. При тестировании и исправлении рекомендуется выбирать этот пункт, так как он помогает решить большинство проблем, реиндексируя все таблицы.
«Проверка логической целостности информационной базы» – помогает исправить ошибки 1С, связанные с нарушением логической целостности. При ошибках такого рода программа может работать, но при обращении к объекту, в котором произошло нарушение (например, документу), программа будет выдавать ошибку. Установив данную галочку, программа проверит логическую целостность в структуре таблиц информационной базы.
«Проверка ссылочной целостности» – решает проблемы, связанные с возникновением ссылок на несуществующие объекты, которые появляются в результате сбоя или непосредственного удаления объекта. При обнаружении таких объектов необходимо выбрать вариант действия – создать, удалить объект, изменять его.
«Пересчет итогов». При сбое в программе в отчетах могут отображаться неверные данные, при расшифровке которых не видно их детализации, т.е. «цифра» есть, а данных о ней нет. В результате установки этой галочки будут пересчитаны все итоги в информационной базе, и данные восстановятся согласно существующим документам заново.
«Сжатие таблиц информационной базы». При установлении данной галочки происходит физическое удаление записей в таблицах, которые ранее были помечены на удаление в программе. Ведь при удалении объектов в базе, в таблицах они все равно сохраняются, накапливаясь и создавая объем. В результате этой операции таблицы информационной базы становятся меньше.
«Реструктуризация таблиц информационной базы» – данное действие создает новые таблицы, перенося в них данные из старых таблиц. То же самое происходит при выполнении обновления программы. Установление этой галочки исправляет некоторые ошибки.
После установки необходимых галочек нажимаем кнопку «Выполнить» и ждем окончания тестирования. По окончании тестирования программа выведет информацию о результатах тестирования.
При решении некоторых проблем помогает выгрузка и загрузка информационной базы в файл *dt (пункт меню «Администрирование» — «Выгрузка информационной базы. », затем «Загрузка информационной базы. »).
Данные ошибки возможны в файловых информационных базах. В любом случае, возникающие ошибки в программе необходимо анализировать. Но при их появлении, первые действия, которые можно предпринять, это:
- Очистить кэш;
- Провести тестирование и исправление с помощью утилиты chdbfl.exe;
- Тестирование и исправление базы в режиме «Конфигуратор»;
- Обновить платформу «1С:Предприятие».
При этом, конечно же, версия программы должна быть актуальной. Некоторые ошибки устраняются после установки обновления программы. Если проблемы с возникновением ошибок не удалось решить, обратитесь к нашим специалистам: мы проконсультируем и подберем для вас оптимальный тариф сопровождения и стоимость доработки 1С, исходя из ваших конкретных задач и потребностей.
Обработчик события ОбработкаПроверкиЗаполнения
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1.1. В данном обработчике модуля объекта выполняются действия, связанные с проверкой правильности заполнения значений реквизитов объектов (измерений, ресурсов, реквизитов табличных частей и т.п., далее: просто «реквизиты»).
1.2. Данным обработчиком следует пользоваться в случаях, когда для проверки корректности значений реквизитов обычной проверки на заполненность уже недостаточно (например, значение реквизита логически связано со значением другого реквизита), или же требование к тому, чтобы значение реквизита было заполнено не является безусловным.
Если проверка заполнения какого-либо реквизита — условная (т.е. зависит от значений других реквизитов или значения параметризированной функциональной опции) в обработчике следует предусмотреть код, который удаляет имя такого реквизита из массива проверяемых реквизитов ПроверяемыеРеквизиты . В общем виде, схема проверки заполнения выглядит следующим образом:
- создать массив НепроверяемыеРеквизиты ;
- в процессе проверки условий, добавлять в этот массив имена непроверяемых реквизитов (табличных частей);
- вызвать процедуру для удаления непроверяемых реквизитов (текст процедуры УдалитьНепроверяемыеРеквизитыИзМассива приведен ниже).
При этом не рекомендуется использовать другие схемы проверки заполнения значений реквизитов, так как они затрудняют анализ логики работы конфигурации, поскольку скрывают из свойства «Проверка заполнения» случаи условной проверки заполнения значений объектов.
Например, неправильно:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
// Проверка значения реквизита на соответствие некоторым требованиям
Если НЕ ИННСоответствуетТребованиям(ИНН) Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр(«ru = ‘ИНН задан неверно.’»);
Сообщение.Поле = «ИНН»;
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
// Значение реквизита не должно быть пустым в зависимости от значения другого реквизита
Если ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо Тогда
// Для индивидуального предпринимателя должно быть сопоставлено физ. лицо
ПроверяемыеРеквизиты.Добавить(«ИндивидуальныйПредприниматель»);
КонецЕсли;
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
НепроверяемыеРеквизиты = Новый Массив();
.
// Проверка значения реквизита на соответствие некоторым требованиям
Если НЕ ИННСоответствуетТребованиям(ИНН) Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр(«ru = ‘ИНН задан неверно.’»);
Сообщение.Поле = «ИНН»;
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
НепроверяемыеРеквизиты.Добавить(«ИНН»);
КонецЕсли;
.
// Значение реквизита не должно быть пустым в зависимости от другого реквизита
Если ЮрФизЛицо <> Перечисления.ЮрФизЛицо.ФизЛицо Тогда
НепроверяемыеРеквизиты.Добавить(«ИндивидуальныйПредприниматель»);
КонецЕсли;
Процедура УдалитьНепроверяемыеРеквизитыИзМассива(МассивРеквизитов, МассивНепроверяемыхРеквизитов) Экспорт
Для Каждого ЭлементМассива Из МассивНепроверяемыхРеквизитов Цикл
// перед удалением реквизита из массива необходимо проверить, что он там есть
// (не был удален ранее платформой или в коде).
ПорядковыйНомер = МассивРеквизитов.Найти(ЭлементМассива);
Если ПорядковыйНомер <> Неопределено Тогда
МассивРеквизитов.Удалить(ПорядковыйНомер);
КонецЕсли;
1.3. Следует учитывать, что обработчик ОбработкаПроверкиЗаполнения вызывается не при каждой записи объекта, в частности, он не вызывается в случаях если запись были инициирована программно.
Методическая рекомендация (полезный совет)
1.4. В случае использования в конфигурации подсистемы «Обмен данными» Библиотеки стандартных подсистем обработчик ОбработкаПроверкиЗаполнения вызывается при проведении документов, после их загрузки из сообщения обмена. Для отключения некоторых проверок в этом режиме в обработчике можно анализировать дополнительное свойство объекта ДополнительныеСвойства . ОтложенноеПроведение .
Проверки, выполняемые в и вне транзакции записи объекта
2.1. Проверки в обработчике ОбработкаПроверкиЗаполнения выполняются вне транзакции записи объекта. Поскольку в случае некорректного заполнения объекта выполнение операции будет прервано еще до записи объекта в базу данных, то размещение проверок в этом обработчике является наиболее эффективным.
При выполнении внетранзакционных проверок в обработчике ОбработкаПроверкиЗаполнения необходимо учитывать тот факт, что новое состояние объекта еще не записано. Если требуется выполнить запрос к тем или иным данным системы, например, прочитать признак ВидНоменклатуры для товаров, выбранных в табличной части документа, «отталкиваясь» от данных документа, то такую поверку можно выполнить, применяя сохранение необходимых для запроса данных во временные таблицы.
2.2. В то же время, в обработчике ОбработкаПроверкиЗаполнения не следует размещать проверки, которые должны гарантировать целостное состояние объекта или зависящих от него данных (например, движений) на которые рассчитывает система. Поэтому для реквизитов, некорректные значения которых могут привести к рассогласованности данных в информационной базе, проверку корректности следует выполнять в обработчиках событий, возникающих в транзакции записи — ПередЗаписью , ПриЗаписи , ОбработкаПроведения (для документов).
Для транзакционных проверок, в свою очередь, выделяются два случая:
- Проверка состояния движений, формируемых документами оперативного учета. Такие проверки довольно часто встречаются в приложениях с оперативным учетом.
- Проверка состояния других объектов информационной базы, ссылки на которых содержатся в текущем объекте. Такие проверки следует применять очень редко. Не следует злоупотреблять количеством проверок в транзакции записи объекта. Следует помнить, что внутри транзакции записи имеет смысл выполнять только проверки таких ресурсов или таких правил соответствия объектов друг другу, которые не изменяются без проверок всеми участниками процесса.
В первом случае, проверку остатков некоторого ресурса имеет смысл выполнять в транзакции записи только в том случае, если все документы выполняют такую же проверку в транзакции записи. Если хоть один из документов, изменяющих ресурс, делает это без проверок, выполнение проверок другими участниками процесса бессмысленно и такие проверки необходимо выполнять вне транзакции. Исключением может быть только случай, когда документ, который выполняет изменение контролируемого ресурса без проверок, вводится крайне редко. Например, не смотря на то, что документ «Инвентаризация товаров» изменяет остатки товаров без проверок, эта ситуация допустима в виду того, что он вводится крайне редко. Каждое такое исключение из правила должно быть оправданным.
Во втором случае, если при записи Подразделения в транзакции записи выполняется проверка, что сотрудник, выбранный в качестве руководителя подразделения, имеет должность «Руководитель», то при записи Сотрудника также должна выполняться и «встречная» проверка этого же правила: нельзя записать Сотрудника с должностью отличной от «Руководитель», если он указан руководителем того или иного подразделения. Поскольку правило, что «Сотрудник», выбранный руководителем подразделения, должен иметь должность «Руководитель», может быть нарушено как при записи подразделения, так и при записи сотрудника, то и проверка должна выполняться или в транзакции записи обоих объектов, или вне транзакции записи обоих объектов (а может и не выполняться вообще).
Adblock
detector
Обновлено: 30.01.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 завершитьработупользователей сам не закрывается
Механизм проверки заполнения позволяет автоматически проверить, заполнены ли указанные реквизиты объекта. Для этого нужно воспользоваться свойством ПроверкаЗаполнения, которое есть у реквизитов объектов конфигурации.

Если установить это свойство в значение «Выдавать ошибку», поле Поставщик в форме будет помечено как обязательное для заполнения. А при записи накладной платформа будет контролировать заполненность этого реквизита. Если реквизит окажется не заполнен, платформа выдаст автоматическое сообщение и запись накладной будет отменена.
Разработчик может повлиять на стандартную проверку заполнения, выполняемую платформой. Для этого у него есть два события:
- Одно событие —
ОбработкаПроверкиЗаполненияНаСервере— можно обработать в модуле формы. - Другое событие —
ОбработкаПроверкиЗаполнения— можно обработать в модуле прикладного объекта.

У формы, как правило, есть основной реквизит (редактируемый объект) и могут быть реквизиты, не относящиеся к редактируемому объекту, а являющиеся лишь частью формы:

Поэтому серверное событие формы ОбработкаПроверкиЗаполненияНаСервере предназначено для проверки заполнения тех реквизитов формы, которые не относятся к редактируемому объекту. Это данные только формы, у формы могут быть свои причины и алгоритмы для проверки этих данных.
Напротив, событие объекта ОбработкаПроверкиЗаполнения предназначено для для того, чтобы проверить реквизиты основного реквизита формы.
Обработчики обеих событий имеют параметр ПроверяемыеРеквизиты, в который платформа передает массив имен тех реквизитов, которые подлежат проверке. Если после выхода из обработчика в этом массиве все еще останутся какие-то имена реквизитов — платформа выполнит автоматическую проверку оставшися реквизитов.
Поэтому существует несколько сценариев того, как разработчик может встроить свой алгоритм в механизм проверки заполнения:
- самостоятельно проверить заполненность всех реквизитов и очистить массив
ПроверяемыеРеквизиты, чтобы платформа не выполняла их проверку - проверить часть реквизитов самостоятельно, удалить их из массива
ПроверяемыеРеквизиты, а оставшиеся оставить на проверку платформе - добавить в массив
ПроверяемыеРеквизитыкакие-то реквизиты, чтобы платформа проверила и их тоже - вообще отказаться от проверки заполненности реквизитов, очистив массив
Все эти сценарии реализуются довольно просто. Например, чтобы самостоятельно проверить заполненность реквизитов, можно выполнить следующий код:
Если Поставщик = Справочники.Поставщики.ПустаяСсылка() Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Необходимо заполнить поставщика!"; Сообщение.Поле = "Поставщик"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; КонецЕсли; // Проверка остальных реквизитов // .......... // Очистить массив проверяемых реквизитов, чтобы платформа // не выполняла их автоматическую проверку ПроверяемыеРеквизиты.Очистить();
Чтобы проверить лишь часть реквизитов, можно выполнить такой код:
Если Поставщик = Справочники.Поставщики.ПустаяСсылка() Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Необходимо заполнить поставщика!"; Сообщение.Поле = "Поставщик"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; // Удалить поставщика из массива проверяемых реквизитов ИндексПоляПоставщик = ПроверяемыеРеквизиты.Найти("Поставщик"); Если ИндексПоляПоставщик <> Неопределено Тогда ПроверяемыеРеквизиты.Удалить(ИндексПоляПоставщик); КонецЕсли; КонецЕсли;
Добавить в массив проверяемых реквизитов еще один реквизит можно следующим образом:
ПроверяемыеРеквизиты.Добавить("Комментарий");
А очистить массив проверяемых реквизитов, чтобы ничего не проверять ни самому, ни платформе, можно так:
ПроверяемыеРеквизиты.Очистить();
Вторым параметром в обработчиках этих событий является параметр Отказ. Если ему присвоить значение Истина, то после выхода из обработчика дальнейшая запись объекта будет отменена. Таким образом этот параметр нужно устанавливать в значение Истина тогда, когда ваш алгоритм приходит к выводу, что реквизит не заполнен. В этом случае запись объекта выполнена не будет.
Справка
ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправляемаяФорма.ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
Отказ. Тип:Булево. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значениеИстина, то запись выполнена не будет. Значение по умолчаниюЛожь.ПроверяемыеРеквизиты. Тип:Массив. Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.
Вызывается расширением формы при необходимости проверки заполнения реквизитов при записи в форме, а также при выполнении метода ПроверитьЗаполнение(). Для вызова проверки заполнения системой необходимо, чтобы у формы (с которой происходит работа) было установлено свойство ПроверятьЗаполнениеАвтоматически. В этом случае вначале будет вызван данный обработчик, а затем обработчик ОбработкаПроверкиЗаполнения() модуля объекта.
Позволяет разработчику самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана.
Для формы документа, если при конфигурировании для документа свойство Проведение установлено в Разрешить, событие вызывается только при проведении. Если документ не проводится (свойство Проведение установлено в Запретить), то вызывается при записи.
ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
ДокументОбъект.ИмяДокумента.ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Отказ. Тип:Булево. Если в теле процедуры-обработчика установить данному параметру значениеИстина, то будет выполнен отказ от продолжения работы после выполнения проверки заполнения. Значение по умолчаниюЛожь.ПроверяемыеРеквизиты. Тип:Массив. Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.
Вызывается расширением формы при необходимости проверки заполнения реквизитов при записи или при проведении документа в форме, а также при выполнении метода ПроверитьЗаполнение(). Если для документа при конфигурировании свойство Проведение установлено в Разрешить, то вызывается только при проведении. Если документ не проводится (установлено Запретить), то вызывается при записи.
Позволяет разработчику конфигурации самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана.
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) // Проверим заполненность реквизита «Покупатель» Покупатель = ПроверяемыеРеквизиты.Найти("Покупатель"); Если Не ЗначениеЗаполнено(Покупатель) Тогда // Если он не заполнен, сообщим об этом пользователю Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Не указан Покупатель, на которого выписывается товарная накладная!"; Сообщение.Поле = "Покупатель"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); // Сообщим платформе, что мы сами обработали проверку заполнения реквизита «Покупатель» ПроверяемыеРеквизиты.Удалить(Покупатель); // Так как информация не консистентна, то продолжать работу дальше смысла нет Отказ = Истина; КонецЕсли; // Сообщим платформе, что мы сами обрабатываем проверку реквизита товар в табличной части «Товары» ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары.Товар")); // Обходим строки и проверяем заполнение реквизита Для Индекс = 0 По Товары.Количество()-1 Цикл СтрокаТовар = Товары.Получить(Индекс); Если Не ЗначениеЗаполнено(СтрокаТовар.Товар) Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "В строке " + Индекс + " не заполнено значение товара"; Сообщение.Поле = "Товары[" + Индекс + "].Товар"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; КонецЕсли; КонецЦикла; КонецПроцедуры
Поиск:
1С:Предприятие • Обработка проверки заполнения • Проверяемые реквизиты • Реквизит • Управляемая форма







