Имя: Пароль:
1C
1С v8
Арифметическая прогрессия
0 Tolya1223
 
13.02.14
18:47
Доброго времени суток, столкнулся с проблемой.
Прошу совета и помощи у всех форумчаней. Вообщем, нужно сделать программу(в объекте Обработка) которая при вводе значений(в поля: A1, n, d) вычисляла арифметическую прогрессию и выводила в отдельную таблицу(n, An). Построить форму не проблема, но с кодом полная печаль, пробовал уже разные варианты и ничего не выходит...( Кто, что подскажет?
1 Wobland
 
13.02.14
18:48
накорябай свою версию алгоритма на любом языке
2 Tolya1223
 
13.02.14
18:49
&НаКлиенте
Перем A1;
&НаКлиенте
Перем d;
&НаКлиенте
Перем n;      
&НаКлиенте
Процедура АПриИзменении(Элемент)
    // Вставить содержимое обработчика.
        А1=Элемент;    
    Сообщить("Эбать!");
КонецПроцедуры

&НаКлиенте
Процедура dПриИзменении(Элемент)
    d=Элемент;    
    Сообщить("Эбать!");
КонецПроцедуры

&НаКлиенте
Процедура nПриИзменении(Элемент)
    n=Элемент;    
КонецПроцедуры
&НаКлиенте
Процедура Команда1(Команда)
    i = Новый ОписаниеТипов("Число");     
    Сообщить("Эбать!");
    МояТЗ = Новый ТаблицаЗначений;     // создаем новую таблицу значений, хранящуюся в переменной "МояТЗ"
    МояТЗ.Колонки.Добавить("n"); // создаем колонку "Фамилия"
    МояТЗ.Колонки.Добавить("An");
    Для i = 1 По n Цикл  
     НоваяСтрока = МояТЗ.Добавить();
     НоваяСтрока.n = i;
     НоваяСтрока.An = A1+(i-1)*d;;
     i=i+1;
    КонецЦикла;
    Сообщить(МояТЗ);
КонецПроцедуры
3 Tolya1223
 
13.02.14
18:50
(2)
извините за маты, просто уже не выдерживал проверяя отладчиком =D
4 Wobland
 
13.02.14
18:50
Сообщить("Эбать!");
крававец, блин
5 Wobland
 
13.02.14
18:51
i = Новый ОписаниеТипов("Число");
это типа int i? мне нравится
6 Tolya1223
 
13.02.14
18:53
(5)
мне кажется ему можно вначале просто присвоить значение 0 и все, верно?
7 Wobland
 
13.02.14
18:53
ПриИзменении идут лесом, схематично вроде нормально. покури РеквизитФормыВЗначение и наоборот
8 Wobland
 
13.02.14
18:53
(6) мне кажется, инициализация делается тут:  Для i = 1 По n Цикл
9 Wobland
 
13.02.14
18:57
что-то типа
об=РеквизитФормыВЗначение("Объект");
заполняешь об.ТЗ
ЗначениеВРеквизит(об)
и усё
10 Tolya1223
 
13.02.14
18:57
Получился такой код, но критует на "Новый ТаблицаЗначений", мол "Тип не определен"
&НаКлиенте
Перем A1;
&НаКлиенте
Перем d;
&НаКлиенте
Перем n;      

&НаКлиенте
Процедура Команда1(Команда)
    i = 0;     
    МояТЗ = Новый ТаблицаЗначений;    
    МояТЗ.Колонки.Добавить("n");
    МояТЗ.Колонки.Добавить("An");
    Для i = 1 По n Цикл  
     НоваяСтрока = МояТЗ.Добавить();
     НоваяСтрока.n = i;
     НоваяСтрока.An = A1+(i-1)*d;;
     i=i+1;
    КонецЦикла;
    Сообщить(МояТЗ);
КонецПроцедуры
11 Wobland
 
13.02.14
18:58
нужные тебе "переменные" - это реквизиты формы. на сервере добываешь их с клиента, производишь манипуляции, отдаёшь клиенту обратно
12 Wobland
 
13.02.14
18:59
и объявление переменных в началевыкинь к русалкам
13 Tolya1223
 
13.02.14
19:43
(12)
Покрутил код как ты и говорил, но что то туговато
вот такая у меня форма http://pixs.ru/showimage/Bezimyanni_6288273_10862367.png
вот код который типа получился, походу где то, что то провтыкал
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
    А1=РеквизитФормыВЗначение("А1");
    d=РеквизитФормыВЗначение("d");
    n=РеквизитФормыВЗначение("n");
КонецПроцедуры


&НаСервере
Процедура Команда1(Команда)
    i = 0;    
    Для i = 1 По n Цикл  
     НоваяСтрока = Результат.Добавить();
     НоваяСтрока.n = i;
     НоваяСтрока.An = А1+(i-1)*d;
     i=i+1;
    КонецЦикла;
    Сообщить(Результат);
КонецПроцедуры
14 Wobland
 
13.02.14
19:45
мда. тут намёки уже не помогут, похоже. терпи до утра или жди кого-то ещё
15 Tolya1223
 
13.02.14
20:02
(14)
Так лучше?
&НаСервере
Процедура Команда1(Команда)
    А1=РеквизитФормыВЗначение("А1");
    d=РеквизитФормыВЗначение("d");
    n=РеквизитФормыВЗначение("n");
    i = 0;    
    Для i = 1 По n Цикл  
     N = i;
     Ан = А1+(i-1)*d;
     i=i+1;
    КонецЦикла;
КонецПроцедуры
16 Wobland
 
13.02.14
20:04
(15) &НаКлиенте. и тогда уже без РеквизитФормыВЗначение, пускай клиент всё считает ;)
17 Tolya1223
 
13.02.14
20:07
(16)
Так не выйдет, он выдает ошибку о том что переменная не определена =(
18 Tolya1223
 
13.02.14
20:08
Просто не видит их...
19 Tolya1223
 
13.02.14
22:04
Можно ли, что бы сообщение "Сообщить" вылетело на клиенте?
&НаСервере
Процедура Команда1(Команда)
    А1=РеквизитФормыВЗначение("А1");
    d=РеквизитФормыВЗначение("d");
    n=РеквизитФормыВЗначение("n");    
    i = 0;    
    Для i = 1 По n Цикл  
     An = А1+(i-1)*d;

     Сообщить(An);
КонецЦикла;
    
КонецПроцедуры
20 Принт
 
13.02.14
22:09
(3) матофильтр тоже не выдержал
21 Wobland
 
14.02.14
06:00
(0) наслаждайся
Пакет доступен по ссылке: http://disk.tom.ru/rxgyfwy
22 Ислам
 
14.02.14
06:26
(2) >> МояТЗ.Колонки.Добавить("n"); // создаем колонку "Фамилия"


Похоже тут ошибка.
n - это не фамилия
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший