Имя: Пароль:
1C
1С v8
Обращение к реквизиту.
0 Novostruev
 
03.08.13
14:55
Добрый день. Недавно начал изучать 1С и вот такой вопрос возник:

Имеется справочник Контрагент, с реквизитом ПроцентСкидки.
Также имеется документ ПриходнаяНакладная, с реквизитом Контрагент (с ссылкой на справочник).

Нужно , чтобы при изменении поля Контрагент в форме документа, ПроцентСкидки записывался в табличную часть документа. Как мне в форме получить ссылку на выбранный в поле контрагент ?? Я понял, что на клиенте я к нем не могу обратиться(к справочнику) и не могу считать реквизит справочника. Но можно получить ссыль и в общем модуле получить нужный реквизит. Как мне получить эту ссылку ??

И второй небольшой вопрос. Опять же в форме, я могу обратиться "Элементы.Контрагент" и "объект.Контрагент". В чем разница между ними, к чем у я именно обращаюсь в этих случаях ??
1 GROOVY
 
03.08.13
15:28
Элементы.Контрагент - это элемент формы. Его можно скрыть, сделать недоступным, покрасить в разные цвета.
Объект.Контрагент - это данные формы. Данные формы содержат ссылку на элемент справочника и его представление.

Именно передавая в серверную процедуру данные формы - мы можем по ссылке получить значения реквизитов.
2 Novostruev
 
04.08.13
08:48
Спасибо большое за пояснение, все работает =)
3 Novostruev
 
04.08.13
10:16
Решил не создавать новую тему, вопрос тот же, но уже связан с табличной частью документа.

Документ  ПриходнаяНакладаная.
Табличная часть - СписокНоменклатры.

При изменении поля Номенклатура из ТабЧасти, должна возвращаться цена продажи из справочника. С простым полем выбора(1 случай) у меня срабтало, а вот с ТЧ не получается.

обращаюсь -
ЦенаТовара = РаботаСоСправочниками.УзнатьЦенуТовара(Объект.СписокНоменклатуры.Номенклатура);

Не видит поле номенклатура.(хотя вроде как передаю ссылку на нее)

пробовал обращаться по номеру строки. Не видит реквизит справочника - ЦенаТовара.

НомерСтроки = Элементы.СписокНоменклатуры.ТекущаяСтрока;
    ЦенаТовара = РаботаСоСправочниками.УзнатьЦенуТовара(Объект.СписокНоменклатуры.НайтиПоИдентификатору(НомерСтроки));

Так как же в ТЧ теперь получить ссылку на справочник ?? =)
4 Ковычки
 
04.08.13
10:41
все делается без изменений конфигурации
5 Novostruev
 
04.08.13
11:13
Так почему-то не делается. Ошибку выдает. Где я не так написал ??
6 Orfin
 
04.08.13
11:35
Может так?
НомерСтроки = Элементы.СписокНоменклатуры.ТекущаяСтрока.НомерСтроки;
ЦенаТовара = РаботаСоСправочниками.УзнатьЦенуТовара(Объект.СписокНоменклатуры.НайтиПоИдентификатору(НомерСтроки));
7 Novostruev
 
04.08.13
11:53
пишет ошибку ((
{Документ.РасходнаяНакладная.Форма.ФормаДокумента.Форма(10)}: Значение не является значением объектного типа (НомерСтроки)
    НомерСтроки = Элементы.СписокНоменклатуры.ТекущаяСтрока.НомерСтроки;
8 Капитан О
 
04.08.13
11:56
&НаКлиенте
Процедура ТоварыСтрокаТЧПриИзменении(Элемент)
    КлиентскийМодуль.РассчитатьСтоимость(Элементы.Товары.ТекущиеДанные);
КонецПроцедуры

Процедура РассчитатьСтоимость(СтрокаТЧ) Экспорт
    СтрокаТЧ.Стоимость=СтрокаТЧ.Количество*СтрокаТЧ.Цена;
КонецПроцедуры
9 Novostruev
 
04.08.13
12:02
Мне не нужно считать стоимость. Мне нужно получиться в из ТабличнойЧасти получить ссылку на реквизит справочника. С полем ввода у меня получилось, но вот с ТЧ выдает почему-то ошибку
10 Novostruev
 
04.08.13
12:03
*Мне нужно получить из ТабличнойЧасти ссылку на реквизит
11 Капитан О
 
04.08.13
12:06
(9) не нужно считать стоимость - не считай
12 Novostruev
 
04.08.13
12:21
Мне не элемент формы нужен, а ссылка на реквизит справочника Номенклатура. Обратиться к этому реквизиту я могу через серверную функцию с ссылкой на элемент этого справочника. Так вот как именно получить эту ссылку из ТЧ ???
13 Капитан О
 
04.08.13
12:23
(12) я ни хрена не понял. вон тебе в качестве примера обращение к цене, количеству и стоимость текущей строки ТЧ. сформулируй вопрос
14 Любопытная
 
04.08.13
12:24
(12) на сервер отправь свою текущую строку, а на сервере уще СтрокаТЧ.Номенклатура и будет ссылка на элемент справочника. Что непонятно?
15 Капитан О
 
04.08.13
12:28
(14) дык ссылка бывает не только на сервере
16 Любопытная
 
04.08.13
12:32
(15) ты внимательно читай (12): "Обратиться к этому реквизиту я могу через серверную функцию..." Он один хрен на сервер пойдет, пусть сразу туда все тащит
17 Капитан О
 
04.08.13
12:35
(16) да, ты права
(12) отдавай на сервер свою номенклатуру
18 Novostruev
 
04.08.13
12:40
Сейчас все заново опишу, чего мне не понятно.
в Документе в ТабличнойЧасти нужно при изменении Номенклатуры получить значение реквизита ЦенаПродажи из справочника Номенклатура.

На клиенте есть только ссылка на справочник. А значение реквизита справочника ЦенаПродажи я получу через серверную функцию, так как на клиенте к нему нет доступа.(Ответ на самый первый мой пост). Мне нужна ссылка не на строку ТабличнойЧасти , а на реквизит справочника. До этого я заполнил поле Контрагент(поле выбора) и обращался к нему Объект.Контрагент - вот ссылка на элемент справочника Контрагент, и на серверной функции я считал его резквизит. Это работает. Но вот как получить ссылку на элемент справочника, но уже из ТЧ ??

код в модуле формы:

&НаКлиенте
Процедура СписокНоменклатурыНоменклатураПриИзменении(Элемент)
    СтрокаТЧ = Элементы.СписокНоменклатуры.ТекущиеДанные;
    ЦенаТовара = РаботаСоСправочниками.УзнатьЦенуТовара(СтрокаТЧ);
    СтрокаТЧ.Цена = ЦенаТовара*(100-ПроцентСкидки)/100;
    РаботаСДокументами.РасчитатьСумму(СтрокаТЧ);
КонецПроцедуры

А вот серверная функция :

Функция УзнатьЦенуТовара(Товар) Экспорт
    Возврат Товар.ЦенаПродажи;
КонецФункции
19 Капитан О
 
04.08.13
12:41
(18) нельзя цену продажи хранить в реквизите элемента. дальше советовать не вижу смысла
20 Капитан О
 
04.08.13
12:43
(19) хотя, не, вижу. ПолучитьПродажнуюЦену(Номенклатура) всего-то нужно переписать. и отдавать ей номенклатуру из текущей строки, а не всю строку целиком
21 Novostruev
 
04.08.13
12:47
Вот я подаю сроку

ЦенаТовара = РаботаСоСправочниками.УзнатьЦенуТовара(СтрокаТЧ.Номенклатура);

а как функцию переписать ?? Что ей не хватает ??
22 Капитан О
 
04.08.13
12:52
(21) запроса к РС ЦеныНоменклатуры ей не хватает
23 Novostruev
 
04.08.13
12:54
Запросом ?? я просто хотел без него попробовать, как с полем Контрагент, просто передать ссыль и считать реквизит, ну да ладно, запросом, так запросом. Спасибо большое за терпение ))
24 Капитан О
 
04.08.13
12:56
(23) осмысли (19)
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс