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

Автор Тема: Реквизит документа из другого документа  (Прочитано 1203 раз)

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

Оффлайн slaviik3

  • *
  • Сообщений: 1
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-10-30
  • Сайт: 
  • Профессия: Ученик 1С
Всем доброго времени суток! Опишу суть проблему: имею типовую конфигурацию УНФ и мне была поставлена задача при создании документа "Поступление на счет" проверять соответствие договора, указанного в документе "Счет на оплату" и в создаваемом поступлении.

Подскажите мне пожалуйста, как достать реквизит "договор" документа "счет на оплату" из документа "Поступление на счет"? Счет выбирается в табличной части документа "Поступление на счет".

Мои догадки: На событии "при изменении" элемента формы счет на оплату, т.е. при непосредственном выборе счета, отправлять в функцию на сервере данные выбранного счета, где запросом уже тащить реквизит документа "Счет на оплату".

Процедура РасшифровкаПлатежаСчетНаОплатуПриИзменении(Элемент)

СтрокаТЧ = "[color=red]Вот здесь как я понимаю надо получить идентификатор документа 'счет на оплату[/color]' ";
Договор = ПолучитьДоговорСчетаНаОплату(СтрокаТЧ);     

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

&НаСервере
Функция ПолучитьДоговорСчетаНаОплату(СтрокаТЧ)


Запрос= новый запрос;
Запрос.УстановитьПараметр("Ссылка", СтрокаТЧ);
Сообщить(СтрокаТЧ);
Запрос.Текст =

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

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

Сообщить(Результат);




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





Оффлайн Artjomrgv

  • ***
  • Сообщений: 131
  • РЕПУТАЦИЯ: 12
  • КПД: 9%
  • Регистрация: 2014-02-25
  • Сайт: 
  • Профессия: Консультант 1С

Посмотри это видео, по моему это твой пример, только там справочники.

https://www.youtube.com/watch?v=5lSjBwg-ICk&list=PL73CAD03E4B439C67&index=26

Оффлайн дфтын

  • Могу решить ЛЮБУЮ задачу в 1С и не только.. С вопросами в личку:)
  • *****
  • Сообщений: 2720
  • РЕПУТАЦИЯ: 325
  • КПД: 12%
  • 1С наше все
  • Регистрация: 2014-04-29
    • Skype: Soprov1C
  • Компания: Корпорация зонтиков
  • Профессия: Разработчик 1С
slaviik3, Все делать запросами это конечно похвально, но до безумств доходить то не надо

Если НЕ  ПолучитьДоговорСчетаНаОплату(СтрокаТЧ) Тогда
Сообщить("Фу на вас!");
КонецЕСлИ;

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

&НаСервере
Функция ПолучитьДоговорСчетаНаОплату(СтрокаТЧ)
Рез = Истина;
ДоговорВСчете = СтрокаТЧ.СчетНаОплату.Договор;
Возврат ДоговорВПоступлении = ДоговорВСчете
КонецФункция

Помог? Нажми - Спасибо :)
skype: Soprov1C

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Посмотри это видео, по моему это твой пример, только там справочники.

https://www.youtube.com/watch?v=5lSjBwg-ICk&list=PL73CAD03E4B439C67&index=26
Не учите людей плохому. Это пример плохого кода. Правильно - заполнять реквизиты в коде самой открываемой формы.

Все делать запросами это конечно похвально, но до безумств доходить то не надо
Не вижу ничего безумного. Если ТСу не лень писать запросы - это ему точно зачтется.

Оффлайн slaviik3

  • *
  • Сообщений: 1
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-10-30
  • Сайт: 
  • Профессия: Ученик 1С
slaviik3, Все делать запросами это конечно похвально, но до безумств доходить то не надо

Если НЕ  ПолучитьДоговорСчетаНаОплату(СтрокаТЧ) Тогда
Сообщить("Фу на вас!");
КонецЕСлИ;

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

&НаСервере
Функция ПолучитьДоговорСчетаНаОплату(СтрокаТЧ)
Рез = Истина;
ДоговорВСчете = СтрокаТЧ.СчетНаОплату.Договор;
Возврат ДоговорВПоступлении = ДоговорВСчете
КонецФункция




Спасибо за ответ.

Непонятны следующие вещи:
Что я должен передать в функцию ПолучитьДоговорСчетаНаОплату(СтрокаТЧ)?
Я передаю текущие данные
СтрокаТЧ = Элементы.РасшифровкаПлатежа.ТекущиеДанные;

Получаю вот такую ошибку

Цитировать
{Документ.ПоступлениеНаСчет.Форма.ФормаДокумента.Форма(2215)}: Ошибка при вызове метода контекста (ПолучитьДоговорСчетаНаОплату)
Если НЕ  ПолучитьДоговорСчетаНаОплату(СтрокаТЧ) Тогда
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
   форма: Элемент
   имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'


Вот полностью код:


Процедура РасшифровкаПлатежаСчетНаОплатуПриИзменении(Элемент)


СтрокаТЧ = Элементы.РасшифровкаПлатежа.ТекущиеДанные;

Если НЕ  ПолучитьДоговорСчетаНаОплату(СтрокаТЧ) Тогда
    Сообщить("Фу на вас!");
КонецЕСли;


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

&НаСервере
Функция ПолучитьДоговорСчетаНаОплату(СтрокаТЧ)

Рез= истина;
ДоговорВСчете = СтрокаТЧ.СчетНаОплату.Договор;
ДоговорВПоступлении = СтрокаТЧ.Договор;
Возврат ДоговорВПоступлении = ДоговорВСчете;
КонецФункции




Онлайн Kironten

  • *****
  • Сообщений: 810
  • РЕПУТАЦИЯ: 171
  • КПД: 21%
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
Если НЕ  ПолучитьДоговорСчетаНаОплату(СтрокаТЧ) Тогда
    Сообщить("Фу на вас!");
КонецЕСли;   
   
   
КонецПроцедуры

&НаСервере
Функция ПолучитьДоговорСчетаНаОплату(СтрокаТЧ)

Рез= истина;
ДоговорВСчете = СтрокаТЧ.СчетНаОплату.Договор;
ДоговорВПоступлении = СтрокаТЧ.Договор;
Возврат ДоговорВПоступлении = ДоговорВСчете;   
КонецФункции

У вас условие на булево, а возвращаете вы договор.

ДоговорПоступления = ПолучитьДоговорСчетаНаОплату(СтрокаТЧ);
Если ДоговорПоступления = Справочники.Договора.ПустаяСсылка() Тогда // ну или как там у вас справочник договора называется.
    Сообщить("Фу на вас!");
КонецЕСли;
Добавлено: 02 Ноя 2015, 12:36

А не, неправильно прочитал.

Ну попробуй не текущие данные в функцию передавать, а пару параметров: Договор, и счет на оплату.
В функции запрос к договору счета на оплату, и сравнение значений договоров.

Последний раз редактировалось: Kironten; 02 Ноя 2015, 12:36. Причина: Объединение сообщений


Теги:
 


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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

alex0402
92 Сообщений
oleg-x
79 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
68 Сообщений
Golickoff Golickoff
51 Сообщений
AIFrame
45 Сообщений
ilyay ilyay
42 Сообщений
Амал
30 Сообщений
lansy
22 Сообщений
Dethmontt Dethmontt
22 Сообщений
wise wise
21 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal