1С ЗиК 366 программа "вылетает" при сохранении файла СЗВ-СТАЖ

1. Mx00 247 29.01.18 02:29 Сейчас в теме
При попытке сохранения файла СЗВ-СТАЖ если много сотрудников, то программа вылетает с ошибкой windows. Проблема в компоненте "Adodb.Stream" при записи большого файла АдоДБСтрим.WriteText(ТекстАдоДБСтрим)
Для исправления ситуации нужно в отчете ПодготовкаСведенийДляПФР2017 изменить последний блок в процедуре ФайлСЗВ_СТАЖ()
закомментированные строки - это то что было до исправления
// %изм% Mx Начало Большой файл отчета
//ТекстАдоДБСтрим = АдоДБСтрим.ReadText();
//АдоДБСтрим.Close();
//АдоДБСтрим.Charset = "utf-8";
//АдоДБСтрим.Open();
//АдоДБСтрим.WriteText(ТекстАдоДБСтрим);
//АдоДБСтрим.SaveToFile(ПолноеИмяФайла, 2);
//АдоДБСтрим.Close();
АдоДБСтрим2=СоздатьОбъект("ADODB.Stream");
АдоДБСтрим2.Type=2;
АдоДБСтрим2.Mode= 3;
АдоДБСтрим2.charset="utf-8";
АдоДБСтрим2.LineSeparator=-1;
АдоДБСтрим2.Open();
Всего=АдоДБСтрим.size;
Байт=255;
Пока АдоДБСтрим.EOS=0 Цикл
АдоДБСтрим2.WriteText(АдоДБСтрим.ReadText(Байт),?(Байт=-2,1,0));
Состояние("" + Формат(100 * АдоДБСтрим.position/Всего,"Ч(0)5.2")+"%");
КонецЦикла;
АдоДБСтрим2.SaveToFile(ПолноеИмяФайла,2);
АдоДБСтрим2.Close();
АдоДБСтрим.Close();
// %изм% Mx Конец

направление решения взял тут http://www.forum.mista.ru/topic.php?id=562533, автор smaharbA
laf; vatson2904; alexdm; di-pol; e-lexa; grig_nv; mister_tula; Pilot741; sashocq; al_ban; jack19; +11
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. jack19 148 29.01.18 10:06 Сейчас в теме
Спасибо. У меня правда не вылетала, а зависала программа, поэтому я отключал строки перекодировки в 1с, а перекодировал Акелпадом через ТоталКоммандер.
+
3. sashocq 193 01.02.18 17:34 Сейчас в теме
Сначала поискал здесь по инфостарту, с ходу не нашёл. Скрипт — самое первое и простое, что пришло в голову. Сделал свой велосипед: https://infostart.ru/public/778263/
За такой вариант спасибо, если там ещё в каких отчётах вылезет — попробую.
+
4. golod 08.02.18 12:46 Сейчас в теме
Не работает так, работает так
//// Сохраняем файл в кодировке UTF-8
	
	АдоДБСтрим = CreateObject("Adodb.Stream");	
	АдоДБСтрим.Charset="windows-1251";
	АдоДБСтрим.Type = 2;
	АдоДБСтрим.Mode= 3;
	АдоДБСтрим.Open();
	АдоДБСтрим.LoadFromFile(ПолноеИмяФайла); 
    ////Несытов{
	
    Байт=255;
	СтримВход=АдоДБСтрим;
	СтримВыход=СоздатьОбъект("ADODB.Stream");
    СтримВыход.Type=2;
    СтримВыход.charset="utf-8";
    СтримВыход.LineSeparator=-1;
    СтримВыход.Open();
    Всего=СтримВход.size;
    Пока СтримВход.EOS=0 Цикл
        СтримВыход.WriteText(СтримВход.ReadText(Байт),?(Байт=-2,1,0));
        Состояние("" + Формат(100 * СтримВход.position/Всего,"Ч(0)5.2")+"%");
    КонецЦикла;
    СтримВыход.SaveToFile(ПолноеИмяФайла,2);
	
	//ТекстАдоДБСтрим = АдоДБСтрим.ReadText();
	//АдоДБСтрим.Close();	
	//АдоДБСтрим.Charset = "utf-8";
	//АдоДБСтрим.Open();
	//АдоДБСтрим.WriteText(ТекстАдоДБСтрим);
	//АдоДБСтрим.SaveToFile(ПолноеИмяФайла, 2);
	//АдоДБСтрим.Close();
		
	////Несытов}
	Если ФС.СуществуетФайл(ПолноеИмяФайла)=1 Тогда
		Предупреждение("Сформирован файл: " + ПолноеИмяФайла);
	КонецЕсли;
Показать
smokevg; laf; vatson2904; di-pol; bahus87; +5
5. user912418 09.02.18 12:26 Сейчас в теме
Огромнейшее спасибо Олегу Несытову, я совсем не специалист и мне никто не мог помочь, изменила в конфигураторе ПодготовкаСведенийДляПФР2017 и вот оно счастье, всё заработало!!!! Ещё раз спасибо!!!
+
6. MenZurKa 13.02.18 10:52 Сейчас в теме
Гранд мерси! Заработало!)
+
7. Yul_kat 45 15.02.18 04:04 Сейчас в теме
Огромное спасибо!!!!!
+
8. 3627008639 15.02.18 11:36 Сейчас в теме
Cпасибо Олегу Несытову, помогло! Спасибо!!! Спасибо!!!Спасибо!!!Спасибо!!!Спасибо!!!Спасибо!!!Спасибо!!!
+
9. el_sol77 16.02.18 12:43 Сейчас в теме
Большое спасибо! Вы нам очень помогли!
+
10. MenZurKa 21.02.18 11:09 Сейчас в теме
Дополню чутка, у меня после данной дописки программа проверки начала выводить ошибку:
"в прологе проверяемого файла отсутствует указание кодировки или отсутствует пролог", я покурил интернеты и нашел, что 1С-ка сохраняет не в той кодировке, помогло в notepad++ изменить кодировку на UTF-8 без BOM, после чего ошибка ушла
smokevg; laf; +2
11. laf 26.02.18 09:13 Сейчас в теме
Спасибо всем! За ветку, за способы решения проблемы. А то вываливается без объяснений ...
+
Внимание! Тема сдана в архив

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