Имя: Пароль:
1C
 
Регламентное задание в серверной базе
,
0 NastyMosk
 
10.12.14
08:18
Создала регламентное задание в серверной базе. Обработка формирует файлы dbf. При ручном запуске обработки всё отрабатывает замечательно. Когда задание выполняется регламентно, появляются проблемы. Файлы формируются как-то урезанно. Системный администратор поменял пользователя сервера БД, всё заработало. Теперь такая же ситуация. Пользователи работают на одном сервере, а база на другом сервере. Вот видимо на сервере, на котором база что-то не в порядке. Раскатывала базу на другом сервере, там всё хорошо отрабатывает в фоновом режиме. В чем может быть проблема? Сама в этих серверных штучках не понимаю ничего, а помощи от системного администратора не дождешься. Очень нужно, чтоб мое регламентное задание работало(((
1 Otkr
 
10.12.14
08:33
"Как то урезанно" - ни о чем. Что значит урезанно?
2 Feunoir
 
10.12.14
08:36
Может быть всё что угодно. Информации бы побольше.
3 MoRRoVV
 
10.12.14
09:53
Путем долгих пыток и наводящих вопросов Уточнил у Анастасии:
1. Имеется сервер терминалов (на котором работают пользователи ) и сервер 1с (на нем также стоит SQL)
2. Файлы сохраняется на сервере 1с.
2.1 На диске достаточно места для сохранения файла
2.2 Размер файлов не превышает 10Мб
3. Все необходимые файлы 1с-кой создаются
4. В DBF данные записываются в цикле из запроса.
5. В журнале регистрации показывается что цикл обходит все записи в запросе
6. На выходе получается "урезанный" dbf
6.1 в dbf файле только первая строчка
6.2 в dbf файле только последняя строчка
6.3 в dbf файле только первая и последняя строчка
6.4 в dbf файле не все строки
------------
to NastyMosk По пункту 6: проверь все выгруженные dbf и точно скажи все ли описанные варианты у тебя встречаются.
Также жду код.

Перебрал все варианты в голове, но ничего не приходит на ум. У кого какие мысли? Может еще какая информация необходима для анализа?
4 PLUT
 
10.12.14
09:59
(0) создай обормотку и вызови регзадание, отладчик в помощь (-debug серверу нужно еще вставить)
5 NastyMosk
 
10.12.14
12:51
Система ведет себя неадекватно. Добавила в модуле чтобы писал мне в журнал регистрации номер записи в dbf и показатель из выборки, чтобы быть уверенной, что он обходит результат запроса. Об обходит, но что происходит. В худшем варианте он перезаписывает одну и ту же запись в цикле, иногда может записывать по порядку, потом начиная, например, с 5й записи перезаписать штук 6 и дальше пойти. Запускаю еще раз регламентное задание, 5 файлов из 7 корректно записались, с двумя опять проблемы, при следующем запуске со всеми проблемы. каждый раз разный результат. Напоминаю, что раскатывала базу серверную на другом сервере и там всё отрабатывало корректно. Может быть дело в скорости записи, потому что когда я добавила запись в журнал регистрации, он стал больше записей добавлять
6 Йохохо
 
10.12.14
12:56
(5) может пытались распараллелить? покажите код рекурсии?
7 NastyMosk
 
10.12.14
13:04
ДБФ = Новый XBASE();
    ДБФ.АвтоСохранение = Истина;
    ДБФ.Поля.Добавить("PComp_Code","S","25");
    ДБФ.Поля.Добавить("PC_Name","S","50");
    ДБФ.Поля.Добавить("PC_Addr","S","80");
    ДБФ.Поля.Добавить("DTLM","S","14");
    ДБФ.Поля.Добавить("Status","N",11);
    
ДБФ.СоздатьФайл(ЛокальноеИмя);
    Пока Выборка.Следующий() Цикл

        ДатаИзменения = ТекущаяДата();
        ДБФ.Добавить();
        ДБФ.PComp_Code= Выборка.Код;
        ЗаписьЖурналаРегистрации("КодПозиции "+ Выборка.Код, УровеньЖурналаРегистрации.Информация);

        ДБФ.PC_Name   = Выборка.Наименование;
        ДБФ.PC_Addr   = Выборка.АдресЮридический;
        ДБФ.DTLM      = Формат(ДатаВыгрузки, "ДФ=""ггггММдд ЧЧ:мм""");
        ДБФ.Status    = 2;

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

        КонецПопытки;
        ЗаписьЖурналаРегистрации("НомерЗаписи "+ ДБФ.номерзаписи(), УровеньЖурналаРегистрации.Информация);
        
    КонецЦикла;
ДБФ.ЗакрытьФайл();
примерно так, урезала количество полей
8 vyaz
 
10.12.14
13:20
(7) ДБФ.Записать(); может из цикла вынести в низ?
9 NastyMosk
 
10.12.14
13:21
(8)  тогда он оставит только последнюю запись
10 vyaz
 
10.12.14
13:24
(9) точно)))
11 NastyMosk
 
10.12.14
21:00
Перезагрузила я сервер, на котором стоит база, и всё у меня хорошо пошло... это всё, конечно, очень здорово, но надолго ли хватит. Что уж там произошло с ним во время перезагрузки не знаю... а очень бы хотелось знать, чтобы такая ситуация не повторилась
12 Мимохожий Однако
 
10.12.14
22:41
(8)+100500. Попытка лишняя тоже. Вместо записи в журнал регистрации можно параллельно формировать текстовый лог файл.
13 NastyMosk
 
11.12.14
06:31
(12) да попытку я уже ради эксперимента ставила, вдруг у него что-то записать не получается. Она и правда лишняя, в исключение всё равно он не заходил
14 rozer76
 
11.12.14
10:57
(9)  у вас автосохраненин=истина зачем еще в цикле записать
15 NastyMosk
 
11.12.14
18:05
(14) автосохранение=истина это я тоже добавила, когда искала способы его вразумить. Его убрала, просто в цикле записываю
16 NastyMosk
 
11.12.14
18:08
прошли сутки, решила проверить как выгрузка регламентно будет идти(она раз в сутки ночью по идее запускается). в одном файле из 7 не записал первую строчку, всё остальное идеально. Перезапустила службу Агент сервера 1С, всё выгрузилось ровно. Но это же бред каждый вечер службу перезапускать. У кого-нибудь есть идея в чем может быть проблема, если перезапуск службы всё ставит на свои места?
17 Жан Пердежон
 
11.12.14
18:15
(16) добавь в ЗаписьЖурналаРегистрации имя файла, может у тебя одновременно несколько заданий в один файл пишут?
18 MM
 
11.12.14
18:16
Сервер 64х битный? У него какие-то проблемы с ДБФ были.
19 NastyMosk
 
11.12.14
18:37
одновременно точно не пишут, я по журналу регистрации отслеживала, да и некому больше туда писать, а я его этому не учила.
20 NastyMosk
 
11.12.14
18:38
(18)  да, сервер 64х битный. Раньше в dbf на нем выгрузок не было
21 NastyMosk
 
12.12.14
08:48
Файлик SQL Server Database Transaction Log File (.ldf) этой базы весит 49 гигов. Сегодня вечером системный администратор почистит, может в этом проблема. Пока ничего не идет на ум
22 kortun
 
12.12.14
10:10
(20) попробуй писать сначала во временные файлы, а потом копировать
ЛокальноеИмя = ПолучитьИмяВременногоФайла("dbf");
23 ssh2QQ6
 
12.12.14
10:21
(21) если установлен антивирус добавьте в исключения *.dbf
24 Лефмихалыч
 
12.12.14
10:26
(0) код кривой, который рассчитывает, что все на клиенте.
25 NastyMosk
 
12.12.14
10:51
(22) изначально я писала в КаталогВременныхФайлов() эффект, я полагаю, тот же, только я свое имя задавала.
26 kortun
 
12.12.14
10:55
а если не делать запись после каждого добавления?
а сделать ДБФ.АвтоСохранение = Истина;?
и записывать в конце, тот же эффект?
27 NastyMosk
 
12.12.14
11:00
(24) приложение не управляемое
28 NastyMosk
 
12.12.14
11:05
(26) пока проверить не могу, после вечернего перезапуска службы пока всё хорошо отрабатывает
29 NastyMosk
 
12.12.14
11:12
(23) на том сервере, где база, антивирусника нет, пользователи на нем не работают и интернет заблокирован
30 Лефмихалыч
 
12.12.14
19:59
(27) прикинь, клиент-серверное взаимодействие придумали задолго до управляемых форм
31 NastyMosk
 
13.12.14
10:11
(30) я в восторге! Код выполняется на сервере.