Имя: Пароль:
1C
1С v8
Команда документа
0 polkin
 
08.04.15
17:05
https://yadi.sk/i/XwOn4vQefrHBz
Хочу перенести процедуру заполнения аналогов с модуля документа (при каждом обновлении теряется) в команду документа.

Переменная не определена (Объект)
Как правильно обратиться с команды документа?
1 Fragster
 
гуру
08.04.15
17:10
внешняя форма не вариант?
2 Fragster
 
гуру
08.04.15
17:13
вообще команда имеет ПараметрыВыполненияКоманды.Источник, где вроде как твоя форма документа, в которой есть всё, что тебе надо.
Либо команда с параметром и там в ПараметрКоманды будет ссылка (требует сохранения перед выполнением и галки "изменяет данные" если она изменяет данные :))
3 polkin
 
08.04.15
18:56
(2) Как это будет выглядеть у меня?
Мне командой "Аналог" нужно выполнить данную процедуру...
4 polkin
 
08.04.15
19:04
Объект = Документы.ЗаказПоставщику.ПолучитьФорму(ФормаДокумента);

Тоже не хочет...
5 Ma3eIIa
 
08.04.15
19:11
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
НаСервере1(ПараметрКоманды);
КонецПроцедуры // ОбработкаКоманды()


&НаСервере
Процедура НаСервере1(ПараметрКоманды)
Объект=ПараметрКоманды.ПолучитьОбъект();
Объект.ПроцедураМодуляДокумента();
КонецПроцедуры
6 polkin
 
08.04.15
19:13
Запасы = ПараметрыВыполненияКоманды.Источник.Элементы.Запасы;

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

        
    КонецЦикла;


так не ругается, но и не выполняет...
7 polkin
 
08.04.15
19:19
(5)         Форма = ПолучитьФорму("Справочник.Номенклатура.ФормаОбъекта", Пар);

На сервере не работает...
8 polkin
 
08.04.15
19:30
ТабЗапасы = ПараметрыВыполненияКоманды.Источник.Элементы.Запасы;

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

        
    КонецЦикла;



выдает ошибку.
{Документ.ЗаказПоставщику.Команда.Аналог.МодульКоманды(8)}: Итератор для значения не определен
    Для Каждого Строка Из ПараметрыВыполненияКоманды.Источник.Элементы.Запасы Цикл
9 Ma3eIIa
 
08.04.15
19:34
зачем тебе форма справочника ?
10 Ma3eIIa
 
08.04.15
19:36
ПараметрКоманды это ссылка на твой документ. что тебе еще надо ?
11 polkin
 
08.04.15
19:39
(9) В форме справочника Номенклатура хранятся данные аналогов Поставщиков.
В зависимости от поставщика в заказ проставляются его наименования.
12 polkin
 
09.04.15
09:41
Как итератор то определить в команде документа?