|
Помогите нубу | ☑ | ||
---|---|---|---|---|
0
Riddler
05.05.12
✎
23:33
|
Народ, помогите пожалуйста, пишу программу в 1с v8.2 для диплома. Суть проблемы:
1. Справочник "Номенклатура" Реквизиты: код, наименование(станд.), Цена. 2. Документ "Накладная" Реквизиты: Дата, Номер, Товар, Цена. В документе "Накладная" в реквизите "Товар" я выбираю товар из списка (реквизит связан со справочником), далее мне требуется чтобы значение реквизита "Цена" из справочника "Номенклатура" само подставилось в реквизит "Цена" уже в документе "Накладная". Мой код: &НаКлиенте Процедура ТоварПриИзменении(Элемент) Цена=Товар.Цена; КонецПроцедуры Выдает ошибку: {Документ.Накладная.Форма.ФормаДокумента.Форма(4,7)}: Переменная не определена (Товар) Цена=<<?>>Товар.Цена; (Проверка: Тонкий клиент) Объясните пожалуйста понятным совсем нубу языком, где мой фейл. И как мне следует исправить код, спасибо. |
|||
1
vicof
05.05.12
✎
23:36
|
Смотри на свойство ТекущиеДанные
|
|||
2
m-serg74
05.05.12
✎
23:38
|
Элемент - поле ввода, у него есть Значение, а кто есть Товар действительно ХЗ...
|
|||
3
НикДляЗапросов
05.05.12
✎
23:40
|
Зачем ты пишешь на упровляемых формах? делай попроще, чи ты 1С потом собрался заниматься?
|
|||
4
GROOVY
05.05.12
✎
23:40
|
Писец... Сколько можно?!
&НаКлиенте Процедура СписокТоваровТоварПриИзменении(Элемент) Стр = Элементы.СписокТоваров.ТекущиеДанные; Стр.Цена = ПолучитьЦенуТовара(Стр.Товар); РассчитатьСумму(); КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьЦенуТовара(Спр) //Возврат Спр.Цена; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Товары.Цена |ИЗ | Справочник.Товары КАК Товары |ГДЕ | Товары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Спр); РезультатЗапроса = Запрос.Выполнить(); Данные = РезультатЗапроса.Выбрать(); Данные.Следующий(); Возврат Данные.Цена; КонецФункции &НаКлиенте Процедура СписокТоваровЦенаПриИзменении(Элемент) РассчитатьСумму(); КонецПроцедуры &НаКлиенте Процедура СписокТоваровКоличествоПриИзменении(Элемент) РассчитатьСумму(); КонецПроцедуры &НаКлиенте Процедура РассчитатьСумму() Стр = Элементы.СписокТоваров.ТекущиеДанные; Стр.Сумма = Стр.Цена * Стр.Количество; КонецПроцедуры |
|||
5
Fragster
гуру
05.05.12
✎
23:43
|
даже в самой простой книжке по 8.2 это есть
|
|||
6
Fragster
гуру
05.05.12
✎
23:43
|
в 100500 примерах
|
|||
7
Riddler
05.05.12
✎
23:56
|
Я так и не понял, как должен выглядеть код процедуры, как присвоить значение реквизиту Цена из какого-то справочника?? Можно ли это сделать только на клиенте? не используя сервер
Я сомневаюсь что для такой простейшей ситуации, необходим здоровенный код, наверняка можно как-то просто это сделать, кто знает, напишите код, как примерно он должен выглядеть |
|||
8
m-serg74
05.05.12
✎
23:56
|
тебе (4) все достаточно доступно написал!!!
|
|||
9
НикДляЗапросов
05.05.12
✎
23:58
|
(7) Тебе такой ферзь написал, а ты не слушаешь... я его правда тоже не слушаю
|
|||
10
Riddler
05.05.12
✎
23:58
|
То есть для выполнения такой простейшей функции необходим таких размеров код, с использованием сервера?? А если у меня нет сервера, у мя прост на клиенте это выполняется
|
|||
11
НикДляЗапросов
06.05.12
✎
00:00
|
вот и про тоже накой ты заморочился с клиент сервером, тут смыслу понимать надо для чего оно вообще надо
|
|||
12
vs7719
06.05.12
✎
00:01
|
(10) А вдруг будет сервер, а код уже готов. Маштабируемость!
|
|||
13
Riddler
06.05.12
✎
00:03
|
Да какой там сервер, я на клиенте это сделать не могу, уже 2ой день бьюсь, никак не получается:<
НикДляЗапросов, как по-твоему мне надо решить мою проблему? |
|||
14
GROOVY
06.05.12
✎
00:03
|
На клиенте запрос к базе данных сделать нельзя.
|
|||
15
Азазелло
06.05.12
✎
00:04
|
(10) "А если у меня нет сервера, у мя прост на клиенте это выполняется"
И данные о ценах у тебя тоже на клиенте хранятся ? :) |
|||
16
НикДляЗапросов
06.05.12
✎
00:05
|
Я бы отошел от управляемых форм, но если не хочешь этого делать то слушай GROOVY он в этом деле знает толк
|
|||
17
НикДляЗапросов
06.05.12
✎
00:06
|
(14) на чтение или на запись или на то и другое?
|
|||
18
GROOVY
06.05.12
✎
00:08
|
(17) На клиенте есть только данные формы. С БД связи нет. Для чтения надо идти на сервер. Для записи надо конвертировать данные формы в прикладной объект (на сервере) и уже его писать в БД.
|
|||
19
GROOVY
06.05.12
✎
00:08
|
(13) Ты мне напиши чего не понятно в коде из (4). Я тебе объясню.
|
|||
20
Riddler
06.05.12
✎
00:11
|
(19) Для начала тупой вопрос: чтобы запиливать функции для сервера, мне нужно его как-то создавать предварительно?
|
|||
21
Азазелло
06.05.12
✎
00:11
|
(18) Да ладно! Хочешь сказать, что если на клиенте я сделаю, например, Объект.Дата = ТекущаяДата() и вызову Записать(), данные в БД не попадут? Хотя согласен, при этом произойдет вызов сервера.
|
|||
22
Riddler
06.05.12
✎
00:11
|
Или я сейчас могу функцию написать для сервера, и у меня все будет прекрасно работать
|
|||
23
GROOVY
06.05.12
✎
00:12
|
(21) ... и конвертация данных формы в прикладной объект.
|
|||
24
GROOVY
06.05.12
✎
00:12
|
(20) нет.
|
|||
25
GROOVY
06.05.12
✎
00:12
|
(22) Да
|
|||
26
Riddler
06.05.12
✎
00:13
|
(24) А то есть я просто в конфигураторе шпарю разные для клиента, для сервера, и потом все работает
|
|||
27
GROOVY
06.05.12
✎
00:14
|
(26) Ну как то так...
|
|||
28
Азазелло
06.05.12
✎
00:15
|
(26) Смотря что и где нашпарить :)
|
|||
29
Riddler
06.05.12
✎
00:15
|
(27) СписокТоваровТоварПриИзменении - "СписокТоваров" - имеется ввиду табличная часть да? а если просто реквизит то я пишу просто "ТоварПриИзменении"
|
|||
30
Riddler
06.05.12
✎
00:16
|
Стр = Элементы.СписокТоваров.ТекущиеДанные;
И соответственно тут "СписокТоваров" я тоже убераю, если у меня просто реквизит? |
|||
31
GROOVY
06.05.12
✎
00:17
|
(29) нет. Или в элементы формы. Мышкой тыркай на нужном реквизите и ищи в палитре свойств события. Тебе надо событие "ПриИзменении". Если просто процедуру описать то событие с ней не будет связано.
|
|||
32
GROOVY
06.05.12
✎
00:17
|
Или = Иди
|
|||
33
Phace
06.05.12
✎
00:17
|
(29) Внимательно изучи код в (4) там все есть
|
|||
34
GROOVY
06.05.12
✎
00:18
|
(30) Если товар не в табличной части то можно читать данные не из элементов формы, а из объекта "Объект.Товар".
|
|||
35
Riddler
06.05.12
✎
00:25
|
(34)
Процедура СписокТоваровТоварПриИзменении(Элемент) Стр = Элементы.СписокТоваров.ТекущиеДанные; Стр.Цена = ПолучитьЦенуТовара(Стр.Товар); РассчитатьСумму(); КонецПроцедуры Как я понял, смысл в том что тут переменная стр = строка в табл. части документа. И ей присваивается значение с помощью выполнения функции "ПолучитьЦенуТовара" на основе реквизитов подставляемого товара в реквизит "Товар". Да? |
|||
36
GROOVY
06.05.12
✎
00:27
|
"стр = строка в табл. части документа" Да
И ее свойству "Цена" присваивается значение с помощью функции. В функцию передаем товар. |
|||
37
Riddler
06.05.12
✎
00:29
|
А если у меня цена и товары в реквизитах, а не в табличной части, то у меня будет просто Цена=ПолучитьЦенуТовара (Объект.Товар)? Или как
|
|||
38
jsmith
06.05.12
✎
00:31
|
автор, иди лечись
|
|||
39
Riddler
06.05.12
✎
00:31
|
(38) Изыди демон, я разобраться пытаюсь
|
|||
40
jsmith
06.05.12
✎
00:34
|
(39) иди не позорься тупыми вопросами
|
|||
41
m-serg74
06.05.12
✎
00:35
|
ну да в сабже - помогите, в (4) помогли, ты до 40 уже догнал, а теперь все идите... я разбираюсь)))
|
|||
42
Riddler
06.05.12
✎
00:36
|
Ну дак пост (38) по-твоему мне как-то помочь может?
|
|||
43
jsmith
06.05.12
✎
00:38
|
(42) тебе уже ничего не поможет
|
|||
44
GROOVY
06.05.12
✎
00:40
|
(37) Сначала пробуй потом пости. Ответ: да.
|
|||
45
Азазелло
06.05.12
✎
00:41
|
(44) Ага, ща будет "Реквизит Цена не найден"
|
|||
46
Азазелло
06.05.12
✎
00:42
|
(45) а, гоню, не будет. просто и цена не отобразится в документе
|
|||
47
m-serg74
06.05.12
✎
00:42
|
))) пятница сквозь субботу в воскресенье...
|
|||
48
Riddler
06.05.12
✎
00:47
|
Ну кстати все отобразилось)))
|
|||
49
Riddler
06.05.12
✎
00:48
|
Ток там какая-то ошибка была типа "Преобразование к типу Число не может быть проведено"
|
|||
50
Riddler
06.05.12
✎
00:48
|
Но цена отобразилась, успех, спасибо))
|
|||
51
GROOVY
06.05.12
✎
00:48
|
(49) палишся... Тоньше троллить надо.
На какой строке трабла? |
|||
52
Riddler
06.05.12
✎
00:50
|
(51) Все, исправил, просто были неполадки с форматом реквизитов, везде где надо поставил число - ошибка больше не вылетает
|
|||
53
Riddler
06.05.12
✎
00:52
|
Все подставляет, еще и сумму считает, ваще найс) Ладно, конечно подставить кусок когда, изменив названия своих справочников это не сложно, но главное работает, дальше сам буду химичить, разбираться в структуре кода)
|
|||
54
Riddler
06.05.12
✎
00:53
|
Спасибо)
|
|||
55
Йохохо
06.05.12
✎
01:56
|
Стр.Цена это форма, она на клиенте
Товар.Цена это скрытое считывание из бд, низя |
|||
56
ILM
гуру
06.05.12
✎
10:12
|
(0) Пора запретить писать дипломы на 1С. Только время зря тратят - хорошее целое не получится, а плоого тут уже хватает.
Пусть лучше алгоритмы придумывают, блок-схемки всякие, только не надо программной реализации. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |