Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 09:59

Заполнить договор

Автор AlenkaInt, 17 окт 2012, 18:51

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

AlenkaInt

Здравствуйте, есть обработка, которая вызывается из документа Реализация товаров и услуг. Эта обработка создает на основании этого документа Поступление товаров и услуг. Заказчику нужно, чтобы в открываемом документе Поступление товаров и услуг Организация бралась из документа Реализация товаров и услуг из реквизита Контрагент, а контрагентом становился реквизит организация.Т.е. например в Реализации товаров и услуг организация - Альфа, контрагент -Бетта. А в Поступлении товаров и услуг наоборот - Организация - Бетта, а контрагент Альфа.
Этот момент решен.
Сейчас есть одна проблема с договором. Нужно, чтобы в документ поступление товара в реквизит договор подставлялся договор с тем же номером, только вид договора не с покупателем, а с поставщиком. Такой договор есть. Там есть 2 разных договора с одним номером.
Это надо с помощью запроса делать?

MuI_I_Ika

Да, проще всего написать запрос, где отобрать договоры, по удовлетворяющим вас параметрам.

AlenkaInt

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

   Запрос.УстановитьПараметр("Договор", Объект.ДоговорКонтрагента);
   Результат = Запрос.Выполнить();
   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   ДокПоступление.ДоговорКонтрагента = ВыборкаДетальныеЗаписи.Наименование;

mixqn

сравните, какой тип данных у ДокПоступление.ДоговорКонтрагента и у ВыборкаДетальныеЗаписи.Наименование

AlenkaInt

Сейчас посмотрю. Еще когда в консоле смотрю результат запроса, то без условий есть результат, если добавляю, то пусто..
Добавлено: 17 окт 2012, 23:37


ДокПоступление.ДоговорКонтрагента это ссылка
ВыборкаДетальныеЗаписи.Наименование это строка
Так?

Dethmontt

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

   Запрос.УстановитьПараметр("Договор", Объект.ДоговорКонтрагента);
   Результат = Запрос.Выполнить();
   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   ДокПоступление.ДоговорКонтрагента = ВыборкаДетальныеЗаписи.Наименование;
//Будем отлаживать....
//А где же ты моя ошибка???
Если Не ЗначениеЗаполнено(ДокПоступление.ДоговорКонтрагента) Тогда
//Накосячили.....
Сообщить("Накосячили ищем ошибку....")
ТипДок = ТипЗнч(ДокПоступление.ДоговорКонтрагента);
ТипВыб = ТипЗнч(ВыборкаДетальныеЗаписи.Наименование);
Сообщить("Ошибка в ТИПЕ? ОТВЕТ: "+формат(ТипДок<>ТипВыб,"БЛ=Нет; БИ=Да"));
Если ТипДок<>ТипВыб Тогда
Сообщить("Тип документа = "+ТипДок);
Сообщить("Тип выборки запроса = "+ТипВыб);
Сообщить("Разве можно в тип <"+ТипДок+"> записать вот этот тип <"+Типвыб+"> ?????????");
Сообщить("Теперь понятно где косяк?");
КонецЕсли;
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Блин... Долго писал  :D
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

AlenkaInt

Это было круто!
Добавлено: 18 окт 2012, 00:06


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

   Запрос.УстановитьПараметр("Договор", Объект.ДоговорКонтрагента);
   Результат = Запрос.Выполнить();
   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   ДокПоступление.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.Наименование);

Dethmontt

Это элементарное понимание что ТИП переменной должен быть всегда равен ТИПУ РЕКВИЗИТА, если не равен то переменную нужно привести к соответствующему ТИПУ реквизита
НаименованиеДоговора = "Новый договор №1"; //Имеем только строку - что делать если нету типа СправочникСсылка.Договоры ??? Надо найти в базе ССЫЛКУ
Док.РеквизитДоговора = Справочники.Договоры.НайтиПоНаименованию(НаименованиеДоговора); //Метод НайтиПоНаименованию всегда вернет тип СправочникСсылка.Договоры (а значение может быть и пустое - нету в базе такого договора)
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Круто - но опять не совсем верно
"ВЫБРАТЬ
      |   ДоговорыКонтрагентов.ВидДоговора, //ЭТО вообще лишнее!!! Зачем вам это поле??? Где вы его используете?
      |   ДоговорыКонтрагентов.Наименование, //Зачем вам наименование - чтобы по нему потом искать? Так вы сейчас что делаете?
      |   ДоговорыКонтрагентов.Ссылка Как ДОГОВОР //Вот что нужно тащить! ССЫЛКУ
      |ИЗ
      |   Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
      |ГДЕ
      |   ДоговорыКонтрагентов.ВидДоговора = ""С поставщиком"" //Тут лучше использовать перечисление Пример:ДоговорыКонтрагентов.ВидДоговора = Значение(Перечисление.<ИмяПеречисления>.<ИмяЗначенияперечисления>)
      |   И ДоговорыКонтрагентов.Наименование = &Договор";

   Запрос.УстановитьПараметр("Договор", Объект.ДоговорКонтрагента.Наименование);
   Результат = Запрос.Выполнить();
   ВыборкаДетальныеЗаписи = Результат.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
   ДокПоступление.ДоговорКонтрагента = ВыборкаДетальныеЗаписи.ДОГОВОР;
КонецЕсли;
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск