Доброго времени суток. С недавних пор понадобилось освоить программирование в 1С, и возник один вопрос: можно ли в 1С добавить пользовательский тип данных. В частности необходимый тип на языке VBA я бы описал следующим образом:
Type MyType
Value1 As String
Value2 As Array
Value3 As Array
End Type
Описание переменной выглядело бы: Dim List As MyType
И обращение к данным List(i).Value1, List(i).Value2() и так далее.
Меня интересует как можно реализовать подобную структуру в 1С. Я пробовал использовать ТаблицаЗначений, но в итоге необходимой функциональности добиться не удалось. В частности обращения к ячейке колонки как к массиву.
К примеру я не могу обратиться как к массиву к элементу ТаблицаЗначений.Колонки.Значение2
Type MyType
Value1 As String
Value2 As Array
Value3 As Array
End Type
Описание переменной выглядело бы: Dim List As MyType
И обращение к данным List(i).Value1, List(i).Value2() и так далее.
Меня интересует как можно реализовать подобную структуру в 1С. Я пробовал использовать ТаблицаЗначений, но в итоге необходимой функциональности добиться не удалось. В частности обращения к ячейке колонки как к массиву.
Массив.Добавить(Тип("Строка"));
ОписаниеТиповС = Новый ОписаниеТипов(Массив, , Новый КвалификаторыСтроки());
Массив.Очистить();
ОписаниеТиповМ = Новый ОписаниеТипов(Массив, , ,Новый КвалификаторыЧисла());
ТаблицаЗначений = Новый ТаблицаЗначений;
ТаблицаЗначений.Колонки.Добавить("Значение1", ОписаниеТиповС, "Значение1");
ТаблицаЗначений.Колонки.Добавить("Значение2", ОписаниеТиповМ, "Значение2");
ТаблицаЗначений.Колонки.Добавить("Значение3", ОписаниеТиповМ, "Значение3");
ПоказатьК примеру я не могу обратиться как к массиву к элементу ТаблицаЗначений.Колонки.Значение2
По теме из базы знаний
- Программное заполнение пользовательских параметров и отборов СКД
- СКД: все, что вы хотели знать о подмене схемы компоновки данных в отчетах и обработках
- Доработка типового отчета на СКД с помощью расширения
- Использование типовых возможностей 1С и их расширение. Часть 2
- Расширение типового механизма настройки заполнения бухгалтерской отчетности (на примере конфигурации 1С:ERP. Управление холдингом 3.1.8.15)
Найденные решения
Ну и типизированных массивов в 1С нет.
Т.е. будет как-то так:
Т.е. будет как-то так:
Function NewMyType(Name)
Return new Structure("Name,Set1,Set2", Name, new Array, new Array)
EndFunction
Procedure Test()
List = new Array;
List.Add(NewMyType("s1"));
List.Add(NewMyType("s2"));
Message(List[0].Name);
List[1].Set2.Add("Test");
Message(List[1].Set2.Count());
EndProcedure
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Это вам, вроде, обычная структура подойдет
А если по индексу ещё нужно обращаться, то запихните её в массив, а ещё "Определяемые типы" во вкладке "Общие" есть
MyType = Новый Структура("Value1,Value2,Value3", "String", Новый Массив, Новый Массив);
А если по индексу ещё нужно обращаться, то запихните её в массив, а ещё "Определяемые типы" во вкладке "Общие" есть
Пользовательские типы в 1С создавать нельзя.
Но, как уже сказали, нужная вам структура данных легко моделируется на ассоциативном массиве (тип "Структура" в 1С).
Инициализировать новые экземпляры в нужном виде, ессно, придется каждый раз с нуля.
Можете функцию для этого написать. Эдакий эмулятор конструктора.
Но, как уже сказали, нужная вам структура данных легко моделируется на ассоциативном массиве (тип "Структура" в 1С).
Инициализировать новые экземпляры в нужном виде, ессно, придется каждый раз с нуля.
Можете функцию для этого написать. Эдакий эмулятор конструктора.
Ну и типизированных массивов в 1С нет.
Т.е. будет как-то так:
Т.е. будет как-то так:
Function NewMyType(Name)
Return new Structure("Name,Set1,Set2", Name, new Array, new Array)
EndFunction
Procedure Test()
List = new Array;
List.Add(NewMyType("s1"));
List.Add(NewMyType("s2"));
Message(List[0].Name);
List[1].Set2.Add("Test");
Message(List[1].Set2.Count());
EndProcedure
Показать
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот