Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
13 Дек 2017, 16:10
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Получить ссылочный реквизит из документа в документе  (Прочитано 7833 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн beztrud

Здравствуйте! Платформа 8.2, управляемое приложение. Конфигурация самописная. Есть документ ДОГОВОР с реквизитами - Магазин-СправочникСсылка.Магазины и ТипДоговора-ПеречислениеСсылка.ТипДоговора. Есть документ РАСКРОЙ с реквизитами Договор - ДокументСсылка.Договор, Магазин-Строка, ТипДоговора-Строка. Нужно, чтобы в документе РАСКРОЙ ПриИзменении автоматически подставлялись значения реквизитов Магазин и ТипДоговора из документа ДОГОВОР. Вот если ДОГОВОР был не документом, а справочником - тут все понятно, но с документами такого не провернешь. Подскажите пожалуйста как реализовать?


Оффлайн sadovod

  • ****
  • Сообщений: 289
  • РЕПУТАЦИЯ: 53
  • КПД: 18%
  • Регистрация: 2012-02-19
  • Сайт: 
  • Профессия: Программист 1С
Очень просто. В обработчике события ДоговорПриИзменении() сделать вызов серверной процедуры, где с помощью несложного запроса получить значения Магазина и ТипаДоговора при заданном Договоре...

Оффлайн beztrud

Пишу следующее:
&НаСервере
Процедура НомерДоговораПриИзменении(Элемент)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Договор.Магазин,
| Договор.ТипДоговора
|ИЗ
| Документ.Договор КАК Договор";

Результат = Запрос.Выполнить();

ВыборкаМагазин = Результат.Выбрать(Объект.Магазин);
ВыборкаТипДоговора = Результат.Выбрать(Объект.ТипДоговора);
             Объект.Магазин=ВыборкаМагазин;
Объект.ТипДоговора=ВыборкаТипДоговора;
КонецПроцедуры
программа не ругается, но и записи не происходит.

Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • Глобальный модератор
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
То есть, в документе Договор ТипДоговора и Магазин - это ссылочный тип, а в документе Раскрой - это строки? А что тогда должно подставляться? Наименование Типа договора и наименование магазина?

Тогда по порядку:
1. Ваш запрос выбирает данные ИЗ ВСЕХ документов Договор. Имеет смысл отфильтровать не нужные документы, зачем нам их реквизиты... И плюс, можем явно ограничить количество выбираемых данных - нам же нужна только одно соответствие. Как-то так:
 Запрос.Текст=
      "ВЫБРАТЬ ПЕРВЫЕ 1
        |    Договор.Магазин,
        |    Договор.ТипДоговора
        |ИЗ
        |    Документ.Договор КАК Договор
        |ГДЕ
        |    Договор.Ссылка=&НашДоговор";
2. Что делает загадочная конструкция:
Результат.Выбрать(Объект.Магазин);
Как следует из синтакс-помощника:
Цитировать
РезультатЗапроса (QueryResult)
Выбрать (Choose)
Синтаксис:

Выбрать(<ТипОбхода>, <Группировки>, <ГруппировкиДляЗначенийГруппировок>)
Параметры:

<ТипОбхода> (необязательный)

Тип: ОбходРезультатаЗапроса.
Задает тип обхода записей в получаемой выборке.
Значение по умолчанию: Прямой

Ваш параметр совершенно не вписывается в эту конструкцию.

3. Неверная работа с Выборкой/Результатом запроса. Схема работы с запросом такая:
Запрос=Новый Запрос;
Запрос.Текст="<текст запроса>";

Выборка=Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() тогда
      // заполняем наши реквизиты
      // при этом, обращение к данным по имени полей запроса: Выборка.Магазин и Выборка.ТипДоговора
КонецЕсли;

4. Если не выдавало ошибки, скорее всего, в эту процедуру действие вообще не заходило. Проверьте отладчиком.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Оффлайн beztrud

   Выборка = Запрос.Выполнить(<<?>>).Выбрать(); (Проверка: Тонкий клиент)
{Документ.Раскрой.Форма.ФормаДокумента.Форма(29,15)}: Обнаружено логическое завершение исходного текста модуля
    КонецЕсли;<<?>>       (Проверка: Тонкий клиент)

Оффлайн sadovod

  • ****
  • Сообщений: 289
  • РЕПУТАЦИЯ: 53
  • КПД: 18%
  • Регистрация: 2012-02-19
  • Сайт: 
  • Профессия: Программист 1С
Вы бы полный код выложили.

Оффлайн beztrud

	Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Договор.Магазин,
| Договор.ТипДоговора
|ИЗ
| Документ.Договор КАК Договор"
|ГДЕ
        |    Договор.Ссылка=&Договор";

Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() тогда
    Объект.Магазин=Выборка.Магазин;
    Объект.ТипДоговора=Выборка.ТипДоговора;
    КонецЕсли;

Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • Глобальный модератор
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
А кто будет устанавливать параметр &Документ?

Запрос.УстановитьПараметр...

ЗЫ. И кстати, у Вас кавычки лишние в тексте запроса.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Оффлайн beztrud

Для меня пока это трудно. После Запрос.УстановитьПараметр("&Договор",.. что передавать?

Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • Глобальный модератор
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
Вам нужно указать запросу, по какому именно документу хотите отбор.
В данном случае, конкретный договор - это Объект, но нам надо передать ссылку на него, то есть Объект.Ссылка
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать


Теги:
 

Не открывает форму сохраненного документа, открывает форму нового.

Автор EHOTРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 4471
Последний ответ 13 Апр 2012, 23:26
от Vit1501
Автоматическое заполнение табличной части документа из табличной части другого

Автор WillРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 15918
Последний ответ 16 Авг 2012, 12:07
от Will
Заполнение поля табличной части документа из табличной части справочника.

Автор Kurt_WagnerРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 4198
Последний ответ 06 Апр 2015, 20:08
от Kurt_Wagner
Заполнение табличной части документа реквизитами табличной части справочника

Автор kaf_infoРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 621
Последний ответ 10 Май 2017, 20:44
от ilnur75
Добавление сведений в графу "основание" документа "ТОРГ-12"

Автор Ярослав1984Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 7741
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
172 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
39 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 862
  • Точка Скрытых: 0
  • Точка Пользователей: 11
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal