На Сервере процедура вызывается с одним параметром ИсходныеДанные типа структура, который при объявлении процедуры задаётся по Знач-ению
В вызываемой процедуре этот параметр помещается в новую структуру, которая передаётся в другую процедуру тоже по Знач-ению, там значение ключя меняется и что вы думаете?
После вызова переменная ИсходныеДанные, которая сначала был передана по Знач-ению, потом помещёна в структуру, которая была передана по Знач-ению в другую функцию ИЗМЕНИЛАСЬ на то что было присвоено ключу в последней процедуре.
(9)Решением проблемы стало полное копирование структуры и её уничтожение
Данные = Новый Структура;
Для Каждого эл Из ДанныеУведомления Цикл
Данные.Вставить(эл.Ключ, эл.Значение);
КонецЦикла;
ДанныеУведомления = 0;
Уведомление.Вставить("Данные", Данные);
(1) более подробно, желательно с кодом пример будет?
Меняете не только ключ структуры, а значение ссылочного типа по этому ключу?
Что и как меняете - не понятно.
Самое странное, что в последней процедуре ключ структуры содержащий эти данные вообще удаляется и к концу выполнения процедуры эти данные не существуют! Как они передаются обратно, через две процедуры в ОбработкуПроведения?
(4) Из описания сложно понять как там все устроено, но мне кажется все правильно отрабатывает. По значению ведь передается ссылка на объект структуры, а в этом объекте уже можно менять свойства
необходимо помнить следующую особенность: если параметром передается агрегатный объект, то невозможно присвоить фактическому параметру другое значение, но возможно изменить сам переданный объект.
(6) При передаче параметра вызываемой процедуры или функции по значению, изменение значения формального параметра внутри процедуры или функции никак не влияет на фактический параметр, передаваемый при вызове процедуры или функции. Указание, что параметр нужно передавать по значению, осуществляется с помощью ключевого слова Знач.
(9)Решением проблемы стало полное копирование структуры и её уничтожение
Данные = Новый Структура;
Для Каждого эл Из ДанныеУведомления Цикл
Данные.Вставить(эл.Ключ, эл.Значение);
КонецЦикла;
ДанныеУведомления = 0;
Уведомление.Вставить("Данные", Данные);