выгрузка в xlm, регламентное задание

1. ldmitriy 28.07.21 11:49 Сейчас в теме
Добрый день, помогите решить проблему, есть внешняя обработка с выгрузкой в xml, с сохранением файла на локальный диск и отправкой на ftp, выполняется по кнопке "сформировать", её нужно переделать в регламентное задание и выполнять по расписанию,
создаю модуль в общих модулях и соответственно регл. задание, там выбираю мою процедуру, галочку на использование и задаю расписание, но процедура не срабатывает, конфа не типовая, наверно даже сильно переписана из какой-то другой, называется УПН (продажа недвижимости), в чем может быть проблема?


Процедура ВыгрузкаXML() Экспорт
    ЗаписьXML = Новый ЗаписьXML; 
    ЗаписьXML.ОткрытьФайл("\\clsdtc2\files\VigrS1C\OH.xml"); 
    ЗаписьXML.ЗаписатьОбъявлениеXML(); 
    ЗаписьXML.ЗаписатьНачалоЭлемента("Выгрузка1С");
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Дата", Дата(2020,10,10));      
    Запрос.Текст = "ВЫБРАТЬ
    |    ВводВторичныхОбъектов.ОбъектСтроительства КАК Корпус,
    |    ВводВторичныхОбъектовВторичныеОбъекты.Объект.Подъезд КАК Секция,
    |    ВводВторичныхОбъектовВторичныеОбъекты.Объект.Ссылка КАК НомерНежилогоПомещения,
    |    ВводВторичныхОбъектовВторичныеОбъекты.Объект.ПорядковыйНомерНаПлощадке КАК ПорядковыйНомерНаПлощадке,
    |    ВводВторичныхОбъектовВторичныеОбъекты.Объект.Этаж КАК Этаж,
    |    ВводВторичныхОбъектовВторичныеОбъекты.ПриведеннаяПлощадь КАК Площадь,
    |    ВводВторичныхОбъектов.ОбъектСтроительства.СрокСдачи КАК СрокВводаВЭксплуатацию,
    |    СтатусыВторичныхОбъектовСрезПоследних.Статус КАК Статус,
    |    ВводВторичныхОбъектовВторичныеОбъекты.Объект,
    |    ВводВторичныхОбъектовВторичныеОбъекты.Объект.КоличествоКомнат КАК Комнат,
    |    ВводВторичныхОбъектовВторичныеОбъекты.Объект.Тип,
    |    ВводВторичныхОбъектовВторичныеОбъекты.Ссылка
    |ИЗ
    |    РегистрСведений.СтатусыВторичныхОбъектов.СрезПоследних КАК СтатусыВторичныхОбъектовСрезПоследних
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВводВторичныхОбъектов.ВторичныеОбъекты КАК ВводВторичныхОбъектовВторичныеОбъекты
    |            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВводВторичныхОбъектов КАК ВводВторичныхОбъектов
    |            ПО ВводВторичныхОбъектовВторичныеОбъекты.Ссылка = ВводВторичныхОбъектов.Ссылка
    |        ПО СтатусыВторичныхОбъектовСрезПоследних.Объект.Ссылка = ВводВторичныхОбъектовВторичныеОбъекты.Объект.Ссылка
    |ГДЕ
    |    ВводВторичныхОбъектов.Дата > &Дата";           
    Выгрузка = Запрос.Выполнить().Выгрузить();
    Для Каждого Строка ИЗ Выгрузка ЦИКЛ
        RegExp = Новый COMОбъект("VBScript.RegExp");
        RegExp.IgnoreCase = Истина; 
        RegExp.Global = Истина; 
        RegExp.MultiLine = Истина; 
        RegExp.Pattern = "[^0-9]";
        Корп = RegExp.Replace(Строка.Корпус.Наименование, "");
        ЗаписьXML.ЗаписатьНачалоЭлемента("ОбъектНедвижимости");
        СтрокаТипОН = Лев(Строка.ПорядковыйНомерНаПлощадке, 2);
        Кладовые = Прав(Строка.Корпус.Наименование, 8);
        Если СтрокаТипОН = "НП" ТОГДА
            ЗаписьXML.ЗаписатьАтрибут("ТипОН", "НП");
            ЗаписьXML.ЗаписатьАтрибут("id", Корп+Строка.Секция+""+Строка.НомерНежилогоПомещения.Наименование);
        ИначеЕсли Кладовые = "кладовые" ТОГДА
            ЗаписьXML.ЗаписатьАтрибут("ТипОН", "Кладовая");
            ЗаписьXML.ЗаписатьАтрибут("id", Корп+Строка.Секция+""+Строка.НомерНежилогоПомещения.Наименование+"к");
        Иначе
            ЗаписьXML.ЗаписатьАтрибут("ТипОН", "Квартира");
            ЗаписьXML.ЗаписатьАтрибут("id", Корп+Строка.Секция+""+Строка.НомерНежилогоПомещения.Наименование);
            Если Строка.Комнат > 0 ТОГДА
                ЗаписьXML.ЗаписатьАтрибут("Комнат", Строка(Формат(Строка.Комнат)));
            ИначеЕсли Строка.Комнат = 0 ТОГДА 
                ЗаписьXML.ЗаписатьАтрибут("Комнат", "Студия");
            КонецЕсли;
        КонецЕсли;
        ЗаписьXML.ЗаписатьАтрибут("Корпус", Корп);
        ЗаписьXML.ЗаписатьАтрибут("Секция", Строка.Секция);
        ЗаписьXML.ЗаписатьАтрибут("НомерНежилогоПомещения", Строка.НомерНежилогоПомещения.Наименование);
        ЗаписьXML.ЗаписатьАтрибут("Этаж", Строка(Формат(Строка.Этаж)));
        ЗаписьXML.ЗаписатьАтрибут("Площадь", Строка(Формат(Строка.Площадь)));
        ЗаписьXML.ЗаписатьАтрибут("СрокВводаВЭксплуатацию", Строка(Формат(Строка.СрокВводаВЭксплуатацию,"ДФ=dd.MM.yy; ДЛФ=D")));
        ЗапросЦена = Новый Запрос;
        ЗапросЦена.УстановитьПараметр("ОН", Строка.Объект);
        ЗапросЦена.УстановитьПараметр("К", Строка.Корпус);
        ЗапросЦена.Текст = "ВЫБРАТЬ
        |    УстановкаЦен.Объект.Ссылка КАК Корпус,
        |    УстановкаЦенВторичныеОбъекты.Цена КАК Цена,
        |    УстановкаЦенВторичныеОбъекты.Скидка,
        |    УстановкаЦенВторичныеОбъекты.ЦенаСоСкидкой,
        |    УстановкаЦенВторичныеОбъекты.Объект
        |ИЗ
        |    Документ.УстановкаЦен.ВторичныеОбъекты КАК УстановкаЦенВторичныеОбъекты
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.УстановкаЦен КАК УстановкаЦен
        |        ПО УстановкаЦенВторичныеОбъекты.Ссылка = УстановкаЦен.Ссылка
        |ГДЕ
        |    УстановкаЦен.Объект = &К
        |    И УстановкаЦенВторичныеОбъекты.Объект.Ссылка = &ОН";           
        ВыгрузкаЦена = ЗапросЦена.Выполнить().Выгрузить();
        Для Каждого Стр ИЗ ВыгрузкаЦена ЦИКЛ
            ЗаписьXML.ЗаписатьАтрибут("Стоимость", Строка(Формат(Стр.Цена)));
            ЗаписьXML.ЗаписатьАтрибут("СтоимостьСоСкидкой", Строка(Формат(Стр.ЦенаСоСкидкой)));
        КонецЦикла;
        ЗаписьXML.ЗаписатьАтрибут("Статус", Строка(Формат(Строка.Статус)));
        ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;
    
    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.Закрыть();    
    ФТПХост          = "***";
    ФТППорт          = "21";
    ФТППользователь  = "***";
    ФТППароль        = "***";
    Файл             = "OH.xml";
    ФТПКаталог       = "***";
    ФТП = Новый FTPСоединение(ФТПХост,ФТППорт, ФТППользователь, ФТППароль);
    ФТП.УстановитьТекущийКаталог(ФТПКаталог);
    ФТП.Записать("\\clsdtc2\files\VigrS1C\OH.xml",СокрЛП(Файл));
КонецПроцедуры
Показать
Найденные решения
21. starik-2005 3170 28.07.21 13:51 Сейчас в теме
1. Чтобы регламентное задание начало выполняться, ему или надо поставить галку "Предопределенное", или добавить в список регламентных заданий в соответствующей обработке управления регламентными заданиями.

2. Если вызвать эту процедуру общего модуля из какой-нить внешней обработки, то все отрабатывает? Вы в своей обработке внешней сделайте еще одну команду и вызовите в ней эту процедуру.
ldmitriy; DJ_Codebase; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. Nubsdale 28.07.21 12:16 Сейчас в теме
(1)
но процедура не срабатывает
какую нибудь ошибку выдаёт? пробовали через внешнюю обработку запустить?
9. пользователь 28.07.21 12:20
Сообщение было скрыто модератором.
...
10. keyn5565` 19 28.07.21 12:38 Сейчас в теме
(1) для начала удаляем все методы
Сообщить(.....)

Проверяем доступ для пользователя службы 1С к каталогу выгрузки
Общий модуль должен быть серверным
11. FatPanzer 28.07.21 12:43 Сейчас в теме
Сообщить() никак не мешает. А вот Предупреждение() - вполне может вызвать исключение...
13. ldmitriy 28.07.21 12:53 Сейчас в теме
(11)убрал сообщить и предупреждение
12. ldmitriy 28.07.21 12:53 Сейчас в теме
2. FatPanzer 28.07.21 11:50 Сейчас в теме
C:\Обмен с Б24\OH.xml - у вас на сервере приложений есть такая папка???
3. ldmitriy 28.07.21 11:52 Сейчас в теме
(2) Да, есть, когда выгружаю внешней обработкой по кнопке то всё отрабатывает и сохраняется в папку
4. FatPanzer 28.07.21 11:53 Сейчас в теме
(3) Именно на СЕРВЕРЕ??? База файловая или серверная?
5. ldmitriy 28.07.21 11:53 Сейчас в теме
(4) Серверная, да есть именно на сервере
6. nomad_irk 81 28.07.21 11:55 Сейчас в теме
(5)и пользователю, под которым запущен сервер 1С, папка "C:\Обмен с Б24" доступна на запись содержимого?
7. DJ_Codebase 28.07.21 12:15 Сейчас в теме
(5) я бы так не делал. создайте общую сетевую папку, с доступом на запись. избегайте локальных путей
15. ldmitriy 28.07.21 12:56 Сейчас в теме
(7)сделал через сетевую
17. DJ_Codebase 28.07.21 12:59 Сейчас в теме
18. ldmitriy 28.07.21 13:02 Сейчас в теме
19. DJ_Codebase 28.07.21 13:06 Сейчас в теме
(17) а кнопочкой на форме отрабатывает как надо? пробовали?
FatPanzer; +1 Ответить
20. ldmitriy 28.07.21 13:48 Сейчас в теме
(19)да и в папку пишет и на ftp, как будто регл. задание не отрабатывает расписание
22. DJ_Codebase 28.07.21 13:53 Сейчас в теме
(20) ну вот, уже одной проблемой меньше)) смотрите что там с регламентным, да и права на запись в сетевую папку проверьте, пусть их будет больше, чем меньше
14. ldmitriy 28.07.21 12:56 Сейчас в теме
заменил код в сообщении на последний со всеми изменениями, он ни на сетевой диск не пишет ни на FTP, дело не в правах наверно тогда
16. FatPanzer 28.07.21 12:58 Сейчас в теме
(14) Включай отладчик, подключай фоновые задания к отладчику, и иди по строкам.
Или заверни ВЕСЬ код в Попытку, а в Исключении запиши в ЖР ОписаниеОшибки()...
21. starik-2005 3170 28.07.21 13:51 Сейчас в теме
1. Чтобы регламентное задание начало выполняться, ему или надо поставить галку "Предопределенное", или добавить в список регламентных заданий в соответствующей обработке управления регламентными заданиями.

2. Если вызвать эту процедуру общего модуля из какой-нить внешней обработки, то все отрабатывает? Вы в своей обработке внешней сделайте еще одну команду и вызовите в ней эту процедуру.
ldmitriy; DJ_Codebase; +2 Ответить 1
23. ldmitriy 28.07.21 15:11 Сейчас в теме
(21) всем спасибо за участие, поставил галочку предопределенный, удалил свой общий модуль и добавил процедуру в общий модуль регл заданий, всё заработало, благодарю
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот