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

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

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

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

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

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

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


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


Показать


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

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


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

Оставьте свое сообщение

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