Доброго времени суток, увжаемые
случилось готовить алкогольную декларацию конкретно 6-ую форму ОПТ по формату 4.20
слетает 1с после формирования ТЗ(240 000 строк гдето) с сообщением microsoft visual....runtime error
далее закрывается 1с
как-то можно побороть?
помогите делом, не могу сдаться
Конфа=ТиС 9.2 с алкогольной надстройкой(винный дом)
Сервер:
XEON 2 материнки два проца 16 ядер
16 ГБ ОЗУ
MS windows server 2003 x86
готов предоставить доступ к РДП или teamviewer

ЗЫЖ: стоит наверное заметить что по формату 4.01 выгрузка происходила в текстовом формате с последующим конвертом в хмл
там же,специальной обработкой конвертилось в хмл
34 мегабайта на выходе получался xml, обороты примерно те же, только щас при создании хмл напрямую из 1с, падает
---
На моей памяти были случаи когда процесс 1С 7.7 пожирал чуть более гигабайта памяти, но ничего не падало. У тебя по моим приблизительным расчетам экземпляр 1с должен сожрать около 600-800 мб ОЗУ. Это еще не повод падать на самом деле для семерки
---
ivanov_alex, Вы не написали в каком режиме работаете в базе, файловом или клиентсерверном?
---
evgefremov,
1 С вер.7.70.027
ДБФ версия
режим работы терминал база на свободном ЖМД там же на сервере, доступ на запись есть(адм права)
---
ivanov_alex, тогда мощность сервера особого значения не имеет, видимо при формировании ТЗ упирается во внутренние ограничения 7ки. могу предложить попробовать то же самое в клиент-серверном режиме если есть возможность. если нет, переделывать модуль формирования ТЗ
---
evgefremov, вот и хотелось бы знать куда смотреть чтоб переделать ТЗ
раньше когда отчеты подавалсиь отдельно по головному и отдельно по обособке проблем не возникало
щас все это(головное и обособку) нужно впихнуть в одно ТЗ
---
Возможно проблема из-за нехватки памяти.
Посмотрите эту информацию (если имеется машина с x64 системой):
http://forum.infostart.ru/forum26/topic50264/message550809/#postform
И далее 14 сообщение в теме.
---
Давай доступ к RDP. Попробую помочь
---
seakuban, отправил в личку
---
На моей памяти были случаи когда процесс 1С 7.7 пожирал чуть более гигабайта памяти, но ничего не падало. У тебя по моим приблизительным расчетам экземпляр 1с должен сожрать около 600-800 мб ОЗУ. Это еще не повод падать на самом деле для семерки
---
твои бы слова...
на самом деле жрет побольше чем 600
---
благодарю seakuban за потраченное время, вопрос почти закрыт, остались мелочи
---
1. типизируй все колонки в ТЗ
2. избавься от текстовых колонок большой длины
3. не используй ТЗ, храни всё, например, в базе sqllite - это и быстрее и памяти не ест.
---
Ёпрст, да тут походу дела не в ТЗ дело
щас смотрю-тз формируется и не падает
падает при записи хмл...
---
Вовсе не так, точне не совсем так:

У тебя формирование ТЗ отъело всю память, на запись xml её ужо не хватает.
Клюшки > 2 гигов не держат, сваливаются еще раньше с ошибкой оут оф меммори.
---
Ёпрст, капец
и чего делать? посоветовали создать последовательнозаписываемыйфайл
чем то поможет?
---
неа.. открой диспетчер задач и ужаснись - сколько памяти съела твоя тз.

Типизируй в ней колонки явно при создании колонок ТЗ - будет меньше памяти есть.
Лучше конечно, "тз" создавать во временной табличке скуля\скульлайта или в дбф.
---
(16)
Менять алгоритм - это ДА. Однако попробуйте методу из (6) сообщения. Это тестировалось на очень похожей задаче/проблемы из (1) сообщения. И временно помогло. Потом пересматривал алгоритм. Сроки отчета по алкоголю... :-(
---
hogik, система х86 никаких largeaddressware
(16) Ёпрст, 1,2 гига оперативы на пике
при доступной памяти в 3.59 и расширением физических адресов до 15 гигов я уже хз что думать
---
Проверьте хоть до 3GB. Чего изменится?
"... программа, собранная с ключом /LARGEADDRESSAWARE:YES может выделять до 3-х гигабайт памяти, если 32-битная операционная система Windows запущена с ключом /3gb. Так вот, эта же 32-битная программа, запущенная на 64-битной системе, может выделить почти 4 GB памяти (на практике около 3.5 GB)."(с)
---
hogik, поставил ключ /3GB
тестирую
---
А программу EDITBIN-ом изменили?
---
hogik, знать бы ещё как менять...
---
внутренняя ошибка компоненты анализатора...
как то может в текст попробовать загнать?
---
Начните с простого совета из (16) сообщения в части типизации.
---
Вот моя похожая проблема и решение.
http://forum.infostart.ru/forum1/topic68468/message736111/#message736111
Смотрите только 1 и 13 сообщения.
Это если в Вашей задаче используется V7Plus.
Кстати, в разных версиях этой ВК были разные проявления проблемы. ;-)
(24)
Дык, выше по теме написано. Прикрепляйте в тему EXE-шник. Сделаю модификацию.
---
вот
---
Пробуйте.
---
hogik, ну ты мастер
сформировалось
и как полагается, отдаю награду
сколько есть стартов-все твои
мне работа важнее
ещё раз спасибо
---
Радует, что получен результат. Однако, надо разбираться с самим алгоритмом и его реализацией. Переделывать. Т.к. скоро будет отчет за четвертый квартал и потребуется уже четыре гигабайта... ;-)
---
hogik, следует перейти наверное на 64 бита
очень проблематично с работой 24/7
---
Следует переписать программу.
---
пока убрал обособку из отчета
буду добавлять второй блок ручками
опять гемор
---
самое верное решение - не использовать в7плюс вообще. работайте напрямую с msxml
---
34 мегабайта на выходе получался xml - это вообще ни о чём. выкидывайте v7plus.dll
---
andrewks, тогда какой компонент использовать?
формирование хмл без v7 както возможно?
---
ivanov_alex, если нужна DOM-модель - через прямое обращение к msxml

вот пример:

```1c
    Функция ВывестиЭлем(ТекЭлем,Знач Смещ);

    Рез=1;
    Попытка
    Если (ТекЭлем.nodeType=1) Тогда
    Сообщить(Смещ+"Элемент "+ТекЭлем.nodeName+":","!");
    ИначеЕсли (ТекЭлем.nodeType=3) Тогда
    Сообщить(Смещ+"Текст элемента: "+ТекЭлем.nodeValue);
    ИначеЕсли (ТекЭлем.nodeType=4) Тогда
    Сообщить(Смещ+"CDATA: "+ТекЭлем.nodeValue);
    ИначеЕсли (ТекЭлем.nodeType=8) Тогда
    Сообщить(Смещ+"Комментарий: "+ТекЭлем.nodeValue,"I");
    Иначе
    Сообщить(Смещ+"Элемент "+ТекЭлем.nodeName+":");
    Сообщить(Смещ+"Тип: "+ТекЭлем.nodeType);
    КонецЕсли;

    Для ном=0 По ТекЭлем.attributes.length-1 Цикл
    ТекАтр=ТекЭлем.attributes(ном);
    Сообщить(Смещ+"Атрибут: "+ТекАтр.nodeName+", значение: "+ТекАтр.nodeValue);
    КонецЦикла;

    Исключение
    Рез=0;
    КонецПопытки;

    Смещ=Смещ+" ";

    Для ном=0 По ТекЭлем.childNodes.length-1 Цикл
    ДочЭлем=ТекЭлем.childNodes(ном);
    Рез=Рез*ВывестиЭлем(ДочЭлем,Смещ);
    КонецЦикла;

    Возврат Рез;
    КонецФункции

    //*******************************************
    Функция Сформировать()

    ИмяФайла="D:\1.xml";

    Попытка
    ДОМ=СоздатьОбъект("MSXML.DOMDocument");
    Узел=ДОМ.CreateProcessingInstruction("xml","version="1.0" encoding="windows-1251"");
    Исключение
    Сообщить("Не удалось создать объект DOMDocument","!");
    Возврат 0;
    КонецПопытки;
    ДОМ.insertBefore(Узел,);

    ТекЭлем=ДОМ.appendChild(ДОМ.createElement("Файл"));
    Текст=ДОМ.createTextNode("Здесь содержимое Файл");
    ТекЭлем.appendChild(Текст);
    ТекЭлем.setAttribute("Атрибут_Файл_1","Здесь содержимое Атрибут_Файл_1");
    Комм=ДОМ.createComment("Далее следует содержимое файла");
    ТекЭлем.appendChild(Комм);

    ТекЭлем=ТекЭлем.appendChild(ДОМ.createElement("СодержимоеФайла"));
    Текст=ДОМ.createTextNode("Здесь содержимое СодержимоеФайла");
    ТекЭлем.appendChild(Текст);
    ТекЭлем.setAttribute("Атрибут_СодержимоеФайла_1","Здесь содержимое Атрибут_СодержимоеФайла_1");
    Текст=ДОМ.createCDATASection("Это секция CDATA");
    ТекЭлем.appendChild(Текст);
    ДОМ.save(ИмяФайла);

    Попытка
    ДОМ=СоздатьОбъект("MSXML.DOMDocument");
    Исключение
    Сообщить("Не удалось создать объект DOMDocument","!");
    Возврат 0;
    КонецПопытки;

    ДОМ.async=0;
    ДОМ.validateOnParse=-1;
    ДОМ.resolveExternals=-1;
    ДОМ.load(ИмяФайла);

    Если (ДОМ.parseError.errorCode<>0) Тогда
    // ошибки при проверке валидности

    Сообщить("При проверке валидности файла "+ИмяФайла+" выявлены ошибки!","!");
    Возврат 0;
    КонецЕсли;

    Рут=ДОМ.documentElement();
    Смещ=";
    Рез=ВывестиЭлем(Рут,Смещ);

    Возврат Рез;
    КонецФункции
```
---
если как последовательное чтение/запись - то от самому через FSO/adodb до многочисленных готовых библиотек типа FastXML
---
andrewks, fastxml разработка ромикса?
пользуюсь иногда его решениями для выгрузки баз с архивом более 2 гб
---
ясно, что ничего не ясно
буду курить мануалы что теперь
---
Пока "курите мануалы" сделайте одну рабочую станцию с х64 системой.
Т.е. если появятся проблемы при 3GB то, возможно, сможете сделать отчет на 4GB по сети.
---
hogik, придется
виртуальную может поствить
---
Вам известны VM системы поддерживающие х64 гостевые системы на 32-битном хосте?
Не надо усложнять. А Windows х64 в любом случае придется приобретать. Уверен, что в парке Вашей фирмы есть х64 железо. Поставьте на этом реальном железе WinXPx64 или Win7HPх64 (требуется решение "проблемы" порядка сортировки).
---
hogik, ordnochk.prm покатит?
---
Да. Установка "1С 7.7" (версия 27) на Win7x64 возможна. Есть нюансы.
Но, для подстраховки такое решение надо проработать заранее.
Хотя, еще раз скажу - надо переделывать программу.
Создавать XML не через v7plus. И огромная ТЗ не требуется для шестой формы.
---
hogik, каждый день гдето 560 документов
исключение-воскресения
так что тз большая
я про возвраты вообще молчу
---
Но, это не повод загонять их все в ТЗ. ;-)
---
hogik, ну хорошо, тогда как без тз?
делать запрос к документам?
какждый содержит от 50 до 260 строк
50*даже на 100 и все это на 78 дней(средний строк отгрузок за квартал)
опять много...
эти обороты ещё нужно умножать на два ибо основное +обособка
плюс дебильные сортировки плюс объявление поставщиков производителей и покупателей
я про нашу розницу молчу...11 форма-это 760 обособок
увольняться я не планирую, 4 года уже веду эту контору
плюс ещё розничные и оптовики пива добавились
так что в алкоголе я надолго, другое дело..столкнулся с таким западлом извините первый раз
---
Ох. Чувствую нечаянно наступил на "больную мозоль". :-(
Конечно Вам видней как реализовать алгоритмы в известной Вам схеме базы данных.
Отменяю своё замечание из (46) сообщения...