Имя: Пароль:
1C
1С v8
Метод не доступен для данного объекта
0 NovichokAlena
 
03.08.15
09:12
Здравствуйте, делали внешнюю печатку для ТН. Пишет следующую ошибку: {ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(78)}: Ошибка при вызове метода контекста (Добавить)
            Отбор.Добавить("Номенклатура");
по причине:
Метод не доступен для данного объекта

1С:Предприятие 8.3 (8.3.6.1977), УПП 1.3

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

    
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    
    Номер = 0;
    
    колНеподтвержденнных = 0;
    Итого = 0;
    Для каждого Строка из СсылкаНаОбъект.Материалы Цикл
        
        Если НЕ Строка.УТС_ПодтверждениеПоступления Тогда
            колНеподтвержденнных = колНеподтвержденнных + 1;
            Продолжить;
        КонецЕсли;    
        
        Номер = Номер + 1;
        ОбластьСтрока.Параметры.Имя = Строка.Номенклатура;
        ОбластьСтрока.Параметры.НоменклатурнаяГруппа = Строка.НоменклатурнаяГруппа;
        ОбластьСтрока.Параметры.ЕдИзм = Строка.ЕдиницаИзмерения;
        ОбластьСтрока.Параметры.Номер = Номер;
        ОбластьСтрока.Параметры.Заполнить(Строка);
        ОбластьСтрока.Параметры.НоменклатураКод = Строка.Номенклатура.Код;
        Стоимость = 0;
        //Установить отбор по регистру ДвиженияПоПартиям по номенклатуре
        ДвиженияПоПартиям.Отбор.Сбросить();
        
        Отбор = ДвиженияПоПартиям.Отбор;
        Если Отбор.Найти("Номенклатура") = Неопределено Тогда
            Отбор.Добавить("Номенклатура");
        КонецЕсли;
        
        Отбор["Номенклатура"].Использование = Истина;
        Отбор["Номенклатура"].Значение      = Строка.Номенклатура;
        Отбор["Номенклатура"].ВидСравнения  = ВидСравнения.Равно;
        
        Для инд = 0 По ДвиженияПоПартиям.Количество() - 1 Цикл
            СтрокаДвижения = ДвиженияПоПартиям.Получить(инд);
            Если СтрокаДвижения <> Неопределено ТОгда
                Стоимость = СтрокаДвижения.Стоимость;
            КонецЕсли;
        КонецЦикла;
        
        ОбластьСтрока.Параметры.Цена = Стоимость / Строка.Количество;
        ОбластьСтрока.Параметры.Сумма = Стоимость;
        Итого = Итого + Стоимость;
        
        ТабДокумент.Вывести(ОбластьСтрока);
    КонецЦикла;
    
    Если колНеподтвержденнных = СсылкаНаОбъект.Материалы.Количество() Тогда
        Сообщить("Нет подтвержденных строк. Подтвердите документ.");
        Возврат Неопределено;
    КонецЕсли;    
    
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьПодвал.Параметры.Комментарий = СсылкаНаОбъект.Комментарий;
    ОбластьПодвал.Параметры.Итого = Итого;    
    ОбластьПодвал.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(Итого,ДокОбъект.мВалютаРегламентированногоУчета);
    ТабДокумент.Вывести(ОбластьПодвал);
    
    ТабДокумент.АвтоМасштаб = Истина;

    УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, 1, Ложь, ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект), Ложь);
    
    Возврат Неопределено;
    
КонецФункции
1 shuhard_серый
 
03.08.15
09:14
(0) движения надо выбирать запросом
2 D_E_S_131
 
03.08.15
10:20
Жесть какая-то...
1. Условие на модифицированность только что полученного объекта?
2. Запрос без условия по документу (выборка всех строк из всех документов ТребованиеНакладная)?
3. Для чего-то получили метаданные объекта?
4. Запрос вообще не используется и просто перебираем ТЧ документа?
5. Ну и получение данных из движений shuhard_серый уже написал...
3 Mifka
 
03.08.15
10:30
если не ошибаюсь ты прировнял отбор к ссылке регистратора
Отбор = ДвиженияПоПартиям.Отбор;
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.