Добавить структуру в массив 1с
Приходится извращаться немного с УФ. Надо записи из БД записать в массив. Решил Запись запихать в структуру, а структуру в массив. Получилась интересная фигня, что в массиве хранится ссылка на структуру а не сама структура. И в массиве все значения заполнены последней записью из БД, т.е. ссылкой на структуру.
Вопрос: Как заполнить массив значениями записей из БД? Может как-то можно извратиться со структурой?
ЗначениеВСтрокуВнутр() - а эта функция только на сервере работает. Можно конечно попробовать но это изврат :(
Работает через ЗначениеВСтрокуВнутр(). Но скорость обработки падает раз в 5. При больших объемах этот очень критично.
(5) Врешь ведь.
(0) Давай задачу целиком, а то тут опять налицо изобретение велоката с квадратными колесами
(8) Ну почему врешь? :)
Попробуй заполнить массив структурами - точно говорю, результат интересный будет. По всякому попробуй.
А задача целиком - загрузка данных из Оракла, с возможностью во время загрузки выбирать соответствия для некоторых объектов.
Вообще вернулся к старому варианту решения задачи. Сделал Таблицу на форме и гружу сначала данные из Оракла туда, а потом уже обрабатываю в цикле.
(10) Я делал так 100500 раз, массив из структур, на каждой итерации новая структура. На платформе 8.2. В массив, естественно, передается указатель (но не ссылка, какая ссылка у структуры?), но он каждый раз новый получался при создании новой структуры.
(0) Прочти хорошо правила работы с массивами и со структурами и не торопясь сделай. Если не получается - возьми отладчик, и проползи на пузе каждый шаг цикла, итерации две проследи в отладчике, наверняка найдешь ошибку.
(16) так и было, решил попробовать другой способ.
(15) Конечно же так и делал.
(14) Ну а как я по твоему видел, что в массиве все структуры пустые, когда делаешь через инициализацию структуры. Хотя думаю стоит еще раз попробовать что за фигня при записи структуры в массив. :(
(17) Да ты видимо в отладчике только итог посмотрел. А надо на каждом шаге смотреть значения всех переменных. Массив (длина его, да и на F2 посмотреть), текущая ячейка массива, переменная-структура, и что там у тебя еще есть?
Раз совсем ничего не понятно - делай так. Похоже, что ты еще ленишься, ибо не сказал нам - на каком шаге произошел космический глюк.
Мы бы тебе сразу подсказали.
(19) Какой ИТОГ? :))) Расскажу как происходит. Цикл, инициализируется структура, заполняется значениями из записи БД, Добавляется в массив. Все отлично, в массиве значения первой записи как надо. Переходим на вторую итерацию, после инициализации структуры в первой записи массива есть тип значения структура, но пустое.
(19) Если структуру не инициализировать, то во всем массиве значения последней структуру в него записанной
Массив — это программная коллекция (объект встроенного языка), содержащая пронумерованную последовательность значений произвольного типа. Каждому элементу присваивается последовательный целочисленный номер — индекс, начинающийся с нуля. По индексу можно получить или установить значение элемента массива.
В 1С:Предприятие 8 существует два типа массивов:
- фиксированный массив — такой массив имеет фиксированный размер, заданный при его создании. Для фиксированного массива недоступно программное изменение размера, количества и последовательности элементов;
- обычный массив — такой массив имеет динамический размер и его верхний предел практически неограничен. Таким массивом можно произвольно оперировать из встроенного языка;
Сейчас мы рассмотрим обычные массивы.
Создание и инициализация элементов массива
Создание пустого массива выполняется с помощью оператора Новый :
Для добавления элементов в массив используется одноименный метод Массив.Добавить():
Каждый новый элемент помещается в конец массива. Чтобы создать массив с заданным размером, можно воспользоваться конструктором массива. Например, так:
Для доступа к отдельным элементам массива применяется операция разыменования: указывается имя переменной, объявленной как массив, а затем, в квадратных скобках, указывается индекс элемента: ИмяМассива[Индекс] . Такие конструкции можно указывать как слева от оператора присваивания:
Так и справа: в выражениях и в качестве параметров процедур и функций:
Границы массивов
Как было сказано выше, левая граница массива постоянна и всегда равно нулю (0). Верхняя граница напрямую связана с количеством элементов в массиве. Получить ее можно двумя способами:
- С использованием метода Массив.Количество() с последующим вычитанием 1;
- С использованием одноименного метода Массив.ВГраница();
Давайте рассмотрим распространенные операции с массивами
Перебор элементов массива
Для перебора (обхода) всех элементов массива обычно используется оператор цикла Для :
Либо оператор цикла Для Каждого :
Первый способ лучше использовать, если Вам необходимо получить одновременно и индекс, и значение массива. Второй способ больше подходит для ситуации, когда нужно только последовательно перебрать все значения массива. Использование второго способа повышает «читабельность кода».
Поиск в массиве
Для поиска значений в массиве можно воспользоваться одноименным методом Массив.Найти(). Он возвращает индекс найденного элемента или Неопределено , если таковой не был найден:
Все версии 7.x 8.x ОП 8.2 УП 8.3 УП Видео Добавить FAQРабота с Массивом, Структурой, Соответствием | Версия | |
---|---|---|
Вывод Структуры на печать в табличный документ | [8.x] | |
Добавление в список значений элементов справочника помеченных на удаление и управление ими | [8.x] | |
Как создать Двумерный или Многомерный массив? | [8.x, 8.2 УП] | |
Как создать Фиксированный массив? | [8.x, 8.2 УП] | |
Массив ~ Добавление, копирование элементов из массива в массив | [8.x, 8.2 УП] | |
Массив ~ Как получить последний элемент массива | [8.x, 8.2 УП] | |
Массив ~ Как Свернуть Массив? | [8.x] | |
Массив ~ Как Сортировать Массив? | [8.x] | |
Массив ~ Как удалить повторяющиеся элементы массива? | [8.x, 8.2 УП] | |
Массив ~ Функция ищет элемент в массиве. Если находит - возвращает его индекс, иначе -1 | [8.x, 8.2 УП] | |
Массив ~ Функция сравнивает два массива однотипных значений | [8.x, 8.2 УП] | |
Небольшой нюанс при создании двумерного массива | [8.x] | |
Сравнение двух структур | [8.x] | |
Структура ~ Добавить элемент в Cтруктуру | [8.x, 8.2 УП] | |
Структура ~ Доступ к элементу Структуры | [8.x, 8.2 УП] | |
Структура ~ Есть ли в структуре Значение элемента с ключом Контрагент? | [8.x, 8.2 УП] | |
Структура ~ Перебор элементов Структуры | [8.x, 8.2 УП] | |
Структура ~ Преобразовании Структуры в Таблицу Значений | [8.x, 8.2 УП] | |
Структура ~ Создать структуру и добавить элементы | [8.x, 8.2 УП] | |
Структура ~ Удаление элементов, очистка структуры | [8.x, 8.2 УП] | |
Структура ~ Установка значения для элемента структуры с определенным ключом | [8.x, 8.2 УП] | |
Функция создает КОПИЮ переданного Массива, Структуры или Соответствия | [8.x] |
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 10060 (0x0000274C): Попытка установить соединение была безуспешной 19
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем 1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое Посмотреть все результаты поиска похожих
Еще в этой же категории
Сравнение двух структур 7
// Сравнение 2-х стурктур // Возвращает структуру с полями которые отличаются и значением из сравниваемой // Если в стСравнимое нет нужного поля,то в результат добавляется поля = Неопределенно // стОсновная, стСравнимое - сравниваемые структуры Массив ~ Как удалить повторяющиеся элементы массива? 6
Функция УдалитьПовторяющиесяЭлементыМассива(Массив) Экспорт ТекущийИндекс = 0; ВсегоЭлементов = Массив.Количество(); Пока ТекущийИндекс ВсегоЭлементов Цикл Индекс2 = ТекущийИндекс + 1; Пока Индекс2 ВсегоЭлементов Цикл Если Массив = Структура ~ Преобразовании Структуры в Таблицу Значений 4
//Струтура в ТЗ Функция СтруктураВТЗ(Структр) ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить(" Значение" ); ТЗ.Колонки.Добавить(" Описание" ); Для Каждого ТекЭлем из Структр Цикл НовСтр=ТЗ.Добавить(); НовСтр.Значение = ТекЭлем.Ключ; НовСтр Массив ~ Как Свернуть Массив? 2
НовыйМассив = Новый Массив; Соответствие = Новый Соответствие; Для каждого ЭлементМассива Из Массив Цикл Соответствие.Вставить(ЭлементМассива); КонецЦикла; Для каждого КлючИЗначение Из Соответствие Цикл НовыйМассив.Добавить(КлючИЗначение.Знач Как создать Фиксированный массив? 2
ФиксированныйМассив , элементами которого могут быть значения перечисленных типов, включая ФиксированныйМассив. ФиксированныйМассив не допускает никаких изменений своего содержимого и может быть сконструирован из объекта типа " Массив" ; А если про Посмотреть все в категории Работа с Массивом, Структурой, Соответствием
Мне кажется, не надо было такую свежую версию БСП брать. Что-нибудь из 3.0.х было бы более востребовано.
Хотя, далеко не все описанные методы являются "свежими".
(3) Я описал наиболее полезные функции которые помогут в решении многих задач. конечно это далеко не весь список, будем дополнять по мере возможности новыми процедурами и функциями)
БСП использовал наиболее актуальную, но большая часть используется и в 3.0 ) спасибо
(0) А где же ОбщегоНазначенияКлиентСервер: Проверить(. ) и ПроверитьПараметр(. ) .
Соблюдение контрактов - это наше все;)
Спасибо, отличная тема для циклов статей!
Предложение: указывать тип возвращаемого значения (для функций), было бы удобно)
(7) Вообще в модулях описывается каждая процедура и функция )
но постараюсь дополнить в статье в ближайшее время!)
(13) От перестановки слагаемых сумма не меняется)
Результат такой же - решения разные.
Кстати для получения текущего пользователя на Клиенте:
Выдает ошибку:
Ошибка разбора XML: - [1,1]
Фатальная ошибка:
Document is empty
Эту ТаблицаЗначений надо заранее создать и столбиками заполнить или как вообще.
Возвращает значение дополнительного свойства объекта:
УправлениеСвойствами.ЗначениеСвойства
Мне кажется часто нужен и достоин упоминания.
Просмотры 23967
Загрузки 0
Рейтинг 208
Создание 10.03.20 09:20
Обновление 14.01.21 12:35
№ Публикации 1207488
Тип файла Нет файла
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Страна Россия
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)
Код открыт Да
См. также
Библиотека стандартных подсистем (Механизм БСП) Промо
Конфигурации в 1С пишутся для пользователей и по их «правилам» (клиент всегда прав), поэтому в основном все конфигурации разные, но достаточно часто в них используются одни и те же объекты, которые незначительно отличаются друг от друга. Действительно, сложно представить конфигурацию, где не фигурировали бы такие сущности как номенклатура, контрагенты, пользователи, валюта. И некоторые задачи являются типичными: возможность базового разграничения прав, работа с электронной почтой, задачи пользователям и т.д. Но.
03.03.2017 86300 V.Stavinsky 22
Модули общего назначения - готовые полезные функции и процедуры конфигураций на БСП
В данной статье я рассматриваю несколько полезных "классических" функций и процедур для работы с данными, которые уже встроены в БСП и готовы к использованию.
25.04.2022 2832 quazare 11
Правила регистрации объектов 1С:БСП
Здравствуйте, коллеги! В статье рассмотрим работу с правилами регистрации объектов в библиотеке стандартных подсистем 1С.
20.04.2022 880 Koder_Line 6
Многопоточный режим выполнения процедуры с помощью методов БСП - примеры разработки
В данной статья я рассмотрю примеры использования выполнения функций и процедур в многопоточном режиме, используя возможности Библиотеки стандартных подсистем (БСП).
01.04.2022 3323 quazare 14
Полезные функции БСП Промо
Список часто востребованных, по моему мнению, функций из состава Библиотеки стандартных подсистем 2.2.
1 стартмани
01.02.2015 86578 52 spec8s 31
Необычное решение для хранения настроек внешней обработки
При написании внешней обработки, например для импорта данных из сторонней базы данных используя HTTP-сервисы, необходимо сохранять настройки соединения с HTTP. Подсказали оригинальный способ сохранения настроек с БД. При использовании "ХранилищеОбщихНастроек" все сильно зависит от прав пользователя. Чтобы читать настройки, сохраненные другим пользователем, необходимы права: "АдминистрированиеДанных". Как-то не хочется раздавать всем пользователям права администратора. Помогает БСП.
25.03.2022 962 AlexeyRaevsky 7
Получение контактной информации из отбора
Универсальная функция получения контактной информации из отбора компоновки данных. Весь код в статье.
25.03.2022 978 the1 0
Стандартные подсистемы БСП - параметры работы клиента и возможности диалогов
В данной небольшой статье рассмотрим обработку параметров работы клиента и режим диалога (выбора вопроса) модулей "стандартные подсистемы" БСП.
22.03.2022 3128 quazare 7
Полезный код для программистов 1С (часть 3). Подготовка печатных форм + подсистема Управление печатью (БСП)
Мы все любим 1С, не так ли? Вот дает 1С прекрасный механизм возможности модификации макетов печатных форм в БСП. А из всех рекомендаций это получение макета и заполнение параметров областей. И вы спросите: "А что не так. ты печатные формы накодить не можешь без указаний сверху?". Да вот в том то и дело, что я могу все. А вот пользователям от такого механизма пользы 0, если из всех доступных изменений остаются только шрифты, да текст произвольный накинуть. А ведь можно больше, надо только соблюдать несколько правил при подготовке печатных форм.
07.03.2022 3249 vandalsvq 0
Подключение подсистемы исправления документов и регистров в конфигурации ЗУП 3.1
Описание шагов для того, чтобы подключить разработанный документ к подсистеме исправления в конфигурации ЗУП 3.1.
Читайте также: