Здравствуйте. При работе с этой обработкой (при сохранении значений)
https://buhexpert8.ru/1s-zup/etk-i-uchet-dlya-pfr/etk/vypushhena-vneshnyaya-obrabotka-dlya-zapolneniya-trudovyh-funktsij-v-pozitsiyah-shtatnogo-raspisaniya-iz-kartochek-dolzhnostej.html
выдает такую ошибку (см. файл)
Зарплата и управление персоналом, редакция 3.1 (3.1.17.135)
Добрый день, Дмитрий!
Словила ошибку на рабочей базе(( Пробовала правда на ветке 3.1.14 (релизы 3.1.14.500 и 3.1.14.525), ошибка проявляется в файловом варианте при первом запуске обработки. При повторном запуске в файловой базе и в клиент-серверной базе (неважно, первый или повторный запуск) текст ошибки немного другой: «Возникла непредвиденная ситуация…», но выбрасывает из программы все равно и обработка не выполняется. Наличие монопольного режима не влияет. Написала разработчикам. Как получу от них ответ, поделюсь.
Здравствуйте, Дмитрий!
Скажите, пробуете прям на рабочей базе, развернутой в клиент-серверном режиме? Или на копии в файловом режиме? Также скажите, пробовали ли выполнять обработку в монопольном режиме (выгнать других пользователей из базы на это время)?
Сама тестировала обработку на файловой демобазе, отработала хорошо. Поэтому предполагаю, что возможно дело в наличии других пользователей или клиент-серверном режиме? На рабочих базах пока еще не приходилось запускать обработку, пользователи ждут поближе к концу месяца, чтобы сейчас в кадровых документах не выскакивали трудовые функции 🙂
Светлана, доброго времени суток. Спасибо. Мы вообще смелые), на рабочей базе все пробовали. Режим конечно клиент-серверный. Правильно понял, что в файловом режиме на 17 релизе проскочили? Пробовать или ждем ответа разработчиков?
Не, ну я копию базы для очистки совести сделала)) Но правда не стала восстанавливать из копии в итоге. Так вроде целостность данных не нарушена, ошибка только при выполнении обработки проскакивает.
По 3.1.17 у меня корректно сработало только на файловой демобазе, релиз 3.1.17.171. На рабочих базах на 3.1.17-3.1.18 пока негде опробовать. Попробуйте развернуть файловую копию. Если на ней будут проблемы, то обновить ее до 3.1.17.171 хотя бы.
Ок, попробую. Отпишусь.
Приложение
Дмитрий, добрый день, разрешите присоединюсь к обсуждению.
Ошибка, что у вас появляется не связана с местом выполнения обработки: на клиент-серверной базе или файловой.
Ошибка «В данной транзакции уже происходили ошибки» возникает при неправильно написанном коде, когда внутри транзакции используется конструкция Попытка-Исключение-КонецПопытки. Попав в ветку «Исключение» транзакция завершается некорректно и разработчики не рекомендуют использовать Исключение внутри транзакции в обработках.
Вот правильное выполнение кода по транзакции:
https://its.1c.ru/db/v8std#content:783:hdoc
В обработке же реализована конструкция:
НачатьТранзакцию();
….
Попытка
….
Исключение
….
КонецПопытки;
….
КонецТранзакции();
Если при отработке кода Попытка-Исключение-КонецПопытки возникнет ошибка, вы и увидите ошибку «В данной транзакции уже происходили ошибки».
Она не информативна. Она совершенно не говорит о том, что за причина может вызвать ошибку, поэтому попробуем разобраться, исходя из самого программного кода обработки.
Обработка записывает данные по трудовой функции в три объекта:
— Справочник Штатное расписание.
И тут все ок, потому что записываются в нужное поле данные с нужным типом без проблем. Это не периодический регистр, не документ в конце концов.
— регистр сведений История использования штатного расписания, если у вас включена настройка в штатном расписании — Ведется история изменений штатного расписания (раздел Настройка — Кадровый учет — Настройка штатного расписания)
Если вы ведете учет истории, то этот регистр будет у вас заполнен.
Ирина, день добрый. Конечно присоединяйтесь. Две головы лучше). Даже две с половиной. Моя за половину сойдет).
Приложение
И после первого этапа — записи трудовой функции в справочник Штатного расписания начинается второй этап — работы с регистром. Он включает
— нахождение последнего документа регистратора по выбранной штатной позиции, и запись в его в табличную часть «Позиции» трудовой функции. И вот тут-то начинаются проблемы. Об этом ниже.
— запись в регистр История использования штатного расписания тудовой функции по выбранной позиции. Поскольку регистр непериодический и подчинен регистратору, проблем с ним быть не должно, в отличие от записи изменений документа выше.
Приложение
Почему запись изменений в документ-регистратор может вызвать ошибку?
Потому что регистраторами для регистра являются следующие документы:
— Изменение штатного расписания
— Индексация штатного расписания
— Перенос данных
— Утверждение тарифной сетки
— Утверждение штатного расписания.
Полный набор: табличная часть «позиции» и элемент табличной части «Трудовая функция» есть только в двух из них:
— Утверждение штатного расписания
— Изменение штатного расписания.
Если регистратором изменений в регистре выступает другой документ, программный код по-прежнему будет искать в нем табличную часть «Позиции» и элемент табличной части «Трудовая позиция» — не найдет и выдаст ошибку (см. скрин выше программного кода)
И ведь даже запрет изменений на дату документа-регистратора может помешать записать изменения в документ. Тогда, согласно программному коду, программа войдет в ветку «Исключения» и выдаст именно ту ошибку, что вы видите у себя.
Поэтому, скорее всего, у вас:
— ведется история штатного расписания
— в регистре в числе регистраторов есть не только документы утверждение и изменение штатного расписания.
— возможно, закрыт период редактирования по найденному документу-регистратору.
Без доработки программного кода и исправления вложенности транзакции в обработке будут происходить ошибки.
У вас есть программист, откройте программный код и посмотрите последовательно вторую часть кода, где идет работа с регистром — это подтвердит мои слова.
На текущий момент совсем без ошибки обработка выполняется, если:
— не ведется история штатного расписания
— в регистре в регистраторах только документы утверждения и изменения штатного расписания
— не стоит запрет на изменения в документах регистраторах регистра по измененяемым штатным позициям.
(!!!) Не забывайте про дату запрета редактирования, она тоже может помещшать записать изменения в документе, если утверждение или изменение происходило давно и период этот уже закрыт.
Это только то, что можно сказать из программного кода, не видя данных вашей базы. Но и того, что видно из кода достаточно, чтобы понимать, что обработку нужно дорабатывать.
Ирина, ну смысл я уловил, хотя половину из того что Вы написали, я понимаю очень поверхностно. Для полноты подучиться надо).
Я начал с самого простого. Снял даты запрета. И все штатно сработало. Ларчик просто открывался. Вижу руку мастера). Спасибо большое. И Вам и Светлане. Пропал бы.
Отлично, Дмитрий. И спасибо за добрые слова, приятно. 🙂