F
f87
Нужно было добится хранения по типу "Параметр - Значение" в массиве.
Пример реализации типа Record (Pascal) в массиве. Но, значения передаются в массив по ссылке (!), что значительно усложняло задачу...
[codebox]структ = новый Структура("знач1, знач2");
структ.знач1 = 110;
структ.знач2 = 120;
массив[0] = структ;
структ.знач1 = 510;
структ.знач2 = 520;
массив[1] = структ;[/codebox]
В Итоге получется что массив[0].знач1 = 510 !!!. Все элементы массива ссылаются на одну переменную.
Проблема была решены следующим образом...
[codebox]Процедура ИмпортДопСправочников() Экспорт
мас = новый массив();
ПолучитьСтруктуруДопСправочника(мас);
Для каждого П Из мас Цикл
Сообщить(П.Название);
Сообщить(П.КодПоля);
КонецЦикла;
КонецПроцедуры
Функция ПолучитьСтруктуруДопСправочника(Буффер)
дПоля = Новый XBase(БазаДанныхMagistr + "POLE.DBF", БазаДанныхMagistr + "POLE.CDX", Истина);
Пока дПоля.Следующая() Цикл
Буффер.Добавить(Новый Структура("Название, КодПоля", дПоля.POLE_NAZV, дПоля.POLE_KODP));
КонецЦикла;
Возврат Истина;
КонецФункции[/codebox]
Как ни сиранно, но обект структуры не уничтожился после завершения работы функции. И теперь доступен из другой процедуры.
А вот теперь вопрос! Как долго будут "жить" объекты структуры в массиве? Когда 1С уничтожает объекты?
Хочу услашать ваши мнения, критику и альтернативные решения. Спасибо за внимание.
Пример реализации типа Record (Pascal) в массиве. Но, значения передаются в массив по ссылке (!), что значительно усложняло задачу...
[codebox]структ = новый Структура("знач1, знач2");
структ.знач1 = 110;
структ.знач2 = 120;
массив[0] = структ;
структ.знач1 = 510;
структ.знач2 = 520;
массив[1] = структ;[/codebox]
В Итоге получется что массив[0].знач1 = 510 !!!. Все элементы массива ссылаются на одну переменную.
Проблема была решены следующим образом...
[codebox]Процедура ИмпортДопСправочников() Экспорт
мас = новый массив();
ПолучитьСтруктуруДопСправочника(мас);
Для каждого П Из мас Цикл
Сообщить(П.Название);
Сообщить(П.КодПоля);
КонецЦикла;
КонецПроцедуры
Функция ПолучитьСтруктуруДопСправочника(Буффер)
дПоля = Новый XBase(БазаДанныхMagistr + "POLE.DBF", БазаДанныхMagistr + "POLE.CDX", Истина);
Пока дПоля.Следующая() Цикл
Буффер.Добавить(Новый Структура("Название, КодПоля", дПоля.POLE_NAZV, дПоля.POLE_KODP));
КонецЦикла;
Возврат Истина;
КонецФункции[/codebox]
Как ни сиранно, но обект структуры не уничтожился после завершения работы функции. И теперь доступен из другой процедуры.
А вот теперь вопрос! Как долго будут "жить" объекты структуры в массиве? Когда 1С уничтожает объекты?
Хочу услашать ваши мнения, критику и альтернативные решения. Спасибо за внимание.