Имя: Пароль:
1C
 
Аналог select into @Var в Запросе
0 Humandra
 
06.11.08
21:40
Здравствуйте! Прошу помощи новичку в 1С.
Работала непосредственно с БД и языками типа T-SQL (точнее, PL/SQL Oracle).
Появилась необходимость решить одну задачу в 1С, а я не в зуб ногой :)
Есть функция, которая принимает параметр - ссылку на документ.
Эта функция должна бы делать то, для чего на PL/SQL я бы написала запрос типа (упрощенно):
select sum(field1) // некое числовое поле
 into var1 // переменная
 from my_docum // документ 1С
 where id_doc = &param // некий первичный ключ(Документ.Ссылка?)

а потом над переменной Var1 произвела бы определенные действия
  var1 := var1 * 10; // к примеру
и вернула результат.
 return var1;

Как бы это сделать в 1С? Агрегированные данные по этому числовому полю в никаких регистрах не хранятся.
1 ТелепатБот
 
гуру
06.11.08
21:40
2 Господин ПЖ
 
06.11.08
21:46
я ничо не понял...

но вроде

Запрос = Новый Запрос%

Запрос.Текст = "....
ГДЕ Блабла.Автор = &Автор";

Запрос.УстановитьПараметр("Автор", ссылканаавтора);
3 Господин ПЖ
 
06.11.08
21:47
Запрос = Новый Запрос;
4 Kalambur
 
06.11.08
21:47
Пиши проще, мы же не аракловцы, так... деревня.
Скажи что хочешь чтобы  получилось,а то последнее предложение ставит в тупик...
5 ptiz
 
06.11.08
21:47
"ВЫБРАТЬ СУММА(поле1) * 10 КАК Поле1
ИЗ Документ.ВидДокумента"

и берешь первую строку из результата запроса
6 BabySG
 
06.11.08
21:48
Конструктор запроса запускаем и там все делаем мышкой.
Для понятия, что происходит - нажимаем периодически кнопку Запрос.
7 Kalambur
 
06.11.08
21:48
(2)Есть предположение что дело просто запросом не обойдеться, говорит же,БДшница бывшая :)
8 dk
 
06.11.08
21:50

Процедура Моя(СсылкаНаДокумент)

    Var1 = СсылкаНаДокумент.Товары.Итог("Количество");
    Var1 = Var1 *10;

КонецПроцедуры
9 Злобный Фей
 
06.11.08
21:51
гы
10 Господин ПЖ
 
06.11.08
21:52
однако без стакана не понять простых вещей...
11 Humandra
 
06.11.08
22:04
Ой, ребята - совсем заклевали :) Я вот тоже деревня, только оракловая :) Не получается у меня проще объяснить, так как знаю я 1С ровно 1 день... вот сейчас сижу, документацию читаю...
Скажем так - в форму списка документа я добавила поле, не хранимое, а вычисляемое.
В событии ПриПолученииДанных туда пишу результат функции - это получилось, результат функции выводится.

Процедура ДокументСписокПриПолученииДанных(Элемент, ОформленияСтрок)
 Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
   ЯчейкаМоеПоле = ОформлениеСтроки.Ячейки.МоеПоле;
   ЯчейкаМоеПоле.ОтображатьТекст = Истина;
   ЯчейкаМоеПоле.Текст = ПолучитьСуммуПоПолю(ОформлениеСтроки.ДанныеСтроки.Ссылка);
 КонецЦикла;
КонецПроцедуры

Вот сама функция, как видите, сейчас она возвращает просто стринг, а должна в зависимости от переданной ссылки возвращать разные суммы. То что закомментировано, не работает, да и не должно работать. Так вот как сделать, чтобы работало?

Функция ПолучитьСуммуПоПолю(МойДокументСсылка)
   
 //Запрос = Новый Запрос;
 //Запрос.УстановитьПараметр("парамИдентиф", МойДокументСсылка.НекоеСсылочноеПоле);

 //Запрос.Текст =
   //"ВЫБРАТЬ СУММА(МоеЗначение) КАК СуммаПоПолю
   //|ИЗ ДругойМойДокумент
   //|ГДЕ ДругойМойДокумент.Ссылка = &парамИдентиф";

 //Запрос.Выполнить();
 //Возврат СуммаПоПолю;
 Возврат 'Тест';
КонецФункции
12 Злобный Фей
 
06.11.08
22:12
Запрос.Текст =

   "ВЫБРАТЬ СУММА(МоеЗначение) КАК СуммаПоПолю

   |ИЗ Документ.ДругойМойДокумент

   |ГДЕ Ссылка = &парамИдентиф";

Таблица = Запрос.Выполнить().Выгрузить();
Возврат ?(Таблица.Количество() = 0,0,Таблица[0].СуммаПоПолю);

//где ДругойМойДокумент - вид документа. Чета вроде типа того
13 Humandra
 
06.11.08
22:13
(5) ptiz, я вроде бы запрос сам написала, у меня как раз проблема с тем, чтобы взять первую строку в запросе в переменную
14 Господин ПЖ
 
06.11.08
22:15
15 Kalambur
 
06.11.08
22:18
Ладно, попробую и я стелепатировать...

Процедура ЫЫЫ(ТутСцылкаНадокумент)
  Запрос = Новый Запрос;
  Запрос.Текст = "
  | док.ссылка как документ
  | СУММА(поле1) * 10 КАК Поле1
  | ИЗ
  | Документы.Док как док
  | ГДЕ
  | документ = &ДокументПраметр
   
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Поле1);
КонецЦикла;
16 Kalambur
 
06.11.08
22:19
+15 забыл параметр запроса описать, но все же я так понял основа внизу :)
17 Господин ПЖ
 
06.11.08
22:21
задумался...

если женщине трудно понять мужчину, то женщина-ораклоид никогда не поймет 1С-ника?
18 Злобный Фей
 
06.11.08
22:21
(16) А исчо у тя вот тут ошибко:    | Документы.Док как док
:)
19 Kalambur
 
06.11.08
22:24
(18) :) ладно, ладно, все халявное не может быть качественным )
20 Humandra
 
06.11.08
22:24
Ребята, спасибо - вы таки меня поняли :)
По крайней мере, идею я поняла, пошла пробовать :)
21 Злобный Фей
 
06.11.08
22:24
(19) Факт :). Я забыл на 10 умножить ))
22 Господин ПЖ
 
06.11.08
22:25
а где кстати фотка?!
23 Злобный Фей
 
06.11.08
22:26
(20) Обязательно сообщи резльтаты!
24 Господин ПЖ
 
06.11.08
22:26
совсем не та Миста стала... Основы зыбываем
25 Злобный Фей
 
06.11.08
22:26
(22) Пля, все расслабились.. Где ты раньше был?!
26 Kalambur
 
06.11.08
22:28
(21) :)
(20) ты заходи почаще , мы все добрые как (23) :) и фото не забудь!
27 Господин ПЖ
 
06.11.08
22:28
(25) склероз... старый стал
28 Humandra
 
06.11.08
22:46
Ур-ра! Оно работает! :)
Спасибо огромное всем!
ЗЫ: а фотку - не вопрос, куда слать? :)
29 Господин ПЖ
 
06.11.08
22:47
(28) фотку слать в личную карточку. Фотошоп и длинные юбки сурово караются!
30 Злобный Фей
 
06.11.08
22:50
(29) +1
31 Humandra
 
06.11.08
22:58
Пожалуйста - и даже с небольшой обнаженкой! :D
32 Господин ПЖ
 
06.11.08
23:00
(31) блиииин... а я повелся
33 Humandra
 
06.11.08
23:01
Что характерно - ни фотошопа, ни длинных ЮБОК! :D
34 Господин ПЖ
 
06.11.08
23:02
разбила вдрызг все мечты... молодая интересная незамужняя ораклистка-москвичка-богачка...


ЗЫ а юбка длинная
35 Humandra
 
06.11.08
23:04
(34) Нету там длинных юбок! *Возмущенно* Там длинное ПЛАТЬЕ! :)))
36 Господин ПЖ
 
06.11.08
23:04
(33) фигасе... а вы там кто? кого держат или кто держит?
37 Злобный Фей
 
06.11.08
23:05
нененене! так не честно
38 Господин ПЖ
 
06.11.08
23:08
(35) это уже тонкости женские - колготки-чулки, крем увлажняющий-отшелушивающий, пилинг-наждак и прочие несущественные разницы
39 Humandra
 
06.11.08
23:09
(36) Даю честное комсомольское - я женского полу! :)
40 Kalambur
 
06.11.08
23:09
(39) не верю!
41 Humandra
 
06.11.08
23:10
(40) Мамой клянусь!(с)
42 Humandra
 
06.11.08
23:11
А вообще, меня тут за флуд не убьют? :) Типа профессиональная тема все таки :)
43 Господин ПЖ
 
06.11.08
23:12
(39) по фотке не видно... там даже от невесты торчит одна нога... это ни о чем не говорит. Мою ногу если побрить и запихнуть в туфельку 45,5 размера тоже можно изящно сфотографировать.

Какие ваши доказательства?! (с) Красная жара
44 Humandra
 
06.11.08
23:15
Эх - что за жизнь пошла - ни во что не ставят честное слово леди! Уйду я от вас, злые вы! (с) :)))
45 Kalambur
 
06.11.08
23:16
(44) Ну вот,только пришла и уже уходит...
46 Господин ПЖ
 
06.11.08
23:19
(45) мы его раскололи. Под маской ноги невесты прятался здоровенный негрила
47 Злобный Фей
 
06.11.08
23:21
(46) Или митёк, пьяный и бородатый )
48 Humandra
 
06.11.08
23:34
Шовинюги! Если девушка - так что, уже и ораклистом быть не моги? *Уже совсем возмущенно* Между прочим, еще из фотки должно быть быть понятно, что я не блондинка! :)))))
49 Злобный Фей
 
06.11.08
23:38
(48) Не, шовинисты это совсем про другое..
50 MRAK
 
07.11.08
08:41
(0) 1совский обход выборки больше сходен с такой оракловой конструкцией:
for var1 in (select sum(field1) f from my_docum t where t.id_doc = &param) loop
var1.f := var1.f * 10;
end loop;

то есть, даже если отобран один элемент, его все-равно надо обходить циклично или явно указывать через  Выборка.Получить(0).
51 Леха Дум
 
07.11.08
09:35
(50) а что констукция типа

Выбора = Запрос.Выполнить.Выбрать();
Выборка.Следующий();
Блаблабла(Выборка.ТвоеПоле);

для одного отобранного элемента уж не работает?
52 MRAK
 
07.11.08
09:39
(51) ну и так можно. но опять же, цикличность, Выборка. Хоть и одна итерация.
а в (0)-то другая конструкция показана.
53 Aprobator
 
07.11.08
10:06
(48) Не уходи - это все черная зависть. Не у всех красота и ум в один флакон помещаются :)
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой