Внешние обработки

1. ks8585 3 10.07.19 00:37 Сейчас в теме
Всем доброго вечера.
Конфигурация - УТ 11.4

Появилась необычная необходимость создавать ПРИОБРЕТЕНИЕ ТОВАРОВ И УСЛУГ на основе документа РЕАЛИЗАЦИЯ.

Создал назначаемую внешнюю обработку - корректно заполнил сведения о внешней обработке.

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, СозданныеОбъекты) Экспорт
	
	
СозданныеОбъекты = Новый Массив;
ВыполнитьКомандуНаСервере(ОбъектыНазначения, СозданныеОбъекты);
Для Каждого ПриобретениеСсылка Из СозданныеОбъекты Цикл

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

&НаСервереБезКонтекста
Процедура ВыполнитьКомандуНаСервере(ОбъектыНазначения, СозданныеОбъекты) 
	
	Для Каждого СсылкаРеализация Из ОбъектыНазначения Цикл
		ДокументОбъектРеализация = СсылкаРеализация.ПолучитьОбъект();
		МассивНоменклатуры = ДокументОбъектРеализация.Товары.ВыгрузитьКолонку("Номенклатура");
		ДокументОбъектПриобретение = Документы.ПриобретениеТоваровУслуг.СоздатьДокумент();
		
		
		Для Каждого ЭлементМассиваНоменклатуры Из МассивНОменклатуры Цикл
			
			СтрокаТЧПриобретение = ДокументОбъектПриобретение.Товары.Добавить();
			СтрокаТЧПриобретение.Номенклатура = ЭлементМассиваНоменклатуры;
			
		КонецЦикла;
		
		ДокументОбъектПриобретение.Номер = "";
		
		ДокументОбъектПриобретение.ЦенаВключаетНДС = Ложь;
		ДокументОбъектПриобретение.ЗакупкаПодДеятельность = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС;
		ДокументОбъектПриобретение.ВариантПриемкиТоваров = Перечисления.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным;
		 
		ДокументОбъектПриобретение.Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
		ДокументОбъектПриобретение.Дата = ТекущаяДата();
		ДокументОбъектПриобретение.Партнер = "";
		ДокументОбъектПриобретение.Комментарий = "";
		ДокументОбъектПриобретение.Проведен = Ложь;
		ДокументОбъектПриобретение.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика;
		СтрокиНаУдаление = Новый Массив();
		Для Каждого СтрокаТЧ Из ДокументОбъектПриобретение.Товары Цикл
			Если ЭтоУслугаНаСервере(СтрокаТЧ.Номенклатура)Тогда
				 СтрокиНаУдаление.Добавить(СтрокаТЧ.НомерСтроки);
				
			КонецЕсли
		КонецЦикла;
		Для Каждого ЭлементМассива Из СтрокиНаУдаление Цикл
			  ДокументОбъектПриобретение.Товары.Удалить(ЭлементМассива-1);
		КонецЦикла;
		
		
		ДокументОбъектПриобретение.Записать();
			
	КонецЦикла
	  	
КонецПроцедуры // ВыполнитьКоманду() 


&НаСервереБезКонтекста
Функция ЭтоУслугаНаСервере(Номенклатура)
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Номенклатура.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.Номенклатура КАК Номенклатура
		|ГДЕ
		|	Номенклатура.ТипНоменклатуры = &ТипНоменклатуры
		|	И Номенклатура.Ссылка = &Номенклатура";
	
	Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
	Запрос.УстановитьПараметр("ТипНоменклатуры", Перечисления.ТипыНоменклатуры.Услуга);
	
	РезультатЗапроса = Запрос.Выполнить();
	Если НЕ РезультатЗапроса.Пустой() Тогда
		Возврат Истина
	Иначе 
		Возврат Ложь;
	КонецЕсли;
	
КонецФункции

Показать


В коде вроде ничего особенного.
Документ создается - все необходимые параметры заполняются, в том числе ТЧ.
Но вот при проведении выскакивает ошибка -
"попытка генерации вида запасов с незаполненной организацией"

Предположил, что при создании необходимо заполнять реквизит документа "Организация", но при попытки его заполнить системы говорит, что такого реквизита есть.
Если создать документ приобретения в ручном режиме и потом запросом дернуть все реквизиты, то он есть и заполнен.


Подскажите, как данную ситуацию исправить?
Возможно есть какие то моменты, которые я не учел.
МОжет быть нужно совсем другим путем идти?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Teut_Vlad 187 10.07.19 01:23 Сейчас в теме
В модуле документа найдите ОбработкаЗаполнения и смотрите что там вызывается
Что я нашел:
	
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовЗакупки(Склад);
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Склад, СкладГруппа, Товары, Ложь);
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот