Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Метод объекта не обнаружен          
VolandMaster Подменю пользователя
сообщение 23.07.14, 16:53
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Ровно
Спасибо сказали: 3 раз
Рейтинг: 0

Доброго времени суток.
Есть фоновое задание ,отрабатывается в общом модуле, оно вызывает процедуру из модуля объекта справочника, на клиенте процедуру видит,на сервере выдает ошибку,помогите разобратся!

logist Подменю пользователя
сообщение 23.07.14, 17:14
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Не понятно, фоновое задание но на клиенте работает? А как вы знаете что оно на клиенте работает?


Signature
Личные бесплатные консультации не даю, для этого есть форум!

VolandMaster Подменю пользователя
сообщение 23.07.14, 18:00
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Ровно
Спасибо сказали: 3 раз
Рейтинг: 0

Цитата(logist @ 23.07.14, 18:14) *
Не понятно, фоновое задание но на клиенте работает? А как вы знаете что оно на клиенте работает?

В консоле заданий можно запускать на сервере и на клиенте.

Извините,задание регламентное=)

logist Подменю пользователя
сообщение 23.07.14, 19:15
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Код покажите какой-то, что гадать...


Signature
Личные бесплатные консультации не даю, для этого есть форум!

VolandMaster Подменю пользователя
сообщение 23.07.14, 20:05
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Ровно
Спасибо сказали: 3 раз
Рейтинг: 0

Цитата(logist @ 23.07.14, 20:15) *
Код покажите какой-то, что гадать...

Каталог = ПолучитьИмяВременногоФайла();
    ИмяФайла = рфПолучитьИмяФайла(Каталог,Строка.Имя);
    рфСохранитьФайлНаДиске(Строка.Файл,ИмяФайла,,"ДА");
    ЧтениеZIP = Новый ЧтениеZipФайла(ИмяФайла);
    ЧтениеZIP.ИзвлечьВсе(Каталог);
                    
    Объект = СпрПрайсЛисты.ПолучитьОбъект();
    Объект.ФайлИсточникДанных = Перечисления.ИсточникЗагрузкиПрайса.Файл;
    Объект.СтрокаПодключения = Каталог+"\"+ЧтениеZIP[0].Имя;
    Объект.Записать();
                    
    Объект.ЗагрузитьПрайсЛист(Ложь);


Выдает ошибку на экспортной процедуре ЗагрузитьПрайсЛист()

Fabri Подменю пользователя
сообщение 23.07.14, 22:10
Сообщение #6

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 55 раз
Рейтинг: 0

Раз на сервере выдает ошибку Метод объекта не обнаружен, значит данный метод работает только на клиенте.
Выложите код процедуры на которой выскакивает ошибка - Объект.ЗагрузитьПрайсЛист(Ложь);

logist Подменю пользователя
сообщение 24.07.14, 8:33
Сообщение #7

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Fabri @ 23.07.14, 22:10) *
Выложите код процедуры на которой выскакивает ошибка - Объект.ЗагрузитьПрайсЛист(Ложь);

+1. Если это обычное приложение, то вероятно в ее тексте есть что-то типа сообщения пользователю, поэтому и ошибка метод не обнаружен, он внутри той процедуры.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: VolandMaster,

VolandMaster Подменю пользователя
сообщение 24.07.14, 11:15
Сообщение #8

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Ровно
Спасибо сказали: 3 раз
Рейтинг: 0

Цитата(logist @ 24.07.14, 9:33) *
+1. Если это обычное приложение, то вероятно в ее тексте есть что-то типа сообщения пользователю, поэтому и ошибка метод не обнаружен, он внутри той процедуры.

Понятно ,я сейчас попытаюсь самостоятельно отловить. Не понимаю логики, почему процедура не доступна на сервере если у неё есть код исполняймый на клиенте, я предпологал что ошибка должна вылетать в том месте где проблемный код, вместо этого вся процедура не доступана.

Процедура ЗагрузитьПрайсЛист(ПолнаяЗамена=Истина) Экспорт
        #Если Клиент Тогда
            Если ЭтоНовый() Тогда
                Ответ = Вопрос("Элемент еще не записан, загрузка не возможена. Записать элемент?", РежимДиалогаВопрос.ДаНет);
                Если Ответ = КодВозвратаДиалога.Да Тогда
                    Попытка
                        Записать();
                    Исключение
                        Возврат;
                    КонецПопытки;
                Иначе
                    Возврат;
                КонецЕсли;
            КонецЕсли;
        #КонецЕсли
        ЕстьЗаполненныеПоля = Ложь;
        Для Каждого ПолеЗагрузки Из СтруктураФайлаПрайсЛиста Цикл
            Если обЗначениеНеЗаполнено(ПолеЗагрузки.ИмяПоляФайла) Тогда
                Продолжить;
            КонецЕсли;
            ЕстьЗаполненныеПоля = Истина;
            Прервать;
        КонецЦикла;
        Если ((Не ЕстьЗаполненныеПоля) и (ФайлИсточникДанных<>Перечисления.ИсточникЗагрузкиПрайса.Обработка))  Тогда
            // если поля не заполнены продолжать не имеет смысла
            #Если Клиент Тогда
                Предупреждение("Ни одно поле таблицы не заполнено!",обПраво("ТаймаутДиалогов",глПрава));
            #КонецЕсли
            Возврат;
        КонецЕсли;
        
        //Получим набор записей регистра сведений
        РегистрПрайсЛистов=РегистрыСведений.ПрайсЛистыКонтрагентов.СоздатьНаборЗаписей();
        РегистрПрайсЛистов.Отбор.ПрайсЛист.Значение=Ссылка;
        РегистрПрайсЛистов.Отбор.ПрайсЛист.Использование=Истина;
        
        НачатьТранзакцию();
        ДатаЗагрузки=ТекущаяДата();
        Записать();
        
        
        
        Если ПолнаяЗамена Тогда
            РегистрПрайсЛистов.Записать();
        Иначе
            РегистрПрайсЛистов.Прочитать();
        КонецЕсли;
        
        ТЗПрайсЛиста=РегистрПрайсЛистов.Выгрузить();
        
        РезультатЗагрузки=Истина;
        
        Если ФайлИсточникДанных=Перечисления.ИсточникЗагрузкиПрайса.Файл Тогда
            //Грузим Exсel
            ТипФайла=ВРег(Прав(СокрЛП(СтрокаПодключения),4));
            Если ТипФайла=".XLS" ИЛИ ТипФайла="XLSX" ИЛИ ТипФайла=".CSV" Тогда
                РезультатЗагрузки=ПрочитатьEXCEL(ТЗПрайсЛиста);            
            ИначеЕсли ТипФайла=".TXT" Тогда
                РезультатЗагрузки=ПрочитатьTXT(ТЗПрайсЛиста);
            Иначе
                #Если Клиент Тогда
                    Сообщить("Недопустимый тип файла."); Возврат;
                #КонецЕсли
            КонецЕсли;
        ИначеЕсли ФайлИсточникДанных=Перечисления.ИсточникЗагрузкиПрайса.ИсточникДанных Тогда //Грузим из ADO
            РезультатЗагрузки=ПрочитатьADO(ТЗПрайсЛиста);
        Иначе
            #Если Клиент Тогда
                Форма=ПолучитьФорму("Обработка."+СокрЛП(СтрокаПодключения)+".Форма");
                Форма.ПрайсЛистДляЗагрузки=ЭтотОбъект.Ссылка;
                Форма.СрокПоставки=СрокПоставкиПоУмолчанию;
                Форма.Открыть();
            #КонецЕсли    
            Возврат;
        КонецЕсли;
        
        спУдалить = Новый СписокЗначений;
        Для Каждого СтрПрайс Из ТЗПрайсЛиста Цикл
            Если ПустаяСтрока(СтрПрайс.Артикул) Тогда
                Попытка
                    СтрПрайс.Артикул=Лев(СтрПрайс.Наименование,15)+Прав(Строка(Новый УникальныйИдентификатор()),10);
                Исключение
                    спУдалить.Добавить(СтрПрайс);
                КонецПопытки;
            КонецЕсли;

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

        Иначе
            #Если Клиент Тогда
                Сообщить("Ошибка при загрузке прайс-листа");
            #КонецЕсли
            ОтменитьТранзакцию(); Возврат;
        КонецЕсли;
        
        ЗафиксироватьТранзакцию();
        #Если Клиент Тогда
            Сообщить("Обработка прайс-листа завершена !");
            ФормаСписка=РегистрыСведений.ПрайсЛистыКонтрагентов.ПолучитьФормуСписка();
            ФормаСписка.Отбор.ПрайсЛист.Значение=Ссылка; ФормаСписка.Отбор.ПрайсЛист.Использование=Истина;
            ФормаСписка.Отбор.Контрагент.Значение=Ссылка.Владелец; ФормаСписка.Отбор.Контрагент.Использование=Истина;
            ФормаСписка.Открыть();
        #КонецЕсли        

    КонецПроцедуры

Дерективы это я уже пытался писать.

VolandMaster Подменю пользователя
сообщение 31.07.14, 9:34
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Ровно
Спасибо сказали: 3 раз
Рейтинг: 0

Может кому пригодится решение.Проблема была в дерективе на "Если клиент" в начале модуля.

Спасибо сказали: Anderson, Inkognito,

Inkognito Подменю пользователя
сообщение 17.08.15, 12:24
Сообщение #10

Ветеран
*******
Группа: Пользователи
Сообщений: 939
Из: Україна
Спасибо сказали: 446 раз
Рейтинг: 13.5

У меня похожая проблема, при попытке выполниться обработке "ЗагрузкаКурсовВалют".
В регламентном задании такой код:
ОбработкаЗагрузкиКурсовВалют = Обработки.ЗагрузкаКурсовВалют.Создать();
    ОбработкаЗагрузкиКурсовВалют.НачДата = ТекущаяДата();
    ОбработкаЗагрузкиКурсовВалют.КонДата = ТекущаяДата();
    ОбработкаЗагрузкиКурсовВалют.ЗаполнитьВалюты(Истина);
    ОбработкаЗагрузкиКурсовВалют.ЗагрузитьКурсы();

Ошибка возникает на "ЗаполнитьВалюты", стандартной процедуре этой обработке. Подскажите, что не так?

Vofka Подменю пользователя
сообщение 17.08.15, 12:42
Сообщение #11

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Inkognito, у вас проблема та же, как у автороа темы. В модуле объекта, после блока объявления переменных стоит #Если Клиент Тогда

Спасибо сказали: Inkognito,

Inkognito Подменю пользователя
сообщение 17.08.15, 13:03
Сообщение #12

Ветеран
*******
Группа: Пользователи
Сообщений: 939
Из: Україна
Спасибо сказали: 446 раз
Рейтинг: 13.5

Цитата(Vofka @ 17.08.15, 12:42) *
Inkognito, у вас проблема та же, как у автороа темы. В модуле объекта, после блока объявления переменных стоит #Если Клиент Тогда

Так а что делать? Закомментировать?

Vofka Подменю пользователя
сообщение 17.08.15, 13:27
Сообщение #13

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Да. И в конце не забыть #КонецЕсли закоментировать.

Спасибо сказали: Inkognito,

Inkognito Подменю пользователя
сообщение 04.04.16, 9:55
Сообщение #14

Ветеран
*******
Группа: Пользователи
Сообщений: 939
Из: Україна
Спасибо сказали: 446 раз
Рейтинг: 13.5

Отлично, все работает. Пришлось вернуться к этому вопросу после очередного обновления 1С:Бухгалтерии, - случайно перезаписана обработка "Загрузки курсов валют".
Пришлось вспоминать, почему опять курсы не загружаются регламентным заданием...

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.04.24, 12:31
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!