|
1c 8.3 УФ программное создание таблицы | ☑ | ||
---|---|---|---|---|
0
illiona
naïve
11.10.17
✎
05:47
|
Добрый день. Ниже представлен код создания таблицы
.............................................................. Группа = Справочники.Склады.НайтиПоНаименованию("КЛ",Истина); Запрос = Новый Запрос( "ВЫБРАТЬ | Номенклатура.Наименование КАК Наименование |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.КЛ = &КЛ"); Запрос.УстановитьПараметр("КЛ", Истина); РезультатЗапроса = Запрос.Выполнить(); ТЗ1 = Запрос.Выполнить().Выгрузить(); ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Номер"); Для Каждого СтрМассива Из ТЗ1 Цикл НаименованиеКолонки = СтрЗаменить(СтрМассива.Наименование," ",""); ТЗ.Колонки.Добавить(НаименованиеКолонки); КонецЦикла; //Опишем массив реквизитов МассивРеквизитов = Новый Массив; МассивТипаВыбора = Новый Массив; МассивТипаВыбора.Добавить(Тип("ТаблицаЗначений")); ОписаниеТипаВыбора = Новый ОписаниеТипов(МассивТипаВыбора); //Добавим в массив реквизитов таблицу значений МассивРеквизитов.Добавить(Новый РеквизитФормы("ДанныеФайла", ОписаниеТипаВыбора)); //Добавим в массив реквизитов колонки таблицы Для Каждого Колонка Из ТЗ.Колонки Цикл МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ДанныеФайла")); КонецЦикла; //Удаляем если существует таблица ЭлементТаблица = Элементы.Найти("ТаблицаДанныхФайла"); Если ЭлементТаблица <> Неопределено Тогда Элементы.Удалить(ЭлементТаблица); Иначе ИзменитьРеквизиты(МассивРеквизитов); КонецЕсли; //Добавим Таблицу на форму ТаблицаДанныхФайла = Элементы.Добавить("ТаблицаДанныхФайла", Тип("ТаблицаФормы")); ТаблицаДанныхФайла.ПутьКДанным = "ДанныеФайла"; ТаблицаДанныхФайла.Отображение = ОтображениеТаблицы.Список; массивТип = Новый Массив(); массивТип.Добавить(Тип("Число")); ОписаниеТиповСсылка = Новый ОписаниеТипов(массивТип,,,); //Добавим колонки Для Каждого Колонка Из ТЗ.Колонки Цикл НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), ТаблицаДанныхФайла); НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ПутьКДанным = "ДанныеФайла." + Колонка.Имя; КонецЦикла; Запрос1 = Новый Запрос( "ВЫБРАТЬ | Склады.Наименование КАК Наименование |ИЗ | Справочник.Склады КАК Склады |ГДЕ | Склады.Родитель=&Группа"); Запрос1.УстановитьПараметр("Группа", Группа); РезультатЗапроса1 = Запрос1.Выполнить(); Выборка1 = РезультатЗапроса1.Выбрать(); //Добавляем строки Пока Выборка1.Следующий() Цикл Строка = ТЗ.Добавить(); Строка.Номер = Выборка1.Наименование; КонецЦикла; ЗначениеВРеквизитФормы(ТЗ,"ДанныеФайла"); ............................................. Не получается ячейке присвоить тип число,постоянно тип нужно выбирать, потом только можно вводить число - это таблица для ввода данных. Еще попутно вопрос про ячейку в таблице, как можно одну разбить на две для ввода данных |
|||
1
perester
11.10.17
✎
05:53
|
ОписаниеЧисла = Новый ОписаниеТипов("Число",
Новый КвалификаторыЧисла(10, 0)) ТЗ.Колонки.Добавить("Номер", ОписаниеЧисла ); |
|||
2
illiona
naïve
11.10.17
✎
06:08
|
С типом ячейка получилось. Остался вопрос, как можно одну ячейку разбить на две для ввода данных
|
|||
3
perester
11.10.17
✎
06:16
|
(2) особо не понял, как это на две для ввода данных?
|
|||
4
illiona
naïve
11.10.17
✎
06:20
|
да для ввода данных
|
|||
5
perester
11.10.17
✎
06:31
|
(4) зачем две ячейки? как это должно выглядеть? при чем тут ввод данных?
|
|||
6
illiona
naïve
11.10.17
✎
06:52
|
Для того чтоб потом на основании этой таблицы потом документ создавался.
Или у колонии две строки под одним названием, в бух 3.0 у документа поступление услуг у номенклатуры так реализовано - там в одной ячейке номенклатура и содержание. |
|||
7
Рэйв
11.10.17
✎
06:55
|
(6)Добавь еще колонку.В одно поле все равно не внесешь два значения интерактивно.
|
|||
8
catena
11.10.17
✎
06:56
|
Скорее всего имеется в виду расположение в той же строке.
|
|||
9
illiona
naïve
11.10.17
✎
07:08
|
Да в той же строке
|
|||
10
catena
11.10.17
✎
07:14
|
(9)На сколько я могу судить, в !Ф это решается группой колонок.
|
|||
11
catena
11.10.17
✎
07:14
|
*в УФ
|
|||
12
illiona
naïve
11.10.17
✎
07:39
|
а как создать программно группировки?
|
|||
13
catena
11.10.17
✎
07:47
|
ВсеЭлементыФормы (FormAllItems)
Добавить (Add) Синтаксис: Добавить(<Имя>, <ТипЭлемента>, <Родитель>) Параметры: <Имя> (обязательный) Тип: Строка. Уникальное имя добавляемого элемента. <ТипЭлемента> (обязательный) Тип: Тип. Тип добавляемого элемента. <Родитель> (необязательный) Тип: ГруппаФормы; ТаблицаФормы; УправляемаяФорма. Родитель для добавляемого элемента. Если не указан, то добавляется на верхний уровень. Возвращаемое значение: Тип: ДекорацияФормы; ГруппаФормы; КнопкаФормы; ТаблицаФормы; ПолеФормы. Описание: Добавляет элемент в коллекцию. |
|||
14
perester
11.10.17
✎
07:48
|
а зачем все программно?
|
|||
15
illiona
naïve
12.10.17
✎
05:22
|
Программно, потому что склады по вертикали, номенклатура по горизонтали, и она может меняться, потому что номенклатура запросом выбирается по условию.
С построением таблица решила. Теперь другой вопрос появился, после вывода на форму,Названия столбцов всегда разное Как мне потом обратиться к наименованию колонки, чтоб считать данные? ЗначениеВРеквизитФормы(ТЗ,"ДанныеФайла"); |
|||
16
illiona
naïve
12.10.17
✎
07:38
|
Для Каждого ТекСтрока из ЭтаФорма.ДанныеФайла Цикл
Таблица = ЭтаФорма.ДанныеФайла.Выгрузить().Колонки; i=1; Пока i < Таблица.Количество() Цикл НоваяСтрока = ДокПриход.Товары.Добавить(); НазваниеКолонки = Таблица[i].Имя; Товар = Справочники.Номенклатура.НайтиПоНаименованию(НазваниеКолонки,Истина); НоваяСтрока.Номенклатура = Товар.Ссылка; //НоваяСтрока.Количество = ТекСтрока. ; // как обратиться к значению в строке i = i+1; КонецЦикла; КонецЦикла Коллекцию колонок получила, как обратиться теперь к значению в строке? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |