выгрузка в 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 3060 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` 18 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 76 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 3060 28.07.21 13:51 Сейчас в теме
1. Чтобы регламентное задание начало выполняться, ему или надо поставить галку "Предопределенное", или добавить в список регламентных заданий в соответствующей обработке управления регламентными заданиями.

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

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