Доброго времени суток. Есть фоновое задание ,отрабатывается в общом модуле, оно вызывает процедуру из модуля объекта справочника, на клиенте процедуру видит,на сервере выдает ошибку,помогите разобратся!
Группа: Местный
Сообщений: 188
Спасибо сказали: 55 раз
Рейтинг: 0
Раз на сервере выдает ошибку Метод объекта не обнаружен, значит данный метод работает только на клиенте. Выложите код процедуры на которой выскакивает ошибка - Объект.ЗагрузитьПрайсЛист(Ложь);
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(Fabri @ 23.07.14, 22:10)
Выложите код процедуры на которой выскакивает ошибка - Объект.ЗагрузитьПрайсЛист(Ложь);
+1. Если это обычное приложение, то вероятно в ее тексте есть что-то типа сообщения пользователю, поэтому и ошибка метод не обнаружен, он внутри той процедуры.
Личные бесплатные консультации не даю, для этого есть форум!
+1. Если это обычное приложение, то вероятно в ее тексте есть что-то типа сообщения пользователю, поэтому и ошибка метод не обнаружен, он внутри той процедуры.
Понятно ,я сейчас попытаюсь самостоятельно отловить. Не понимаю логики, почему процедура не доступна на сервере если у неё есть код исполняймый на клиенте, я предпологал что ошибка должна вылетать в том месте где проблемный код, вместо этого вся процедура не доступана.
Процедура ЗагрузитьПрайсЛист(ПолнаяЗамена=Истина) Экспорт #Если Клиент Тогда Если ЭтоНовый() Тогда Ответ = Вопрос("Элемент еще не записан, загрузка не возможена. Записать элемент?", РежимДиалогаВопрос.ДаНет); Если Ответ = КодВозвратаДиалога.Да Тогда Попытка Записать(); Исключение Возврат; КонецПопытки; Иначе Возврат; КонецЕсли; КонецЕсли; #КонецЕсли ЕстьЗаполненныеПоля = Ложь; Для Каждого ПолеЗагрузки Из СтруктураФайлаПрайсЛиста Цикл Если обЗначениеНеЗаполнено(ПолеЗагрузки.ИмяПоляФайла) Тогда Продолжить; КонецЕсли; ЕстьЗаполненныеПоля = Истина; Прервать; КонецЦикла; Если ((Не ЕстьЗаполненныеПоля) и (ФайлИсточникДанных<>Перечисления.ИсточникЗагрузкиПрайса.Обработка)) Тогда // если поля не заполнены продолжать не имеет смысла #Если Клиент Тогда Предупреждение("Ни одно поле таблицы не заполнено!",обПраво("ТаймаутДиалогов",глПрава)); #КонецЕсли Возврат; КонецЕсли;
//Получим набор записей регистра сведений РегистрПрайсЛистов=РегистрыСведений.ПрайсЛистыКонтрагентов.СоздатьНаборЗаписей(); РегистрПрайсЛистов.Отбор.ПрайсЛист.Значение=Ссылка; РегистрПрайсЛистов.Отбор.ПрайсЛист.Использование=Истина;
Если ПолнаяЗамена Тогда РегистрПрайсЛистов.Записать(); Иначе РегистрПрайсЛистов.Прочитать(); КонецЕсли;
ТЗПрайсЛиста=РегистрПрайсЛистов.Выгрузить();
РезультатЗагрузки=Истина;
Если ФайлИсточникДанных=Перечисления.ИсточникЗагрузкиПрайса.Файл Тогда //Грузим Exсel ТипФайла=ВРег(Прав(СокрЛП(СтрокаПодключения),4)); Если ТипФайла=".XLS" ИЛИ ТипФайла="XLSX" ИЛИ ТипФайла=".CSV" Тогда РезультатЗагрузки=ПрочитатьEXCEL(ТЗПрайсЛиста); ИначеЕсли ТипФайла=".TXT" Тогда РезультатЗагрузки=ПрочитатьTXT(ТЗПрайсЛиста); Иначе #Если Клиент Тогда Сообщить("Недопустимый тип файла."); Возврат; #КонецЕсли КонецЕсли; ИначеЕсли ФайлИсточникДанных=Перечисления.ИсточникЗагрузкиПрайса.ИсточникДанных Тогда //Грузим из ADO РезультатЗагрузки=ПрочитатьADO(ТЗПрайсЛиста); Иначе #Если Клиент Тогда Форма=ПолучитьФорму("Обработка."+СокрЛП(СтрокаПодключения)+".Форма"); Форма.ПрайсЛистДляЗагрузки=ЭтотОбъект.Ссылка; Форма.СрокПоставки=СрокПоставкиПоУмолчанию; Форма.Открыть(); #КонецЕсли Возврат; КонецЕсли;
спУдалить = Новый СписокЗначений; Для Каждого СтрПрайс Из ТЗПрайсЛиста Цикл Если ПустаяСтрока(СтрПрайс.Артикул) Тогда Попытка СтрПрайс.Артикул=Лев(СтрПрайс.Наименование,15)+Прав(Строка(Новый УникальныйИдентификатор()),10); Исключение спУдалить.Добавить(СтрПрайс); КонецПопытки; КонецЕсли;
КонецЦикла; //Иначе СтрПрайс.Артикул = АртикулДляПоиска(СтрПрайс.Артикул); Для Каждого удЭлем Из спУдалить Цикл ТЗПрайсЛиста.Удалить(удЭлем.Значение); КонецЦикла;
ЗафиксироватьТранзакцию(); НачатьТранзакцию();
Если РезультатЗагрузки<>Неопределено И РезультатЗагрузки Тогда НаборЗаписейПрайсЛиста=РегистрыСведений.ПрайсЛистыКонтрагентов.СоздатьНаборЗаписей();
Если НаборЗаписейПрайсЛиста.Количество()=1 Тогда ТекущаяЗапись = НаборЗаписейПрайсЛиста[0]; ЗаполнитьЗначенияСвойств(ТекущаяЗапись,СтрРез); Попытка НаборЗаписейПрайсЛиста.Записать();
Исключение #Если Клиент Тогда Сообщить("Ошибка записи строки прайс-листа: "+ОписаниеОшибки()); #КонецЕсли КонецПопытки; Иначе НовРег = РегистрыСведений.ПрайсЛистыКонтрагентов.СоздатьМенеджерЗаписи(); ЗаполнитьЗначенияСвойств(НовРег,СтрРез); НовРег.Записать(); КонецЕсли;
сч=сч+1; Если сч%1000=0 Тогда ЗафиксироватьТранзакцию(); #Если Клиент Тогда Состояние("Записано в регистр: "+сч); #КонецЕсли НачатьТранзакцию(); КонецЕсли;
КонецЦикла;
Иначе #Если Клиент Тогда Сообщить("Ошибка при загрузке прайс-листа"); #КонецЕсли ОтменитьТранзакцию(); Возврат; КонецЕсли;
Группа: Пользователи
Сообщений: 945
Из: Україна
Спасибо сказали: 447 раз
Рейтинг: 13.5
Отлично, все работает. Пришлось вернуться к этому вопросу после очередного обновления 1С:Бухгалтерии, - случайно перезаписана обработка "Загрузки курсов валют". Пришлось вспоминать, почему опять курсы не загружаются регламентным заданием...
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!