Получение реквизита справочника в табличную часть документа

0 / 0 / 0

Регистрация: 29.05.2014

Сообщений: 3

1

1C 8.x (тонкий)

Получение значения реквизита справочника в документ

29.05.2014, 12:17. Показов 64936. Ответов 22


Добрый день, есть вопрос
Как сделать чтобы реквизит табличной части документа получал данные из реквизита справочника.
Т.е. при изменении «ФИО» в табличной части документа подставлялись значения (ДатаРождения, Должность)из справочника (Сотрудники)

Есть справочник Сотрудники, реквизиты «Должность», «Дата рождения»

Есть документ в нем табличная часть «Налоги» и его реквизиты «ФИО» «Должность» «ДатаРождения»

если просто ссылаться через форму на значения справочника то в документе выводится визуально и ДатаРождения, и Должность, но на печати эти поля пустые и при установке условий они ни как не считываются, а как будто пустые

Прошу в поиск не посылать, т.к. пробывал уже много вариантов в т.ч. программно через функции

платформа 8.2



0



GreenkA

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.05.2014, 12:34

2

Mujinin, пропишите заполнение этих полей при изменении ФИО. Какая форма? Если управляемая, то значения получать придется на клиенте. Иначе — можно все в одной процедуре.
Пример для управляемой:

1C
1
2
3
4
5
6
7
8
9
10
11
&НаКлиенте
Процедура ФИОПриИзменении(Элемент)
  ТекСтрока = Элементы.Налоги.ТекущиеДанные;
  ТекСтрока.ДатаРождения = ПолучитьЗначениеРеквизитаНаСервере(ТекСтрока.ФИО,"ДатаРождения");
  ТекСтрока.Должность = ПолучитьЗначениеРеквизитаНаСервере(ТекСтрока.ФИО,"Должность");
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция ПолучитьЗначениеРеквизитаНаСервере(ИмяОбъекта, ИмяРеквизита)
  Возврат ИмяОбъекта[ИмяРеквизита];
КонецФункции



2



Mujinin

0 / 0 / 0

Регистрация: 29.05.2014

Сообщений: 3

29.05.2014, 12:41

 [ТС]

3

о мой спаситель….почему мне раньше этого никто не мог подсказать….я начал пол года назад и все время обходил это автозаполнение.

делал все тоже самое только «ФИО» в

1C
1
ТекСтрока.Должность = ПолучитьЗначениеРеквизитаНаСервере(ТекСтрока.ФИО,"Должность");

не выставлял



0



Anmut

0 / 0 / 0

Регистрация: 27.08.2015

Сообщений: 12

27.08.2015, 09:09

4

Не подскажите, а как сделать все тоже самое, но только у меня это не строки в ТЧ а реквизиты дока.

1C
1
2
3
4
5
6
7
&НаКлиенте
Процедура ФИОПриИзменении(Элемент)
    \ Что тут надо прописать?
  Объект.Подразделение = ПолучитьЗначениеРеквизитаНаСервере(ТекСтрока.ФИО,"Подразделение");
  Объект.Должность = ПолучитьЗначениеРеквизитаНаСервере(ТекСтрока.ФИО,"Должность");
    
КонецПроцедуры



0



SonicQ

286 / 186 / 18

Регистрация: 20.02.2012

Сообщений: 925

27.08.2015, 10:12

5

Anmut, я бы лучше изменял реквизиты объекта на сервере. Думаю так будет правильнее

1C
1
2
3
4
5
6
7
8
9
&НаКлиенте
Процедура ФИОПриИзменении(Элемент)
   ФИОПриИзмененииНаСервере();
КонецПроцедуры
 
&НаСервере
Процедура ФИОПриИзмененииНаСервере()
    Объект.Должность = ТутЧтоХотитеПолучайте_ЭтоСервер;
КонецПроцедуры



1



340 / 315 / 43

Регистрация: 20.08.2014

Сообщений: 1,242

Записей в блоге: 1

27.08.2015, 15:06

6

Цитата
Сообщение от SonicQ
Посмотреть сообщение

Думаю так будет правильнее

нет не правильнее и ведет к снижению производительности. Вы туда сю форму спакуете и отправите, добавите и потом все это полетит назад по сети.

Лучше серверный вызов делать в один раз, получать маленькие данные и заполнить на клиенте. Т.к. объет на форме уже заблокирован вами.



0



286 / 186 / 18

Регистрация: 20.02.2012

Сообщений: 925

27.08.2015, 17:28

7

1c-k,
чтобы потом получить надпись вида «Данный элемент заблокирован пользователем»
после чего данные не получить и форма просто висит



0



286 / 186 / 18

Регистрация: 20.02.2012

Сообщений: 925

27.08.2015, 17:41

8

1c-k, бесспорно, вариант с объект.Реквизит = на клиенте быстрее….
Но зачастую нужно не просто изменить один объект…

Миниатюры

Получение значения реквизита справочника в документ
 



1



1c-k

340 / 315 / 43

Регистрация: 20.08.2014

Сообщений: 1,242

Записей в блоге: 1

27.08.2015, 17:43

9

SonicQ, это с чего такие выводы?
Например на сервер ссылка слетала и оттуда ссылка пришла — 50байт.
А если перекидку на сервер, сколько слетало данных?

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
&НаКлиенте
Процедура ФИОПриИзменении(Элемент)
    Объект.Должность = ФИОПриИзмененииНаСервере(Объект.Ссылка);
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция ФИОПриИзмененииНаСервере(ОбъектСсылка)
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Должности.Ссылка
        |ИЗ
        |   Справочник.Должности КАК Должности
        |ГДЕ
        |   Должности.Ссылка = &Ссылка";
    
    Запрос.УстановитьПараметр("Ссылка", ОбъектСсылка);
    
    РезультатЗапроса = Запрос.Выполнить();
    Если РезультатЗапроса.Пустой() Тогда 
        Возврат Справочники.Должности.ПустаяСсылка();
    КонецЕсли
    
    РезультатЗапроса = РезультатЗапроса.Выбрать();
    
    РезультатЗапроса.Следующий();
    
    Возврат Результат.Ссылка;
КонецФункции

Добавлено через 1 минуту

Цитата
Сообщение от SonicQ
Посмотреть сообщение

Но зачастую нужно не просто изменить один объект…

за код ниже от меня программеры получают нагоняй.



1



286 / 186 / 18

Регистрация: 20.02.2012

Сообщений: 925

27.08.2015, 17:45

10

1c-k, а клиент при этом плачет, что при заполнении одного реквизита все остальные не заполнились автоматом…



1



340 / 315 / 43

Регистрация: 20.08.2014

Сообщений: 1,242

Записей в блоге: 1

27.08.2015, 17:47

11

SonicQ, ахахаха. Срочно учить матчасть вызовов в управляемом приложении и что и как там происходит с контекстами.

Добавлено через 1 минуту
SonicQ, ах да, в фрагменте кода на картинке там два раза дёргается сервер, вероятно туда обрабно большие объемы данных гонять это нормально.
А соединить в один серверный вызов никак нельзя?)



1



286 / 186 / 18

Регистрация: 20.02.2012

Сообщений: 925

27.08.2015, 17:48

12

1c-k, я специально для примера так сделал



1



340 / 315 / 43

Регистрация: 20.08.2014

Сообщений: 1,242

Записей в блоге: 1

27.08.2015, 17:50

13

SonicQ, этот пример как грится делают все программеры которые переходят с обычного приложения в управляемое.



1



SonicQ

286 / 186 / 18

Регистрация: 20.02.2012

Сообщений: 925

27.08.2015, 17:58

14

1c-k, однако именно

1C
1
2
3
4
5
6
7
8
9
&НаКлиенте
Процедура ФИОПриИзменении(Элемент)
   ФИОПриИзмененииНаСервере();
КонецПроцедуры
 
&НаСервере
Процедура ФИОПриИзмененииНаСервере()
    Объект.Должность = ТутЧтоХотитеПолучайте_ЭтоСервер;
КонецПроцедуры

реализовано в типовых конфигурациях, только там продолжения типа

1C
1
ПродажиСервер.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчетОрганизации, Объект.БанковскийСчетКонтрагента);



1



340 / 315 / 43

Регистрация: 20.08.2014

Сообщений: 1,242

Записей в блоге: 1

27.08.2015, 18:05

15

SonicQ, однако надо давать себе отчёт, почему и что в типовых конфигурациях сделано.
Партионный учёт УТ 10.3 например глючит и тормозит, а ведь изменения, которые надо сделать в двух местах — нагрузку снимает со всего сервера. Так что же, надо делать, как в типовой?

Добавлено через 45 секунд
SonicQ, а то что сделано в типовых, это проблемы типовых.
И к сожалению эти проблемы из-за вот таких вещей, становятся проблемами владельцев при больших объемах БД.



1



286 / 186 / 18

Регистрация: 20.02.2012

Сообщений: 925

27.08.2015, 18:09

16

1c-k, палка двух концов =)



1



340 / 315 / 43

Регистрация: 20.08.2014

Сообщений: 1,242

Записей в блоге: 1

27.08.2015, 18:19

17

SonicQ, нет. Тут надо подходить из разумности вызовов, дёрганья сервера, и т.п.
В данном случае всё банально и просто, как я выше писал и не надо гонять форму на сервер.
А есть случаи когда для расчетов уходит только таблица и возвращается только таблица. Был у меня документ, который именно так и работает. Потому как программеры писали &НаСервере всегда и везде не думая, что в итоге будет. А в документе 12+ табличных частей и около 6 из них под 100к записей имели да еще по 10-12 колонок.
Так, что к решаемой задаче надо подходить зная, как ведет себя платформа в разных контекстах и что происходит с этим.



1



0 / 0 / 0

Регистрация: 27.08.2015

Сообщений: 12

28.08.2015, 11:32

18

Читаю переписку «ассов» и чувствую себя полнейшим дураком в этих вопросах))). Я в програмировании 1с еще, если можно так сказать, новорожденный. Делаю себе индивидуальную конфу «с нуля» и понимаю, если бы вы ее увидели, то сто пудов я бы выслушал кучу слов не входящих в словарь русского языка.)))).
Спс за помощь, сейчас буду пытаться что-нибудь делать дальше, хотя еще не совсем понимаю что там надо дальше прописывать(((



0



1c-k

340 / 315 / 43

Регистрация: 20.08.2014

Сообщений: 1,242

Записей в блоге: 1

28.08.2015, 11:34

19

Цитата
Сообщение от Anmut
Посмотреть сообщение

Подскажите, пожалуйста, так правильно будет?

1C
1
2
3
4
5
6
&НаКлиенте
Процедура ФИОПриИзменении(Элемент)
  Объект.Должность = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФИО,"Должность");
  Объект.Подразделение = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФИО,"Подразделение");
  ОбновитьОтображениеДанных();
КонецПроцедуры

Это как вариант. Увидел бы написал как надо.



1



Anmut

0 / 0 / 0

Регистрация: 27.08.2015

Сообщений: 12

28.08.2015, 11:44

20

Спасибо огромное!!! сделал!!!

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
&НаСервереБезКонтекста
Функция ПолучитьЗначениеРеквизитаНаСервере(ИмяОбъекта, ИмяРеквизита)
  Возврат ИмяОбъекта[ИмяРеквизита];
КонецФункции
 
&НаКлиенте
Процедура МатериалыМатериалПриИзменении(Элемент)
    СтрокаТабличнойЧасти=Элементы.Материалы.ТекущиеДанные;
    СтрокаТабличнойЧасти.ЕдиницыИзмерения=ПолучитьЗначениеРеквизитаНаСервере(СтрокаТабличнойЧасти.Материал,"ЕдиницыИзмерения");
КонецПроцедуры
 
&НаКлиенте
Процедура ФИОПриИзменении(Элемент)
    Объект.Должность = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФИО,"Должность");
Объект.Подразделение = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФИО,"Подразделение");
КонецПроцедуры

Добавлено через 2 минуты
Не подскажешь? Сделал конструктором печати форму, все нормально работало. Сейчас решил переделать, кнопка в форме стоит в конфе, а запускаю 1с ее нет в доке..



0



Есть справочник Номенклатура, где хранится Наименование номенклатуры и ее СрокГодности в днях (30дн, 60дн и т.д.)

Есть документ РасходнаяНакладная с табличной частью ТабличнаяЧасть1, он заполняется на основании документа Заказ. В заказе нет СрокаГодности и это поле не заполняется.

Нужно из Номенклатуры по Наименованию вынести СрокГодности и записать это в ТЧ документа РасходжнаяНакладная

задан 15 фев 2019 в 6:49

paNda's user avatar

Вам срок годности нужно заполнять не в момент изменения номенклатуры, а в момент когда на основании заказа создается реализация.

Поэтому, нужно доработать алгоритм создания на основании (см. ОбработкаЗаполнения) и доработать заполнения табличной части реализации.

Это нужно для того, чтобы у Вас сроки годности были заполнены сразу, за 1 запрос, а не как вы предлагаете кодом (каждую позицию нужно будет перевыбрать, чтобы срок годности отобразился).

ответ дан 15 фев 2019 в 9:44

Павел Королев's user avatar

Решил сам свою проблему. Решение ниже, мб кому поможет.

&НаКлиенте
Процедура ТабличнаяЧасть1НоменклатураПриИзменении(Элемент)

строка=Элементы.ТабличнаяЧасть1.ТекущиеДанные; 
строка.СрокГодности=ПолучитьСрокГодности(строка.Номенклатура);


КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьСрокГодности(Номенклатура)

   Возврат Номенклатура.СрокГодности; 

КонецФункции

ответ дан 15 фев 2019 в 7:24

paNda's user avatar

paNdapaNda

191 серебряный знак5 бронзовых знаков

Значение реквизита справочника в табличной части документа

Я
   Murdoch

08.12.14 — 20:53

8.3

РазделРаботы — это колонка в ТЧ документа, содержит Родителя колонки ВидРаботы.

оба значения суть — элементы спр. Номенклатура

в 8.1 работал БЫ примерно такой код:

&НаКлиенте

Процедура РаботыВидРаботыПриИзменении(Элемент)

    // Вставить содержимое обработчика.

    Если Элемент <> Неопределено Тогда

        ТекДанные = ЭтаФорма.ТекущийЭлемент.ТекущиеДанные;

        ТекДанные.РазделРаботы = ТекДанные.ВидРаботы.Родитель;

    КонецЕсли;

КонецПроцедуры

НО!

в 8.3 не работает, т.к. нельзя обратиться к реквизитам колонки подобным образом.

а как обращаться ?

какие сейчас нужны финты ушами для элементарных вещей ?

Заранее спасибо за подробности.

  

Партнерская программа EFSOL Oblako

   Murdoch

1 — 08.12.14 — 20:55

Вот можно написать:

ТекДанные.РазделРаботы = ТекДанные.ВидРаботы;

но НЕЛЬЗЯ:

ТекДанные.РазделРаботы = ТекДанные.ВидРаботы.Родитель;

   фобка

2 — 08.12.14 — 20:56

Не..

Текданные = элементыформы.твояТЧ.текущиеданные;

   фобка

3 — 08.12.14 — 20:56

либо элемент.текущиеданные

   фобка

4 — 08.12.14 — 20:57

колонки должны быть добавлены на форме. Если колонка скрыта — в реквизитах формы установить галку «использовать всегда»

   Murdoch

5 — 08.12.14 — 20:58

ТекДанные = ЭтаФорма.ТекущийЭлемент.ТекущиеДанные;

вот эту строку какой заменить ?

   фобка

6 — 08.12.14 — 20:58

Я всё сказал, за сим всё

   Murdoch

7 — 08.12.14 — 20:58

я нахожусь в строке документа, при ее изменении.

   Murdoch

8 — 08.12.14 — 20:59

колонки добавлены, ничего не скрыто.

   Murdoch

9 — 08.12.14 — 21:02

{Документ.СметаНаОбъект.Форма.ФормаДокумента.Форма(6,15)}: Переменная не определена (ЭлементыФормы)

        ТекДанные = <<?>>ЭлементыФормы.Работы.ТекущиеДанные; (Проверка: Тонкий клиент)

   Murdoch

10 — 08.12.14 — 21:02

(6) твой совет выдает ошибку

   Murdoch

11 — 08.12.14 — 21:09

советы (6) бесполезны

ТекДанные = ЭтотОбъект.Элементы.Работы.ТекущиеДанные;

ТекДанные.РазделРаботы = ТекДанные.ВидРаботы.Родитель;

доступа к реквизитам нет, хотя в отладчике ТекДанные.ВидРаботы имеет тип СправочникСсылка.

как достать реквизит такого справочника ?

   Murdoch

12 — 08.12.14 — 21:12

РЕШЕНО!!!

Ответ для будущих поколений:

реквизиты можно достать только с сервера

вот код:

// Расчет суммы по строке

&НаКлиенте

Процедура РассчитатьСумму(СтрокаТабличнойЧасти)

      СтрокаТабличнойЧасти.сумма = СтрокаТабличнойЧасти.цена * СтрокаТабличнойЧасти.количество

КонецПроцедуры

// Подстановка цены

&НаКлиенте

Процедура ЗаполнитьЦену(СтрокаТабличнойЧасти)

      ЦенаТовара = ПолучитьЦенуТовара(СтрокаТабличнойЧасти.товар);

      СтрокаТабличнойЧасти.цена = ЦенаТовара;

      РассчитатьСумму(Элементы.товары.ТекущиеДанные);

КонецПроцедуры

&НаСервере

Функция ПолучитьЦенуТовара(товар)

      Возврат товар.цена;      

КонецФункции

&НаКлиенте

Процедура товарыколичествоПриИзменении(Элемент)

      РассчитатьСумму(Элементы.товары.ТекущиеДанные);

КонецПроцедуры

&НаКлиенте

Процедура товарыценаПриИзменении(Элемент)

      РассчитатьСумму(Элементы.товары.ТекущиеДанные);

КонецПроцедуры

&НаКлиенте

Процедура товарытоварПриИзменении(Элемент)

      ЗаполнитьЦену(Элементы.товары.ТекущиеДанные);

КонецПроцедуры

  

Murdoch

13 — 08.12.14 — 21:19

Для простоты, мой верхний код дополняется вызовом сервера.

&НаКлиенте

Процедура РаботыВидРаботыПриИзменении(Элемент)

    // Вставить содержимое обработчика.

    Если Элемент <> Неопределено Тогда

        ТекДанные = ЭтаФорма.ТекущийЭлемент.ТекущиеДанные;

        ТекДанные.РазделРаботы = ПолучитьРазделРабот(ТекДанные.ВидРаботы);

    КонецЕсли;

КонецПроцедуры

&НаСервере

Функция ПолучитьРазделРабот(Элемент)

    Возврат Элемент.Родитель;    

КонецФункции

Тема: Получение значения реквизита элемента из справочника в документ

  1. 17.05.2019, 09:54


    #1

    MasterLoma вне форума


    Гость форума


    Question Получение значения реквизита элемента из справочника в документ

    Доброго времени суток! У меня возникли некоторые трудности с получением значения реквизита из справочника в документ. Мне нужно, чтобы когда я в табличной части (документа) в реквизите «Номенклатура» выбирал какую-то номенклатуру, то в реквизит «Цена» табличной части, записывалась её цена из справочника. Для того, чтобы получить значение из справочника, как я понял, нужно создать функцию….А вот как прописать в функции то, что она должна возвращать цену какой-то номенклатуры?
    В справочнике «Номенклатура» у меня хранятся книги. Через предопределённые данные я создал группы (Жанры книг) и в каждом из жанров находятся элементы (книги) с информацией об авторе и тд.


  2. 17.05.2019, 10:38


    #2

    Margofs вне форума


    Пришел за помощью


    По умолчанию Re: Получение значения реквизита элемента из справочника в документ

    Какая конфигурация? на какой платформе?


  3. 17.05.2019, 10:54


    #3

    По умолчанию Re: Получение значения реквизита элемента из справочника в документ

    Цитата Сообщение от MasterLoma
    Посмотреть сообщение

    Доброго времени суток! У меня возникли некоторые трудности с получением значения реквизита из справочника в документ. Мне нужно, чтобы когда я в табличной части (документа) в реквизите «Номенклатура» выбирал какую-то номенклатуру, то в реквизит «Цена» табличной части, записывалась её цена из справочника. Для того, чтобы получить значение из справочника, как я понял, нужно создать функцию….А вот как прописать в функции то, что она должна возвращать цену какой-то номенклатуры?
    В справочнике «Номенклатура» у меня хранятся книги. Через предопределённые данные я создал группы (Жанры книг) и в каждом из жанров находятся элементы (книги) с информацией об авторе и тд.

    Цена — это реквизит справочника «Номенклатура»?
    Тогда можно обращаться без функции: Цена=Номенклатура.Цена;
    Это должно быть прописано в процедуре «ПриВыбореНоменклатуры», которая назначается колонке «Номенклатура»вашей табличной части


  4. 17.05.2019, 11:07


    #4

    Margofs вне форума


    Пришел за помощью


    По умолчанию Re: Получение значения реквизита элемента из справочника в документ

    на клиенте он заполняет табличную часть….. не обратиться он объектно!


  5. 17.05.2019, 11:10


    #5

    Margofs вне форума


    Пришел за помощью


    По умолчанию Re: Получение значения реквизита элемента из справочника в документ

    &НаКлиенте
    **************
    Для каждого стр из Объект.Товары Цикл /// к примеру, либо получать текущую строку табличной части
    Цена =ВернутьЦену(стр.Номенклат� �ра);
    **************************

    &НаСервере
    Функция ВернутьЦену(Товар)
    Если Не ЗНачениеЗаполнено(Товар) Тогда
    Возврат 0;
    КонецЕсли;

    Возврат Товар.Цена;
    КонецФункции


  6. Пользователь сказал cпасибо:


  7. 17.05.2019, 11:20


    #6

    Margofs вне форума


    Пришел за помощью


    По умолчанию Re: Получение значения реквизита элемента из справочника в документ

    Цитата Сообщение от Margofs
    Посмотреть сообщение

    &НаКлиенте
    **************
    Для каждого стр из Объект.Товары Цикл /// к примеру, либо получать текущую строку табличной части
    Цена =ВернутьЦену(стр.Номенклат� �ра);
    **************************

    &НаСервере
    Функция ВернутьЦену(Товар)
    Если Не ЗНачениеЗаполнено(Товар) Тогда
    Возврат 0;
    КонецЕсли;

    Возврат Товар.Цена;
    КонецФункции

    часть


  8. 17.05.2019, 12:23


    #7

    По умолчанию Re: Получение значения реквизита элемента из справочника в документ

    Цитата Сообщение от Margofs
    Посмотреть сообщение

    &НаКлиенте
    **************
    Для каждого стр из Объект.Товары Цикл /// к примеру, либо получать текущую строку табличной части
    Цена =ВернутьЦену(стр.Номенклат� �ра);
    **************************

    &НаСервере
    Функция ВернутьЦену(Товар)
    Если Не ЗНачениеЗаполнено(Товар) Тогда
    Возврат 0;
    КонецЕсли;

    Возврат Товар.Цена;
    КонецФункции

    Можно так:
    &НаКлиенте
    Процедура ТабличнаяЧасть1Номенклату� �аПриИзменении(Элемент)
    ТекущиеДанные = Элементы.ТабличнаяЧасть1.Т� �кущиеДанные;
    УИ=ТекущиеДанные.Номенклат ура.УникальныйИдентификат� �р();
    ТекущиеДанные.Цена=НайтиЦе ну(УИ);
    КонецПроцедуры
    &Насервере
    Функция НайтиЦену(Реквизит)
    ТекН=Справочники.Номенклат ура.ПолучитьСсылку(Реквизи т);
    Возврат ТекН.Цена;

    КонецФункции


  9. Пользователь сказал cпасибо:


  10. 17.05.2019, 14:03


    #8

    MasterLoma вне форума


    Гость форума


    По умолчанию Re: Получение значения реквизита элемента из справочника в документ

    Цитата Сообщение от Margofs
    Посмотреть сообщение

    Какая конфигурация? на какой платформе?

    1С:Предприятие 8.3, учебная версия (8.3.6.2014)


  11. 17.05.2019, 14:04


    #9

    MasterLoma вне форума


    Гость форума


    По умолчанию Re: Получение значения реквизита элемента из справочника в документ

    Цитата Сообщение от Margofs
    Посмотреть сообщение

    &НаКлиенте
    **************
    Для каждого стр из Объект.Товары Цикл /// к примеру, либо получать текущую строку табличной части
    Цена =ВернутьЦену(стр.Номенклат� �ра);
    **************************

    &НаСервере
    Функция ВернутьЦену(Товар)
    Если Не ЗНачениеЗаполнено(Товар) Тогда
    Возврат 0;
    КонецЕсли;

    Возврат Товар.Цена;
    КонецФункции

    Спасибо попозже попробую таким образом сделать.


Похожие темы

  1. Ответов: 16

    Последнее сообщение: 24.03.2017, 10:41

  2. Ответов: 0

    Последнее сообщение: 14.01.2014, 12:53

  3. Ответов: 1

    Последнее сообщение: 24.04.2012, 13:36

  4. Ответов: 0

    Последнее сообщение: 28.01.2012, 12:20

  5. Ответов: 4

    Последнее сообщение: 11.11.2011, 08:35

Социальные закладки

Социальные закладки


Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
  • BB коды Вкл.
  • Смайлы Вкл.
  • [IMG] код Вкл.
  • [VIDEO] код Вкл.
  • HTML код Выкл.

Правила форума

Элексир, работать будет, но для 8.Х это идеологически неправильный метод, т.к. перебор будет на стороне клиента (если специально не сделать общий модуль с серверной обработкой), а 8.Х клиент-серверная и правильно ресурсоемкие задачи выполнять на сервере.

Gunslinger, ИМХО нагляднее всего (не в ущерб правильности решения) сделать запросом. Получится что-то вроде:

ТекстЗапроса=
«ВЫБРАТЬ
| НазваниеСправочника.Ссылка,
| НазваниеСправочника.Реквизит1,
| НазваниеСправочника.Реквизит2,
| НазваниеСправочника.Реквизит3
|ИЗ
| Справочник.НазваниеСправочника КАК НазваниеСправочника
|ГДЕ
| (НазваниеСправочника.Реквизит4 = &Параметр4)
| И (НазваниеСправочника.Реквизит5 = &Параметр5)
|
|СГРУППИРОВАТЬ ПО
| НазваниеСправочника.Ссылка,
| НазваниеСправочника.Реквизит1,
| НазваниеСправочника.Реквизит2,
| НазваниеСправочника.Реквизит3
|»;
Запрос=Новый Запрос(ТекстЗапроса);
Запрос.Параметры.Вставить(«Параметр4», РеквизитДокумента4);
Запрос.Параметры.Вставить(«Параметр5», РеквизитДокумента5);
Выборка=Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
// Заполняем табличную часть
Стр=ТабличнаяЧастьДокумента.Добавить();
Стр.Реквизит1=Выборка.Реквизит1;
// …
КонецЦикла;

Не забудь заменить заглушки на реальные названия справочника и реквизитов

Войти или зарегистрироваться

8.х Получить реквизит элемента справочника в табличную часть управляемой формы документа

Тема в разделе «Конфигурирование на платформе «1С:Предприятие 8″», создана пользователем Сергей081983, 4 мар 2017.




0/5,
Голосов: 0
  1. TopicStarter Overlay

    Сергей081983

    Offline

    Сергей081983

    Регистрация:
    3 июл 2016
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1

    Здравствуйте,

    как программно обратиться к реквизиту справочника из управляемой формы документа?

    1С:Предприятие 8.3 (8.3.7.1873)

    Последнее редактирование: 4 мар 2017

    Сергей081983,
    4 мар 2017
    #1
  2. TopicStarter Overlay

    Сергей081983

    Offline

    Сергей081983

    Регистрация:
    3 июл 2016
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1

    Мне просто надо вместе с выбором номенклатуры в колонку цена проставить реквизит цена этого выбранного элемента справочника.


    Сергей081983,
    4 мар 2017
    #2
(Вы должны войти или зарегистрироваться, чтобы ответить.)
Показать игнорируемое содержимое
Похожие темы

  1. denmember

    8.х
    Добавление записи в табличную часть элемента справочника

    denmember,
    19 дек 2006
    , в разделе: Конфигурирование на платформе «1С:Предприятие 8»
    Ответов:
    4
    Просмотров:
    6.178
    denmember
    19 дек 2006

  2. doniel

    7.7
    Вывод реквизита справочника в табличную часть документа

    doniel,
    17 сен 2010
    , в разделе: Общие вопросы «1С:Предприятие 7.7»
    Ответов:
    28
    Просмотров:
    5.617
    doniel
    22 сен 2010

  3. mila1231

    8.х
    Добавление элементов в табличную часть документа из справочника.

    mila1231,
    10 июн 2016
    , в разделе: Конфигурирование на платформе «1С:Предприятие 8»
    Ответов:
    5
    Просмотров:
    2.317
    mila1231
    20 июн 2016

Загрузка…
Ваше имя или e-mail:
У Вас уже есть учётная запись?
  • Нет, зарегистрироваться сейчас.
  • Да, мой пароль:
  • Забыли пароль?

Запомнить меня


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Поиск

  • Искать только в заголовках
Сообщения пользователя:

Имена участников (разделяйте запятой).

Новее чем:
  • Искать только в этой теме
  • Искать только в этом разделе
    • Отображать результаты в виде тем

Быстрый поиск

  • Последние сообщения

Больше…

1

2

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Декстер

Дата регистрации: 16.11.2005
Сообщений: 33

Помогите. Как при выборе реквизита в шапке документа вставить весь столбец из справочника в столбец табличной части документа.

np

Дата регистрации: 18.09.2004
Сообщений: 185

Сформулируйте точнее…,опишите контекст.

Декстер

Дата регистрации: 16.11.2005
Сообщений: 33

У меня такая проблема, как заполнить табличную часть документа из справочника дело вот в чем. Документ называется Лимитно заборная карта и когда при выборе материала в шапке документа становиться актиным реквиз СкладПолучатель там выбираем склад и после этого хотелось чтобы когда мы вибираем СкладПолучатель то столбцы и все строки из подчиненного справочника Номенклатура Заполнили всю табличную часть.

ValeraH

Дата регистрации: 31.03.2004
Сообщений: 264

«У меня в одной из баз в процедуре ОбработкаПодбора документа такой кусок:<br> Если ТекТовар.ВидТовара=Перечисление.ВидыТоваров.Комплект Тогда<br> Кмп=СоздатьОбъект(«Справочник.Комплектация»);<br> Кмп.ИспользоватьВладельца(ТекТовар);<br> Кмп.ВыбратьЭлементы();<br> Пока Кмп.ПолучитьЭлемент()>0 Цикл <br> Если (Кмп.ПометкаУдаления()=1) тогда<br> Продолжить;<br> КонецЕсли;<br> НоваяСтрока();<br> Товар=Кмп.Товар;<br> Количество=Кмп.Количество; <br> РознЦена=Товар.Розн_Цена;<br> УстанЦеныРасх(Контекст);<br> Выч_суммы_накл(Контекст);<br> КонецЦикла;<br> Кмп=0; <br> Основание=СокрЛП(СокрЛП(Основание)+» «+СокрЛП(ТекТовар.Наименование));<br> Иначе<br><br>К примеру, менеджер выбрал товар «ТО-30″, и все запчасти и расходные материалы для данного ТО (перечисленные в подчиненном справочнике Комплектация) попадают в документ.<br>»

Декстер

Дата регистрации: 16.11.2005
Сообщений: 33

А можно увидеть всю эту процедуру

ValeraH

Дата регистрации: 31.03.2004
Сообщений: 264

ОбработкаПодбора это Предопределенная процедура, она есть и в твоём документе, её надо только подкорректировать. Моя может сильно отличаться, возникнут проблемы.

Декстер

Дата регистрации: 16.11.2005
Сообщений: 33

Ну все равно я бы хотел увидеть твою процедуру может пригодиться на будущеее если ты конечно не против!

ValeraH

Дата регистрации: 31.03.2004
Сообщений: 264

«На форме документа лежит кнопка «Подбор по каталогу» с вызовом процедуры Подбор()<br>//————————————————<br>Процедура Подбор()<br> ОткрытьПодбор(«Товары»,»ДляПодбора»);<br>КонецПроцедуры<br>//————————————————<br>Процедура ОбработкаПодбора(ТекТовар) <br> Если ТекТовар.ВидТовара=Перечисление.ВидыТоваров.Комплект Тогда<br> Кмп=СоздатьОбъект(«Справочник.Комплектация»);<br> Кмп.ИспользоватьВладельца(ТекТовар);<br> Кмп.ВыбратьЭлементы();<br> Пока Кмп.ПолучитьЭлемент()>0 Цикл <br> Если (Кмп.ПометкаУдаления()=1) тогда<br> Продолжить;<br> КонецЕсли;<br> НоваяСтрока();<br> Товар=Кмп.Товар;<br> Количество=Кмп.Количество; <br> РознЦена=Товар.Розн_Цена;<br> УстанЦеныРасх(Контекст);<br> Выч_суммы_накл(Контекст);<br> КонецЦикла;<br> Кмп=0; <br> Основание=СокрЛП(СокрЛП(Основание)+» «+СокрЛП(ТекТовар.Наименование));<br> Иначе<br> Если Константа.ЗапрашиватьКоличество=Перечисление.Булево.Да Тогда<br> Кол=1;<br> Если ВвестиЧисло(Кол,»Введите количество»,10,0)=1 Тогда<br> НоваяСтрока();<br> Товар=ТекТовар;<br> Количество=Кол;<br> Иначе<br> Возврат;<br> КонецЕсли;<br> Иначе<br> НоваяСтрока();<br> Товар=ТекТовар;<br> Количество=1;<br> КонецЕсли;<br> УстанЦеныРасх(Контекст);<br> Выч_суммы_накл(Контекст);<br> АктивизироватьСтроку(); <br> КонецЕсли;<br>КонецПроцедуры<br>//————————«

Декстер

Дата регистрации: 16.11.2005
Сообщений: 33

А ты бы не мог пояснить строку : Если ТекТовар.ВидТовара=Перечисление.ВидыТоваров.Комплект тогда.

ValeraH

Дата регистрации: 31.03.2004
Сообщений: 264

У меня в справочнике Товары (Номенклатура) есть реквизит ВидТовара (Товар, Услуга, Комплект…) Если выбран Товар, у которого данный реквизит = «Комплект», то в табличную часть документа заносится подчиненный справочник к данному товару.

Понравилась статья? Поделить с друзьями:
  • Получить загранпаспорт в белгороде островского время работы
  • Получить реквизиты справочника по значению одного реквизита
  • Поменялись ли реквизиты для оплаты страховых взносов для ип
  • Поменять реквизиты для получения детского пособия через мфц
  • Поменять реквизиты для получения пенсии на ребенка инвалида