|
Программирование 1с 8.2 ПОМОГИТЕ ПОЖАЛУЙСТА!!! | ☑ | ||
---|---|---|---|---|
0
MiracMC
23.07.12
✎
19:01
|
День добрый.
Я программирую 1С уже более 5 лет... но все время работал с 7.7. И вот пришел тот час, когда надо осваивать 8-рку... И все бы ничего, но вот не могу я понять, как с ней подружится. Элементарная задача, которая в 7.7 решалась за 2 секунды тут для меня стала просто камнем преткновения. Суть задачи такова: Надо заполнить "табличное поле" на форме (ничего более подходящего для этого не нашел) произвольными данными. Уперся я в то, что не получается назначить значение для определенной ячейки так, как это бы выглядило в 7-рке. Допустим есть 10*10, в котором надо что то поменять в конкретной ячейке. В 7-рке писалось бы так ТЗ.УстановитьЗначение(НомерСтроки,НомерКолонки,Значение) При этом НомерСтроки и НомерКолонки могли бы быть как переменными Для стр = 1 по 10 Цикл Для кол = 1 по 10 Цикл ТЗ.УстановитьЗначение(стр,кол,Значение); КонецЦикла; КонецЦикла; Так и четко назначенными Для стр = 1 по 50 Цикл ТЗ.УстановитьЗначение(стр,"Колонка1",Значение); ТЗ.УстановитьЗначение(стр,"Колонка2",Значение); ТЗ.УстановитьЗначение(стр,"Колонка3",Значение); ... КонецЦикла; а в 8-рке как? Я пробовал так: Таблица = ЭлементФормы.Таблица; Для кол = 1 По 10 Цикл Таблица.Колонки.Добавить(кол); КонецЦикла; Для стр = 1 По RowCount Цикл Таблица.ДобавитьСтроку(); Для кол = 1 По 10 Цикл Таблица[кол] = Значение; // так же Таблица[стр][кол] = Значение; КонецЦикла; КонецЦикла; Не идет( Подскажите пожалуйста! |
|||
1
Господин ПЖ
23.07.12
✎
19:04
|
винигрет в мозгах... курить Радченко до посинения...
|
|||
2
Fragster
гуру
23.07.12
✎
19:04
|
а тут варианта два - либо поле ввода в ячейку поместить, либо просто накалякать текст
|
|||
3
Господин ПЖ
23.07.12
✎
19:06
|
(1) + в 8-ке разделили объекты носители данных и реквизиты забинденные на них... уже сюрприз
|
|||
4
Господин ПЖ
23.07.12
✎
19:07
|
>реквизиты забинденные на них
я хотел сказать "элементы формы" |
|||
5
MiracMC
23.07.12
✎
19:12
|
вот поясните мне, 7-мерошнику...
в 7.7 на форму добавлялась "ТаблизаЗначений". Что ей в 8-рке больше подходит? (3) а то что разделили - я уже заметил.. но просто не могу все это в голову уложить... (1) да читаю уже не первый день книги по этому поводу... многое осилил... но тут просто капец какой то. заранее благодарен. |
|||
6
MiracMC
23.07.12
✎
19:16
|
ах да... совсем забыл вот еще о чем...
на форму я добавляю "Табличное поле"... но ТипЗначения у него = "ТаблицаЗначений"... по свойствам кого с ним работать? как с ТаблицаЗначений или как с "ТабличноеПоле" ? |
|||
7
Oleg_Kag
23.07.12
✎
19:20
|
Как с ТаблицейЗначений работать.
|
|||
8
Мимохожий Однако
23.07.12
✎
19:26
|
Добавь в обработку реквизит с типом Таблица значений.
а на форме Табличное поле свяжи с ним. |
|||
9
MiracMC
23.07.12
✎
19:29
|
(7)Хорошо...
Беру делаю вот так ТЗ = ЭлементыФормы.Таблица \\ таблица - вставленно на форму ТабличноеПоле с ТипЗначения у него = "ТаблицаЗначений" Для кол = 1 По 10 Цикл ТЗ.Колонки.Добавить(кол); КонецЦикла; // это работает // далее делаю Для стр = 1 по 10 Цикл ТЗ.ДобавитьСтроку(); Сообщить(ТЗ.Количество()); КонецЦикла; а в ответ получаю "Метод объекта не обнаружен (Количество)" 8) а можно поподробнее что и куда? |
|||
10
izekia
23.07.12
✎
19:29
|
Таблица = ЭлементФормы.Таблица;
Для кол = 1 По 10 Цикл Таблица.Колонки.Добавить(); КонецЦикла; Для стр = 1 По RowCount Цикл строка = Таблица.ДобавитьСтроку(); Для кол = 1 По 10 Цикл строка[кол] = Значение; // так же Таблица[стр][кол] = Значение; КонецЦикла; КонецЦикла; |
|||
11
MiracMC
23.07.12
✎
19:30
|
(10) сейчас попробую...
|
|||
12
Мимохожий Однако
23.07.12
✎
19:30
|
(9)Что и куда "Добавь в обработку реквизит с типом Таблица значений. "
|
|||
13
izekia
23.07.12
✎
19:38
|
можно так, что более похоже, но более бредово:
Таблица = ЭлементФормы.Таблица; Для кол = 1 По 10 Цикл Таблица.Колонки.Добавить(); КонецЦикла; Для стр = 1 По RowCount Цикл Таблица.ДобавитьСтроку(); Для кол = 1 По 10 Цикл Таблица[стр][кол] = Значение; // так же Таблица[стр][кол] = Значение; КонецЦикла; КонецЦикла; |
|||
14
izekia
23.07.12
✎
19:39
|
просто чтобы было понятно что и откуда
|
|||
15
MiracMC
23.07.12
✎
19:39
|
(10)
Процедура Сформировать(Кнопка) // Вставить содержимое обработчика. Таблица = ЭлементыФормы.Таблица; Для кол = 1 По 10 Цикл Таблица.Колонки.Добавить(); КонецЦикла; Для стр = 1 По 10 Цикл строка = Таблица.ДобавитьСтроку(); Для кол = 1 По 10 Цикл строка[кол] = 1; // так же Таблица[стр][кол] = Значение; КонецЦИкла; КонецЦИкла; КонецПроцедуры на моменте строка = Таблица.ДобавитьСтроку(); ошибку выдает: Метод объекта не обнаружен (ДобавитьСтроку) |
|||
16
izekia
23.07.12
✎
19:39
|
Таблица = Таблица;
|
|||
17
izekia
23.07.12
✎
19:39
|
блин
|
|||
18
izekia
23.07.12
✎
19:40
|
как у тебя данные таблицы называются?
короче эта строка не нужна Таблица = ЭлементыФормы.Таблица; |
|||
19
MiracMC
23.07.12
✎
19:42
|
(18)
я заменил Таблица на Таблица1 получилось так Таблица1 = ЭлементыФормы.Таблица; Для кол = 1 По 10 Цикл Таблица1.Колонки.Добавить(); КонецЦикла; Для стр = 1 По 10 Цикл Таблица1.ДобавитьСтроку(); Для кол = 1 По 10 Цикл Таблица1[стр][кол] = 1; // так же Таблица[стр][кол] = Значение; КонецЦикла; КонецЦикла; но в ответ "Получение элемента по индексу для значения не определено" |
|||
20
MiracMC
23.07.12
✎
19:42
|
+ а колонки создает без проблем..
|
|||
21
Skylark
23.07.12
✎
19:43
|
Ваше щастье, что вечер и все подразошлись по домам уже, а то бы услышали много нового о себе :-)
|
|||
22
MiracMC
23.07.12
✎
19:43
|
вот в этом же и вопрос... КАК? сделать "безликую" адресацию...
|
|||
23
Skylark
23.07.12
✎
19:43
|
В 8 для многих объектов существует такое понятие, как Коллекция.
|
|||
24
izekia
23.07.12
✎
19:44
|
убери эту строку накуй Таблица1 = ЭлементыФормы.Таблица;
|
|||
25
Skylark
23.07.12
✎
19:44
|
т.е. для обхода колонок и строк нужно использовать цикл вида
Для каждого СтрТаблицы из Таблица Цикл |
|||
26
MiracMC
23.07.12
✎
19:44
|
(21) ну я и не сомневаюсь)
(23) ну коллекция и что? ответте пожалуйста на вопрос из (6) (24) пробую... |
|||
27
izekia
23.07.12
✎
19:45
|
просто вообще ее убери, не надо ничего ни на что менять
|
|||
28
MiracMC
23.07.12
✎
19:45
|
(25) а я изначально не знаю, сколько я туда значений запихивать буду... таблице еще нет...
|
|||
29
Skylark
23.07.12
✎
19:46
|
А потом как с таблицей сделаешь все, что хочешь
ЭлементыФормы.Таблица.Обновить.... [не помню как точно этот метод называется] |
|||
30
izekia
23.07.12
✎
19:46
|
да и в конце:
ЭлементыФормы.Таблица.СоздатьКолонки(); |
|||
31
MiracMC
23.07.12
✎
19:46
|
(27) + (24)
Метод объекта не обнаружен (ДобавитьСтроку) просто в шоке))))) |
|||
32
izekia
23.07.12
✎
19:46
|
(29) => (30)
|
|||
33
MiracMC
23.07.12
✎
19:47
|
(32) сек...
|
|||
34
izekia
23.07.12
✎
19:47
|
(31) посмотри что у тебя в поле данные написано у ЭлементыФормы.Таблица
|
|||
35
zippygrill
23.07.12
✎
19:47
|
у таблицы значений немножко другой метод добавлении строк. к примеру:
для стр = 1 по 10 цикл новаяСтрока = ТвояТз.Добавить(); новаяСтрока.ТвоеПоле1 = ТвоеЗначение1; новаяСтрока.ТвоеПоле2 = ТвоеЗначение2; конецЦикла; |
|||
36
izekia
23.07.12
✎
19:47
|
(33) - это потом
|
|||
37
Skylark
23.07.12
✎
19:48
|
Элемент формы "Табличное поле" и переменная типа "Таблица значений" это разные вещи. Совсем!
|
|||
38
izekia
23.07.12
✎
19:49
|
автор на (34) ответь?
|
|||
39
Skylark
23.07.12
✎
19:49
|
Изучать методом тыка такие очевидные вещи это пустая трата времени. Почитай книжки сперва.
|
|||
40
MiracMC
23.07.12
✎
19:50
|
(35) да я понимаю.. но есть вот такая задача.. как ее решить то?
(34) Сообщить(ЭлементыФормы.Таблица) возвращает "ТабличноеПоле" (37) а чего тогда по посту (6) назначается ТипДанных? |
|||
41
MiracMC
23.07.12
✎
19:50
|
как жеж тут все через ... ну Вы поняли через что))
|
|||
42
MiracMC
23.07.12
✎
19:51
|
(39) дык если б с книг дошло, я бы тут не постил бы...
|
|||
43
zippygrill
23.07.12
✎
19:51
|
в поле Данные твоего ТабличногоПоля должен быть твой реквизит обработки(реквизит типа ТаблицаЗначение)
|
|||
44
MiracMC
23.07.12
✎
19:51
|
я целый день пытаюсь решить банальную задачу... капец...
|
|||
45
izekia
23.07.12
✎
19:51
|
(40) открой форму, зайди в свойства табличного поля, посмотри поле Данные, напиши тут что там написано
|
|||
46
izekia
23.07.12
✎
19:52
|
в восьмерке есть разделение между элементами интерфейса и реквизитами формы хранящими эти данные
|
|||
47
MiracMC
23.07.12
✎
19:53
|
(45) = Таблица
|
|||
48
izekia
23.07.12
✎
19:53
|
соответственно в свойствах элементов формы прописаны имена реквизитов которые хранят данные этих элементов
|
|||
49
izekia
23.07.12
✎
19:54
|
в обработке напиши
Сообщить(ТипЗнч(Таблица)); и напиши что сообщит |
|||
50
kyrgyz
23.07.12
✎
19:57
|
(0) В нашем полку прибыло. Не унывай. Я тоже так же отчеты простые стругаю.
Похожую задачу кук у тебя дали сегодня. Надо из списка выбрать доки по которым надо сделать отчет. Вот и будет занятие сексом точнее мозг семёрочный ломать будем. |
|||
51
MiracMC
23.07.12
✎
19:57
|
(49) = Таблица значений
|
|||
52
izekia
23.07.12
✎
19:58
|
пля
|
|||
53
MiracMC
23.07.12
✎
19:58
|
(50) +1
|
|||
54
izekia
23.07.12
✎
19:59
|
Для кол = 1 По 10 Цикл
Таблица.Колонки.Добавить(); КонецЦикла; Для стр = 1 По 10 Цикл Таблица.ДобавитьСтроку(); Для кол = 1 По 10 Цикл Таблица[стр][кол] = 1; // так же Таблица[стр][кол] = Значение; КонецЦикла; КонецЦикла; ЭлементыФормы.Таблица.СоздатьКолонки(); вот это напиши в обработчике без своих включений |
|||
55
Skylark
23.07.12
✎
20:00
|
Вот вам пример несчастные
МояТаблица = Новый ТаблицаЗначений; Значение = "Пример"; КоличествоКолонок = 5; КоличествоСтрок = 5; Для Сч = 1 По КоличествоКолонок Цикл МояТаблица.Колонки.Добавить("Колонка" + Строка(Сч)); КонецЦикла; Для Сч1 = 0 По КоличествоСтрок-1 Цикл НовСтр = МояТаблица.Добавить(); Для Сч = 1 По КоличествоКолонок Цикл НовСтр["Колонка" + Строка(Сч)] = Значение; КонецЦикла; КонецЦикла; ЭлементыФормы.ТабличноеПоле1.Значение = МояТаблица; ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); ЭлементыФормы.ТабличноеПоле1.ОбновитьСтроки(); |
|||
56
Skylark
23.07.12
✎
20:00
|
(54) опередил :-)
|
|||
57
izekia
23.07.12
✎
20:00
|
(50) это не мозг семерочный, а, простите меня, обыкновенная тупость и нежелание учиться и развиваться
|
|||
58
awa15
23.07.12
✎
20:01
|
(6) У тебя есть 2 объекта:
1) табличное поле, которое лежит на форме 2) таблица значений, которая связана с этим табличным полем. Посмотри, что у тебя написано в свойстве Данные табличного поля. Это имя таблицы значений. Если там написано, например, "Таблица", то в коде ты можешь просто обращаться к переменной Таблица, это таблица значений. А вот ЭлементыФормы.Таблица - это уже табличное поле. Поэтому (54) должно сработать! |
|||
59
MiracMC
23.07.12
✎
20:01
|
(54) Метод объекта не обнаружен (ДобавитьСтроку)
код: Процедура Сформировать(Кнопка) Для кол = 1 По 10 Цикл Таблица.Колонки.Добавить(); КонецЦикла; Для стр = 1 По 10 Цикл Таблица.ДобавитьСтроку(); Для кол = 1 По 10 Цикл Таблица[стр][кол] = 1; // так же Таблица[стр][кол] = Значение; КонецЦикла; КонецЦикла; ЭлементыФормы.Таблица.СоздатьКолонки(); КонецПроцедуры и больше ничего! |
|||
60
izekia
23.07.12
✎
20:02
|
аааааааа
|
|||
61
izekia
23.07.12
✎
20:02
|
лол
Таблица.Добавить(); |
|||
62
MiracMC
23.07.12
✎
20:02
|
(60) и не говори...
|
|||
63
izekia
23.07.12
✎
20:03
|
сижу ржу, блин автор сам СП не читает еще и всех запутал)
|
|||
64
izekia
23.07.12
✎
20:04
|
ДобавитьСтроку - это из семерки, в восьмерке у всех коллекций метод как правило один: Добавить
|
|||
65
Skylark
23.07.12
✎
20:04
|
(55) 100% работает
нужно только на форму добавить табличное поле с именем "ТабличноеПоле1" и больше ничего не делать!!! в процедуре выполнить код из (55) и все будет - инфа 146% |
|||
66
MiracMC
23.07.12
✎
20:05
|
(64) ам... даже не знаю как сказать.. понимаю, что все должно работать, но теперь другая проблема...
|
|||
67
MiracMC
23.07.12
✎
20:05
|
ой... нет проблемы...
|
|||
68
izekia
23.07.12
✎
20:09
|
(65) вот это зачем так?
НовСтр["Колонка" + Строка(Сч)] = Значение; |
|||
69
MiracMC
23.07.12
✎
20:10
|
итак...
код (59) + правка из (61) выдает при первом выполнении "Индекс находится за границами массива"... на второй раз срабатывает, но строка 1 и колонка 1 пустые код из (55) работает на ура! СПАСИБО!!! |
|||
70
izekia
23.07.12
✎
20:10
|
(69) а ну логично, коллекция с 0 начинается
|
|||
71
kyrgyz
23.07.12
✎
20:11
|
(67) Как сделаешь опиши что как делал чтоб я поял сходу в чем была трабла. Хотя по ходу уже догадался.
Наша беде в том что мы сначала пытаемся делать потом смотрим мануал. Пошел изучать Радченнко и делать простую базу. |
|||
72
izekia
23.07.12
✎
20:11
|
Процедура Сформировать(Кнопка)
Для кол = 0 По 9 Цикл Таблица.Колонки.Добавить(); КонецЦикла; Для стр = 0 По 9 Цикл Таблица.Добавить(); Для кол = 0 По Таблица.Колонки.Количество() - 1 Цикл Таблица[стр][кол] = 1; // так же Таблица[стр][кол] = Значение; КонецЦикла; КонецЦикла; ЭлементыФормы.Таблица.СоздатьКолонки(); КонецПроцедуры |
|||
73
MiracMC
23.07.12
✎
20:12
|
(65) вот именно по этому (69) там так и написано. обращается по имени, а не по номеру...
|
|||
74
MiracMC
23.07.12
✎
20:12
|
(72) не колонок- 1, а строк - 1
|
|||
75
MiracMC
23.07.12
✎
20:13
|
у автора из (55) именно строк -1 написано
|
|||
76
izekia
23.07.12
✎
20:14
|
(74) чтопростите?
|
|||
77
MiracMC
23.07.12
✎
20:14
|
СПАСИБО ВАМ, БРАТЦЫ!!!
Спасли мой мозг от взрыва... ведь что то похожее я крутил-вертел изначально.. казалось бы все просто, но, блин, не в этой жизни... |
|||
78
MiracMC
23.07.12
✎
20:15
|
(72) Для кол = 0 По Таблица.Колонки.Количество() - 1 Цикл
а суть в размере таблицы по количеству строк... у (55) Для Сч1 = 0 По КоличествоСтрок-1 Цикл |
|||
79
izekia
23.07.12
✎
20:15
|
(78) у меня другой вариант, он работает и попробуй понять его - пригодиться, а не пытаться меня поправить сейчас
|
|||
80
MiracMC
23.07.12
✎
20:16
|
izekia
все равно ОГРОМНОЕ СПАСИБО! (79) попробую и его... спс... |
|||
81
MiracMC
23.07.12
✎
20:17
|
(79) да... все работает...
завтра засяду за "понимание" того, что и как тут.. СПАСИБО! |
|||
82
Asmody
23.07.12
✎
20:19
|
и всего-то 80 постов…
|
|||
83
Asmody
23.07.12
✎
20:20
|
завтра переходим к управляемым формам!
|
|||
84
Skylark
23.07.12
✎
20:20
|
В былые времена посту к семнадцатому все решали...
|
|||
85
MiracMC
23.07.12
✎
20:22
|
ну сори конечно...
но блин... мне не так туго давалась 1с 7.7, как это чудо... все ж блин по другому... по сути переучиваться надо( не обессудьте... сори... |
|||
86
Skylark
23.07.12
✎
20:24
|
С сайтом Миста веселей -
Восьмерку освоим в два раза быстрей! :-)) |
|||
87
kyrgyz
23.07.12
✎
20:25
|
(85) Не грусти и не робей. Зато мотивация освоить 1с82 у тебя повысилась в разы?
|
|||
88
Asmody
23.07.12
✎
20:32
|
погоди, вот до запросов дело дойдёт… уууу!..
|
|||
89
kyrgyz
24.07.12
✎
17:49
|
Короче попытался. Сздал обработку кинул реквизит таблица значений и пытаюсь как то второй объек присабачить к фломе опка ступор. ни хрена не получается. ужас!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |