Не выполнено условие формирования операции в 1с что это значит
Ошибка в программе 1С: «Операция не может быть выполнена»
Доброго времени суток, коллеги! В данной статье будет рассмотрено несколько вариаций ошибки программы 1С «Операция не может быть выполнена…», причины возникновения, а также пути решения на примерах.
1. Операция не может быть выполнена с текущим составом лицензий
Рассмотрим первый вариант неполадки, который звучит следующим образом: Операция не может быть выполнена с текущим составом лицензий (на скриншоте ниже представлено сообщение платформы 1С:Предприятие с полным текстом оповещения об ошибке):
Рис. 1 Операция не может быть выполнена с текущим составом лицензий
Из текста ошибки следует, что суть проблемы находится в изменении подхода к лицензированию 1С 8.3 (как и сказано в сообщении выше, которым предупреждает платформа 1С).
Сейчас остались лишь два вида ступеней лицензирования – это лицензии КОРП и ПРОФ, третья с, Базовая, больше не существует. Если кратко, то лицензия КОРП уместна, если необходимо использовать более 500 сеансов и выше 12 ядер; в противном случае нужно использовать ПРОФ.
Рассмотрим подробнее возможности клиентской лицензии КОРП для платформы 1С:Предприятие с версией 8.3:
· возможность фонового обновления конфигураций из баз данных;
· появление повышенного управления с возможностью распределения на рабочие сервера внутри кластера (в сфере баз по информации), а также для некоторых приложений для клиентов и заданий (для фонового режима), таких как:
— сервисы в кластере;
— соединение с базами с информацией;
· возможность свободного управления нагрузками внутри кластера:
— за каждую единицу вызовов расходуется безопасный запас памяти;
— контролируется безопасность по информации во время процессов;
— контроль уровня при котором сервер будет производительным, конкретный объём памяти, который выделяется на рабочие процессы;
— контроль наибольшего возможного объёма памяти на рабочие процессы;
— достижимость баланса меж затратами в памяти и производительностью;
· возможность управлять сеансами извне;
· возможность регулирования механизма по управлению ресурсами;
· урегулирование профилей по обеспечению безопасностью;
· возможность установки обновления на клиента из сервера;
· возможность (для тонких клиентов) публикаций списков через HTTP;
· пользование «1С:Сервер взаимодействия».
Так как это всё возможности клиентской лицензии КОРП, логично предположить, что для лицензии ПРОФ вышеуказанный список является ограничениями.
Рис. 2 Настройки лицензии ПРОФ при ошибке 1С Операция не выполнена
В случае с ошибкой «Операция не может быть выполнена с текущим составом лицензий» всё аналогично: когда в лицензии уровня «ПРОФ» что-то не является стандартной настройкой, значит, это возможности клиентской лицензии «КОРП», и требуется иной вид лицензии. Настройки для ПРОФ, обычно вызывающие ошибку, показаны на двух скриншотах выше.
Рис. 3 Операция не может быть выполнена с текущим составом лицензий с лицензией ПРОФ
Разумеется, о разделе лицензирования в 1С 8.3 говорили ещё с начала 2019 года, но изменений долгое время не наблюдалось, а именно: до выпуска версии платформы 8.3.12.1852. После этого большинство пользователей, у которых была установлена лицензия ПРОФ, получали предупреждения о срочной необходимости смены на клиентскую лицензию КОРП. Текст данного сообщения представлен на скриншоте ниже:
Рис. 4 Сообщение о необходимости перейти на клиентскую лицензию КОРП
Данное сообщение можно было проигнорировать и продолжить работу дальше в привычной версии, однако после упомянутой выше даты начинались ошибки, и вся последующая работа становилась попросту невозможной.
Решить данную ошибку в программе 1С можно одним из способов:
1. Сбрасываем все настройки на Сервере 1С:Предприятие, которые были по умолчанию;
2. Обновление лицензирования до уровня КОРП;
3. Возвращаем на платформу версию 8.3.12.1852.
2. Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных
Рис. 5 Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных
Текст данной неполадки означает, что объект подвергся переменам внутри базы данных, но прочитаны были данные до введения перемен и 1С противится стиранию новых данных.
Если текущая операция не выполнена, можно кликнуть на «Перечитать данные объекта». Скорее всего, кто-то из бухгалтеров пометил данные для того, чтобы в последствии удалить, следует это проверить.
Другой вариант устранения ошибки – это сделать «Тестирование и исправление ошибок», чтобы провести проверку на пустые ссылки.
Третий вариант – это удалить в списке данную базу данных, а затем – заново подгрузить данную базу.
В этой статье были рассмотрен тип ошибок в 1С «Операция не выполнена…» с двумя видами – это «…с текущим составом лицензий» и «…из-за несоответствия версии или отсутствия записи базы данных». В каждом из подвидов были описаны возможные аспекты, которые привели к данной неполадке, а также варианты решения проблемы.
Методика расследования причин медленной работы операции на примере открытия управляемой формы
Ограничения применимости методики
Когда применяется методика:
Проверка ограничений и подготовка к расследованию
Для начала необходимо убедиться, что проблема стабильно воспроизводится (в одинаковых условиях) и что все пункты с описанием применения методики выполнены. Для этого можно сделать следующее:
Фильтр по имени процесса для нашей задачи избыточен и нужен для того, чтобы в случае ошибочной настройки такого лога на сервере не получить сбор всех событий для серверных процессов, что может занять значительный объем. С другой стороны, при осознанном включении такой настройки на сервере (если клиентские приложения запускаются там же, где может быть развернут и сервер приложений 1С:Предприятие) мы в отдельном каталоге Client_Full увидим данные только клиентских приложений (хотя при этом подкаталоги других процессов тоже будут созданы, но они буду пустыми). Свойство Interface не собираем, так как оно дублируется более «человек читаемым» свойством IName (хотя даже последнее нам в данном примере не обязательно нужно).
После настройки технологических журналов и проверки корректности замера времени ОценкиПроизводительности БСП выполняем повторение операции с включенной отладкой.
Замеры времени средствами БСП будут выглядеть следующим образом:
Везде далее будем рассматривать верхний в этом списке замер от последнего повторения, его длительность 13,022 секунды.
Замер отладчиком конфигуратора изображен на следующем рисунке:
Как видно, сумма длительности всех строк, связанных с открытием формы составила всего 1,523 секунды.
Определим точное время начала и завершения операции по данным регистра замеров времени БСП.
Для этого необходимо любым удобным способом преобразовать данные колонок «Дата начала замера» и «Дата окончания» из миллисекунд UTC, начиная с 01.01.0001 00:00:00 (обычно эти значения получены с помощью функции ТекущаяУниверсальнаяДатаВМиллисекундах()).
Например, можно воспользоваться онлайн инструментами вроде https://www.epochconverter.com/ (нас будут интересовать минуты, секунды и миллисекунды, отличия в часовых поясах и годах не важны), либо можно преобразовать значение в дату с точностью до секунд с помощью функции вида:
‘00010101’ + ТекущаяУниверсальнаяДатаВМиллисекундах() / 1000
а для миллисекунд взять остаток от деления на 1000 (то есть просто последние три цифры, обратите внимание на «779» на следующей картинке).
Точное время начала замера (минут:секунд.миллисекунд): 25:10.779
Точное время окончания замера (минут:секунд.миллисекунд): 25:23.801
Найдем теперь записи технологического журнала, соответствующие данному замеру, они будут примерно следующими:
Здесь видно, что соответствующий нашему замеру серверный вызов SCALL завершился примерно за 10,1 секунды, это соответствует интервалу между запросом VRSREQUEST и ответом VRSRESPONSE.
Причем время начала замера почти совпадает с началом вызова, то есть событием VRSREQUEST, что собственно ожидаемо, так как замер БСП начинается на клиенте и должен быть непосредственно перед командой открытия формы. А вот окончание вызова сервера случилось раньше, чем окончание замера, что значит, что эта разница во времени пришлась на часть работы клиентского приложения.
Итак, промежуточный итог по длительностям замеров разными способами показывает соответствие нашей ситуации ограничениям и выполнение неравенства: 1,5
После того, как их подготовили, перейдем в тонкий клиент 1С, откроем форму списка документов и непосредственно перед воспроизведением проблемной операции запустим сбор данных WPR (кнопка Start).
После открытия формы в тонком клиенте запись можно остановить и открыть ее для анализа. В открывшемся окне найдем по PID 5508 (его можно определить в диспетчере задач ОС или по логам ТЖ) наш тонкий клиент 1С и должны получить примерно следующую картинку:
По данным Windows Performance Analyzer видим, что у нас нет серьезной нагрузки по дискам, а поток тонкого клиента потребляет 100% ЦП на протяжении длительного времени вплоть до завершения замера.
Запомним этот результат и проанализируем траффик.
Запустим Wireshark и повторим проблемную операцию в тонком клиенте 1С:Предприятие с прямым подключением к серверу приложений 1С.
При сборе данных с помощью Wireshark (и отбору по пакетам с сервером-источником равным серверу приложений 1С:Предприятие) запуск открытия формы документа будет выглядеть примерно так:
Здесь каждая такая строка – это пакет (или если точнее, то «кадр», frame), который в свою очередь является частью общего большого пакета поверх протокола TCP (PDU – Protocol Data Unit). Если их сложить, получим пакет около 70 Кб. Стоит обратить внимание, что это будет размер с учётом сжатия, а если без него – то должны получить что-то около 2500 – 3500 Кб данных.
Если вернуться к анализу технологического журнала и посмотреть на «Content-Length» (или «Body»), то увидим также те самые 70577 байт. Познавательно, можно взять на заметку, но пока новой информации не дает. В таком дампе Wireshark бывает полезно анализировать каждый отдельный кадр и возможные повторы отправки пакетов или увидеть сбросы TCP-соединений, которые могут приводить к ошибкам в работе клиентов (например, из-за антивирусов, которые могут распознать такое содержимое как подозрительное). Однако для нашей проблемы удобнее воспользоваться другим инструментом – прокси-сервером Fiddler и проанализировать с его помощью уже http-траффик.
Устанавливаем и запускаем Fiddler, на панели инструментов ищем «Browse», выбираем любимый браузер и запускаем в нем необходимое нам приложение (информационную базу 1С:Предприятие). После запуска переходим в форму списка документов (готовимся воспроизвести сценарий), возвращаемся в Fiddler и включаем сбор траффика (кнопка F12), переходим в браузер и открываем форму документа. После её открытия сбор траффика можно отключить и заняться его анализом. Мы должны получить примерно следующее:
В данном дампе достаточно быстро находится относительно большой пакет искомого размера, выбираем его в списке слева, а в правой части окна переключаемся на страницу Inspectors, выбираем там просмотр заголовков (Headers), и так как у нас пакет является сериализованным json (Content-Type: application/json), то попросим Fiddler десериализовать его для нас.
После этого в окне предпросмотра отобразится древовидная структура ответа (response), которая передается с сервера на клиент и содержит так много данных. Далее нам необходимо проанализировать её и найти наиболее проблемные места. Может помочь кнопка Expand All, которая развернёт все элементы дерева, но это может занять некоторое время. Чтобы его сократить, сначала поймем, что именно нужно искать.
Подведем промежуточный итог:
Из всех этих пунктов для нас наиболее полезным и требующим дополнительного анализа является тезис «Размер пакета с формой подозрительно велик».
Какие могут быть причины для такой ситуации? В общем случае их несколько:
Так как наша проблема (у вас может быть по-другому) воспроизводится даже при очень небольшом количестве данных в ТЧ, и реквизитов у документа (т.е. объекта формы) совсем не много, то их мы не рассматриваем. Остаются реквизиты формы, не равные основному реквизиту «Объект».
Среди них находится несколько реквизитов, имеющих произвольный тип. Могут выглядеть так:
Сопоставляем эти данные с уже собранным ранее замером с помощью конфигуратора, и видим заполнение этих структур достаточно большим количеством элементов (например, можно 5059 в реквизите «СвойстваИзмерений»).
Снова вернемся к дампу траффика в Fiddler и найдем там элемент, отвечающий за параметры формы (response/props). Увидим там примерно следующее:
И если развернем далее эти элементы, убедимся, что их там несколько тысяч, каждый из которых представляет собой вложенную структуру вида:
Найдем прикладной код, заполняющий эти параметры, и убедимся, что данных там действительно достаточно много (2-3 Мб), и они представляют собой большое количество сложных вложенных структур.
Отключив заполнение данных реквизитов, убеждаемся, что проблема с производительностью формы исчезает, что значит, что причина была найдена правильно.
Выводы и рекомендации
Длительная работа открытия формы обусловлена сериализацией и десериализацией больших коллекций значений при передаче их между клиентом и сервером.
Для того чтобы оценить степень влияния всех факторов, которые имеют значения в этом процессе, можно сделать несколько тестов (замеров), изменяя эти факторы и оценивая корреляцию их значений и длительности. В нашем случае причиной проблем были структуры, хранящие данные справочников территорий и условий труда, поэтому изменяли количество этих элементов и пробовали замерять передачу с клиента на сервер этих данных (процедура ДанныеДляРедактированияВХранилище).
В следующей таблице приведены результаты таких замеров в нашем примере. Сразу следует оговориться, что не стоит никаким образом рассматривать в ней абсолютные значения, так как это будет зависеть еще и от конфигурации компьютера, сети, версии платформы и многого другого, связанного именно с нашим примером. Для нас же важны зависимости и их характер (линейная, экспоненциальная и т.д.). Предлагаем вам проанализировать их самостоятельно (или даже повторить замеры на актуальной версии платформы в вашей среде).
Принимая во внимание полученные таким образом данные, можно предложить следующие возможные пути решения:
Ошибка в программе 1С: «Операция не может быть выполнена»
Доброго времени суток, коллеги! В данной статье будет рассмотрено несколько вариаций ошибки программы 1С «Операция не может быть выполнена…», причины возникновения, а также пути решения на примерах.
1. Операция не может быть выполнена с текущим составом лицензий
Рассмотрим первый вариант неполадки, который звучит следующим образом: Операция не может быть выполнена с текущим составом лицензий (на скриншоте ниже представлено сообщение платформы 1С:Предприятие с полным текстом оповещения об ошибке):
Рис. 1 Операция не может быть выполнена с текущим составом лицензий
Из текста ошибки следует, что суть проблемы находится в изменении подхода к лицензированию 1С 8.3 (как и сказано в сообщении выше, которым предупреждает платформа 1С).
Сейчас остались лишь два вида ступеней лицензирования – это лицензии КОРП и ПРОФ, третья с, Базовая, больше не существует. Если кратко, то лицензия КОРП уместна, если необходимо использовать более 500 сеансов и выше 12 ядер; в противном случае нужно использовать ПРОФ.
Рассмотрим подробнее возможности клиентской лицензии КОРП для платформы 1С:Предприятие с версией 8.3:
· возможность фонового обновления конфигураций из баз данных;
· появление повышенного управления с возможностью распределения на рабочие сервера внутри кластера (в сфере баз по информации), а также для некоторых приложений для клиентов и заданий (для фонового режима), таких как:
— сервисы в кластере;
— соединение с базами с информацией;
· возможность свободного управления нагрузками внутри кластера:
— за каждую единицу вызовов расходуется безопасный запас памяти;
— контролируется безопасность по информации во время процессов;
— контроль уровня при котором сервер будет производительным, конкретный объём памяти, который выделяется на рабочие процессы;
— контроль наибольшего возможного объёма памяти на рабочие процессы;
— достижимость баланса меж затратами в памяти и производительностью;
· возможность управлять сеансами извне;
· возможность регулирования механизма по управлению ресурсами;
· урегулирование профилей по обеспечению безопасностью;
· возможность установки обновления на клиента из сервера;
· возможность (для тонких клиентов) публикаций списков через HTTP;
· пользование «1С:Сервер взаимодействия».
Так как это всё возможности клиентской лицензии КОРП, логично предположить, что для лицензии ПРОФ вышеуказанный список является ограничениями.
Рис. 2 Настройки лицензии ПРОФ при ошибке 1С Операция не выполнена
В случае с ошибкой «Операция не может быть выполнена с текущим составом лицензий» всё аналогично: когда в лицензии уровня «ПРОФ» что-то не является стандартной настройкой, значит, это возможности клиентской лицензии «КОРП», и требуется иной вид лицензии. Настройки для ПРОФ, обычно вызывающие ошибку, показаны на двух скриншотах выше.
Рис. 3 Операция не может быть выполнена с текущим составом лицензий с лицензией ПРОФ
Разумеется, о разделе лицензирования в 1С 8.3 говорили ещё с начала 2019 года, но изменений долгое время не наблюдалось, а именно: до выпуска версии платформы 8.3.12.1852. После этого большинство пользователей, у которых была установлена лицензия ПРОФ, получали предупреждения о срочной необходимости смены на клиентскую лицензию КОРП. Текст данного сообщения представлен на скриншоте ниже:
Рис. 4 Сообщение о необходимости перейти на клиентскую лицензию КОРП
Данное сообщение можно было проигнорировать и продолжить работу дальше в привычной версии, однако после упомянутой выше даты начинались ошибки, и вся последующая работа становилась попросту невозможной.
Решить данную ошибку в программе 1С можно одним из способов:
1. Сбрасываем все настройки на Сервере 1С:Предприятие, которые были по умолчанию;
2. Обновление лицензирования до уровня КОРП;
3. Возвращаем на платформу версию 8.3.12.1852.
2. Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных
Рис. 5 Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных
Текст данной неполадки означает, что объект подвергся переменам внутри базы данных, но прочитаны были данные до введения перемен и 1С противится стиранию новых данных.
Если текущая операция не выполнена, можно кликнуть на «Перечитать данные объекта». Скорее всего, кто-то из бухгалтеров пометил данные для того, чтобы в последствии удалить, следует это проверить.
Другой вариант устранения ошибки – это сделать «Тестирование и исправление ошибок», чтобы провести проверку на пустые ссылки.
Третий вариант – это удалить в списке данную базу данных, а затем – заново подгрузить данную базу.
В этой статье были рассмотрен тип ошибок в 1С «Операция не выполнена…» с двумя видами – это «…с текущим составом лицензий» и «…из-за несоответствия версии или отсутствия записи базы данных». В каждом из подвидов были описаны возможные аспекты, которые привели к данной неполадке, а также варианты решения проблемы.
Преобразование значения к типу Число не может быть выполнено 1С 8.3 — как исправить?
При написании кода 1С или проведения бухгалтерских операций в системе 1С 8.3 и более ранних системах вы можете столкнуться с уведомлением « Преобразование значения к типу Число не может быть выполнено ». Причиной ошибки обычно является попытка программиста преобразовать в число значение, которое числовым быть не может. Ниже разберём суть данной ошибки, а также представим возможные варианты её решения.
Причины ошибки выполнения преобразования значения к типу Число
Обычно данная проблема возникает при запуске кода, выполнении процедуры проверки кода на ошибки или при осуществлении стандартных операцией составления отчётности в системе 1С 8.3 (и ранних системах).
В частности, ошибка фиксировалась в следующих обстоятельствах:
Давайте разберём, как устранить ошибку «Преобразование значения к типу Число не может быть выполнено» в конфигурации 1С 8.3.
Обновите вашу систему 1С до самой актуальной версии
Прежде чем разбирать особенности ошибок в коде 1С, рекомендуем обновить вашу 1С до самой актуальной версии. В некоторых случаях ошибка «преобразование значения к типу число» вызвана устаревшим вариантом системы, на которой специалист пытается вести отчётность. Установите наиболее актуальную версию системы, и рассматриваемая нами ошибка может исчезнуть.
Внимательно проверьте код на наличие переменных
В большинстве случаев рассматриваемая ошибка вызвана невнимательностью программиста, вместо числового значения указавшего не числовое, что не позволяет системе выполнить правильный подсчёт числовых значений. Рекомендуем внимательно проверить создаваемый вами код, найти место в коде вызывающее исключение (ошибку) и пофиксить его.
Например, в примере:
переменная B будет вести к ошибке так как её формат не позволяет системе сложить числовое значение «А» и значение в форме даты. Для решения проблемы замените B на строку: B=5 или аналогичную. В этом случае система выдаст вам корректный результат (в данном случае это будет 8).
Измените первый тип слагаемого на число
В некоторых случаях платформа 1С анализирует тип первого слагаемого числа, обнаруживает строку, вследствие чего может решить, что в данном коде речь идёт о сложении строк, а не необходимых программисту числах. Вследствие этого она пытается выполнить преобразование каждого слагаемого в строку, после чего объединить их как строки.
Для решения проблемы необходимо использовать скобки, позволяя системе вначале выполнить вычисление результата в скобках как суммы чисел, а уже потом преобразовать результат в строку.
К примеру, вместо ошибочной строки:
Сообщить(«Результат: » + 7 + 8 + 9);
Будет необходимо использовать строку:
Сообщить(«Результат: » + (7 + 8 + 9));
Вследствие этого вы получите ожидаемый результат в виде числе 24.
Используйте конфигуратор для нахождения исключения кода
При возникновении ошибки и соответствующего сообщения «Преобразование значения к типу Число не выполнено» в системе 1С 8.3 рекомендуем использовать конфигуратор для нахождения кода. Последний способен в режиме отладки определить и указать на ошибку.
Порядок действий в этом случае будет следующим:
Переиндексируйте ваши файлы
В некоторых редких случаях исправить ошибку «Преобразование значения к типу Число» может помочь переиндексация ваших файлов. Для версии 1С 8.3 стоит использовать файл chdbfl.exe, запускающий переиндексацию. Обычно данный файл находится по пути C:\Program Files (x86) \1cv8\8.3ХХХ\bin. Вместо ХХХ у вас могут находиться указатели вашей версии продукта.
Запустите данный файл, укажите имя файла для проверки, поставьте галочку рядом с опцией «Исправлять обнаруженные ошибки», после чего нажмите на «Выполнить внизу». Дождитесь завершения процедуры проверки и исправления, после чего вновь попробуйте выполнить необходимые операции.
Выполните проверку вашей базы
Используйте функцию «Есть NULL»
Если выскакивает ошибка, то иногда одна из задействуемых переменных может принимать значение NULL. Для исправления ошибки рекомендуется использовать функцию «ЕСТЬNULL» (переменная, 0), что позволит устранить рассматриваемую в статье проблему.
Заключение
В нашем материале мы рассмотрели причины появления уведомления «Преобразование значения к типу Число не может быть выполнено» в версии системы 1С 8.3, и как исправить возникшую проблему. Поскольку фактором ошибки обычно выступает невнимательность программиста, внимательно изучите ваш код на наличие нечисловой переменной, часто используемой в арифметическом уравнении. Замена данной переменной на числовую, а также выполнение других перечисленных нами советов поможет устранить рассмотренную нами ошибку в вашей системе.