![]() |
|
Создание новых документов при помощи регламентного задания управляемые формы. | ☑ | ||
---|---|---|---|---|
0
Валентинка123
21.10.14
✎
17:37
|
Есть задание сделать загрузку документов регламентным заданием.
До этого была сделана обработка при помощи которой из базы SQL загружаются данные и создается документ. Как эту обработку можно запустить при помощи регл. задания ? Буду благодарна за любые подсказки и идеи. код обработки &НаКлиенте Процедура ВыполнитьЗагрузку(Команда) экспорт ПериодХ =Месяц(ДобавитьМесяц(ТекущаяДата(), -1)); МассивЗначений= ВыбираемТРК(ПериодХ); //МассивЗначений все трк для которых доступна информация в SQL таблице Для Индекс = 0 По МассивЗначений.Количество() - 1 Цикл Трк= МассивЗначений[Индекс]; Трк = трк(трк); ключ = ЕстьЛиДокумент(Трк,ПериодХ); // проверяем была ли загрузка за этот период у этого ТРК, если была то ключ равен ссылке на документ иначе НЕОПРЕДЕЛЕНО КлючПоиска = Новый Структура("Ключ", ключ); Форма = ОткрытьФорму("Документ.NOI.Форма.ФормаДокумента",КлючПоиска ); //Открываем форму документа по КлючуПоиска(или ссылка или новый документ) НовыйОбъект = Форма.Объект; Дата= День(НачалоМесяца(ТекущаяДата())); //месяц = ПериодХ; //Год = год(ДобавитьМесяц(ТекущаяДата(), -1)); ЗаполнитьОбъект(НовыйОбъект,Трк, ПериодХ); // заполняем данными из базы SQL по ТРК за период КопироватьДанныеФормы(НовыйОбъект, Форма.Объект); КлючПоиска.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение); форма.Записать(КлючПоиска); Форма.Закрыть(); КонецЦикла; КонецПроцедуры |
|||
1
Валентинка123
21.10.14
✎
17:39
|
Конфигурация самописная. 1с 8.2
|
|||
2
Валентинка123
21.10.14
✎
17:42
|
При переносе этого кода в общий модуль не работает ОткрытьФорму("Документ.NOI.Форма.ФормаДокумента",КлючПоиска );
я новичок в программирование 1с и темболее в УФ. |
|||
4
Looser-1c
21.10.14
✎
17:46
|
Подсказка.
Регламентное задание работает на сервере. ОткрытьФорму - на клиенте. Отсюда вывод - никак. Нужно всё переделывать |
|||
5
IVT_2009
21.10.14
✎
17:47
|
Аналогичная задача
1. Создаем новое регламентное задание с именем например: загрузкаДанных 2. Создаем общий модуль с именем: реглЗадания , ставим галки на нем сервер,внешнее соеденение,вызов сервера 3. в него поместим процедуру : &наСервере Процедура РегламентноеЗаданиеВыполнениеОбработки(Ключ) Экспорт ЗагрузкиДанных.читаемНаборФайлов(); сообщить(текущаяДата()); КонецПроцедуры 4. В модуле загрузкиДанных создадим процедуру с именем читаемНаборФайлов() &НаСервере процедура читаемНаборФайлов() экспорт //* //* пробуем прочитать файлы из каталога и разобрать заголовок //* для удобного поиска в базе данных //* вт = поискФайлов("\\192.168.100.6\obmen\outSR\","*.xml"); для ее = 0 по вт.количество()-1 цикл а3 = справочники.ТТНбк.НайтиПоРеквизиту("РеквизитФайла",УП(вт[ее].реквизит)); если а3.Пустая() = истина тогда г = читаемХМЛ2014дом(вт[ее].путь,переделатьДату(вт[ее].реквизит)); выполнитьЗаписьТЧ(г) ; //сообщить(УП(вт[ее].рнк)+" "+УП(вт[ее].реквизит)); ПараметрыСеанса.последняяТТН = вт[ее].рнк; конецЕсли; конецЦикла; конецПроцедуры //процедура читаемНаборФайлов() ее содержимое свое поставите. |
|||
6
IVT_2009
21.10.14
✎
17:49
|
Единственное замечание , это вызывается по планировщику и работает в фоне . В планировщике настроите вызав как вам нужно
у меня стоит повторять каждый день с инервалом в 27 секунд |
|||
7
IVT_2009
21.10.14
✎
17:50
|
еще в моем примере подцепим в задании РегламентноеЗаданиеВыполнениеОбработки(Ключ) как процедуру выполнения. У меня грузит документы в базу на удаленном складе так. Решение рабочее
|
|||
8
Валентинка123
21.10.14
✎
18:08
|
IVT_2009, спасибо, буду пробовать.
|
|||
9
Валентинка123
21.10.14
✎
18:23
|
Looser-1c, ваша подсказка мне не помогла, т к это понятно изначально, вопрос и состоит в том "как переделать?" . На данный момент даже в теории не могу представить как создать документ без открытия и т.д.
|
|||
10
Валентинка123
22.10.14
✎
15:14
|
Запускаю регламентное задание, оно вызывает общий модуль сервер, внешнее соединение. Переписала процедуру в общий модуль. Заменила ОткрытьФорму() на ПолучитьФорму(), но теперь дошла до момента получения форма.Объект, на сервере Объект не получить. Как теперь я могу выполнить такую задачу без объекта ?? Люди спасите утопающего!!!
|
|||
11
Repey
22.10.14
✎
15:33
|
Не нужна тебе форма. Бери сразу объект.
|
|||
12
Валентинка123
22.10.14
✎
15:42
|
а как объект взять на сервере?
|
|||
13
Repey
22.10.14
✎
15:48
|
- создать
- найти - найти запросом Все зависит от того - какой объект тебе нужен. |
|||
14
DrZombi
гуру
22.10.14
✎
15:52
|
(2) Используй ПолучитьФорму :)
Без открытия ;) |
|||
15
Валентинка123
22.10.14
✎
15:52
|
вот что было и что работает если сделать все руками
ключ = ЕстьЛиДокумент(Трк,ПериодХ); // проверяем была ли загрузка за этот период у этого ТРК, если была то ключ равен ссылке на документ иначе НЕОПРЕДЕЛЕНО КлючПоиска = Новый Структура("Ключ", ключ); Форма = ОткрытьФорму("Документ.NOI.Форма.ФормаДокумента",КлючПоиска ); //Открываем форму документа по КлючуПоиска(или ссылка или новый документ) НовыйОбъект = Форма.Объект; форма.объект мне по идее нужна, для того чтобы туда записать данные и сохранить этот новый документ. |
|||
16
DrZombi
гуру
22.10.14
✎
15:53
|
(10) Зачем тебе вообще Форма?
"Кто её будет на сервере смотреть?" ;) Переписывай на тривиальную обработку |
|||
17
DrZombi
гуру
22.10.14
✎
15:55
|
(15) >>> форма.объект мне по идее нужна, для того чтобы туда записать данные и сохранить этот новый документ
Жесть, всю жизнь писал документы на серверах без форм, а тут оказывается по другому оно не пишет :DDDDD |
|||
18
Валентинка123
22.10.14
✎
15:57
|
Откройте секрет как это делается?? может есть примерчик ?
|
|||
19
DrZombi
гуру
22.10.14
✎
15:57
|
(15) Учись...
ключ = ЕстьЛиДокумент(Трк,ПериодХ); ОбъектДок = ключ.ПолучитьОбъект(); ОбъектДок.<Твои реквизиты документа> = <Новое значение>; ОбъектДок.Записать(<Режим записи, либо просто запись, либо с проведением>) :) |
|||
20
Repey
22.10.14
✎
15:58
|
Бяялл!!
Если ключ = неопределено тогда ДокумОбъект = Документ.NOI.СоздатьДокумет(); иначе ДокумОбъект = ключ.получитьОбъект(); КонецЕсли Гюльчатай, пора уже как-то выразить свою благодарность за терпение нечеловеческое! |
|||
21
DrZombi
гуру
22.10.14
✎
15:58
|
+(18) Если документа нет, то
ОбъектДок = Документ.<Твой документ>.СоздатьДокумент() |
|||
22
Валентинка123
22.10.14
✎
16:03
|
Огромное спасибо :)!!! И за терпение в том числе!
|
|||
23
Валентинка123
22.10.14
✎
16:14
|
ОГРОМНОЕ СПАСИБО ВСЕ ПОЛУЧИЛОСЬ!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |