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

Хранилище

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

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



> Не исполняется регламентное задание          
kosalex Подменю пользователя
сообщение 03.07.15, 10:58
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Добрый день! Есть реглам. задание, вызывает процедуру из общего модуля(Сервер,Клиент(обычное приложение),Вызов сервера). В этом модуле присутствуют процедуры и функции которые выполняются по кнопкам, в процедурах присутствуют такие методы как "ОбработкаПрерыванияПользователем()", "Состояние()". В этому же модуле есть точно такие же процедуры и функции которые отвечают за загрузку по регламентному заданию, в них нет методов "ОбработкаПрерыванияПользователем()", "Состояние()". При активации задания, выскакивает ошибка что не обнаружено "ОбработкаПрерыванияПользователем()", я закоменнтировал это даже в тех процедурах которые по сути не вызываются для авто загрузки.

Закоментировал в этом общем модуле все строки с методами которые не могут вызываться в фоновом режиме - регламентное задание запустилось, но вылезло следующее на метод (Закрыть()) внешней компоненты которую я подключаю чтобы подключиться к базе.


Подскажите плиз что делаю не так?

Добвил директивы на процедуры и функции которые не используются в фоновом режиме. Ошибок по поводу обработки ожидания пользователя не появлялось, а вот ошибка с методом подключаемой внешней компонентой осталась....как быть?


 i 

Не надо "поднимать тему".
 


Сообщение отредактировал logist - 03.07.15, 15:32

DartRomanius Подменю пользователя
сообщение 04.07.15, 3:04
Сообщение #2

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Цитата(kosalex @ 03.07.15, 10:58) *
Добрый день! Есть реглам. задание, вызывает процедуру из общего модуля(Сервер,Клиент(обычное приложение),Вызов сервера). В этом модуле присутствуют процедуры и функции которые выполняются по кнопкам, в процедурах присутствуют такие методы как "ОбработкаПрерыванияПользователем()", "Состояние()". В этому же модуле есть точно такие же процедуры и функции которые отвечают за загрузку по регламентному заданию, в них нет методов "ОбработкаПрерыванияПользователем()", "Состояние()". При активации задания, выскакивает ошибка что не обнаружено "ОбработкаПрерыванияПользователем()", я закоменнтировал это даже в тех процедурах которые по сути не вызываются для авто загрузки.

Закоментировал в этом общем модуле все строки с методами которые не могут вызываться в фоновом режиме - регламентное задание запустилось, но вылезло следующее на метод (Закрыть()) внешней компоненты которую я подключаю чтобы подключиться к базе.


Подскажите плиз что делаю не так?

Добвил директивы на процедуры и функции которые не используются в фоновом режиме. Ошибок по поводу обработки ожидания пользователя не появлялось, а вот ошибка с методом подключаемой внешней компонентой осталась....как быть?


Код в студию чтоле? smile.gif


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

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

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(DartRomanius @ 04.07.15, 4:04) *
Код в студию чтоле? smile.gif


не вставляется код, пишет "Not Acceptable

An appropriate representation of the requested resource /index.php could not be found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request."

Vofka Подменю пользователя
сообщение 06.07.15, 8:51
Сообщение #4

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

kosalex, попробуйте ещё разок, глюк какой-то может был.

kosalex Подменю пользователя
сообщение 06.07.15, 8:52
Сообщение #5

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Функция ПодключитьсяКБазеКОДОСАвтоматически() Экспорт
    Попытка
        Alias = "codos";
        Login = "sysdba";
        Password = "masterkey";
        
        ПодключитьВнешнююКомпоненту("Addin.Kodos_db");
        БДЕ = Новый("Addin.Kodos_db"); //!!!Загружаем внешнюю компоненту для обмена с базой КОДОС
        
        ПодключитьВнешнююКомпоненту("Addin.Kodos_rd");
        ОбменСоСчитывателем = Новый("Addin.Kodos_rd");  //!!!Загружаем внешнюю компоненту для обмена со считывателем КОДОС
        
        глСобытиеВходаСКлючом=7;
        глСобытиеВыходаСКлючом=8;
        
        БДЕ.Подключиться(Alias, Login, Password); //!!! Подключаемся к базе данных КОДОС
        
        
        глПрефикс="CODOS.";
        
        Попытка
//ЗДЕСЬ БЫЛ ЗАПРОС К БАЗЕ, УДАЛИЛ Т.К. НЕ ХОТЕЛО ПОСТИТЬСЯ...
            //ЗДЕСЬ БЫЛ ЗАПРОС К БАЗЕ, УДАЛИЛ Т.К. НЕ ХОТЕЛО ПОСТИТЬСЯ...
            //БДЕ.Close();
            БДЕ = Неопределено;
            
        Исключение
            глПрефикс="";
            //БДЕ.Close(); //!!! Закрываем соединение с базой КОДОС
            БДЕ = Неопределено;
        КонецПопытки;
        
        СЗ = Новый СписокЗначений;
        СЗ.Добавить(БДЕ, "БДЕ",,);
        СЗ.Добавить(глПрефикс, "Префикс",,);
        
        
        //БДЕ.Close();
        БДЕ = Неопределено;
        Возврат СЗ;
    Исключение
        //ЗаписьЖурналаРегистрации("Ошибка КОДОС",,,,"" + БДЕ.Ошибка + " " + ИнформацияОбОшибке().Описание,);    
        БДЕ = Неопределено;
    КонецПопытки;
    
КонецФункции


Процедура ЗагрузитьДанныеИзКОДОСАвтоматически()  ЭКСПОРТ
СЗ = ПодключитьсяКБазеКОДОСАвтоматически();
    Если СЗ <> Неопределено Тогда
        БДЕ = СЗ.НайтиПоИдентификатору(0).Значение;
        глПрефикс = СЗ.НайтиПоИдентификатору(1).Значение;
        ПрочитатьБазуКОДОСАвтоматически(БДЕ,глПрефикс);
    КонецЕсли;
КонецПроцедуры


Процедура ПрочитатьБазуКОДОСАвтоматически(БДЕ,глПрефикс) Экспорт
    Попытка
        ТаблицаСотрудников = ПолучитьАктуальныхСотрудниковОрганизации(); //ТаблицаСотрудников - актуальных,не помеченных на удаление, с видом занятости = основное место работы
        ТаблицаСотрудников.Сортировать("Ссылка ВОЗР");
        
        //Ищем в базе КОДОС записи у которых табельный номер равен табельному номеру в базе 1С
        Для Каждого Строка Из ТаблицаСотрудников Цикл
            
            БДЕ.Close();
            
            ПосленийПериодВ1С = ПолучитьПоследнийПериодВ1С(Строка.Ссылка);
            
            ТабельныйНомер =  Число(Формат(Строка.Ссылка.Код,"ЧГ=0"));
            ТабельныйНомер = СтрЗаменить(ТабельныйНомер,Символы.НПП,"");
            Если ПосленийПериодВ1С <> Неопределено Тогда
                //Данные с последней даты в базе 1С
                //ЗДЕСЬ БЫЛ ЗАПРОС К БАЗЕ, УДАЛИЛ Т.К. НЕ ХОТЕЛО ПОСТИТЬСЯ...
            Иначе
                //Данные начиная с начала создания базы
                //ЗДЕСЬ БЫЛ ЗАПРОС К БАЗЕ, УДАЛИЛ Т.К. НЕ ХОТЕЛО ПОСТИТЬСЯ...
                
                //Данные начиная с 01.01.15
                //ЗДЕСЬ БЫЛ ЗАПРОС К БАЗЕ, УДАЛИЛ Т.К. НЕ ХОТЕЛО ПОСТИТЬСЯ...((POBJ_N = 1) OR (POBJ_N = 6))";"
            КонецЕсли;
            
            БДЕ.ЗапросSQL(ЗапросКБазеКОДОС);
            
            Пока БДЕ.ПолучитьЗапись() = 1 Цикл
                Запись = РегистрыСведений.КФЗДанныеПроходныхКОДОС.СоздатьМенеджерЗаписи();
                Если БДЕ.Поле("EV_N") = 7 Тогда //Вход
                    Запись.Период = БДЕ.Поле("DT");
                    Запись.Сотрудник = Строка.Ссылка;
                    Запись.ТабельныйНомер = Строка.Ссылка.Код;
                    Запись.ПодразделениеОрганизации = Строка.Ссылка.ТекущееПодразделениеОрганизации;
                    Запись.Период1 = Дата(Формат(Запись.Период,"ДФ=yyyyMMdd"));
                    Запись.Событие = "Вход"
                    
                ИначеЕсли БДЕ.Поле("EV_N") = 8 Тогда  //Выход
                    Запись.Период = БДЕ.Поле("DT");
                    Запись.Сотрудник = Строка.Ссылка;
                    Запись.ТабельныйНомер = Строка.Ссылка.Код;//СтрЗаменить(БДЕ.Поле("NUMBER_"),Символы.НПП,"");
                    Запись.Событие = "Выход";
                    Запись.ПодразделениеОрганизации = Строка.Ссылка.ТекущееПодразделениеОрганизации;
                    Запись.Период1 = Дата(Формат(Запись.Период,"ДФ=yyyyMMdd"));
                    ДатаВхода = ПолучитьДатуВхода(Запись.Период,Запись.ТабельныйНомер);
                    
                    Если ДатаВхода <> Неопределено Тогда
                        //Получим из секунд часы минуты и секунды
                        СекундыФактические = Запись.Период - ДатаВхода;
                        Запись.ФактическоеВремя = СекундыФактические;
                    
                    Иначе
                        Запись.ФактическоеВремя = Дата("00010101000000");
                    КонецЕсли;
                    
                    НормаСГрафика = ПолучитьНормуВремени(Строка.Ссылка,Запись.Период);
                                    
                    Если НормаСГрафика <> Неопределено Тогда
                        Если СекундыФактические = Неопределено Тогда
                            СекундыФактические = 0;
                        КонецЕсли;    
                        
                        СекундыНормаГрафик = НормаСГрафика * 3600;
                        Запись.НормаГрафик = СекундыНормаГрафик;
                            
                        //Отрицательное значение СекундыОтклонения означает что сотрудник отработал меньше нормы
                        СекундыОтклонения = СекундыФактические -  СекундыНормаГрафик;
                        Запись.Отклонение = СекундыОтклонения;
            
                    КонецЕсли;
                КонецЕсли;    
                Запись.Записать(Истина);
            КонецЦикла;
            БДЕ.Close();

        КонецЦикла;
    Исключение
        ЗаписьЖурналаРегистрации("Ошибка КОДОС",,,,"" + БДЕ.Ошибка + " " + ИнформацияОбОшибке().Описание,);    
        БДЕ.Close();
        БДЕ = Неопределено;
    КонецПопытки;
    
    БДЕ.Close();
    БДЕ = Неопределено;
    
    
КонецПроцедуры




Цитата(Vofka @ 06.07.15, 9:51) *
kosalex, попробуйте ещё разок, глюк какой-то может был.



В коде присутствуют запросы к базе SELECT может по этому не постилось...удалил - запостилось.

DartRomanius Подменю пользователя
сообщение 08.07.15, 2:48
Сообщение #6

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Вопрос, а не регламентным заданием работает?
И какая ошибка вылазит?

ЗЫ: Еще можно отладочную информацию скидывать в журнал регистрации, если что...
О, сразу не заметил. Извиняюсь.

Кстати, вопрос: почему регламентным заданием? Фоновая синхронизация?

Сообщение отредактировал DartRomanius - 08.07.15, 2:27


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

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

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(DartRomanius @ 08.07.15, 3:48) *
Вопрос, а не регламентным заданием работает?
И какая ошибка вылазит?

ЗЫ: Еще можно отладочную информацию скидывать в журнал регистрации, если что...
О, сразу не заметил. Извиняюсь.

Кстати, вопрос: почему регламентным заданием? Фоновая синхронизация?


Нужно по рассписанию загружать Входы/Выходы сотрудников...если без регламентного задания просто по кнопке, тогда все работает.

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

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

Если база серверная, то вероятно метод Close() компоненты не работает в консольном сеансе под которым запущен север, раз работает в интерактивном.
Попробуйте поставить Close() в #Если Клиет может соединению будет достаточно закрыться по присвоению Неопределено.


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

DartRomanius Подменю пользователя
сообщение 11.07.15, 2:44
Сообщение #9

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Если база серверная, возможны проблемы с разрешениями пользователя от которого запущен сервер.

Еще вопрос: компонента(-ты) выводом каких лиюо диалоговых окон не занимается часом? Всмысле своими средствами...

И да, что все-таки сообщает в фоновом заданиим на команду "закрыть"?

Сообщение отредактировал DartRomanius - 11.07.15, 2:44


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

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


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

 

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