[РЕШЕНО] Регламентное задание на выгрузку/загрузку данных

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем nbIpKuH_BaH9I, 3 июл 2014.

  1. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    Всем привет. Короче. Задача: Есть 2 базы. Источник и приемник. Необходимо из источника запускать регламентное задание на выгрузку определенных данных по правилам обмена и сразу же загрузку в базу приемника. Вот полный код регламентного задания:
    Код:
        ЗапросПравил = Новый Запрос;
        ЗапросПравил.Текст =
        "ВЫБРАТЬ
        |    НастройкаРаботыСистемы.Аналитика2 КАК ПравилаОбмена,
        |    НастройкаРаботыСистемы.Аналитика3 КАК Организация
        |ИЗ
        |    РегистрСведений.НастройкаРаботыСистемы КАК НастройкаРаботыСистемы
        |ГДЕ
        |    НастройкаРаботыСистемы.НомерНастройки = 18
        |
        |СГРУППИРОВАТЬ ПО
        |    НастройкаРаботыСистемы.Аналитика2,
        |    НастройкаРаботыСистемы.Аналитика3";
        РезультатЗапросаПравил = ЗапросПравил.Выполнить();
        Если НЕ РезультатЗапросаПравил.Пустой() Тогда
            ВыборкаЗапросаПравил = РезультатЗапросаПравил.Выбрать();
            Пока ВыборкаЗапросаПравил.Следующий() Цикл
                ЗапросДоступа = Новый Запрос;
                ЗапросДоступа.Текст =
                "ВЫБРАТЬ
                |    НастройкаРаботыСистемы.Аналитика1 КАК ИмяИнформационнойБазы,
                |    НастройкаРаботыСистемы.Аналитика2 КАК ИмяСервера,
                |    НастройкаРаботыСистемы.Аналитика3 КАК ИмяПользователя,
                |    НастройкаРаботыСистемы.Аналитика4 КАК Пароль
                |ИЗ
                |    РегистрСведений.НастройкаРаботыСистемы КАК НастройкаРаботыСистемы
                |ГДЕ
                |    НастройкаРаботыСистемы.НомерНастройки = 19
                |
                |СГРУППИРОВАТЬ ПО
                |    НастройкаРаботыСистемы.Аналитика1,
                |    НастройкаРаботыСистемы.Аналитика2,
                |    НастройкаРаботыСистемы.Аналитика3,
                |    НастройкаРаботыСистемы.Аналитика4";
                РезультатЗапросаДоступа = ЗапросДоступа.Выполнить();
                Если НЕ РезультатЗапросаДоступа.Пустой() Тогда
                    ВыборкаЗапросаДоступа = РезультатЗапросаДоступа.Выбрать();
                    Пока ВыборкаЗапросаДоступа.Следующий() Цикл
                        ПравилаОбмена = ВыборкаЗапросаПравил.ПравилаОбмена;
                        ДвоичныеДанные = ПравилаОбмена.ХранилищеВнешнейОбработки.Получить();
                        ИмяФайла = УдалитьЗапрещенныеСимволыИмени(ПравилаОбмена.Наименование);
                        ПолноеИмяФайла = КаталогВременныхФайлов() + ИмяФайла + ".xml";
                        ДвоичныеДанные.Записать(ПолноеИмяФайла);
                       
                        мУниверсальнаяВыгрузкаДанных = Обработки.УниверсальныйОбменДаннымиXML.Создать();
                        мУниверсальнаяВыгрузкаДанных.ИмяФайлаПравилОбмена = ПолноеИмяФайла;
                        мУниверсальнаяВыгрузкаДанных.ЗагрузитьПравилаОбмена();
                       
                        мУниверсальнаяВыгрузкаДанных.ДатаНачала    = НачалоМесяца(ТекущаяДата());
                        мУниверсальнаяВыгрузкаДанных.ДатаОкончания = КонецДня(ТекущаяДата());
                       
                        #Если Клиент тогда
                            ОбработкаПрерыванияПользователя();
                        #КонецЕсли
                       
                        ВременнаяТаблицаПравил = мУниверсальнаяВыгрузкаДанных.ТаблицаПравилВыгрузки.Скопировать();
                       
                        Для каждого ТекСтрока Из мУниверсальнаяВыгрузкаДанных.ТаблицаНастройкиПараметров Цикл
                            Если ТекСтрока.Имя = "Организация" Тогда
                                ТекСтрока.Значение = ВыборкаЗапросаПравил.Организация;
                            КонецЕсли;
                        КонецЦикла;
                       
                        мУниверсальнаяВыгрузкаДанных.НепосредственноеЧтениеВИБПриемнике              = Истина;
                        мУниверсальнаяВыгрузкаДанных.ТипИнформационнойБазыДляПодключения             = Ложь;
                        мУниверсальнаяВыгрузкаДанных.ВерсияПлатформыИнформационнойБазыДляПодключения = "V82";
                        мУниверсальнаяВыгрузкаДанных.ПользовательИнформационнойБазыДляПодключения    = ВыборкаЗапросаДоступа.ИмяПользователя;
                        мУниверсальнаяВыгрузкаДанных.ПарольИнформационнойБазыДляПодключения          = ВыборкаЗапросаДоступа.Пароль;
                        мУниверсальнаяВыгрузкаДанных.ИмяИнформационнойБазыНаСервереДляПодключения    = ВыборкаЗапросаДоступа.ИмяИнформационнойБазы;
                        мУниверсальнаяВыгрузкаДанных.ИмяСервераИнформационнойБазыДляПодключения      = ВыборкаЗапросаДоступа.ИмяСервера;
                        мУниверсальнаяВыгрузкаДанных.ТаблицаПравилВыгрузки                           = ВременнаяТаблицаПравил.Скопировать();
                        мУниверсальнаяВыгрузкаДанных.ВыполнитьВыгрузку();
                       
                        // Удаление временного файла, чтобы не занимать место на диске
                        Попытка
                            УдалитьФайлы(ПолноеИмяФайла);
                        Исключение
                            Сообщить(ОписаниеОшибки());
                        КонецПопытки;
                    КонецЦикла;
                Иначе
                    #Если Клиент Тогда
                        Сообщить("Администратор: необходимо заполнить НРС. Настройка №19. Настройки доступа к базе БО для выгрузки поступлений.");
                    #КонецЕсли
                    Возврат;
                КонецЕсли;
            КонецЦикла;
        Иначе
            #Если Клиент Тогда
                Сообщить("Администратор: необходимо заполнить НРС. Настройка №18. Указать актуальные правила обмена для выгрузки поступлений.");
            #КонецЕсли
        КонецЕсли;
    
    Оно выполняется...
    1.JPG
    Причем успешно
    2.JPG
    Подключается к базе приемника без ошибок, но данных нет
    3.JPG
    Если вставить этот код просто во внешнюю обработку и запустить ее, то все выполняется без проблем. Где ошибка? Спасибо за внимание.
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    код в привилегированном модуле? регламентное задание без пользователя выполняется - может с этим проблема

    и если обмен по правилам - то почему не пользуешься обменами БСП?
  3. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    Нет, щас поставлю, посмотрю.
    Ок, и это сейчас погляжу.
    Даже вот разбираться не охота с БСП.
    --- Объединение сообщений, 3 июл 2014 ---
    Привилигированный не проканал.
    Последнее редактирование: 3 июл 2014
  4. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    если обе конфы на базе БСП 2.1 - то там все очень просто
    если нет - то да, день веселых разборок гарантирован. впихивание подсистемы обмена из БСП 2.1 в БГУ 1 для обмена с УТ11 оставило массу впечатлений :)
  5. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    Я как то пытался впихнуть управление пользователями. Переносится куча модулей, мне не нужных. Написал сам, заняло 2 часа. И сейчас также. Уже почти все готово. Только этот косяк. Так что БСП это равносильно что впихнуть не впихуемое :D
    --- Объединение сообщений, 3 июл 2014 ---
    Указал пользователя, результат тот же.
  6. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    БСП облегчает только в том случае, если ее никуда не внедрять.
  7. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    ААААААААААА. Проверил сейчас еще раз. Тупо скопировал код во внешнюю обработку. Запустил. И вот итог. Может книжки кто знает какие хорошие про регламентные задания?
    upload_2014-7-3_9-51-13.png
  8. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    пиши лог или в журнал регистрации или в файл, на каждый чих при выгрузке.
  9. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    Тоже про лог подумал. Сейчас займусь.
  10. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    Благодаря логам. Пришлось записывать их при каждом событии УниверсальнойВыгрузкиДанных. Выяснилось, что в правилах обмена у меня есть такая строчка...
    Код:
    ОбработкаПрерыванияПользователя();
    Естественно, т.к. фоновое задание выполняется на сервере. Исправил на
    Код:
    #Если Клиент Тогда              
         ОбработкаПрерыванияПользователя();
    #КонецЕсли
    
    Все взлетело.
    Моя невнимательность.
  11. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104

Поделиться этой страницей