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

Получение из ПТ РТ на основании

Автор Вожак, 25 мар 2012, 18:44

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

Вожак

нужно сделать, чтобы при нажатии в документе поступление товаров на кнопку, открывался журнал документов реаализация товаров, далее нужно выбрать организации, и на основании их заполнить ТЧ поступления товаров, надеюсь понятно объяснил, делал аналогично типконфе, и вот столкнулся с проблемой, выдает ошибку:
Значение не является значением объектного типа (ВалютаДокумента)
    Если ДокументОбъект.ВалютаДокумента = ВалютаРегламентированногоУчета ИЛИ ДокументОбъект.ВалютаДокумента.Пустая() Тогда

как избавиться от этого? пишу внешнюю обработку

Вожак

ЗаполнениеДокументов.ЗаполнитьШапкуДокументаПоОснованию(Док, Основание);
      Док.ВидПоступления = Перечисления.Док.ВидыПоступленияТоваров.НаСклад;
      Док.СкладОрдер     = Основание.Склад;

      ОрганизацияКонтрагента = ЗаполнениеДокументов.ПолучитьОрганизациюПоКонтрагенту(Основание.Контрагент);

      Если ЗначениеЗаполнено(ОрганизацияКонтрагента) Тогда
         
         // Документ не отражается в управленческом учете (внутреняя передача товара),
         // поменяем организацию и контрагента местами.
         Док.Организация = ОрганизацияКонтрагента;
         Док.Контрагент  = ЗаполнениеДокументов.ПолучитьКонтрагентаПоОрганизации(Основание.Организация);

         Док.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия;

         // Заполним номер и дату вхоящего документа.
         Док.НомерВходящегоДокумента = Основание.Номер;
         Док.ДатаВходящегоДокумента  = Основание.Дата;
         
         ЗаполнениеДокументов.ПриИзмененииЗначенияКонтрагента(Объект, мСтруктураПараметровДляПолученияДоговора);
         
      Иначе
         //переносить контрагента и договор нет смысла при такой цепочке
         Док.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
         Док.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
      КонецЕсли;

      СтруктураКурсаВзаиморасчетов = МодульВалютногоУчета.ПолучитьКурсВалюты(Док.ДоговорКонтрагента.ВалютаВзаиморасчетов, Док.Дата);
      Док.КурсВзаиморасчетов           = СтруктураКурсаВзаиморасчетов.Курс;
      Док.КратностьВзаиморасчетов      = СтруктураКурсаВзаиморасчетов.Кратность;
;

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

Dethmontt

Давай код внешней обработки и ошибку в студию (прямо скопируй ее а не пререписывай)
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Вожак

Перем мСтруктураПараметровДляПолученияДоговора Экспорт;
Перем мВалютаРегламентированногоУчета Экспорт;



Процедура Инициализировать (Объект, ИмяТабличнойЧасти) Экспорт
   
   ФормаРеализация = Документы.РеализацияТоваровУслуг.ПолучитьФормуВыбора();
   ФормаРеализация.Отбор.Организация.Использование = Истина;
   ФормаРеализация.Отбор.Организация.Значение      = Объект.Организация;
   Реализация = ФормаРеализация.ОткрытьМодально();
   Если Не ЗначениеЗаполнено(Реализация) Тогда
      Возврат;
   КонецЕсли;

    //ЗаполнитьТоварыПоПоступлениюТоваров(Объект.РеализацияТоваровУслуг, Объект.ТабЧасть);
    Заполнение(Объект);
КонецПроцедуры





Процедура Заполнение(Основание)
      Док = Объект.ПолучитьОбъект();
         ТипОснования = ТипЗнч(Основание);
      ЗаполнениеДокументов.ЗаполнитьШапкуДокументаПоОснованию(Док, Основание);
      Док.ВидПоступления = Перечисления.Док.ВидыПоступленияТоваров.НаСклад;
      Док.СкладОрдер     = Основание.Склад;

      ОрганизацияКонтрагента = ЗаполнениеДокументов.ПолучитьОрганизациюПоКонтрагенту(Основание.Контрагент);

      Если ЗначениеЗаполнено(ОрганизацияКонтрагента) Тогда
         
         // Документ не отражается в управленческом учете (внутреняя передача товара),
         // поменяем организацию и контрагента местами.
         Док.Организация = ОрганизацияКонтрагента;
         Док.Контрагент  = ЗаполнениеДокументов.ПолучитьКонтрагентаПоОрганизации(Основание.Организация);

         Док.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия;

         // Заполним номер и дату вхоящего документа.
         Док.НомерВходящегоДокумента = Основание.Номер;
         Док.ДатаВходящегоДокумента  = Основание.Дата;
         
         ЗаполнениеДокументов.ПриИзмененииЗначенияКонтрагента(Объект, мСтруктураПараметровДляПолученияДоговора);
         
      Иначе
         //переносить контрагента и договор нет смысла при такой цепочке
         Док.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
         Док.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
      КонецЕсли;

      СтруктураКурсаВзаиморасчетов = МодульВалютногоУчета.ПолучитьКурсВалюты(Док.ДоговорКонтрагента.ВалютаВзаиморасчетов, Док.Дата);
      Док.КурсВзаиморасчетов           = СтруктураКурсаВзаиморасчетов.Курс;
      Док.КратностьВзаиморасчетов      = СтруктураКурсаВзаиморасчетов.Кратность;

      // Заполним табличные части.
      ЗаполнитьТоварыПоОснованиюРеализация(Основание);
      ЗаполнитьУслугиПоОснованиюРеализация(Основание);
      ЗаполнитьВозвратнуюТаруПоОснованиюРеализация(Основание);

cska-fanat-kz

Приведите место, где вы вызываете процедуру Инициализировать().
Очень хочется узнать, чему равен ее параметр "Объект"...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

Просто возможно вот в этом месте не...

//ЗаполнитьТоварыПоПоступлениюТоваров(Объект.РеализацияТоваровУслуг, Объект.ТабЧасть);
    Заполнение(Объект);
КонецПроцедуры

а...

//ЗаполнитьТоварыПоПоступлениюТоваров(Объект.РеализацияТоваровУслуг, Объект.ТабЧасть);
    Заполнение(РЕАЛИЗАЦИЯ);
КонецПроцедуры
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Вожак

хм, теперь пишет ошибку:

Заполнение ТЧ не произведено!
Слишком много фактических параметров



Вожак

{ОбщийМодуль.ЗаполнениеДокументов.Модуль(625)}: Значение не является значением объектного типа (ВалютаДокумента)
   Если ДокументОбъект.ВалютаДокумента = ВалютаРегламентированногоУчета ИЛИ ДокументОбъект.ВалютаДокумента.Пустая() Тогда


вот ошибка про валюту документа, как е еобойти?

Вожак

Цитата: Вожак от 26 мар 2012, 10:29
хм, теперь пишет ошибку:

Заполнение ТЧ не произведено!
Слишком много фактических параметров




такая ошибка выпадает при вызове из самого документа(то есть в ПТ выбираем заполнить, нажимаем реализация товаров, и выпадает эта ошибка)



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

Вожак

Цитата: cska-fanat-kz от 26 мар 2012, 09:41
Приведите место, где вы вызываете процедуру Инициализировать().
Очень хочется узнать, чему равен ее параметр "Объект"...
Тип объекта - ДокументСсылка.РеализацияТоваровИУслуг

Теги:

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

Рейтинг@Mail.ru

Поиск