Имя: Пароль:
1C
1С v8
Документ инвентаризации - заполнение из внешней обработки
0 Масянька
 
04.03.19
12:31
День добрый!
Имеется: док-т инвентаризации (типовой, бухгалтерия, на поддержке).
Нужно из внешней обработки создать и заполнить остатками.
В модуле док-та есть:
Процедура ЗаполнитьПоОстаткам(ПараметрыЗаполнения, АдресХранилища) Экспорт
    
    Результат = НовыйРезультатЗаполнения();
    
    Если ПараметрыЗаполнения.ВыполнитьКорректировкуСтоимости Тогда
        
        РезультатКорректировки = Обработки.ЗакрытиеМесяца.АктуализироватьОстатки(ПараметрыЗаполнения.ПараметрыКорректировкиСтоимости);
        
        Если ТипЗнч(РезультатКорректировки) <> Тип("Структура")
         Или Не РезультатКорректировки.Свойство("Отказ")
         Или Не РезультатКорректировки.Свойство("Ссылка") Тогда
            Возврат;
        КонецЕсли;
            
        Результат.ОткрытьФормуОшибки = РезультатКорректировки.Отказ;
        Результат.ОперацияКорректировкаСтоимости = РезультатКорректировки.Ссылка;
        
    КонецЕсли;
    
    Если Не Результат.ОткрытьФормуОшибки Тогда
        Результат.ТаблицаТовары = ЗаполнитьПоОстаткамНаСкладе(ПараметрыЗаполнения);
    КонецЕсли;
    
    ПоместитьВоВременноеХранилище(Результат, АдресХранилища);
    
КонецПроцедуры

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

Выдает ошибку - Недопустимое значение параметра (параметр номер '1').
Вопрос - как вытащить товары из результата?
Спасибо.
1 Масянька
 
04.03.19
12:54
Люди!
А почему все молчат?
2 hhhh
 
04.03.19
12:59
(1) ну, строку с ошибкой указать? Это за пределами возможностей?
3 Галахад
 
гуру
04.03.19
13:00
А адрес, Пушкин будет указывать?
4 Масянька
 
04.03.19
13:00
(2) ДокИнвентаризация.Товары = ПолучитьИзВременногоХранилища(СтрокаХранилища);
5 Масянька
 
04.03.19
13:01
(3) Мне тут совсем не понятно...
Расскажи, пожалуйста.
6 catena
 
04.03.19
13:03
А разве для вызова процедуры из модуля не к объекту нужно обращаться?
7 Галахад
 
гуру
04.03.19
13:04
СтрокаХранилища = "";
ДокИнвентаризация.Товары = ПолучитьИзВременногоХранилища(СтрокаХранилища);
8 Масянька
 
04.03.19
13:07
(7) Дык, на нее и ругается.
9 Масянька
 
04.03.19
13:07
(6) На эту строку - Документы.ИнвентаризацияТоваровНаСкладе.ЗаполнитьПоОстаткам(ПараметрыЗаполнения, СтрокаХранилища); - не ругается.
10 RomanYS
 
04.03.19
13:09
(4) ДокИнвентаризация.Товары это ТЧ. Их вроде нельзя присваивать. Можно ДокИнвентаризация.Товары.загрузить(ТЗ)
11 Garykom
 
гуру
04.03.19
13:11
СтрокаХранилища = "";
Документы.ИнвентаризацияТоваровНаСкладе.ЗаполнитьПоОстаткам(ПараметрыЗаполнения, СтрокаХранилища);
ДокИнвентаризация.Товары = ПолучитьИзВременногоХранилища(СтрокаХранилища);

Прикольно
12 Garykom
 
гуру
04.03.19
13:12
Результат = НовыйРезультатЗаполнения();

там что внутри?
13 Масянька
 
04.03.19
13:13
(10) ДокИнвентаризация.Товары.Загрузить(СтрокаХранилища); - Несоответствие типов (параметр номер '1')
14 Garykom
 
гуру
04.03.19
13:13
(13) См (12)
15 Масянька
 
04.03.19
13:14
(12) Функция НовыйРезультатЗаполнения() Экспорт
    
    СтруктураПараметров = Новый Структура;
    СтруктураПараметров.Вставить("ЗаданиеВыполнено",              Ложь);
    СтруктураПараметров.Вставить("ОткрытьФормуОшибки",            Ложь);
    СтруктураПараметров.Вставить("ОперацияКорректировкаСтоимости");
    СтруктураПараметров.Вставить("ТаблицаТовары");
    
    Возврат СтруктураПараметров;
    
КонецФункции

Это в модуле док-та.
Щас в обработке попробую прописать.
16 Garykom
 
гуру
04.03.19
13:14
(13) ДокИнвентаризация.Товары.Загрузить(ПолучитьИзВременногоХранилища(СтрокаХранилища).ТаблицаТовары)
17 Масянька
 
04.03.19
13:26
(16)     СтруктураПараметров = Новый Структура;
    СтруктураПараметров.Вставить("ЗаданиеВыполнено",              Ложь);
    СтруктураПараметров.Вставить("ОткрытьФормуОшибки",            Ложь);
    СтруктураПараметров.Вставить("ОперацияКорректировкаСтоимости");
    СтруктураПараметров.Вставить("ТаблицаТовары");

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

Неправильный путь к файлу "Структура".
18 Garykom
 
гуру
04.03.19
13:33
(17) Ты издеваешся? У тебя в (0) просто исправь строки (11)

И адрес хранилища прочитай http://1s-portal.ru/index.php/stati/common-questions/27-project/110-vremennoe-hranilishe-v-1s-82.html
19 Garykom
 
гуру
04.03.19
13:33
(18) *и про адрес хранилища прочитай
20 Garykom
 
гуру
04.03.19
13:35
СтрокаХранилища = Новый УникальныйИдентификатор;
21 Масянька
 
04.03.19
13:43
(18) Неправильный путь к файлу '3cc547cf-0a70-45e6-8dc6-bceccb8b028b'
22 Garykom
 
гуру
04.03.19
13:52
(21) СтрокаХранилища = ПоместитьВоВременноеХранилище("", Новый УникальныйИдентификатор);
23 Масянька
 
04.03.19
14:02
(22) Интересненько...
Вот это - ПоместитьВоВременноеХранилище(Результат, АдресХранилища); - сидит в модуле менеджера док-та (напонимаю, конфа на замке).
Я у себя в обработке запускаю - Документы.ИнвентаризацияТоваровНаСкладе.ЗаполнитьПоОстаткам(ПараметрыЗаполнения, СтрокаХранилища);
Где писать-то Строка....?
24 Garykom
 
гуру
04.03.19
14:13
Вот перед этим и писать, по идентификатору адрес получаешь путем помещения пустой строки и затем этот адрес передаешь
Затем по адресу получаешь заполненное
25 Масянька
 
04.03.19
14:14
(24) Перед этим - это в док-те?
26 Garykom
 
гуру
04.03.19
14:19
Блин запишись уже на курсы
27 Масянька
 
04.03.19
14:24
(26) Кройки и шитья? :))))
Спасибо (персональное).