&НаСервере
Процедура ЗаполнитьТаблицуНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.Родитель.Ссылка КАК РодительСсылка
|ПОМЕСТИТЬ ВТНоменклатура
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ХарактеристикиНоменклатуры.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТХарактеристики
|ИЗ
| Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТНоменклатура.Ссылка.Артикул КАК Артикул,
| ВТНоменклатура.Ссылка.Родитель.Наименование КАК ГруппаНоменклатуры,
| ВТНоменклатура.Ссылка КАК Наименование,
| ВТХарактеристики.Ссылка.Наименование КАК Размер
|ИЗ
| ВТНоменклатура КАК ВТНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ ВТХарактеристики КАК ВТХарактеристики
| ПО ВТНоменклатура.Ссылка = ВТХарактеристики.Ссылка.Владелец.Ссылка";
//Запрос.УстановитьПараметр("Ссылка", "&Ссылка");
РезультатЗапроса = Запрос.Выполнить();
Таблица = РезультатЗапроса.Выгрузить();
Для каждого СтрокаТЧ из Таблица цикл
НоваяСтрока = Объект.КаталогНСИ.Добавить();
//ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЧ);
НоваяСтрока.Размер = СтрокаТЧ.Размер;
НоваяСтрока.Цвет = СтрокаТЧ.Размер;
НоваяСтрока.Наименование = СтрокаТЧ.Наименование;
НоваяСтрока.Артикул = СтрокаТЧ.Артикул;
НоваяСтрока.ГруппаНоменклатуры = СтрокаТЧ.ГруппаНоменклатуры;
КонецЦикла;
//ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
//
//Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// // Вставить обработку выборки ВыборкаДетальныеЗаписи
//КонецЦикла;
КонецПроцедуры
Показать
В общем написал код для заполнения таблицы,но возникла задача, у меня в строки "Размер" и "Цвет" заполняются значениями(допустим " 46, красный")
Как можно разделить строку,чтобы 46 шло в колонку размер,а красный в колонку цвет?
Знаю что есть функция глРазложить(Стр Знч,Разделитель)
Но как мне ее применить,если у меня заполнение идет на сервере?
(2)Да тут дело в том,что я не пойму где мне вызвать функцию расщепления,чтобы все корректно работало
У меня есть значение СтрокаТЧ.Размер
Есть функция глРазложить(Знч Стр,Разделитесь)
Пробовал сделать глРазложить(СтрокаТЧ.Размер, ",");
Но не тут то было,он не знает данную функцию:)
(2)Да тут дело в том,что я не пойму где мне вызвать функцию расщепления,чтобы все корректно работало
У меня есть значение СтрокаТЧ.Размер
Есть функция глРазложить(Знч Стр,Разделитесь)
Пробовал сделать глРазложить(СтрокаТЧ.Размер, ",");
Но не тут то было,он не знает данную функцию:)
В качестве разделителя в данной функции по умолчанию указана "," Если у Вас другой разделитель, то передаете его в качестве второго параметра.
Затем обходите коллекцию значений полученного массива или, если не хотите использовать "цикл в цикле", присваиваете значения реквизитам "НоваяСтрока.Размер" и "НоваяСтрока.Цвет" используя индекс значений массива.
(8)Да, но у Вас, судя по скрину, три значения в строке - два числа и текст, и все разделены запятой. Соответственно, вернется массив с тремя значениями. Вероятно, что из значений с индексами 0 и 1 нужно будет строку собрать. Можно с помощью метода глобального контекста СтрСоединить
(9)Да вроде что-то получилось)Это просто тестовая,у меня будет другой разделитель. Но вот вопрос,как избавиться от индексов массива в пустых значениях?
(11) Тут нужно Вам самому уже смотреть, как корректно обработать полученный массив. Например, проверять по количеству элементов в массиве. Я не вижу все варианты, которые могут образоваться. Видел только скрин, по нему и писал информацию.
Напишите ваше сообщение
(14)Если я не прописываю МассивПодстрок.Добавить();
Причем 3 раза или 2,у меня выдется ошибка)А так вроде работает,просто интересно вообще как это работает то
Напишите ваше сообщение
(14)А,кажется понял,в общем,если пустое значение он не понимает чем заполнять и приходится прописывать каким значением заполнять массив)
Если я все правильно понял.
Индекс не должен выходить за пределы. Т.е. если у вас всего два элемента в массиве, то элемент с индексом 2 найден не будет, т.к. есть только элементы с индексами 0 и 1.
(20)Ну я пробовал без добавления,походу если характеристика отсутствует(цвет,размер) он выдет ошибку,а заполнять чем то нужно)Я думаю поэтому выдавало ошибку,что выходит за пределы массива
Получение значения свойств характеристики из наименования - это очень плохое решение. Воспользуйтесь тем, что значения всех свойств характеристик уже хранятся в базе.
Например, в Управлении торговлей следующий запрос вернет цвета всех характеристик.
ВЫБРАТЬ
ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка КАК Ссылка,
ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство КАК Свойство,
ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение КАК Значение
ИЗ
Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатурыДополнительныеРеквизиты
ГДЕ
ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство = &СвойствоЦвет
Аналогичным образом можно получить все размеры.
Соединяя полученные две таблицы с самой характеристикой, Вы получите значения свойств как отдельные колонки в таблице.
Напишите ваше сообщение
(25)Ваш запрос у меня не работает в Рознице,точнее там пустые значения(
А так да...Оказывается что-то хранится)Буду думать.
Спасибо