Вход | Регистрация


1С:Предприятие ::

Метки:

Программирование 1с 8.2 ПОМОГИТЕ ПОЖАЛУЙСТА!!!

Я
   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
винигрет в мозгах... курить Радченко до посинения...
   Fragster
 
2 - 23.07.12 - 19:04
а тут варианта два - либо поле ввода в ячейку поместить, либо просто накалякать текст
   Господин ПЖ
 
3 - 23.07.12 - 19:06
(1) + в 8-ке разделили объекты носители данных и реквизиты забинденные на них... уже сюрприз
   Господин ПЖ
 
4 - 23.07.12 - 19:07
>реквизиты забинденные на них

я хотел сказать "элементы формы"
   MiracMC
 
5 - 23.07.12 - 19:12
вот поясните мне, 7-мерошнику...
в 7.7 на форму добавлялась "ТаблизаЗначений". Что ей в 8-рке больше подходит?

(3) а то что разделили - я уже заметил.. но просто не могу все это в голову уложить...
(1) да читаю уже не первый день книги по этому поводу... многое осилил... но тут просто капец какой то.

заранее благодарен.
   MiracMC
 
6 - 23.07.12 - 19:16
ах да... совсем забыл вот еще о чем...
на форму я добавляю "Табличное поле"... но ТипЗначения у него = "ТаблицаЗначений"...
по свойствам кого с ним работать? как с ТаблицаЗначений или как с "ТабличноеПоле" ?
   Oleg_Kag
 
7 - 23.07.12 - 19:20
Как с ТаблицейЗначений работать.
   МимохожийОднако
 
8 - 23.07.12 - 19:26
Добавь в обработку реквизит с типом Таблица значений.
а на форме Табличное поле свяжи с ним.
   MiracMC
 
9 - 23.07.12 - 19:29
(7)Хорошо...
Беру делаю вот так
ТЗ = ЭлементыФормы.Таблица \\ таблица - вставленно на форму ТабличноеПоле с ТипЗначения у него = "ТаблицаЗначений"

Для кол = 1 По 10 Цикл
ТЗ.Колонки.Добавить(кол);
КонецЦикла;

 // это работает
 
// далее делаю
Для стр = 1 по 10 Цикл
ТЗ.ДобавитьСтроку();
Сообщить(ТЗ.Количество());
КонецЦикла;

а в ответ получаю "Метод объекта не обнаружен (Количество)"

8) а можно поподробнее что и куда?
   izekia
 
10 - 23.07.12 - 19:29
Таблица = ЭлементФормы.Таблица;
Для кол = 1 По 10 Цикл
Таблица.Колонки.Добавить();
КонецЦикла;
Для стр = 1 По RowCount Цикл
строка = Таблица.ДобавитьСтроку();
Для кол = 1 По 10 Цикл
строка[кол] = Значение;// так же Таблица[стр][кол] = Значение;
 
 
КонецЦикла;
КонецЦикла;
 
  AdBlock убивает бесплатный контент
   MiracMC
 
11 - 23.07.12 - 19:30
(10) сейчас попробую...
   МимохожийОднако
 
12 - 23.07.12 - 19:30
(9)Что и куда "Добавь в обработку реквизит с типом Таблица значений. "
   izekia
 
13 - 23.07.12 - 19:38
можно так, что более похоже, но более бредово:
Таблица = ЭлементФормы.Таблица;
Для кол = 1 По 10 Цикл
Таблица.Колонки.Добавить();
КонецЦикла;
Для стр = 1 По RowCount Цикл
Таблица.ДобавитьСтроку();
Для кол = 1 По 10 Цикл
Таблица[стр][кол] = Значение;// так же Таблица[стр][кол] = Значение;
 
 
 
КонецЦикла;
КонецЦикла;
   izekia
 
14 - 23.07.12 - 19:39
просто чтобы было понятно что и откуда
   MiracMC
 
15 - 23.07.12 - 19:39
(10)
Процедура Сформировать(Кнопка)
   // Вставить содержимое обработчика.
 
    Таблица = ЭлементыФормы.Таблица;
    Для кол = 1 По 10 Цикл
        Таблица.Колонки.Добавить();
    КонецЦикла;
    Для стр = 1 По 10 Цикл
        строка = Таблица.ДобавитьСтроку();
        Для кол = 1 По 10 Цикл
            строка[кол] = 1;// так же Таблица[стр][кол] = Значение;
 
        КонецЦИкла;
    КонецЦИкла;
КонецПроцедуры

на моменте 
строка = Таблица.ДобавитьСтроку();

ошибку выдает: Метод объекта не обнаружен (ДобавитьСтроку)
   izekia
 
16 - 23.07.12 - 19:39
Таблица = Таблица;
   izekia
 
17 - 23.07.12 - 19:39
блин
   izekia
 
18 - 23.07.12 - 19:40
как у тебя данные таблицы называются?
короче эта строка не нужна
Таблица = ЭлементыФормы.Таблица;
   MiracMC
 
19 - 23.07.12 - 19:42
(18)
я заменил Таблица на Таблица1

получилось так
Таблица1 = ЭлементыФормы.Таблица;
    Для кол = 1 По 10 Цикл
        Таблица1.Колонки.Добавить();
    КонецЦикла;
    Для стр = 1 По 10 Цикл
        Таблица1.ДобавитьСтроку();
        Для кол = 1 По 10 Цикл
            Таблица1[стр][кол] = 1;// так же Таблица[стр][кол] = Значение;
 
        КонецЦикла;
    КонецЦикла;

но в ответ "Получение элемента по индексу для значения не определено"
   MiracMC
 
20 - 23.07.12 - 19:42
+ а колонки создает без проблем..
   Skylark
 
21 - 23.07.12 - 19:43
Ваше щастье, что вечер и все подразошлись по домам уже, а то бы услышали много нового о себе :-)
   MiracMC
 
22 - 23.07.12 - 19:43
вот в этом же и вопрос... КАК? сделать "безликую" адресацию...
   Skylark
 
23 - 23.07.12 - 19:43
В 8 для многих объектов существует такое понятие, как Коллекция.
   izekia
 
24 - 23.07.12 - 19:44
убери эту строку накуй Таблица1 = ЭлементыФормы.Таблица;
   Skylark
 
25 - 23.07.12 - 19:44
т.е. для обхода колонок и строк нужно использовать цикл вида

Для каждого СтрТаблицы из Таблица Цикл
   MiracMC
 
26 - 23.07.12 - 19:44
(21) ну я и не сомневаюсь)
(23) ну коллекция и что? ответте пожалуйста на вопрос из (6)

(24) пробую...
   izekia
 
27 - 23.07.12 - 19:45
просто вообще ее убери, не надо ничего ни на что менять
   MiracMC
 
28 - 23.07.12 - 19:45
(25) а я изначально не знаю, сколько я туда значений запихивать буду... таблице еще нет...
   Skylark
 
29 - 23.07.12 - 19:46
А потом как с таблицей сделаешь  все, что хочешь
ЭлементыФормы.Таблица.Обновить.... [не помню как точно этот метод называется]
   izekia
 
30 - 23.07.12 - 19:46
да и в конце:
ЭлементыФормы.Таблица.СоздатьКолонки();
   MiracMC
 
31 - 23.07.12 - 19:46
(27) + (24)

Метод объекта не обнаружен (ДобавитьСтроку)

просто в шоке)))))
   izekia
 
32 - 23.07.12 - 19:46
(29) => (30)
   MiracMC
 
33 - 23.07.12 - 19:47
(32) сек...
 
  AdBlock убивает бесплатный контент
   izekia
 
34 - 23.07.12 - 19:47
(31) посмотри что у тебя в поле данные написано у ЭлементыФормы.Таблица
   zippygrill
 
35 - 23.07.12 - 19:47
у таблицы значений немножко другой метод добавлении строк. к примеру:
для стр = 1 по 10 цикл
 новаяСтрока = ТвояТз.Добавить();
 новаяСтрока.ТвоеПоле1 = ТвоеЗначение1;
 новаяСтрока.ТвоеПоле2 = ТвоеЗначение2;
конецЦикла;
   izekia
 
36 - 23.07.12 - 19:47
(33) - это потом
   Skylark
 
37 - 23.07.12 - 19:48
Элемент формы "Табличное поле" и переменная типа "Таблица значений" это разные вещи. Совсем!
   izekia
 
38 - 23.07.12 - 19:49
автор на (34) ответь?
   Skylark
 
39 - 23.07.12 - 19:49
Изучать методом тыка такие очевидные вещи это пустая трата времени. Почитай книжки сперва.
   MiracMC
 
40 - 23.07.12 - 19:50
(35) да я понимаю.. но есть вот такая задача.. как ее решить то?
(34) Сообщить(ЭлементыФормы.Таблица) возвращает "ТабличноеПоле"
(37) а чего тогда по посту (6) назначается ТипДанных?
   MiracMC
 
41 - 23.07.12 - 19:50
как жеж тут все через ... ну Вы поняли через что))
   MiracMC
 
42 - 23.07.12 - 19:51
(39) дык если б с книг дошло, я бы тут не постил бы...
   zippygrill
 
43 - 23.07.12 - 19:51
в поле Данные твоего ТабличногоПоля должен быть твой реквизит обработки(реквизит типа ТаблицаЗначение)
   MiracMC
 
44 - 23.07.12 - 19:51
я целый день пытаюсь решить банальную задачу... капец...
   izekia
 
45 - 23.07.12 - 19:51
(40) открой форму, зайди в свойства табличного поля, посмотри поле Данные, напиши тут что там написано
   izekia
 
46 - 23.07.12 - 19:52
в восьмерке есть разделение между элементами интерфейса и реквизитами формы хранящими эти данные
   MiracMC
 
47 - 23.07.12 - 19:53
(45) = Таблица
   izekia
 
48 - 23.07.12 - 19:53
соответственно в свойствах элементов формы прописаны имена реквизитов которые хранят данные этих элементов
   izekia
 
49 - 23.07.12 - 19:54
в обработке напиши
Сообщить(ТипЗнч(Таблица)); и напиши что сообщит
 
  AdBlock убивает бесплатный контент
   kyrgyz
 
50 - 23.07.12 - 19:57
(0) В нашем полку прибыло. Не унывай. Я тоже так же отчеты простые стругаю.
Похожую задачу кук у тебя дали сегодня. Надо из списка выбрать доки по которым надо сделать отчет. Вот и будет занятие  сексом точнее мозг семёрочный ломать будем.
   MiracMC
 
51 - 23.07.12 - 19:57
(49) = Таблица значений
   izekia
 
52 - 23.07.12 - 19:58
пля
   MiracMC
 
53 - 23.07.12 - 19:58
(50) +1
   izekia
 
54 - 23.07.12 - 19:59
Для кол = 1 По 10 Цикл
        Таблица.Колонки.Добавить();
КонецЦикла;
Для стр = 1 По 10 Цикл
    Таблица.ДобавитьСтроку();
    Для кол = 1 По 10 Цикл
        Таблица[стр][кол] = 1;// так же Таблица[стр][кол] = Значение;
 
    КонецЦикла;
КонецЦикла;
ЭлементыФормы.Таблица.СоздатьКолонки();

вот это напиши в обработчике без своих включений
   Skylark
 
55 - 23.07.12 - 20:00
Вот вам пример несчастные

    МояТаблица = Новый ТаблицаЗначений;
    
    Значение = "Пример";
    КоличествоКолонок = 5;
    КоличествоСтрок = 5;
    
    Для Сч = 1 По КоличествоКолонок Цикл
        МояТаблица.Колонки.Добавить("Колонка" + Строка(Сч));
    КонецЦикла;
    
    Для Сч1 = 0 По КоличествоСтрок-1 Цикл
        НовСтр = МояТаблица.Добавить();
        Для Сч = 1 По КоличествоКолонок Цикл
            НовСтр["Колонка" + Строка(Сч)] = Значение;
        КонецЦикла;
    КонецЦикла;    
    
    ЭлементыФормы.ТабличноеПоле1.Значение = МояТаблица;
    ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
    ЭлементыФормы.ТабличноеПоле1.ОбновитьСтроки();
   Skylark
 
56 - 23.07.12 - 20:00
(54) опередил :-)
   izekia
 
57 - 23.07.12 - 20:00
(50) это не мозг семерочный, а, простите меня, обыкновенная тупость и нежелание учиться и развиваться
   awa15
 
58 - 23.07.12 - 20:01
(6) У тебя есть 2 объекта:
1) табличное поле, которое лежит на форме
2) таблица значений, которая связана с этим табличным полем.
Посмотри, что у тебя написано в свойстве Данные табличного поля. Это имя таблицы значений. Если там написано, например, "Таблица", то в коде ты можешь просто обращаться к переменной Таблица, это таблица значений. А вот ЭлементыФормы.Таблица - это уже табличное поле.
Поэтому (54) должно сработать!
   MiracMC
 
59 - 23.07.12 - 20:01
(54)  Метод объекта не обнаружен (ДобавитьСтроку)

код:


Процедура Сформировать(Кнопка)
    Для кол = 1 По 10 Цикл
            Таблица.Колонки.Добавить();
    КонецЦикла;
    Для стр = 1 По 10 Цикл
        Таблица.ДобавитьСтроку();
        Для кол = 1 По 10 Цикл
            Таблица[стр][кол] = 1;// так же Таблица[стр][кол] = Значение;
 
     
        КонецЦикла;
    КонецЦикла;
    ЭлементыФормы.Таблица.СоздатьКолонки();    
КонецПроцедуры


и больше ничего!
   izekia
 
60 - 23.07.12 - 20:02
аааааааа
   izekia
 
61 - 23.07.12 - 20:02
лол
Таблица.Добавить();
   MiracMC
 
62 - 23.07.12 - 20:02
(60) и не говори...
   izekia
 
63 - 23.07.12 - 20:03
сижу ржу, блин автор сам СП не читает еще и всех запутал)
   izekia
 
64 - 23.07.12 - 20:04
ДобавитьСтроку - это из семерки, в восьмерке у всех коллекций метод как правило один: Добавить
   Skylark
 
65 - 23.07.12 - 20:04
(55) 100% работает
нужно только на форму добавить табличное поле с именем "ТабличноеПоле1" и больше ничего не делать!!!

в процедуре выполнить код из (55) и все будет - инфа 146%
   MiracMC
 
66 - 23.07.12 - 20:05
(64) ам... даже не знаю как сказать.. понимаю, что все должно работать, но теперь другая проблема...
   MiracMC
 
67 - 23.07.12 - 20:05
ой... нет проблемы...
   izekia
 
68 - 23.07.12 - 20:09
(65) вот это зачем так?
НовСтр["Колонка" + Строка(Сч)] = Значение;
   MiracMC
 
69 - 23.07.12 - 20:10
итак...
код (59) + правка из (61) выдает при первом выполнении "Индекс находится за границами массива"... на второй раз срабатывает, но строка 1 и колонка 1 пустые

код из (55) работает на ура! СПАСИБО!!!
   izekia
 
70 - 23.07.12 - 20:10
(69) а ну логично, коллекция с 0 начинается
   kyrgyz
 
71 - 23.07.12 - 20:11
(67) Как сделаешь опиши что как делал чтоб я поял сходу в чем была трабла. Хотя по ходу уже догадался.
Наша беде в том что мы сначала пытаемся делать потом смотрим мануал. Пошел изучать Радченнко и делать простую базу.
   izekia
 
72 - 23.07.12 - 20:11
Процедура Сформировать(Кнопка)
    Для кол = 0 По 9 Цикл
            Таблица.Колонки.Добавить();
    КонецЦикла;
    Для стр = 0 По 9 Цикл
        Таблица.Добавить();
        Для кол = 0 По Таблица.Колонки.Количество() - 1 Цикл
            Таблица[стр][кол] = 1;// так же Таблица[стр][кол] = Значение;
 
        КонецЦикла;
    КонецЦикла;
    ЭлементыФормы.Таблица.СоздатьКолонки();    
КонецПроцедуры
   MiracMC
 
73 - 23.07.12 - 20:12
(65) вот именно по этому (69) там так и написано. обращается по имени, а не по номеру...
   MiracMC
 
74 - 23.07.12 - 20:12
(72) не колонок- 1, а строк - 1
   MiracMC
 
75 - 23.07.12 - 20:13
у автора из (55) именно строк -1 написано
   izekia
 
76 - 23.07.12 - 20:14
(74) чтопростите?
   MiracMC
 
77 - 23.07.12 - 20:14
СПАСИБО ВАМ, БРАТЦЫ!!!
Спасли мой мозг от взрыва...

ведь что то похожее я крутил-вертел изначально..
казалось бы все просто, но, блин, не в этой жизни...
   MiracMC
 
78 - 23.07.12 - 20:15
(72) Для кол = 0 По Таблица.Колонки.Количество() - 1 Цикл

а суть в размере таблицы по количеству строк... у (55) Для Сч1 = 0 По КоличествоСтрок-1 Цикл
   izekia
 
79 - 23.07.12 - 20:15
(78) у меня другой вариант, он работает и попробуй понять его - пригодиться, а не пытаться меня поправить сейчас
   MiracMC
 
80 - 23.07.12 - 20:16
izekia

все равно ОГРОМНОЕ СПАСИБО!

(79) попробую и его... спс...
   MiracMC
 
81 - 23.07.12 - 20:17
(79) да... все работает...
завтра засяду за "понимание" того, что и как тут..
СПАСИБО!
   Asmody
 
82 - 23.07.12 - 20:19
и всего-то 80 постов…
   Asmody
 
83 - 23.07.12 - 20:20
завтра переходим к управляемым формам!
   Skylark
 
84 - 23.07.12 - 20:20
В былые времена посту к семнадцатому все решали...
   MiracMC
 
85 - 23.07.12 - 20:22
ну сори конечно...
но блин... мне не так туго давалась 1с 7.7, как это чудо... все ж блин по другому...
по сути переучиваться надо(

не обессудьте... сори...
   Skylark
 
86 - 23.07.12 - 20:24
С сайтом Миста веселей -
Восьмерку освоим в два раза быстрей!

:-))
   kyrgyz
 
87 - 23.07.12 - 20:25
(85) Не грусти и не робей. Зато мотивация освоить 1с82 у тебя повысилась в разы?
   Asmody
 
88 - 23.07.12 - 20:32
погоди, вот до запросов дело дойдёт… уууу!..
   kyrgyz
 
89 - 24.07.12 - 17:49
Короче попытался. Сздал обработку кинул реквизит таблица значений и пытаюсь как то второй объек присабачить к фломе опка ступор. ни хрена не получается. ужас!



Список тем форума
AdBlock убивает бесплатный контент   AdBlock убивает бесплатный контент
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит Тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
AdBlock убивает бесплатный контент