Доброго утра.

Помогите пожалуйста разобраться с отладчиком и найти ошибку.
Я пытаюсь создать пользователей в базе, добавить ему права доступа.
Пользователи создаются.

При добавлении пользователям прав доступа, изменении профиля групп пользователей возникает ошибка:

Переполнение стека встроенного языка на сервере.

Переполнение стека встроенного языка на сервере
{ОбщаяФорма.ПраваДоступаУпрощенно.Форма(458)}: ЗаписатьИзмененияНаСервере(Отказ);
{ОбщаяФорма.ПраваДоступаУпрощенно.Форма(437)}: ЗаписатьИзмененияЗавершение(Null, ОбработкаПродолжения);
{ОбщаяФорма.ПраваДоступаУпрощенно.Форма(327)}: ЗаписатьИзменения();

по причине:
Переполнение стека встроенного языка на сервере
по причине:

ОбщаяФорма.ПраваДоступаУпрощенно.Форма : 852 : ГруппаДоступаОбъект.Записать();
Справочник.ГруппыДоступа.МодульОбъекта : 152 : РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистра(Ссылка);
РегистрСведений.ТаблицыГруппДоступа.МодульМенеджера : 262 : Запрос.УстановитьПараметр("ПраваРолейРасширений", УправлениеДоступомСлужебный.ПраваРолейРасширений());

ОбщийМодуль.УправлениеДоступомСлужебный.Модуль : 4584 : ОбновитьТаблицыГруппДоступаДляПодключенныхРасширений(ПраваРолейРасширений);
...

РегистрСведений.ПараметрыРаботыВерсийРасширений.МодульМенеджера : 62 : НаборЗаписей.Записать();
ОбщийМодуль.УдалениеПомеченныхОбъектовСлужебный.Модуль : 225 : ЗапретитьИспользованиеУдаляемыхОбъектов(Источник, Отказ);
ОбщийМодуль.УдалениеПомеченныхОбъектовСлужебный.Модуль : 1034 : Если ОбщегоНазначения.ЭтоКонстанта(Источник.Метаданные()) Тогда
ОбщийМодуль.ОбщегоНазначения.Модуль : 0
по причине:
Переполнение стека встроенного языка на сервере.

Я запустила отладчик
сейчас при записи возникает такая ошибка ( Принскрин в приложенном файле.)

Прошу доступно объяснить, как найти и устранить эту ошибку и как использовать отладчик в поиске (особенно интересуют общие формы и модули).
---
Похоже что у вас проблема как раз в удаленных данных. Т.к. есть ссылки на удаленные объекты(<Объект не найден> ).
Нужно строить запрос, искать эти ссылки и чистить места их упоминания.
Похоже дело в данных конфигурации бит_.
---
значит спускайтесь в глубь кода, ставьте точки останова на

```1c
    ГруппаДоступаОбъект.Записать()

    и

    УправлениеДоступомСлужебный.ЗапуститьОбновлениеДоступа();
```

Еще необходимо включить отладку фоновых заданий, вернее подключаться к ним для отладки.
---
Нажмите F11 и провалитесь внутрь процедуры записи. Далее анализируйте код и выясняйте почему происходит рекурсия.
---
Прошу доступно объяснить, как найти и устранить эту ошибку и как использовать отладчик в поиске (особенно интересуют общие формы и модули).

у вас где-то зациливание само на себя. надо анализировать код и модули, на которые ссылаются
---
база клиент-серверная или файловая? Разрядность?
Это или рекурсия, или возможно, что при 32 бит стековой памяти не хватает.
---
база серверная
64 разрядная система.
1с- 32 разрядная в задач пишет.
---
ОС может и 64 бит, но главное тут разрядность 1С. Если есть возможность, то попробовать установить 64 бит и там попробовать.
Если база не очень большая, то можно выгрузить dt и загрузить в файловую 64 бит базу и в ней попробовать.
---
А в замере производительности её можно отследить??
там максимальное кол 24.
---
чисто теоретически - можно, но это нужно всю простыню проанализировать визуально, нет ли рекурсии.
---
А в замере производительности её можно отследить?Запускаете замер, жмете кнопку, валится ошибка, останавливаете замер, смотрите, что там много-премного раз выполняется. В 1С глубина стека 1748 (если не ошибаюсь). С учетом уже использованной глубины 1700+ раз должна функция где-то вызываться...
---
останавливаете замер

отладка-запустить замер производительности.
а как его остановить потом??
есть закрыть, остановить не вижу.
---
а как его остановить потом?Так же.
---
я бы пошел другим путем. Берем эту процедуру, где ошибка, комментируем сначала всю. Проверяем. Работает? Убираем комментарий с первой строки (двух или десяти - ну смотря сколько строк). Проверяем. Работает? Убираем комментарии дальше. Не работает? Смотрим, что не так делает строка, на которой ошибка.
---
я бы пошел другим путем. Берем эту процедуру, где ошибка, комментируем сначала всю. Проверяем. Работает? Убираем комментарий с первой строки (двух или десяти - ну смотря сколько строк). Проверяем. Работает? Убираем комментарии дальше. Не работает? Смотрим, что не так делает строка, на которой ошибка.
а почему нельзя точки останова использовать?
---
можно, используйте. Но например если там подписки какие-нибудь, может быть не всегда просто понять, где именно проблема.
---
Когда я открываю через справочник-
Справочник.Профили групп доступа
я пытаюсь его записать изменить- тоже ругается

возможно в этом моменте не даёт записать и не могут попасть данные в регистр.
---
Текст процедуры то выложите, что там у вас.
---
какой именно процедуры???
проблема в том, что я не могу найти, где именно ошибка.
ошибка возникает при записи Профилей групп пользователей.

Выложить модуль процедуры из этого справочника??
---
где строка 458
---
где строка 458

там уже исключение срабатывает. надо смотреть, что собирается
---
В 458 строке модуля через попытку вызывается процедура, что в ней?
---
```1c
    Процедура ЗаписатьИзмененияЗавершение(НовыйПарольПользователяСервиса, ОбработкаПродолжения) Экспорт

    Если НовыйПарольПользователяСервиса = Неопределено Тогда
    Возврат;
    КонецЕсли;

    Если НовыйПарольПользователяСервиса <> Null Тогда
    ПарольПользователяСервиса = НовыйПарольПользователяСервиса;
    КонецЕсли;

    ОчиститьСообщения();

    Отказ = Ложь;
    ОтказПриЗаписиИзменений = Ложь;
    Попытка
```

(458 строка)

 ЗаписатьИзмененияНаСервере(Отказ);

```1c
    Исключение
    ИнформацияОбОшибке = ИнформацияОбОшибке();
    Если ОтказПриЗаписиИзменений Тогда
    ОбщегоНазначенияКлиент.СообщитьПользователю(
    КраткоеПредставлениеОшибки(ИнформацияОбОшибке),,,, Отказ);
    Иначе
    ВызватьИсключение;
    КонецЕсли;
    КонецПопытки;

    ПодключитьОбработчикОжидания("УстановитьТекущуюСтрокуЗначенияДоступаПриОшибке", Истина, 0.1);

    Если ОбработкаПродолжения = Неопределено Тогда
    Возврат;
    КонецЕсли;

    ВыполнитьОбработкуОповещения(ОбработкаПродолжения, Отказ);

    КонецПроцедуры
```
---
внутри процедуры ЗаписатьИзмененияНаСервере() что находится?
установить курсор на имя процедуры и нажать F12.
---
```1c
    &НаСервере
    Процедура ЗаписатьИзмененияНаСервере(Отказ)

    Если Не ПроверитьЗаполнение() Тогда
    Отказ = Истина;
    Возврат;
    КонецЕсли;

    Пользователи.НайтиНеоднозначныхПользователейИБ(Неопределено);

    // Получение списка изменений.
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Пользователь", Параметры.Пользователь);
    Запрос.УстановитьПараметр("Профили", Профили.Выгрузить(, "Профиль, Пометка"));
    Запрос.УстановитьПараметр("ВидыДоступа", ВидыДоступа.Выгрузить(, "ГруппаДоступа, ВидДоступа, ВсеРазрешены"));

    ТаблицаЗначений = ЗначенияДоступа.Выгрузить(, "ГруппаДоступа, ВидДоступа, ЗначениеДоступа, ВключаяНижестоящие");
    ТаблицаЗначений.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число",,,
    Новый КвалификаторыЧисла(10, 0, ДопустимыйЗнак.Неотрицательный)));

    ГруппаДоступаВСтроке = Неопределено;
    Для Каждого Строка Из ТаблицаЗначений Цикл
    Если ГруппаДоступаВСтроке <> Строка.ГруппаДоступа Тогда
    ГруппаДоступаВСтроке = Строка.ГруппаДоступа;
    ТекущийНомерСтроки = 1;
    КонецЕсли;
    Строка.НомерСтроки = ТекущийНомерСтроки;
    ТекущийНомерСтроки = ТекущийНомерСтроки + 1;
    КонецЦикла;
    Запрос.УстановитьПараметр("ЗначенияДоступа", ТаблицаЗначений);

    Запрос.Текст =
    "ВЫБРАТЬ
    | Профили.Профиль КАК Ссылка,
    | Профили.Пометка
    |ПОМЕСТИТЬ Профили
    |ИЗ
    | &Профили КАК Профили
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ВидыДоступа.ГруппаДоступа КАК Профиль,
    | ВидыДоступа.ВидДоступа,
    | ВидыДоступа.ВсеРазрешены
    |ПОМЕСТИТЬ ВидыДоступа
    |ИЗ
    | &ВидыДоступа КАК ВидыДоступа
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ЗначенияДоступа.ГруппаДоступа КАК Профиль,
    | ЗначенияДоступа.ВидДоступа,
    | ЗначенияДоступа.НомерСтроки,
    | ЗначенияДоступа.ЗначениеДоступа,
    | ЗначенияДоступа.ВключаяНижестоящие
    |ПОМЕСТИТЬ ЗначенияДоступа
    |ИЗ
    | &ЗначенияДоступа КАК ЗначенияДоступа
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    | Профили.Ссылка,
    | ЕСТЬNULL(ГруппыДоступа.Ссылка, НЕОПРЕДЕЛЕНО) КАК ПерсональнаяГруппаДоступа,
    | ВЫБОР
    | КОГДА ГруппыДоступаПользователи.Ссылка ЕСТЬ NULL
    | ТОГДА ЛОЖЬ
    | ИНАЧЕ ИСТИНА
    | КОНЕЦ КАК Пометка
    |ПОМЕСТИТЬ ТекущиеПрофили
    |ИЗ
    | Справочник.ПрофилиГруппДоступа КАК Профили
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа КАК ГруппыДоступа
    | ПО Профили.Ссылка = ГруппыДоступа.Профиль
    | И (НЕ(ГруппыДоступа.Пользователь <> &Пользователь
    | И НЕ Профили.Ссылка В (ЗНАЧЕНИЕ(Справочник.ПрофилиГруппДоступа.Администратор))))
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
    | ПО (ГруппыДоступа.Ссылка = ГруппыДоступаПользователи.Ссылка)
    | И (ГруппыДоступаПользователи.Пользователь = &Пользователь)
    |ГДЕ
    | НЕ Профили.ПометкаУдаления
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | Профили.Ссылка КАК Профиль,
    | ГруппыДоступаВидыДоступа.ВидДоступа,
    | ГруппыДоступаВидыДоступа.ВсеРазрешены
    |ПОМЕСТИТЬ ТекущиеВидыДоступа
    |ИЗ
    | ТекущиеПрофили КАК Профили
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа.ВидыДоступа КАК ГруппыДоступаВидыДоступа
    | ПО Профили.ПерсональнаяГруппаДоступа = ГруппыДоступаВидыДоступа.Ссылка
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | Профили.Ссылка КАК Профиль,
    | ГруппыДоступаЗначенияДоступа.ВидДоступа,
    | ГруппыДоступаЗначенияДоступа.НомерСтроки,
    | ГруппыДоступаЗначенияДоступа.ЗначениеДоступа,
    | ГруппыДоступаЗначенияДоступа.ВключаяНижестоящие
    |ПОМЕСТИТЬ ТекущиеЗначенияДоступа
    |ИЗ
    | ТекущиеПрофили КАК Профили
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа.ЗначенияДоступа КАК ГруппыДоступаЗначенияДоступа
    | ПО Профили.ПерсональнаяГруппаДоступа = ГруппыДоступаЗначенияДоступа.Ссылка
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    | ПрофилиИзмененныхГрупп.Профиль
    |ПОМЕСТИТЬ ПрофилиИзмененныхГрупп
    |ИЗ
    | (ВЫБРАТЬ
    | Профили.Ссылка КАК Профиль
    | ИЗ
    | Профили КАК Профили
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТекущиеПрофили КАК ТекущиеПрофили
    | ПО Профили.Ссылка = ТекущиеПрофили.Ссылка
    | ГДЕ
    | Профили.Пометка <> ТекущиеПрофили.Пометка
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | ВидыДоступа.Профиль
    | ИЗ
    | ВидыДоступа КАК ВидыДоступа
    | ЛЕВОЕ СОЕДИНЕНИЕ ТекущиеВидыДоступа КАК ТекущиеВидыДоступа
    | ПО ВидыДоступа.Профиль = ТекущиеВидыДоступа.Профиль
    | И ВидыДоступа.ВидДоступа = ТекущиеВидыДоступа.ВидДоступа
    | И ВидыДоступа.ВсеРазрешены = ТекущиеВидыДоступа.ВсеРазрешены
    | ГДЕ
    | ТекущиеВидыДоступа.ВидДоступа ЕСТЬ NULL
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | ТекущиеВидыДоступа.Профиль
    | ИЗ
    | ТекущиеВидыДоступа КАК ТекущиеВидыДоступа
    | ЛЕВОЕ СОЕДИНЕНИЕ ВидыДоступа КАК ВидыДоступа
    | ПО (ВидыДоступа.Профиль = ТекущиеВидыДоступа.Профиль)
    | И (ВидыДоступа.ВидДоступа = ТекущиеВидыДоступа.ВидДоступа)
    | И (ВидыДоступа.ВсеРазрешены = ТекущиеВидыДоступа.ВсеРазрешены)
    | ГДЕ
    | ВидыДоступа.ВидДоступа ЕСТЬ NULL
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | ЗначенияДоступа.Профиль
    | ИЗ
    | ЗначенияДоступа КАК ЗначенияДоступа
    | ЛЕВОЕ СОЕДИНЕНИЕ ТекущиеЗначенияДоступа КАК ТекущиеЗначенияДоступа
    | ПО ЗначенияДоступа.Профиль = ТекущиеЗначенияДоступа.Профиль
    | И ЗначенияДоступа.ВидДоступа = ТекущиеЗначенияДоступа.ВидДоступа
    | И ЗначенияДоступа.НомерСтроки = ТекущиеЗначенияДоступа.НомерСтроки
    | И ЗначенияДоступа.ЗначениеДоступа = ТекущиеЗначенияДоступа.ЗначениеДоступа
    | И ЗначенияДоступа.ВключаяНижестоящие = ТекущиеЗначенияДоступа.ВключаяНижестоящие
    | ГДЕ
    | ТекущиеЗначенияДоступа.ВидДоступа ЕСТЬ NULL
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | ТекущиеЗначенияДоступа.Профиль
    | ИЗ
    | ТекущиеЗначенияДоступа КАК ТекущиеЗначенияДоступа
    | ЛЕВОЕ СОЕДИНЕНИЕ ЗначенияДоступа КАК ЗначенияДоступа
    | ПО (ЗначенияДоступа.Профиль = ТекущиеЗначенияДоступа.Профиль)
    | И (ЗначенияДоступа.ВидДоступа = ТекущиеЗначенияДоступа.ВидДоступа)
    | И (ЗначенияДоступа.НомерСтроки = ТекущиеЗначенияДоступа.НомерСтроки)
    | И (ЗначенияДоступа.ЗначениеДоступа = ТекущиеЗначенияДоступа.ЗначениеДоступа)
    | И (ЗначенияДоступа.ВключаяНижестоящие = ТекущиеЗначенияДоступа.ВключаяНижестоящие)
    | ГДЕ
    | ЗначенияДоступа.ВидДоступа ЕСТЬ NULL ) КАК ПрофилиИзмененныхГрупп
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | Профили.Ссылка КАК Профиль,
    | СправочникПрофили.Наименование КАК ПрофильНаименование,
    | Профили.Пометка,
    | ТекущиеПрофили.ПерсональнаяГруппаДоступа
    |ИЗ
    | ПрофилиИзмененныхГрупп КАК ПрофилиИзмененныхГрупп
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Профили КАК Профили
    | ПО ПрофилиИзмененныхГрупп.Профиль = Профили.Ссылка
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТекущиеПрофили КАК ТекущиеПрофили
    | ПО ПрофилиИзмененныхГрупп.Профиль = ТекущиеПрофили.Ссылка
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПрофилиГруппДоступа КАК СправочникПрофили
    | ПО (СправочникПрофили.Ссылка = ПрофилиИзмененныхГрупп.Профиль)";

    НачатьТранзакцию();
    Попытка
    ИзмененияГруппДоступа = Запрос.Выполнить().Выгрузить();

    Блокировка = Новый БлокировкаДанных;
    Для каждого Изменение Из ИзмененияГруппДоступа Цикл
    ЭлементБлокировки = Блокировка.Добавить("Справочник.ГруппыДоступа");
    Если ЗначениеЗаполнено(Изменение.ПерсональнаяГруппаДоступа) Тогда
    ЭлементБлокировки.УстановитьЗначение("Ссылка", Изменение.ПерсональнаяГруппаДоступа);
    ЗаблокироватьДанныеДляРедактирования(Изменение.ПерсональнаяГруппаДоступа);
    КонецЕсли;
    КонецЦикла;
    Блокировка.Заблокировать();

    Для каждого Изменение Из ИзмененияГруппДоступа Цикл
    Если ЗначениеЗаполнено(Изменение.ПерсональнаяГруппаДоступа) Тогда
    ГруппаДоступаОбъект = Изменение.ПерсональнаяГруппаДоступа.ПолучитьОбъект();
    ГруппаДоступаОбъект.ПометкаУдаления = Ложь;
    Иначе
    // Создание персональной группы доступа.
    ГруппаДоступаОбъект = Справочники.ГруппыДоступа.СоздатьЭлемент();
    ГруппаДоступаОбъект.Родитель = Справочники.ГруппыДоступа.РодительПерсональныхГруппДоступа();
    ГруппаДоступаОбъект.Наименование = Изменение.ПрофильНаименование;
    ГруппаДоступаОбъект.Пользователь = Параметры.Пользователь;
    ГруппаДоступаОбъект.Профиль = Изменение.Профиль;
    КонецЕсли;

    Если Изменение.Профиль = Справочники.ПрофилиГруппДоступа.Администратор Тогда

    Если ТребуетсяСинхронизацияССервисом Тогда
    ГруппаДоступаОбъект.ДополнительныеСвойства.Вставить("ПарольПользователяСервиса", ПарольПользователяСервиса);
    КонецЕсли;

    Если Изменение.Пометка Тогда
    Если ГруппаДоступаОбъект.Пользователи.Найти(Параметры.Пользователь, "Пользователь") = Неопределено Тогда
    ГруппаДоступаОбъект.Пользователи.Добавить().Пользователь = Параметры.Пользователь;
    КонецЕсли;
    Иначе
    ОписаниеПользователя = ГруппаДоступаОбъект.Пользователи.Найти(
    Параметры.Пользователь, "Пользователь");
    Если ОписаниеПользователя <> Неопределено Тогда
    ГруппаДоступаОбъект.Пользователи.Удалить(ОписаниеПользователя);

    Если НЕ ОбщегоНазначения.РазделениеВключено() Тогда
    // Проверка пустого списка пользователей ИБ в группе доступа Администраторы.
    ОписаниеОшибки = ";
    УправлениеДоступомСлужебный.ПроверитьНаличиеПользователяИБВГруппеДоступаАдминистраторы(
    ГруппаДоступаОбъект.Пользователи, ОписаниеОшибки);

    Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда
    ОтказПриЗаписиИзменений = Истина;
    Отказ = Истина;
    ВызватьИсключение
    НСтр("ru = 'Профиль Администратор должен быть хотя бы у одного пользователя,
    |которому разрешен вход в программу.'");
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    Иначе
    ГруппаДоступаОбъект.Пользователи.Очистить();
    Если Изменение.Пометка Тогда
    ГруппаДоступаОбъект.Пользователи.Добавить().Пользователь = Параметры.Пользователь;
    КонецЕсли;

    Отбор = Новый Структура("ГруппаДоступа", Изменение.Профиль);
    ГруппаДоступаОбъект.ВидыДоступа.Загрузить(ВидыДоступа.Выгрузить(Отбор, "ВидДоступа, ВсеРазрешены"));
    ГруппаДоступаОбъект.ЗначенияДоступа.Загрузить(ЗначенияДоступа.Выгрузить(Отбор, "ВидДоступа, ЗначениеДоступа, ВключаяНижестоящие"));
    КонецЕсли;

    ГруппаДоступаОбъект.Записать();

    КонецЦикла;

    Для каждого Изменение Из ИзмененияГруппДоступа Цикл
    Если ЗначениеЗаполнено(Изменение.ПерсональнаяГруппаДоступа) Тогда
    РазблокироватьДанныеДляРедактирования(Изменение.ПерсональнаяГруппаДоступа);
    КонецЕсли;
    КонецЦикла;

    ЗафиксироватьТранзакцию();
    Исключение
    ОтменитьТранзакцию();
    Для каждого Изменение Из ИзмененияГруппДоступа Цикл
    Если ЗначениеЗаполнено(Изменение.ПерсональнаяГруппаДоступа) Тогда
    РазблокироватьДанныеДляРедактирования(Изменение.ПерсональнаяГруппаДоступа);
    КонецЕсли;
    КонецЦикла;
    ПарольПользователяСервиса = Неопределено;
    ВызватьИсключение;
    КонецПопытки;

    Модифицированность = Ложь;
    ТребуетсяСинхронизацияССервисом = Ложь;

    УправлениеДоступомСлужебный.ЗапуститьОбновлениеДоступа();

    КонецПроцедуры
```
---
Необходимо проверить, что происходит при ГруппаДоступаОбъект.Записать()
И УправлениеДоступомСлужебный.ЗапуститьОбновлениеДоступа()

Обратно - никак.
Можно пользоваться списком Процедур/Функций модуля для быстрой навигации по ним.
---
ЗапуститьОбновлениеДоступа

```1c
    // Запускает обновление доступа, если оно запланировано и еще не запущено.
    Процедура ЗапуститьОбновлениеДоступа() Экспорт

    Если Не ОграничиватьДоступНаУровнеЗаписейУниверсально(Ложь) Тогда
    Возврат;
    КонецЕсли;

    Если МонопольныйРежим() Тогда
    Возврат;
    КонецЕсли;

    ЗапуститьОбновлениеДоступаНаУровнеЗаписей();

    КонецПроцедуры
```

 ГруппаДоступаОбъект.Записать()

Вот по-моему в этой процедуре.

```1c
    Процедура ПриКопированииПравНовомуПользователю(Источник, Приемник) Экспорт

    Если ТранзакцияАктивна()
    И ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда

    Блокировка = Новый БлокировкаДанных;
    Блокировка.Добавить("Справочник.ГруппыДоступа");
    // АПК:1320-выкл - №499, №783.1.3 Допустимо вызывать блокировку во внешней транзакции для файловой ИБ.
    // Требуется для предотвращения взаимоблокировки: ниже запрос, который ставит неявную
    // разделяемую блокировку и далее блокировка усиливается до исключительной явным вызовом,
    // что приводит к взаимоблокировке в некоторых случаях.
    Блокировка.Заблокировать();
    // АПК:1320-вкл.
    КонецЕсли;

    УпрощенныйИнтерфейс = УпрощенныйИнтерфейсНастройкиПравДоступа();
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Пользователь", Источник);

    Если УпрощенныйИнтерфейс Тогда
    Запрос.Текст =
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    | ГруппыДоступаПользователи.Ссылка.Профиль КАК Профиль
    |ИЗ
    | Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
    |ГДЕ
    | ГруппыДоступаПользователи.Пользователь = &Пользователь";
    Иначе
    Запрос.Текст =
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    | ГруппыДоступаПользователи.Ссылка КАК ГруппаДоступа
    |ИЗ
    | Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
    |ГДЕ
    | ГруппыДоступаПользователи.Пользователь = &Пользователь";
    КонецЕсли;

    РезультатЗапроса = Запрос.Выполнить();
    Если РезультатЗапроса.Пустой() Тогда
    Возврат;
    КонецЕсли;

    Выборка = РезультатЗапроса.Выбрать();

    Если Не УпрощенныйИнтерфейс Тогда
    Блокировка = Новый БлокировкаДанных();
    ЭлементБлокировки = Блокировка.Добавить("Справочник.ГруппыДоступа");
    ЭлементБлокировки.ИсточникДанных = РезультатЗапроса;
    КонецЕсли;

    НачатьТранзакцию();
    Попытка
    Если УпрощенныйИнтерфейс Тогда
    Пока Выборка.Следующий() Цикл
    УправлениеДоступом.ВключитьПрофильПользователю(Приемник, Выборка.Профиль);
    КонецЦикла;
    Иначе
    Блокировка.Заблокировать();
    Пока Выборка.Следующий() Цикл
```

Вот на этот элемент идёт ссылка при ГруппаДоступаОбъект.Записать()
ГруппаДоступаОбъект = Выборка.ГруппаДоступа.ПолучитьОбъект(); // СправочникОбъект.ГруппыДоступа

```1c
    ГруппаДоступаОбъект = Выборка.ГруппаДоступа.ПолучитьОбъект(); // СправочникОбъект.ГруппыДоступа -
    Если ГруппаДоступаОбъект.Пользователи.Найти(Приемник, "Пользователь") = Неопределено Тогда
    Строка = ГруппаДоступаОбъект.Пользователи.Добавить();
    Строка.Пользователь = Приемник;
    ГруппаДоступаОбъект.Записать();
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    ЗафиксироватьТранзакцию();
    Исключение
    ОтменитьТранзакцию();
    ВызватьИсключение;
    КонецПопытки;

    КонецПроцедуры
```
---
```1c
    Процедура ЗапуститьОбновлениеДоступа() Экспорт

    Если Не ОграничиватьДоступНаУровнеЗаписейУниверсально(Ложь) Тогда
    Возврат;
    КонецЕсли;

    Если МонопольныйРежим() Тогда
    Возврат;
    КонецЕсли;

    ЗапуститьОбновлениеДоступаНаУровнеЗаписей();

    КонецПроцедуры
```

Проверьте, что происходит внутри ЗапуститьОбновлениеДоступаНаУровнеЗаписей().
---
ЗапуститьОбновлениеДоступаНаУровнеЗаписей

```1c
    Функция ЗапуститьОбновлениеДоступаНаУровнеЗаписей(ЭтоЗапускВручную = Ложь) Экспорт

    УстановитьОтключениеБезопасногоРежима(Истина);
    УстановитьПривилегированныйРежим(Истина);

    Если Не ОграничиватьДоступНаУровнеЗаписейУниверсально(Истина) Тогда
    ТекстОшибки =
    НСтр("ru = 'Невозможно запустить обновление доступа на уровне записей, так как
    |константа ОграничиватьДоступНаУровнеЗаписейУниверсально выключена.'");
    ВызватьИсключение ТекстОшибки;
    КонецЕсли;

    Если ТранзакцияАктивна() Тогда
    ТекстОшибки =
    НСтр("ru = 'Невозможно запустить обновление доступа на уровне записей в открытой транзакции.'");
    ВызватьИсключение ТекстОшибки;
    КонецЕсли;

    Если Не ЭтоЗапускВручную И Не ЗапланированоОбновлениеДоступа() Тогда
    Возврат Неопределено;
    КонецЕсли;

    ПоследнееОбновлениеДоступа = ПоследнееОбновлениеДоступа();
    Если Не ЭтоЗапускВручную И ПоследнееОбновлениеДоступа.ОбновлениеДоступаЗапрещено Тогда
    Возврат Неопределено;
    КонецЕсли;

    Результат = Новый Структура("УжеВыполняется, ИдентификаторФоновогоЗадания, СвойстваСеанса, ТекстПредупреждения", Истина);
    Исполнитель = ИсполнительОбновленияДоступа(ПоследнееОбновлениеДоступа);

    Если Исполнитель = Неопределено Тогда
    Результат.УжеВыполняется = Ложь;
    Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
    СтандартныеПодсистемыСервер.ПроверитьДинамическоеОбновлениеВерсииПрограммы();
    КонецЕсли;
    Если ЭтоЗапускВручную Тогда
    УстановитьЗапретОбновленияДоступа(Ложь);
    ПараметрыЗадания = Новый Массив;
    ПараметрыЗадания.Добавить(Истина);
    Иначе
    ПараметрыЗадания = Неопределено;
    КонецЕсли;
    ФоновоеЗадание = РасширенияКонфигурации.ВыполнитьФоновоеЗаданиеСРасширениямиБазыДанных(
    Метаданные.РегламентныеЗадания.ОбновлениеДоступаНаУровнеЗаписей.ИмяМетода, ПараметрыЗадания,,
    ?(ЭтоЗапускВручную, НСтр("ru = 'Запуск вручную'"), НСтр("ru = 'Автозапуск'")) + ": "
    + Метаданные.РегламентныеЗадания.ОбновлениеДоступаНаУровнеЗаписей.Синоним);

    Результат.ИдентификаторФоновогоЗадания = ФоновоеЗадание.УникальныйИдентификатор;

    ИначеЕсли ТипЗнч(Исполнитель) = Тип("ФоновоеЗадание")
    И Исполнитель.УникальныйИдентификатор <> ПоследнееОбновлениеДоступа.ИдентификаторФоновогоЗадания Тогда

    Результат.ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru = 'Не удалось начать обновление доступа, так как оно уже запущено %1 в %2'"),
    Формат(Исполнитель.Начало, "ДЛФ=D"),
    Формат(Исполнитель.Начало, "ДЛФ=T"));
    Иначе
    СвойстваСеанса = Новый Структура("ИмяКомпьютера, НомерСеанса, НачалоСеанса");
    Если ТипЗнч(Исполнитель) = Тип("ФоновоеЗадание") Тогда
    ЗаполнитьЗначенияСвойств(СвойстваСеанса, ПоследнееОбновлениеДоступа);
    Иначе
    ЗаполнитьЗначенияСвойств(СвойстваСеанса, Исполнитель);
    КонецЕсли;
    Результат.СвойстваСеанса = СвойстваСеанса;
    Результат.ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru = 'Обновление доступа уже выполняется
    |(компьютер: %1, сеанс: %2, начат: %3 в %4)'"),
    СвойстваСеанса.ИмяКомпьютера,
    СвойстваСеанса.НомерСеанса,
    Формат(СвойстваСеанса.НачалоСеанса, "ДЛФ=D"),
    Формат(СвойстваСеанса.НачалоСеанса, "ДЛФ=T"));
    КонецЕсли;

    Если ТипЗнч(Исполнитель) = Тип("ФоновоеЗадание") Тогда
    Результат.ИдентификаторФоновогоЗадания = Исполнитель.УникальныйИдентификатор;
    КонецЕсли;

    Возврат Результат;

    КонецФункции
```
---
В общем, поставьте точку останова внутри

ЗаписатьИзмененияНаСервере(Отказ) из сообщения (23)

Если произойдет рекурсия, то по стеку вызовов будет видно.

Стек вызовов открывается по нажатию конопки в конфигураторе:
---
в файле то, что появилось в стеке вызовов.
---
Это первая итерация, нажмите F5 для продолжения.
---
больше нет. при нажатии f5 пишет перезапустить отладчик.
---
значит спускайтесь в глубь кода, ставьте точки останова на

```1c
    ГруппаДоступаОбъект.Записать()

    и

    УправлениеДоступомСлужебный.ЗапуститьОбновлениеДоступа();
```

Еще необходимо включить отладку фоновых заданий, вернее подключаться к ним для отладки.
---
ЗапуститьОбновлениеДоступаНаУровнеЗаписей();

 ЗапуститьОбновлениеДоступаНаУровнеЗаписей();
Функция ЗапуститьОбновлениеДоступаНаУровнеЗаписей(ЭтоЗапускВручную = Ложь) Экспорт

Подскажите пожалуйста,
Может быть так, что при обращении к функции в скобках ничего нет, а при объявлении функции есть переменные??
---
Может быть так, что при обращении к функции в скобках ничего нет, а при объявлении функции есть переменные??
Конечно, при условии, что эти переменные объявлены со значениями по умолчанию.
В данном случае:
Функция ЗапуститьОбновлениеДоступаНаУровнеЗаписей(ЭтоЗапускВручную = Ложь) Экспорт

ЭтоЗапускВручную = Ложь означает, что если значение в переменную не передается, то она заполняется значением по умолчанию, в данном случае Ложь.
---
Ошибка "Переполнение стека встроенного языка на сервере." как правило возникает в ситуации, когда в программном коде допущена ошибка. А точнее происходит зацикливание, когда обработчик уходит в бесконечный цикл.
Смотрите код процедуры ЗаписатьИзмененияНаСервере(Отказ)
---
ЗаписатьИзмененияНаСервере(Отказ

это в справ. профили групп доступа??
или в общих процедурах смотреть??
---
Код Процедуры ЗаписатьИзмененияНаСервере в форме ПраваДоступаУпрощенно выложите здесь...
---
ЗаписатьИзмененияНаСервере
Не нахожу эту процедуру в этом модуле, также её нет и в справочнике профили групп доступа.
---
ененияНаСервере

Не нахожу эту процедуру в этом модуле, также её нет и в справочнике профили групп доступа.

Контекстовое меню на ней - Перейти к определению (F-12)
---
Нашла это

```1c
    &НаСервере
    Процедура ЗаписатьИзмененияНаСервере(Отказ)

    Если Не ПроверитьЗаполнение() Тогда
    Отказ = Истина;
    Возврат;
    КонецЕсли;

    Пользователи.НайтиНеоднозначныхПользователейИБ(Неопределено);

    // Получение списка изменений.
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Пользователь", Параметры.Пользователь);
    Запрос.УстановитьПараметр("Профили", Профили.Выгрузить(, "Профиль, Пометка"));
    Запрос.УстановитьПараметр("ВидыДоступа", ВидыДоступа.Выгрузить(, "ГруппаДоступа, ВидДоступа, ВсеРазрешены"));

    ТаблицаЗначений = ЗначенияДоступа.Выгрузить(, "ГруппаДоступа, ВидДоступа, ЗначениеДоступа, ВключаяНижестоящие");
    ТаблицаЗначений.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число",,,
    Новый КвалификаторыЧисла(10, 0, ДопустимыйЗнак.Неотрицательный)));

    ГруппаДоступаВСтроке = Неопределено;
    Для Каждого Строка Из ТаблицаЗначений Цикл
    Если ГруппаДоступаВСтроке <> Строка.ГруппаДоступа Тогда
    ГруппаДоступаВСтроке = Строка.ГруппаДоступа;
    ТекущийНомерСтроки = 1;
    КонецЕсли;
    Строка.НомерСтроки = ТекущийНомерСтроки;
    ТекущийНомерСтроки = ТекущийНомерСтроки + 1;
    КонецЦикла;
    Запрос.УстановитьПараметр("ЗначенияДоступа", ТаблицаЗначений);

    Запрос.Текст =
    "ВЫБРАТЬ
    | Профили.Профиль КАК Ссылка,
    | Профили.Пометка
    |ПОМЕСТИТЬ Профили
    |ИЗ
    | &Профили КАК Профили
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ВидыДоступа.ГруппаДоступа КАК Профиль,
    | ВидыДоступа.ВидДоступа,
    | ВидыДоступа.ВсеРазрешены
    |ПОМЕСТИТЬ ВидыДоступа
    |ИЗ
    | &ВидыДоступа КАК ВидыДоступа
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ЗначенияДоступа.ГруппаДоступа КАК Профиль,
    | ЗначенияДоступа.ВидДоступа,
    | ЗначенияДоступа.НомерСтроки,
    | ЗначенияДоступа.ЗначениеДоступа,
    | ЗначенияДоступа.ВключаяНижестоящие
    |ПОМЕСТИТЬ ЗначенияДоступа
    |ИЗ
    | &ЗначенияДоступа КАК ЗначенияДоступа
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    | Профили.Ссылка,
    | ЕСТЬNULL(ГруппыДоступа.Ссылка, НЕОПРЕДЕЛЕНО) КАК ПерсональнаяГруппаДоступа,
    | ВЫБОР
    | КОГДА ГруппыДоступаПользователи.Ссылка ЕСТЬ NULL
    | ТОГДА ЛОЖЬ
    | ИНАЧЕ ИСТИНА
    | КОНЕЦ КАК Пометка
    |ПОМЕСТИТЬ ТекущиеПрофили
    |ИЗ
    | Справочник.ПрофилиГруппДоступа КАК Профили
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа КАК ГруппыДоступа
    | ПО Профили.Ссылка = ГруппыДоступа.Профиль
    | И (НЕ(ГруппыДоступа.Пользователь <> &Пользователь
    | И НЕ Профили.Ссылка В (ЗНАЧЕНИЕ(Справочник.ПрофилиГруппДоступа.Администратор))))
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
    | ПО (ГруппыДоступа.Ссылка = ГруппыДоступаПользователи.Ссылка)
    | И (ГруппыДоступаПользователи.Пользователь = &Пользователь)
    |ГДЕ
    | НЕ Профили.ПометкаУдаления
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | Профили.Ссылка КАК Профиль,
    | ГруппыДоступаВидыДоступа.ВидДоступа,
    | ГруппыДоступаВидыДоступа.ВсеРазрешены
    |ПОМЕСТИТЬ ТекущиеВидыДоступа
    |ИЗ
    | ТекущиеПрофили КАК Профили
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа.ВидыДоступа КАК ГруппыДоступаВидыДоступа
    | ПО Профили.ПерсональнаяГруппаДоступа = ГруппыДоступаВидыДоступа.Ссылка
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | Профили.Ссылка КАК Профиль,
    | ГруппыДоступаЗначенияДоступа.ВидДоступа,
    | ГруппыДоступаЗначенияДоступа.НомерСтроки,
    | ГруппыДоступаЗначенияДоступа.ЗначениеДоступа,
    | ГруппыДоступаЗначенияДоступа.ВключаяНижестоящие
    |ПОМЕСТИТЬ ТекущиеЗначенияДоступа
    |ИЗ
    | ТекущиеПрофили КАК Профили
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа.ЗначенияДоступа КАК ГруппыДоступаЗначенияДоступа
    | ПО Профили.ПерсональнаяГруппаДоступа = ГруппыДоступаЗначенияДоступа.Ссылка
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    | ПрофилиИзмененныхГрупп.Профиль
    |ПОМЕСТИТЬ ПрофилиИзмененныхГрупп
    |ИЗ
    | (ВЫБРАТЬ
    | Профили.Ссылка КАК Профиль
    | ИЗ
    | Профили КАК Профили
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТекущиеПрофили КАК ТекущиеПрофили
    | ПО Профили.Ссылка = ТекущиеПрофили.Ссылка
    | ГДЕ
    | Профили.Пометка <> ТекущиеПрофили.Пометка
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | ВидыДоступа.Профиль
    | ИЗ
    | ВидыДоступа КАК ВидыДоступа
    | ЛЕВОЕ СОЕДИНЕНИЕ ТекущиеВидыДоступа КАК ТекущиеВидыДоступа
    | ПО ВидыДоступа.Профиль = ТекущиеВидыДоступа.Профиль
    | И ВидыДоступа.ВидДоступа = ТекущиеВидыДоступа.ВидДоступа
    | И ВидыДоступа.ВсеРазрешены = ТекущиеВидыДоступа.ВсеРазрешены
    | ГДЕ
    | ТекущиеВидыДоступа.ВидДоступа ЕСТЬ NULL
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | ТекущиеВидыДоступа.Профиль
    | ИЗ
    | ТекущиеВидыДоступа КАК ТекущиеВидыДоступа
    | ЛЕВОЕ СОЕДИНЕНИЕ ВидыДоступа КАК ВидыДоступа
    | ПО (ВидыДоступа.Профиль = ТекущиеВидыДоступа.Профиль)
    | И (ВидыДоступа.ВидДоступа = ТекущиеВидыДоступа.ВидДоступа)
    | И (ВидыДоступа.ВсеРазрешены = ТекущиеВидыДоступа.ВсеРазрешены)
    | ГДЕ
    | ВидыДоступа.ВидДоступа ЕСТЬ NULL
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | ЗначенияДоступа.Профиль
    | ИЗ
    | ЗначенияДоступа КАК ЗначенияДоступа
    | ЛЕВОЕ СОЕДИНЕНИЕ ТекущиеЗначенияДоступа КАК ТекущиеЗначенияДоступа
    | ПО ЗначенияДоступа.Профиль = ТекущиеЗначенияДоступа.Профиль
    | И ЗначенияДоступа.ВидДоступа = ТекущиеЗначенияДоступа.ВидДоступа
    | И ЗначенияДоступа.НомерСтроки = ТекущиеЗначенияДоступа.НомерСтроки
    | И ЗначенияДоступа.ЗначениеДоступа = ТекущиеЗначенияДоступа.ЗначениеДоступа
    | И ЗначенияДоступа.ВключаяНижестоящие = ТекущиеЗначенияДоступа.ВключаяНижестоящие
    | ГДЕ
    | ТекущиеЗначенияДоступа.ВидДоступа ЕСТЬ NULL
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | ТекущиеЗначенияДоступа.Профиль
    | ИЗ
    | ТекущиеЗначенияДоступа КАК ТекущиеЗначенияДоступа
    | ЛЕВОЕ СОЕДИНЕНИЕ ЗначенияДоступа КАК ЗначенияДоступа
    | ПО (ЗначенияДоступа.Профиль = ТекущиеЗначенияДоступа.Профиль)
    | И (ЗначенияДоступа.ВидДоступа = ТекущиеЗначенияДоступа.ВидДоступа)
    | И (ЗначенияДоступа.НомерСтроки = ТекущиеЗначенияДоступа.НомерСтроки)
    | И (ЗначенияДоступа.ЗначениеДоступа = ТекущиеЗначенияДоступа.ЗначениеДоступа)
    | И (ЗначенияДоступа.ВключаяНижестоящие = ТекущиеЗначенияДоступа.ВключаяНижестоящие)
    | ГДЕ
    | ЗначенияДоступа.ВидДоступа ЕСТЬ NULL ) КАК ПрофилиИзмененныхГрупп
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | Профили.Ссылка КАК Профиль,
    | СправочникПрофили.Наименование КАК ПрофильНаименование,
    | Профили.Пометка,
    | ТекущиеПрофили.ПерсональнаяГруппаДоступа
    |ИЗ
    | ПрофилиИзмененныхГрупп КАК ПрофилиИзмененныхГрупп
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Профили КАК Профили
    | ПО ПрофилиИзмененныхГрупп.Профиль = Профили.Ссылка
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТекущиеПрофили КАК ТекущиеПрофили
    | ПО ПрофилиИзмененныхГрупп.Профиль = ТекущиеПрофили.Ссылка
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПрофилиГруппДоступа КАК СправочникПрофили
    | ПО (СправочникПрофили.Ссылка = ПрофилиИзмененныхГрупп.Профиль)";

    НачатьТранзакцию();
    Попытка
    ИзмененияГруппДоступа = Запрос.Выполнить().Выгрузить();

    Блокировка = Новый БлокировкаДанных;
    Для каждого Изменение Из ИзмененияГруппДоступа Цикл
    ЭлементБлокировки = Блокировка.Добавить("Справочник.ГруппыДоступа");
    Если ЗначениеЗаполнено(Изменение.ПерсональнаяГруппаДоступа) Тогда
    ЭлементБлокировки.УстановитьЗначение("Ссылка", Изменение.ПерсональнаяГруппаДоступа);
    ЗаблокироватьДанныеДляРедактирования(Изменение.ПерсональнаяГруппаДоступа);
    КонецЕсли;
    КонецЦикла;
    Блокировка.Заблокировать();

    Для каждого Изменение Из ИзмененияГруппДоступа Цикл
    Если ЗначениеЗаполнено(Изменение.ПерсональнаяГруппаДоступа) Тогда
    ГруппаДоступаОбъект = Изменение.ПерсональнаяГруппаДоступа.ПолучитьОбъект();
    ГруппаДоступаОбъект.ПометкаУдаления = Ложь;
    Иначе
    // Создание персональной группы доступа.
    ГруппаДоступаОбъект = Справочники.ГруппыДоступа.СоздатьЭлемент();
    ГруппаДоступаОбъект.Родитель = Справочники.ГруппыДоступа.РодительПерсональныхГруппДоступа();
    ГруппаДоступаОбъект.Наименование = Изменение.ПрофильНаименование;
    ГруппаДоступаОбъект.Пользователь = Параметры.Пользователь;
    ГруппаДоступаОбъект.Профиль = Изменение.Профиль;
    КонецЕсли;

    Если Изменение.Профиль = Справочники.ПрофилиГруппДоступа.Администратор Тогда

    Если ТребуетсяСинхронизацияССервисом Тогда
    ГруппаДоступаОбъект.ДополнительныеСвойства.Вставить("ПарольПользователяСервиса", ПарольПользователяСервиса);
    КонецЕсли;

    Если Изменение.Пометка Тогда
    Если ГруппаДоступаОбъект.Пользователи.Найти(Параметры.Пользователь, "Пользователь") = Неопределено Тогда
    ГруппаДоступаОбъект.Пользователи.Добавить().Пользователь = Параметры.Пользователь;
    КонецЕсли;
    Иначе
    ОписаниеПользователя = ГруппаДоступаОбъект.Пользователи.Найти(
    Параметры.Пользователь, "Пользователь");
    Если ОписаниеПользователя <> Неопределено Тогда
    ГруппаДоступаОбъект.Пользователи.Удалить(ОписаниеПользователя);

    Если НЕ ОбщегоНазначения.РазделениеВключено() Тогда
    // Проверка пустого списка пользователей ИБ в группе доступа Администраторы.
    ОписаниеОшибки = ";
    УправлениеДоступомСлужебный.ПроверитьНаличиеПользователяИБВГруппеДоступаАдминистраторы(
    ГруппаДоступаОбъект.Пользователи, ОписаниеОшибки);

    Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда
    ОтказПриЗаписиИзменений = Истина;
    Отказ = Истина;
    ВызватьИсключение
    НСтр("ru = 'Профиль Администратор должен быть хотя бы у одного пользователя,
    |которому разрешен вход в программу.'");
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    Иначе
    ГруппаДоступаОбъект.Пользователи.Очистить();
    Если Изменение.Пометка Тогда
    ГруппаДоступаОбъект.Пользователи.Добавить().Пользователь = Параметры.Пользователь;
    КонецЕсли;

    Отбор = Новый Структура("ГруппаДоступа", Изменение.Профиль);
    ГруппаДоступаОбъект.ВидыДоступа.Загрузить(ВидыДоступа.Выгрузить(Отбор, "ВидДоступа, ВсеРазрешены"));
    ГруппаДоступаОбъект.ЗначенияДоступа.Загрузить(ЗначенияДоступа.Выгрузить(Отбор, "ВидДоступа, ЗначениеДоступа, ВключаяНижестоящие"));
    КонецЕсли;

    ГруппаДоступаОбъект.Записать();

    КонецЦикла;

    Для каждого Изменение Из ИзмененияГруппДоступа Цикл
    Если ЗначениеЗаполнено(Изменение.ПерсональнаяГруппаДоступа) Тогда
    РазблокироватьДанныеДляРедактирования(Изменение.ПерсональнаяГруппаДоступа);
    КонецЕсли;
    КонецЦикла;

    ЗафиксироватьТранзакцию();
    Исключение
    ОтменитьТранзакцию();
    Для каждого Изменение Из ИзмененияГруппДоступа Цикл
    Если ЗначениеЗаполнено(Изменение.ПерсональнаяГруппаДоступа) Тогда
    РазблокироватьДанныеДляРедактирования(Изменение.ПерсональнаяГруппаДоступа);
    КонецЕсли;
    КонецЦикла;
    ПарольПользователяСервиса = Неопределено;
    ВызватьИсключение;
    КонецПопытки;

    Модифицированность = Ложь;
    ТребуетсяСинхронизацияССервисом = Ложь;

    УправлениеДоступомСлужебный.ЗапуститьОбновлениеДоступа();

    КонецПроцедуры
```
---
поставила точку остановки. Процедуры в стеке вызовов не меняются.
Что-то реально не понятно :(
---
Доброго утра.

я сегодня продолжила смотреть.
Идёт проблема именно при записи спр.ПрофилиГруппДоступа (объект в справочнике уже создан, я нажимаю на существующем кнопку записать и закрыть)

нашла процедуру, где возникает ошибка

```1c
    Справочник.ПрофилиГруппДоступа.Форма.ФормаЭлемента.Форма(436)}: Ошибка при вызове метода контекста (Записать)
```

При нажатии на f12 ничего не происходит.

Далее
В замер производительности (на маркете слева), нашла ссылку на эту процедуру (принскрин)

```1c
    Процедура Проверить(Знач Условие, Знач Сообщение = ", Знач КонтекстПроверки = ") Экспорт

    Если Условие <> Истина Тогда

    Если ПустаяСтрока(Сообщение) Тогда
    ТекстИсключения = НСтр("ru = 'Недопустимая операция'"); // Assertion failed
    Иначе
    ТекстИсключения = Сообщение;
    КонецЕсли;

    Если Не ПустаяСтрока(КонтекстПроверки) Тогда
    ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru = '%1 в %2'"),
    ТекстИсключения,
    КонтекстПроверки);
    КонецЕсли;

    ВызватьИсключение ТекстИсключения;

    КонецЕсли;

    КонецПроцедуры
```

Видно, что эта большое количество вызовов этой процедуры.

А дальше что делать??
---
Записать(Новый Структура("ЗаписатьИЗакрыть"));
Если продолжить отладку, то это ПередЗаписью и т.д.

Ещё нужно посмотреть "не вскрыты" ли определяемые типы. Может там чего добавили?

Но как я понял ситуация не понятная, а это значит может быть имеет смысл запустить инструменты разработчика - Обновление вспомогательных данных(На ИТС обычно где-то есть) и какая-то еще есть(Не помню).

ТИИ не дает ошибок?
---
кстати, даёт, но и после тестирования ничего не изменилось. Хотя я ставила создать.

Проверка логической целостности. РегистрСведений.ГруппыЗначенийДоступа.Измерение.ГруппаЗначенийДоступа <Объект не найден> (201:bab62c44fd95d95b11eb7da512b4d9c0):<Объект не найден> (201:bab62c44fd95d95b11eb7da512b4d9c0):1
  ОбщийРеквизит.ОбластьДанныхОсновныеДанные = 0
 Неверная ссылка.

Проверка логической целостности. РегистрСведений.СведенияОПользователях.Измерение.Пользователь <Объект не найден> (201:bab62c44fd95d95b11eb7da512b4d9c0)
  ОбщийРеквизит.ОбластьДанныхОсновныеДанные = 0
 Неверная ссылка.

Проверка логической целостности. РегистрСведений.СоставыГруппПользователей.Измерение.Пользователь <Объект не найден> (201:bab62c44fd95d95b11eb7da512b4d9c0):<Объект не найден> (201:bab62c44fd95d95b11eb7da512b4d9c0)
  ОбщийРеквизит.ОбластьДанныхОсновныеДанные = 0
 Объект, на который ссылается значение, отсутствует.

Проверка логической целостности. РегистрСведений.бит_ДоступныеИнтерфейсы.Измерение.Пользователь <Объект не найден> (201:bab62c44fd95d95b11eb7da512b4d9c0)
  ОбщийРеквизит.ОбластьДанныхОсновныеДанные = 0
 Неверная ссылка.
---
Похоже что у вас проблема как раз в удаленных данных. Т.к. есть ссылки на удаленные объекты(<Объект не найден> ).
Нужно строить запрос, искать эти ссылки и чистить места их упоминания.
Похоже дело в данных конфигурации бит_.
---
А может быть так что у пользователя какого-то в правах в разных группах доступа отражаются зеркальные права по одной группе они есть, по другой они ограничиваются и возникает такая рекурсия?
---
допустим что так.
а почему тогда и элемент справочник профили групп доступа нельзя записать??
я пробовала удалить все данные (кроме администратора) из этого справочника, у меня ошибка сохранилась.
---
Я частично нашла ошибку.

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

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

Решение мне помог найти air_mike
оказалось, что всё дело в дополнительных расширениях- есть роли, которые конфликтуют с ролями основной конфигурации.
ОбновлениеВспомогательныхДанных.epf использовали также эту обработку и точно также выскочила ошибка переполнение стека вызова.
Буду дальше смотреть и сравнивать эти роли с ролями из основной конфигурации.

Благодарю Всех за помощь и за разъяснения.