|
v7: Таблица для ввода данных, с программным добавлением строк. Как сделать? | ☑ | ||
---|---|---|---|---|
0
Сияющий Асинхраль
13.01.12
✎
13:54
|
Собственно знаю как редактировать строки в обычной таблице, а вот как сделать чтобы программно формировалась таблица для ввода данных (т.е. строки добавлялись программно) и ее можно было редактировать
|
|||
1
1Сергей
13.01.12
✎
13:57
|
не взлетит. Проще нарисовать бааааальшую таблицу заранее. а потом её заполнять
|
|||
2
1Сергей
13.01.12
✎
13:58
|
или йоксель. Но не уверен, может ли он это
|
|||
3
Сияющий Асинхраль
13.01.12
✎
13:59
|
Да вот я и сам не знаю как, но, сказать честно, очень давно видел такой вариант, если мне память не изменяет в сметной проге на семерке, но там очень много кода было и я не успел въехать, а сейчас я не знаю где искать...
|
|||
4
Ёпрст
13.01.12
✎
14:02
|
(0)Через Область Таблицы вестимо.
|
|||
5
1Сергей
13.01.12
✎
14:03
|
вот пример:
Процедура Сформировать() //* Заполняем шапку Таб=Таблица; Обл=Таб.Область("D1"); Обл.Значение=ПериодСтр(НачПериод,КонПериод); Обл=Таб.Область(4,1,259,259); Обл.Значение=""; Обл.РамкаСлева(0); Обл.РамкаСправа(0); Обл.РамкаСверху(0); Обл.РамкаСнизу(0); Обл.ЦветФона(-1); Обл.Контроль(5); Обл=Таб.Область(1,4,3,259); Обл.Значение=""; Обл.РамкаСлева(0); Обл.РамкаСправа(0); Обл.РамкаСверху(0); Обл.РамкаСнизу(0); Обл.ЦветФона(-1); Обл.Контроль(5); Таб.Область(1,1,1,1).ШиринаСтолбца(12); Таб.Область(1,2,1,2).ШиринаСтолбца(20); Таб.Область(1,3,1,3).ШиринаСтолбца(4); НомерСтроки=3; НомерКолонки=3; . . . //* список материалов перезаполним на основании запроса СписокМатериалов.УдалитьВсе(); Пока Запрос.Группировка(1)=1 Цикл СписокМатериалов.ДобавитьЗначение(Запрос.Материал); НомерКолонки = НомерКолонки + 1; //* Выводим в шапке колонку по материалу Материал=Запрос.Материал; Обл=Таб.Область(1,НомерКолонки,1,НомерКолонки); Обл.Значение = СокрЛП(Материал.Наименование); Обл.ВертикальноеПоложение(3); Обл.ГоризонтальноеПоложение(3); Обл.ОриентацияТекста(90); Обл.РамкаОбвести(3,3,3,3); //* Выводим остаток материала Обл=Таб.Область(2,НомерКолонки,2,НомерКолонки); Обл.Значение = Запрос.Остаток; Обл.РамкаОбвести(3,3,3,3); Обл.ЦветФона(255,255,196); //* выводим движения материала (кроме самой сшивки) Обл=Таб.Область(3,НомерКолонки,3,НомерКолонки); Обл.Значение = Запрос.ПрихКол-Запрос.РасхКол; Обл.РамкаОбвести(3,3,3,3); Обл.ЦветФона(255,255,223); КонецЦикла; . . . Пока Запрос.Группировка(1)=1 Цикл Пока Запрос.Группировка(2)=1 Цикл //* нужно отсеить пустую строку (она возникает, если есть ведомость с пустой табличной частью) Если (ПустоеЗначение(Запрос.Ордин)=1) И (ПустоеЗначение(Запрос.Матрац)=1) И (ПустоеЗначение(Запрос.Количество)=1) Тогда Продолжить; КонецЕсли; НомерСтроки = НомерСтроки + 1; //* выводим строку по матрасу Обл=Таб.Область(НомерСтроки,1,НомерСтроки,1); Обл.Значение=СокрЛП(Запрос.Ордин.Наименование); Обл.РамкаОбвести(3,3,3,3); Обл=Таб.Область(НомерСтроки,2,НомерСтроки,2); Обл.Значение=СтрЗаменить(СокрЛП(Запрос.Матрац.Наименование)," тк.",РазделительСтрок+"тк."); Обл.РамкаОбвести(3,3,3,3); Обл=Таб.Область(НомерСтроки,3,НомерСтроки,3); Обл.Значение=СокрЛП(Формат(Запрос.Количество,"Ч010.0")); Обл.РамкаОбвести(3,3,3,3); //* Заполняем таблицу заказов ТаблицаЗаказов.НоваяСтрока(); ТаблицаЗаказов.Ордин = Запрос.Ордин; ТаблицаЗаказов.Матрас = Запрос.Матрац; ТаблицаЗаказов.Количество = Запрос.Количество; ТаблицаЗаказов.Индекс = Запрос.Ордин.ПолныйКод()+"#"+Запрос.Матрац.ПолныйКод(); КонецЦикла; КонецЦикла; //* обводим ячейки и устанавливаем форматы Если (НомерСтроки>3)И(НомерКолонки>3) Тогда Обл=Таб.Область(4,4,НомерСтроки,НомерКолонки); Обл.НазначитьТип("Число",17,3); Обл.Формат("Ч017.3.,"); Обл.Доступность(1); Обл.РамкаСлева(3); Обл.РамкаСправа(3); Обл.РамкаСверху(3); Обл.РамкаСнизу(3); КонецЕсли; . . . //* выводим итоги внизу таблицы Обл=Таб.Область(НомерСтроки+1,3,НомерСтроки+1,3); Обл.Значение="Списано матрериалов:"; Обл.ГоризонтальноеПоложение(2); Обл=Таб.Область(НомерСтроки+2,3,НомерСтроки+2,3); Обл.Значение="Остаток на конец периода:"; Обл.ГоризонтальноеПоложение(2); Для х=1 по СписокМатериалов.РазмерСписка() Цикл //* подсчитываем НомерКолонкиИтога=х+3; НачОст=Число(Таб.Область(2,НомерКолонкиИтога,2,НомерКолонкиИтога).Значение); Оборот=Число(Таб.Область(3,НомерКолонкиИтога,3,НомерКолонкиИтога).Значение); Списано=0; Для у=4 по НомерСтроки Цикл Списано = Списано + Число(Таб.Область(у,НомерКолонкиИтога,у,НомерКолонкиИтога).Значение); КонецЦикла; //* Выводим сколько всего списано Обл=Таб.Область(НомерСтроки+1,НомерКолонкиИтога,НомерСтроки+1,НомерКолонкиИтога); Обл.Значение = Списано; Обл.РамкаОбвести(3,3,3,3); Обл.ЦветФона(255,255,223); Обл.Контроль(5); //* выводим конечный остаток Обл=Таб.Область(НомерСтроки+2,НомерКолонкиИтога,НомерСтроки+2,НомерКолонкиИтога); Обл.Значение = НачОст+Оборот-Списано; Обл.РамкаОбвести(3,3,3,3); Обл.ЦветФона(255,255,196); Обл.Контроль(5); КонецЦикла; //* последние настройки таблицы Таб.ОбластьПечати(1,1,НомерСтроки+2,НомерКолонки); Таб.ПовторятьПриПечатиСтроки(1,1); Таб.ПовторятьПриПечатиСтолбцы(1,3); Таб.Опции(0,0,3,3); //* сбрасываем флаг модифицированности УстановитьМодифицированность(0); КонецПроцедуры // Сформировать |
|||
6
SnarkHunter
13.01.12
✎
14:03
|
В Инталев КФ это реализовано
|
|||
7
Сияющий Асинхраль
13.01.12
✎
14:07
|
(5) Вроде бы понял идею, спасибо...
(6) Не покупать же ради этого Инталев :-) , мне собственно идея нужна была... |
|||
8
Ёпрст
13.01.12
✎
14:10
|
единственное, нарвешься на присвоении типа ячейки..
В лучшем случае, тока ограниченному числу ячеек сможешь тип назначить, неопределенный, к примеру, чтоб потом программно назначить нужный. |
|||
9
Сияющий Асинхраль
13.01.12
✎
14:11
|
(8) Понял. Разберусь, спасибо...
|
|||
10
Ёпрст
13.01.12
✎
14:11
|
а так, рвд - зло..
особенно "порадуешься", когда будешь свою поделку таскать из базы в базу |
|||
11
SnarkHunter
13.01.12
✎
14:14
|
Табличное поле с прямым вводом в ячейки рулит...
|
|||
12
Ёпрст
13.01.12
✎
14:15
|
(11) ну не всегда удобно оно, иногда, для большей наглядности, проще tabledoc или yoksel на форму кинуть.
Смотря что за задача. |
|||
13
Сияющий Асинхраль
13.01.12
✎
14:17
|
(10) Да, в общем то, согласен. Поэтому всегда предпочитал обычное табличное поле и расшифровку, просто клиент хочет именно такой режим, а здесь, хозяин-барин, его деньги...
(11)(12) +1 |
|||
14
Shaman100M
13.01.12
✎
14:33
|
(0) когда-то ковырялся с РВД. Вот, может пригодится.
https://rapidshare.com/#!download|407tl4|499990143|IB_ObjectsToTable_3518.ert|29|R~0|0|0|RapidPro expired. (34fa3175) |
|||
15
Сияющий Асинхраль
13.01.12
✎
14:36
|
(14) ОК. Спасибо. Гляжу...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |