День добрый, товарищи. Помогите разобраться
Имеется печатная форма, макет которой заполняется структурой. Появилась необходимость добавить еще одну структуру. Но макет должен заполняться таким образом, что если одно из значений первой структуры пустое, то заполняется значением из второй структуры. Примерный код такой:
СтруктураДоп = Новый Структура;
СтруктураДоп.Вставить("МО", 1);
СтруктураДоп.Вставить("КТП",2);
СтруктураДоп.Вставить("КТК",3);
СтруктураДоп2 = Новый Структура;
СтруктураДоп2.Вставить("МО", 11);
СтруктураДоп2.Вставить("КТП",22);
СтруктураДоп2.Вставить("КТК",33);
Для Каждого Стр Из СтруктураДоп Цикл
Сообщить(Стр.Ключ);
Сообщить(Стр.Значение);
//здесь условие будет на проверку заполненности Стр.Значение
//если то..........иначе получаем по текущему ключу соттветствующее значение второй структуры
СоотвЗначениеДоп2 = "";
СтруктураДоп2.Свойство(Стр.Ключ,СоотвЗначениеДоп2);
Сообщить(СоотвЗначениеДоп2);
КонецЦикла;
Имеется печатная форма, макет которой заполняется структурой. Появилась необходимость добавить еще одну структуру. Но макет должен заполняться таким образом, что если одно из значений первой структуры пустое, то заполняется значением из второй структуры. Примерный код такой:
СтруктураДоп = Новый Структура;
СтруктураДоп.Вставить("МО", 1);
СтруктураДоп.Вставить("КТП",2);
СтруктураДоп.Вставить("КТК",3);
СтруктураДоп2 = Новый Структура;
СтруктураДоп2.Вставить("МО", 11);
СтруктураДоп2.Вставить("КТП",22);
СтруктураДоп2.Вставить("КТК",33);
Для Каждого Стр Из СтруктураДоп Цикл
Сообщить(Стр.Ключ);
Сообщить(Стр.Значение);
//здесь условие будет на проверку заполненности Стр.Значение
//если то..........иначе получаем по текущему ключу соттветствующее значение второй структуры
СоотвЗначениеДоп2 = "";
СтруктураДоп2.Свойство(Стр.Ключ,СоотвЗначениеДоп2);
Сообщить(СоотвЗначениеДоп2);
КонецЦикла;
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) откуда получаются структуры ? не легче ли на момент формирования структур в поля структуры писать нужные значения,
так же можете воспользоваться оператором "?"
так же можете воспользоваться оператором "?"
НужноеЗначение = ? (ЗначениеЗаполнено (СтруктураДоп1.Значение), СтруктураДоп1.Значение, СтруктураДоп2.Значение)
(5)
Так зачем вообще структуры?
Заполняйте прям из таблицы значений.
Ну или сразу формируйте структуру с заполненными значениями.
Массив элементами которого являются структура.
Структура содержащая структуру.
Ну или двумерный массив, например.
А еще есть соответсвие.
Вариантов вагон и маленькая тележка. Сериализовать таблицу значений (если оно вам надо) можно во что угодно, вроде как, даже в JSON строку и ЗначениеВСтрокуВнутр.
Если платформа более-менее современная и колонки таблицы составного типа: ЗначениеЗаполнено()
Так зачем вообще структуры?
Заполняйте прям из таблицы значений.
Ну или сразу формируйте структуру с заполненными значениями.
Массив элементами которого являются структура.
Структура содержащая структуру.
Ну или двумерный массив, например.
А еще есть соответсвие.
Вариантов вагон и маленькая тележка. Сериализовать таблицу значений (если оно вам надо) можно во что угодно, вроде как, даже в JSON строку и ЗначениеВСтрокуВнутр.
Если платформа более-менее современная и колонки таблицы составного типа: ЗначениеЗаполнено()
Примерный код такой:
СтруктураДоп = Новый Структура;
СтруктураДоп.Вставить("МО", 1);
СтруктураДоп.Вставить("КТП",2);
СтруктураДоп.Вставить("КТК",3);
СтруктураДоп2 = Новый Структура;
СтруктураДоп2.Вставить("МО", 11);
СтруктураДоп2.Вставить("КТП",22);
СтруктураДоп2.Вставить("КТК",33);
Для Каждого Стр Из СтруктураДоп Цикл
Сообщить(Стр.Ключ);
Сообщить(Стр.Значение);
//здесь условие будет на проверку заполненности Стр.Значение
//если то..........иначе получаем по текущему ключу соттветствующее значение второй структуры
СоотвЗначениеДоп2 = ?(ЗначениеЗаполнено(Стр.Значение),Стр.Значение,СтруктураДоп2[Стр.Ключ]);
//СтруктураДоп2.Свойство(Стр.Ключ,СоотвЗначениеДоп2);
Сообщить(СоотвЗначениеДоп2);
КонецЦикла;
Показать
(8)
С небольшой поправочкой.
0 и "" - это тоже значения, как мне кажется, удовлетворяющие автора.
Действовать надо не через ЗначениеЗаполнено(), а через Структура.Свойство(Ключ)
UPD:
Хотя нет, вру, в таком случае надо было бы взять структуру с неприоритетными данными и полностью дописать в нее все данные из более приоритетной структуры.
С небольшой поправочкой.
0 и "" - это тоже значения, как мне кажется, удовлетворяющие автора.
Действовать надо не через ЗначениеЗаполнено(), а через Структура.Свойство(Ключ)
UPD:
Хотя нет, вру, в таком случае надо было бы взять структуру с неприоритетными данными и полностью дописать в нее все данные из более приоритетной структуры.
(11)
Структура.Свойство(Ключ) - возвращает булево означающее существует ли заданый ключ в структуре.
Я не читал комментарии и не знал, что автор за какойто радостью сериализует колонки табличной части в отдельные структуры. И до сих пор не понимаю, почему структуры, если они выгружаются в массивы, да и зачем вообще это надо, если можно работать напрямую с таблицей значений.
Структура.Свойство(Ключ) - возвращает булево означающее существует ли заданый ключ в структуре.
Я не читал комментарии и не знал, что автор за какойто радостью сериализует колонки табличной части в отдельные структуры. И до сих пор не понимаю, почему структуры, если они выгружаются в массивы, да и зачем вообще это надо, если можно работать напрямую с таблицей значений.
(8)
Примерный код такой:
СтруктураДоп = Новый Структура;
СтруктураДоп.Вставить("МО", 1);
СтруктураДоп.Вставить("КТП",2);
СтруктураДоп.Вставить("КТК",3);
СтруктураДоп2 = Новый Структура;
СтруктураДоп2.Вставить("МО", 11);
СтруктураДоп2.Вставить("КТП",22);
СтруктураДоп2.Вставить("КТК",33);
Для Каждого Стр Из СтруктураДоп2 Цикл // СтруктураДоп2
Сообщить(Стр.Ключ);
Сообщить(Стр.Значение);
//здесь условие будет на проверку заполненности Стр.Значение
//если то..........иначе получаем по текущему ключу соттветствующее значение второй структуры
СоотвЗначениеДоп2 = ?(СтруктураДоп.Свойство([Стр.Ключ]) и ЗначениеЗаполнено(СтруктураДоп[Стр.Ключ]) ,СтруктураДоп[Стр.Ключ],Стр.Значение);
//СтруктураДоп2.Свойство(Стр.Ключ,СоотвЗначениеДоп2);
Сообщить(СоотвЗначениеДоп2);
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот