Имя: Пароль:
1C
1C 7.7
v7: При формировании отчёта: OUT OF MEMORY
0 little_s
 
31.08.11
17:30
на серевре стоит 64-битная винда.
стоит 2005 скуль.
1с.7.7

при формировании одного из очень больших отчетов при приближеннии к 1,5 ГБ отъедаемой памяти выскакиет сообщение OUT OF MEMORY.
я так понимаю, что просто 32-битный процесс ограничен таким объемом памяти и если он выходит за эти границы - ошибка.

можно ли как-то это победить? может можно увеличить объем отъедаемой памяти? подскажите плиз куда копать.
1 Goggy
 
31.08.11
17:31
перейти на 8?
2 Ёпрст
 
31.08.11
17:31
переписать отчет не предлагать ?
3 Господин ПЖ
 
31.08.11
17:31
попробовать занять 1 Гб у системы...
переписать отчет

выбирай
4 andrewks
 
31.08.11
17:31
оптимизировать отчёт не предлагать?
или вывести его за меньший период
5 smaharbA
 
31.08.11
17:32
может не нужен такой отчет ?
6 little_s
 
31.08.11
17:33
(1)  это с НГ планируем.. пока надо протянуть на 7.7
7 Leksus
 
31.08.11
17:34
(0) запустите на 64-ьитном клиенте
8 andrewks
 
31.08.11
17:34
(1) чтобы там кривой отчёт упал ещё быстрее?
9 little_s
 
31.08.11
17:34
(3) "попробовать занять 1Гб у системы" - мжно попподробнее??
10 andrewks
 
31.08.11
17:34
(7) що?
11 FN
 
31.08.11
17:35
переписать отчет
12 little_s
 
31.08.11
17:35
(8) просто отчет по многим периодам по всем 60 000 товарам. по 5 разным периодом, где 2 полугодия, 3 месяца, 2 месяца, 1 месяц.
при формирвоании формируется общий файл бвф.
разбивать на несколько неудобно. т.к. потом дополнительно придется это склеивать.
13 little_s
 
31.08.11
17:36
(7)  это как?
14 Господин ПЖ
 
31.08.11
17:36
/3GB
15 Ёпрст
 
31.08.11
17:36
(12) переписывай отчет.
16 little_s
 
31.08.11
17:36
(4) выводить за меньший период - не вариант
17 little_s
 
31.08.11
17:37
(14) до 3ГБ не дотягиваем.. даже при наличии свободной памяти мансимум 1,7 ГБ и вылетает.
18 little_s
 
31.08.11
17:37
(15)ммм.. и я так предполагаю сразу на прямые запросы лучше?
19 andrewks
 
31.08.11
17:38
(14) дык отжирает-то не скуль, а 1с вроде
20 Ёпрст
 
31.08.11
17:38
(18) лучше да, а так, нам отсюда не видно текст запроса.
21 little_s
 
31.08.11
17:38
(19) да.. именно 1С
22 Господин ПЖ
 
31.08.11
17:39
(19) причем тут скуль...
23 Господин ПЖ
 
31.08.11
17:39
скуль ограничить можно по памяти
24 victuan1
 
31.08.11
17:39
(12) Промежуточные переменные обнуляй после их использования в ходе формирования отчета. Максимально типизируй типы в таблицах значений.
25 smaharbA
 
31.08.11
17:41
(14) тут это не поможет
26 Господин ПЖ
 
31.08.11
17:41
(17) у тебя /3GB включено или нет? если нет - куда тянуться собрался? 2 Гб на процесс и все...
27 andrewks
 
31.08.11
17:42
(22) тогда при чём тут /3GB ?
28 Господин ПЖ
 
31.08.11
17:43
видяха кстати поди втроенная? она тоже память некисло жрет...
29 Leksus
 
31.08.11
17:46
(13) 32-битные приложения в 64-битной среде могут использовать больше памяти чем в 32-битной
Конкретнее: подсистема WoW64 позволяет 32-битным приложениям использовать до 4Гб памяти

правда незнаю, работает ли это с 1С 7.7
30 andrewks
 
31.08.11
17:48
(29) ты (0) читал вообще?
31 Leksus
 
31.08.11
17:49
(30) читал
там ничего не сказано про клиент
32 andrewks
 
31.08.11
17:51
(31) а, ты вон про чё. но там и не сказано, что 1с запускается на клиентском хосте

(0) как работаете с 1с? запускаете с клиентских машин, или на сервере в терминальнике сидите вместе со скулем?
33 little_s
 
31.08.11
17:55
(32)все работают в терминале
34 little_s
 
31.08.11
17:56
(29) так вот про это и вопрос. нашла в нете , что вроде как можно увеличить объем потребляемой памяти, но не уверена что для 1С подходит
35 Leksus
 
31.08.11
17:58
(34)
Подсистема WoW64 не поддерживает следующие программы:

   программы, скомпилированные для 16-разрядных операционных систем;
   программы режима ядра, скомпилированные для 32-разрядных операционных систем.

http://www.realcoding.net/articles/urok-02-podderzhka-32-bitnykh-prilozhenii-v-64-bitnoi-srede-windows.html
36 little_s
 
31.08.11
17:58
(+29) кто-нить использовал эти утилиты?
37 Ёпрст
 
31.08.11
18:03
(36) нету таких.
38 little_s
 
31.08.11
18:04
Преимущество 64-битной среды для 32-битных программИз-за наличия прослойки WoW64 32-битные программы работают менее эффективно в 64-битной среде, чем в 32-битной. Но все-таки, простые 32-битные приложения могут получить одно преимущество от их запуска в 64-битной среде. Вы, наверное, знаете, что программа, собранная с ключом /LARGEADDRESSAWARE:YES может выделять до 3-х гигабайт памяти, если 32-битная операционная система Windows запущена с ключом /3gb. Так вот, эта же 32-битная программа, запущенная на 64-битной системе, может выделить почти 4 GB памяти (на практике около 3.5 GB).



это не работает с 1С?
39 Ёпрст
 
31.08.11
18:04
(38) нет.
40 little_s
 
31.08.11
18:05
(39) ясно .. тогда только переписывать отчет
41 Дык ё
 
31.08.11
18:05
(38) это работает. возьми утилиту editbin.exe (идет в составе ms visual studio) и установи в 1cv7s.exe флаг largeaddressaware - получишь 4 гигабайта на x64
42 little_s
 
31.08.11
18:06
(41) вот про неё и разговор...

т.е. она реально работает? ок
43 Ёпрст
 
31.08.11
18:06
(41) есть готовый exe-ник попробовать ?
44 Дык ё
 
31.08.11
18:07
+(41) но ты поступишь мудро, если перепишешь свой отчет по-человечески :-)
45 Дык ё
 
31.08.11
18:08
(43) у тебя нет визуал студии? О_о
46 andrewks
 
31.08.11
18:08
(35) ты щас вообще о чём?
47 andrewks
 
31.08.11
18:09
(41) ты сам пробовал? где гарантия, что предприятие будет функционировать корректно?
48 Дык ё
 
31.08.11
18:11
(47) да, я пробовал. а гарантию может дать только госстрах :-)
49 andrewks
 
31.08.11
18:11
(48) юзал на рабочей базе? какой период?
50 andrewks
 
31.08.11
18:39
editbin.exe бесплатно можно взять в составе MASM
51 andrewks
 
31.08.11
18:39
52 Ёпрст
 
31.08.11
23:10
(45) есть, но только в другом месте.
ладно,слеплю сам, потестю.
53 little_s
 
01.09.11
12:09
вобщем.отчитываюсь.. сделала вчера:

Установить Microsoft Visual Studio

Start-Run-cmd

call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"
editbin /LARGEADDRESSAWARE c:\1cv7s.exe

всё началоо работать....
процесс отъел 2.1 ГБ и 1С не вылетела.
данные сформировались корректные
54 little_s
 
01.09.11
12:10
только блин стала формироваться она почему-то в 2 раза почти медленнее.
но может потому что писался паралленльно лог в sql.

сейчас запущу для теста без записи лога.
55 Ёпрст
 
01.09.11
12:16
тоже попробовал, до 3.5 гигов на проц держит, дальше лень смотреть было - прибил процесс.
56 Ёпрст
 
01.09.11
12:17
+55 но всё равно, это решение через 1 место.
Переписывай отчет.
57 little_s
 
01.09.11
12:45
(56) отчет тоже оптимизировала.
самое больное место по памяти , если в таблицах значений есть ссылки... убрадла хранение ссылок, уже намного лучше
58 Ёпрст
 
01.09.11
12:48
(57) в ТЗ ссылки, это как ?
Мот ты путаешь с Таблицей  ?
59 Ёпрст
 
01.09.11
12:50
+58 ежели всё же Таблица у тебя, то:

1.убери автовысоту со всех строк
2.выкини все расшифровки ячеек
3.замени все объединенные ячейки на галку - по выделенным столбцам
4.выкини все картинки.
60 little_s
 
01.09.11
13:00
(58)ТЗ.НоваяКолонка("Товар","Справочник.Товары");

вот так
61 Господин ПЖ
 
01.09.11
13:02
ну дык чего - тормозит или нет?
62 Ёпрст
 
01.09.11
13:03
(60) мот ты всё покажешь ?
63 little_s
 
01.09.11
13:04
(61) отчет крутится около 3 часов.. как скрутится отпишусь
64 little_s
 
01.09.11
13:05
(62) стыдновато :)))
отчет писался давным-давно другими программерами.. а тут сейчас начнут проходиться по личностям сразу же :)
65 little_s
 
01.09.11
13:07
(+64) а заняться оптимизацией некогда..т.к. готовимся к переходу на 8.2.

но если желаете могу выложить :) если не будете очень лажать мою личность, т.к. писала не Я.
66 Ёпрст
 
01.09.11
13:07
(63) 3 часа ?!
тебе коленку еще не пристрелили за это ?!
67 Ёпрст
 
01.09.11
13:07
(65) выкладывай.
68 little_s
 
01.09.11
13:09
(66)  поэтому  его вынесла  в автоматическое формирование ночью.. утром пришли.. а данные уже готовы все
69 little_s
 
01.09.11
13:10
//*******************************************
Перем ДатаОтчета;
//Перем ТекстЗапроса[7];
Перем ТекстЗапроса;
Перем ВыбКлиент;
Перем ТЗХр[7];
   
Перем Таб;
Перем МинКол;
Перем КолПродК[7];
Перем File_dbf;
Перем UseDim[7];
Перем ТоварВ;
Перем НачОстТов[7];
Перем ПроКол[7];
Перем КолПро[7];      
Перем КолПроИ[7];
Перем ПроКолИ[7];
Перем Запрос, Запрос1;
Перем ЗапросДи[7];
Перем Склад[7];  
Перем ЗапросОстП[7];  
Перем Start_Date[7];
Перем End_Date[7];
Перем N_Per;
Перем ДефКол[7];
Перем ДефКолИ[7];
Перем ДефКоВ[7];
Перем ДефКоВИ[7];
Перем ОстСк1;
Перем ОстСк1И;
Перем ОстСкВ;      
Перем ОстСкВИ;
Перем Заказ;
Перем ЗаказР;
Перем ЗаказИ;
Перем ЗаказИР;
Перем Инвойс;
Перем ИнвойсИ;
Перем ЗакКл;
Перем ЗакКлИ;
Перем Склад_1;
Перем СписКлн;        
Перем СписСкл;
Перем ПризнПродажи,ПризнПрихода, ПризнПрихода1, ПризнПрихода2;

Процедура ВыбрФайл1(ИмяФайла1)
   Перем Каталог;
   ИмяФайла1="Base.dbf";
   Если ФС.ВыбратьФайл(0, ИмяФайла1, ПутьВыгрузки, "Выберите файл", "Файл данных (*.dbf) |*.dbf|Все файлы (*.*) |*.*")=1 Тогда
       ФайлВыгрузки1=ПутьВыгрузки+ИмяФайла1;
   КонецЕсли;
КонецПроцедуры      

Процедура ПриВыбореСклада()  
   Если (НазваниеНабораПрав()="НОПР") Тогда  
       Если ВыбСклад.Номер=1 Тогда
           ВыбСклад=Константа.СкладОтгрузкиЗаказногоТовара;
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры  

Процедура Crea_file(File_dbf)
   File_dbf.AddField("KodArticle",2,24,0);  //Код товара
   File_dbf.AddField("Article",2,100,0);    //Наименование
   File_dbf.AddField("PIN",2,20,0);         //ПИН
   File_dbf.AddField("Postavchik",2,30,0);  //Поставщик
   File_dbf.AddField("Analog",2,15,0);      //Аналог
   File_dbf.AddField("sort",1,2,0);         //Схема доставки
   File_dbf.AddField("MinKolAvto",2,15,0);  //Минимальное количество в заказе
   File_dbf.AddField("ZakazPrim",2,15,0);   //Примечания по Заказу
   File_dbf.AddField("Komplekt",1,15,0);    //Комплект на автомобиль
   File_dbf.AddField("Prim",2,15,0);        //Примечание
   File_dbf.AddField("Ves",2,15,0);         //Примечание
   File_dbf.AddField("Limit",2,25,0);       //Лимиты
   File_dbf.AddField("StartQ1",1,19,0);     //Остаток на начало периода
   File_dbf.AddField("StartQ2",1,19,0);  
   File_dbf.AddField("StartQ3",1,19,0);  
   File_dbf.AddField("StartQ4",1,19,0);  
   File_dbf.AddField("StartQ5",1,19,0);  
   File_dbf.AddField("ProKol1",1,19,0);     //Продажи
   File_dbf.AddField("ProKol2",1,19,0);  
   File_dbf.AddField("ProKol3",1,19,0);  
   File_dbf.AddField("ProKol4",1,19,0);  
   File_dbf.AddField("ProKol5",1,19,0);  
   File_dbf.AddField("KolPro1",1,19,0);     //Количество продаж
   File_dbf.AddField("KolPro2",1,19,0);    
   File_dbf.AddField("KolPro3",1,19,0);    
   File_dbf.AddField("KolPro4",1,19,0);    
   File_dbf.AddField("KolPro5",1,19,0);    
   File_dbf.AddField("DefKoV1",1,19,0);     //Кол-во человек, спросивших деталь
   File_dbf.AddField("DefKol1",1,19,0);     //Запрашиваемое количество
   File_dbf.AddField("DefKoV2",1,19,0);    
   File_dbf.AddField("DefKol2",1,19,0);    
   File_dbf.AddField("DefKoV3",1,19,0);    
   File_dbf.AddField("DefKol3",1,19,0);    
   File_dbf.AddField("DefKoV4",1,19,0);    
   File_dbf.AddField("DefKol4",1,19,0);    
   File_dbf.AddField("DefKoV5",1,19,0);    
   File_dbf.AddField("DefKol5",1,19,0);    
   File_dbf.AddField("OstSkl",1,19,0);      //Остаток на основных складах
   File_dbf.AddField("OstSklVse",1,19,0);   //Остаток на  всех складах
   File_dbf.AddField("Zakaz",1,19,0);         //Остаток заказа
   File_dbf.AddField("Invois",1,19,0);       //Остаток инвойсов    
   File_dbf.AddField("ZakazKl",1,19,0);       //Остаток заказов клиентов    
   Если Выб_Розн=1 Тогда
       File_dbf.AddField("CenaR",1,19,2);       //Цена розницы
   КонецЕсли;
   Если Выб_М_опт=1 Тогда
       File_dbf.AddField("CenaM",1,19,2);       //Цена М опт
   КонецЕсли;
   Если Выб_Опт=1 Тогда
       File_dbf.AddField("Cena",1,19,2);           //Цена опт
   КонецЕсли;
   Если Выб_Цена_1=1 Тогда
       File_dbf.AddField("Cena1",1,19,2);       //Цена 1
   КонецЕсли;
   Если Выб_Цена_2=1 Тогда
       File_dbf.AddField("Cena2",1,19,2);       //Цена 2
   КонецЕсли;
   Если Выб_Цена_3=1 Тогда
       File_dbf.AddField("Cena3",1,19,2);       //Цена 3
   КонецЕсли;
   Если Выб_Цена_4=1 Тогда
       File_dbf.AddField("Cena4",1,19,2);       //Цена 4
   КонецЕсли;
   Если Выб_Миним=1 Тогда
       File_dbf.AddField("CenaMin",1,19,2);       //Цена Мин
   КонецЕсли;
   File_dbf.AddField("CenaZak",1,19,2);       //Цена закупки
   File_dbf.AddField("Valuta",2,19,0);       //Валюта закупки
   File_dbf.AddField("ProgSS",1,19,2);         // Прогнозная себестоимость в деньгах
   File_dbf.AddField("Xodovaia",2,3,0);       //Ходовая
   File_dbf.AddField("Rasprodaza",1,2,0);       //Распродажа  
   File_dbf.AddField("Gr",2,24,0);    //родитель родитель
   File_dbf.AddField("GrGr",2,24,0);    //род род род  
   File_dbf.AddField("GrGrGr",2,24,0);    //род      
   File_dbf.AddField("Original",2,100,0);    //род      
   File_dbf.CreateFile(ФайлВыгрузки1);
КонецПроцедуры

Процедура Crea_file1(File_dbf)
   File_dbf.AddField("KodArticle",2,24,0);  //Код товара
   File_dbf.AddField("Article",2,100,0);    //Наименование
   File_dbf.AddField("PIN",2,20,0);         //ПИН
   File_dbf.AddField("Postavchik",2,30,0);  //Поставщик
   File_dbf.AddField("Analog",2,15,0);      //Аналог
   File_dbf.AddField("sort",1,2,0);         //Схема доставки
   File_dbf.AddField("MinKolAvto",2,15,0);  //Минимальное количество в заказе
   File_dbf.AddField("ZakazPrim",2,15,0);   //Примечания по Заказу
   File_dbf.AddField("Komplekt",1,15,0);    //Комплект на автомобиль
   File_dbf.AddField("Prim",2,15,0);        //Примечание
   File_dbf.AddField("Ves",2,15,0);         //Примечание
   File_dbf.AddField("Limit",2,25,0);       //Лимиты
   File_dbf.AddField("StartQ1",1,19,0);     //Остаток на начало периода
   File_dbf.AddField("StartQ2",1,19,0);  
   File_dbf.AddField("StartQ3",1,19,0);  
   File_dbf.AddField("StartQ4",1,19,0);  
   File_dbf.AddField("StartQ5",1,19,0);  
   File_dbf.AddField("ProKol1",1,19,0);     //Продажи
   File_dbf.AddField("ProKol2",1,19,0);  
   File_dbf.AddField("ProKol3",1,19,0);  
   File_dbf.AddField("ProKol4",1,19,0);  
   File_dbf.AddField("ProKol5",1,19,0);  
   File_dbf.AddField("KolPro1",1,19,0);     //Количество продаж
   File_dbf.AddField("KolPro2",1,19,0);    
   File_dbf.AddField("KolPro3",1,19,0);    
   File_dbf.AddField("KolPro4",1,19,0);    
   File_dbf.AddField("KolPro5",1,19,0);    
   File_dbf.AddField("DefKoV1",1,19,0);     //Кол-во человек, спросивших деталь
   File_dbf.AddField("DefKol1",1,19,0);     //Запрашиваемое количество
   File_dbf.AddField("DefKoV2",1,19,0);    
   File_dbf.AddField("DefKol2",1,19,0);    
   File_dbf.AddField("DefKoV3",1,19,0);    
   File_dbf.AddField("DefKol3",1,19,0);    
   File_dbf.AddField("DefKoV4",1,19,0);    
   File_dbf.AddField("DefKol4",1,19,0);    
   File_dbf.AddField("DefKoV5",1,19,0);    
   File_dbf.AddField("DefKol5",1,19,0);    
   File_dbf.AddField("OstSkl",1,19,0);      //Остаток на основных складах
   File_dbf.AddField("OstSklVse",1,19,0);   //Остаток на  всех складах
   File_dbf.AddField("Zakaz",1,19,0);         //Остаток заказа
   File_dbf.AddField("Invois",1,19,0);       //Остаток инвойсов    
   File_dbf.AddField("ZakazKl",1,19,0);       //Остаток заказов клиентов    
   Если Выб_Розн=1 Тогда
       File_dbf.AddField("CenaR",1,19,2);       //Цена розницы
   КонецЕсли;
   Если Выб_М_опт=1 Тогда
       File_dbf.AddField("CenaM",1,19,2);       //Цена М опт
   КонецЕсли;
   Если Выб_Опт=1 Тогда
       File_dbf.AddField("Cena",1,19,2);           //Цена опт
   КонецЕсли;
   Если Выб_Цена_1=1 Тогда
       File_dbf.AddField("Cena1",1,19,2);       //Цена 1
   КонецЕсли;
   Если Выб_Цена_2=1 Тогда
       File_dbf.AddField("Cena2",1,19,2);       //Цена 2
   КонецЕсли;
   Если Выб_Цена_3=1 Тогда
       File_dbf.AddField("Cena3",1,19,2);       //Цена 3
   КонецЕсли;
   Если Выб_Цена_4=1 Тогда
       File_dbf.AddField("Cena4",1,19,2);       //Цена 4
   КонецЕсли;
   Если Выб_Миним=1 Тогда
       File_dbf.AddField("CenaMin",1,19,2);       //Цена Мин
   КонецЕсли;
   File_dbf.AddField("CenaZak",1,19,2);       //Цена закупки
   File_dbf.AddField("Valuta",2,19,0);       //Валюта закупки
   File_dbf.AddField("Xodovaia",2,3,0);       //Ходовая
   File_dbf.AddField("Rasprodaza",1,2,0);       //Распродажа
   File_dbf.AddField("DataWiev",1,2,0);       //ДатаОтчета
   File_dbf.AddField("Gr",2,24,0);    //родитель родитель
   File_dbf.AddField("GrGr",2,24,0);    //род род род      
   File_dbf.AddField("GrGrGr",2,24,0);    //род        
   File_dbf.AddField("Original",2,100,0);    //род      
   File_dbf.CreateFile(ФайлВыгрузки1);
КонецПроцедуры

Процедура Клик2()
   Если Use2=1 Тогда                                                            
       Форма.ДатаНач2.Видимость(1);
       Форма.ДатаКон2.Видимость(1);
   Else
       Форма.ДатаНач2.Видимость(0);
       Форма.ДатаКон2.Видимость(0);
       Use3=0;
       Форма.ДатаНач3.Видимость(0);
       Форма.ДатаКон3.Видимость(0);
       Use4=0;
       Форма.ДатаНач4.Видимость(0);
       Форма.ДатаКон4.Видимость(0);
   КонецЕсли
КонецПроцедуры

Процедура Клик3()
   Если Use3=1 Тогда
       Форма.ДатаНач3.Видимость(1);
       Форма.ДатаКон3.Видимость(1);
       Use2=1;
       Клик2();
   Else
       Форма.ДатаНач3.Видимость(0);
       Форма.ДатаКон3.Видимость(0);
       Use4=0;
       Форма.ДатаНач4.Видимость(0);
       Форма.ДатаКон4.Видимость(0);
   КонецЕсли
КонецПроцедуры

Процедура Клик4()
   Если Use4=1 Тогда
       Форма.ДатаНач4.Видимость(1);
       Форма.ДатаКон4.Видимость(1);
       Use3=1;
       Клик3();
   Else
       Форма.ДатаНач4.Видимость(0);
       Форма.ДатаКон4.Видимость(0);
   КонецЕсли
КонецПроцедуры

Процедура Клик5()
   Если Use5=1 Тогда
       Форма.ДатаНач5.Видимость(1);
       Форма.ДатаКон5.Видимость(1);
       Use4=1;
       Клик4();
   Else
       Форма.ДатаНач5.Видимость(0);
       Форма.ДатаКон5.Видимость(0);
   КонецЕсли
КонецПроцедуры
//

Процедура СформироватьСтрокуТаб(Выв_Строка)
     Лимиты=СоздатьОбъект("Справочник.БухЛимиты");
   // Формируем шапку таблицы
   Таб.ВывестиСекцию(Выв_Строка+"|Верт_товар");  
   Тов=ЗапросОстП[1].Товар;
   Если дбф=1 Тогда
       File_dbf.Add();
       File_dbf.KodArticle=Тов.Код;
       File_dbf.Article=Тов.Наименование;
       File_dbf.PIN=Тов.PIN;  
       Если Выв_Строка="Группа" Тогда  
       Иначе
           File_dbf.Postavchik=Тов.Поставщик.Наименование;  
           File_dbf.Analog=Тов.Аналог;  
           Лимиты.ИспользоватьВладельца(Тов);
           Лимиты.ВыбратьЭлементы();
           Пока Лимиты.ПолучитьЭлемент()=1 Цикл  
               File_dbf.sort=Лимиты.Схема;  
           КонецЦикла;
           File_dbf.MinKolAvto=Тов.МинКолЗак;  
           File_dbf.ZakazPrim=Тов.Заказ.Наименование;  
           File_dbf.Komplekt=Тов.Комплект;  
           File_dbf.Ves=Тов.Вес;  
           File_dbf.Prim=Тов.КодТНВЭД.ТамПошлина;
           File_dbf.Xodovaia=Строка(Тов.Категория);  
           File_dbf.Rasprodaza=Тов.Распродажа;  
           File_dbf.Limit=Строка(МинКол);    
           File_dbf.Gr=Тов.Родитель.Родитель.Код;
           File_dbf.GrGr=Тов.Родитель.Родитель.Родитель.Код;
           File_dbf.GrGrGr=Тов.Родитель.Код;
           Попытка
               File_dbf.DataWiev=ДатаКон1;  
           Исключение
           КонецПопытки;
       КонецЕсли;
   КонецЕсли;
               
   Для ncl=1 По N_Per Цикл
       Если ncl=1 Тогда
           Таб.ПрисоединитьСекцию(Выв_Строка+"|Продажи");
           Если дбф=1 Тогда  
               Если Выв_Строка="Группа" Тогда
               Иначе
                   File_dbf.StartQ1=НачОстТов[ncl];     //Начальный остаток
                   File_dbf.ProKol1=Прокол[ncl];     //Продажи
               КонецЕсли;
           КонецЕсли;
       Else
           Таб.ПрисоединитьСекцию(Выв_Строка+"|ПродажиП");
           Если дбф=1 Тогда
               Если ncl=2 Тогда  
                   Если Выв_Строка="Группа" Тогда
                   Иначе    
                       File_dbf.StartQ2=НачОстТов[ncl];     //Начальный остаток
                       File_dbf.ProKol2=Прокол[ncl];  
                   КонецЕсли;
               ИначеЕсли ncl=3 Тогда  
                   Если Выв_Строка="Группа" Тогда
                   Иначе    
                       File_dbf.StartQ3=НачОстТов[ncl];     //Начальный остаток
                       File_dbf.ProKol3=Прокол[ncl];  
                   КонецЕсли;
               ИначеЕсли ncl=4 Тогда  
                   Если Выв_Строка="Группа" Тогда
                   Иначе
                       File_dbf.StartQ4=НачОстТов[ncl];     //Начальный остаток
                       File_dbf.ProKol4=Прокол[ncl];  
                   КонецЕсли;
               ИначеЕсли ncl=5 Тогда  
                   Если Выв_Строка="Группа" Тогда
                   Иначе
                       File_dbf.StartQ5=НачОстТов[ncl];     //Начальный остаток
                       File_dbf.ProKol5=Прокол[ncl];  
                   КонецЕсли;
               КонецЕсли;
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
       Для ncl=1 По N_Per Цикл
           Если ncl=1 Тогда
               Таб.ПрисоединитьСекцию(Выв_Строка+"|КолПрод");  
               Если дбф=1 Тогда    
                   Если Выв_Строка="Группа" Тогда
                   Иначе
                       File_dbf.KolPro1=КолПро[ncl];     //Количество продаж  
                   КонецЕсли;
               КонецЕсли;
           Else
               Таб.ПрисоединитьСекцию(Выв_Строка+"|КолПродП");    
               Если дбф=1 Тогда
                   Если ncl=2 Тогда
                       Если Выв_Строка="Группа" Тогда
                       Иначе
                           File_dbf.KolPro2=КолПро[ncl];      
                       КонецЕсли;
                   ИначеЕсли ncl=3 Тогда  
                       Если Выв_Строка="Группа" Тогда
                       Иначе
                           File_dbf.KolPro3=КолПро[ncl];      
                       КонецЕсли;
                   ИначеЕсли ncl=4 Тогда  
                       Если Выв_Строка="Группа" Тогда
                       Иначе
                           File_dbf.KolPro4=КолПро[ncl];      
                       КонецЕсли;
                   ИначеЕсли ncl=5 Тогда  
                       Если Выв_Строка="Группа" Тогда
                       Иначе
                           File_dbf.KolPro5=КолПро[ncl];      
                       КонецЕсли;
                   КонецЕсли;
               КонецЕсли;
           КонецЕсли;
       КонецЦикла;            
   Для ncl=1 По N_Per Цикл
       Если ncl=1 Тогда
           Таб.ПрисоединитьСекцию(Выв_Строка+"|Дефицит");    
           Если дбф=1 Тогда  
               Если Выв_Строка="Группа" Тогда
               Иначе
                   File_dbf.DefKoV1=ДефКоВ[ncl];     //Кол-во человек, спросивших деталь
                   File_dbf.DefKol1=ДефКол[ncl] ;     //Запрашиваемое количество      
               КонецЕсли;
           КонецЕсли;
       Else
           Таб.ПрисоединитьСекцию(Выв_Строка+"|ДефицитП");      
           Если дбф=1 Тогда
               Если ncl=2 Тогда  
                   Если Выв_Строка="Группа" Тогда
                   Иначе
                       File_dbf.DefKoV2=ДефКоВ[ncl];    
                       File_dbf.DefKol2=ДефКол[ncl] ;    
                   КонецЕсли;
               ИначеЕсли ncl=3 Тогда  
                   Если Выв_Строка="Группа" Тогда
                   Иначе
                       File_dbf.DefKoV3=ДефКоВ[ncl];    
                       File_dbf.DefKol3=ДефКол[ncl] ;    
                   КонецЕсли;
               ИначеЕсли ncl=4 Тогда  
                   Если Выв_Строка="Группа" Тогда
                   Иначе
                       File_dbf.DefKoV4=ДефКоВ[ncl];    
                       File_dbf.DefKol4=ДефКол[ncl] ;    
                   КонецЕсли;
               ИначеЕсли ncl=5 Тогда  
                   Если Выв_Строка="Группа" Тогда
                   Иначе
                       File_dbf.DefKoV5=ДефКоВ[ncl];    
                       File_dbf.DefKol5=ДефКол[ncl] ;    
                   КонецЕсли;
               КонецЕсли;
           КонецЕсли;
       КонецЕсли;    
   КонецЦикла;  
       Если (НазваниеНабораПрав()="НОПР") Тогда
           Таб.ПрисоединитьСекцию(Выв_Строка+"|Остаток");
       Иначе  
           Таб.ПрисоединитьСекцию(Выв_Строка+"|Остаток");
           Таб.ПрисоединитьСекцию(Выв_Строка+"|Заказ");
       КонецЕсли;
       Если дбф=1 Тогда
           Если Выв_Строка="Группа" Тогда
           Иначе
               File_dbf.OstSkl=ОстСк1 ;      //Остаток на складе  
               File_dbf.OstSklVse=ОстСкВ ;      //Остаток на складе  
           КонецЕсли;  
           File_dbf.ZakazKl=ЗакКл ;          //Заказы клиентов
       КонецЕсли;
   // Надо вставить колонки цен каталога
   Если Выб_Розн=1 Тогда
       Таб.ПрисоединитьСекцию(Выв_Строка+"|Цена_Розн");  
       Если дбф=1 Тогда    
           Если Выв_Строка="Группа" Тогда
           Иначе
               File_dbf.CenaR = глОпределениеЦены(Контекст,Тов, глПТРЦР,0);
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
   Если Выб_М_опт=1 Тогда
       Таб.ПрисоединитьСекцию(Выв_Строка+"|Цена_МОпт");  
       Если дбф=1 Тогда
           Если Выв_Строка="Группа" Тогда
           Иначе    
               File_dbf.CenaM=глОпределениеЦены(Контекст,Тов,глПТРЦМО,0);
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
   Если Выб_Опт=1 Тогда
       Таб.ПрисоединитьСекцию(Выв_Строка+"|Цена_Опт");      
       Если дбф=1 Тогда
           Если Выв_Строка="Группа" Тогда
           Иначе              
               File_dbf.Cena = глОпределениеЦены(Контекст,Тов,глПТРЦО,0);
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
   Если Выб_Цена_1=1 Тогда
       Таб.ПрисоединитьСекцию(Выв_Строка+"|Цена_1");  
       Если дбф=1 Тогда
           Если Выв_Строка="Группа" Тогда
           Иначе                        
               File_dbf.Cena1= глОпределениеЦены(Контекст,Тов,Перечисление.ТипыРасхЦен.Цена1,0);
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
   Если Выб_Цена_2=1 Тогда
       Таб.ПрисоединитьСекцию(Выв_Строка+"|Цена_2");
       Если дбф=1 Тогда  
           Если Выв_Строка="Группа" Тогда
           Иначе                    
               File_dbf.Cena2 = глОпределениеЦены(Контекст,Тов,Перечисление.ТипыРасхЦен.Цена2,0);
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
   Если Выб_Цена_3=1 Тогда
       Таб.ПрисоединитьСекцию(Выв_Строка+"|Цена_3");
       Если дбф=1 Тогда  
           Если Выв_Строка="Группа" Тогда
           Иначе
               File_dbf.Cena3 = глОпределениеЦены(Контекст,Тов,Перечисление.ТипыРасхЦен.Цена3,0);
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
   Если Выб_Цена_4=1 Тогда
       Таб.ПрисоединитьСекцию(Выв_Строка+"|Цена_4");  
       Если дбф=1 Тогда  
           Если Выв_Строка="Группа" Тогда
           Иначе  
               File_dbf.Cena4 = глОпределениеЦены(Контекст,Тов,Перечисление.ТипыРасхЦен.Цена4,0);
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
   Если Выб_Миним=1 Тогда
       Таб.ПрисоединитьСекцию(Выв_Строка+"|Цена_М");
       Если дбф=1 Тогда
           Если Выв_Строка="Группа" Тогда
           Иначе      
               File_dbf.CenaMin  = глОпределениеЦены(Контекст,Тов,Перечисление.ТипыРасхЦен.Цена_М,0);
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;          
   Если _ЦенаПост = 1 Тогда    
       Если Выв_Строка="Группа" Тогда
       Иначе
           СпрПост = СоздатьОбъект("Справочник.ЦеныПоставщиков");            
           СпрПост.ИспользоватьВладельца(Тов);      
           СпрПост.ПорядокРеквизита("Поставщик");
           СпрПост.ИспользоватьДату(ПолучитьДатуТА() );
           СпрПост.ВыбратьЭлементы();
           ЦП = "";
           ПослПост = ПолучитьПустоеЗначение("Справочник.Клиенты");
           Пока СпрПост.ПолучитьЭлемент() = 1 Цикл
               Если ПослПост <> СпрПост.Поставщик Тогда                  
                   Если СокрЛП(ЦП) = "" Тогда
                   Иначе    
                       ЦП = ЦП + ";";
                   КонецЕсли;
                   ЦП = Цп +СокрЛП(СпрПост.Поставщик) + ":" + Строка(СпрПост.Количество) + "-" + Строка(СпрПост.ЦенаЗаказа);
                   ПослПост = СпрПост.Поставщик;
               Иначе                    
                   ЦП = ЦП + "," + Строка(СпрПост.Количество) + "-" + Строка(СпрПост.ЦенаЗаказа);
               КонецЕсли;
           КонецЦикла;
       КонецЕсли;  
       Таб.ПрисоединитьСекцию(Выв_Строка+"|Цена_Пост");
   КонецЕсли;      
   Если дбф=1 Тогда
       Если Выв_Строка="Группа" Тогда
       Иначе
           File_dbf.CenaZak=Тов.Прих_Цена;  
           File_dbf.Valuta=Тов.ВалютаЗакуп.Сокр_назв;    
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры
         
Процедура Сформировать(ncl)
   ТекстЗапроса="Период с {Start_Date[ncl]}";
   Если End_Date[N_Per]>=ПолучитьДатуТА() Тогда
       End_Date[N_Per]=ПолучитьДатуТА();
       ТекстЗапроса= ТекстЗапроса+";";
   Иначе
       ТекстЗапроса= ТекстЗапроса+" по {End_Date[ncl]};";
   КонецЕсли;                                    
   ТекстЗапроса=ТекстЗапроса+"
   //"//{{ЗАПРОС(Сформировать)
   |Обрабатывать НеПомеченныеНаУдаление;
   |Товар        =    Справочник.Товары.ТекущийЭлемент,
   |                Регистр.ОстаткиТоваров.Товар,
   |                Регистр.Дефицит.Товар,
   |                Регистр.Заказы.Товар,
   |                Регистр.ЗаказыПлановые.Товар,
   |                Регистр.ЗаказыВПути.Товар;
   |Поставщик    =    Справочник.Товары.Поставщик,
   |                Регистр.ОстаткиТоваров.Товар.Поставщик,
   |                Регистр.Дефицит.Товар.Поставщик,
   |                Регистр.Заказы.Товар.Поставщик,
   |                Регистр.ЗаказыПлановые.Товар.Поставщик,
   |                Регистр.ЗаказыВПути.Товар.Поставщик;
   |Клиент    =    Регистр.ОстаткиТоваров.ТекущийДокумент.РасходнаяКредит.Клиент,
   |                Регистр.ОстаткиТоваров.ТекущийДокумент.ПриходнаяКредит.Клиент,
   |                Регистр.Дефицит.Клиент;
   |РежимПродажи = Регистр.ОстаткиТоваров.ТекущийДокумент.РасходнаяКредит.Вариант;
   |Склад          = Регистр.ОстаткиТоваров.Склад.Номер;
   |Склад1      = Регистр.ОстаткиТоваров.Склад.NewCity;
   |П_СтатусД      = Регистр.ОстаткиТоваров.ТекущийДокумент.РасходнаяКредит.ПризнакНакладной;
   |П_СтатусД1   = Регистр.ОстаткиТоваров.ТекущийДокумент.ПриходнаяКредит.ПризнакНакладной;
   |ОстКол      = Регистр.ОстаткиТоваров.ОстатокТовара;
   |ДефВопр      = Регистр.Дефицит.Вопрос;
   |ДефКолич      = Регистр.Дефицит.Количество;
   |Заказы          = Регистр.Заказы.Количество;
   |ЗаказыГод      = Регистр.ЗаказыПлановые.Количество;
   |Инвойсы      = Регистр.ЗаказыВПути.Количество;
   |Функция НачКолТ = НачОст(ОстКол);
   |Функция ТПродажа = Расход(ОстКол) когда((П_СтатусД=Перечисление.ПризнРасхНакл.Продажа) и (РежимПродажи<>ПризнакПродажи));
   |Функция ТВозврат = Приход(ОстКол) когда(П_СтатусД1=ПризнПрихода);
   |Функция ТВозврат1 = Приход(ОстКол) когда(П_СтатусД1=ПризнПрихода1);
   |Функция ТВозврат2 = Приход(ОстКол) когда(П_СтатусД1=ПризнПрихода2);
   |Функция КонКолТ = КонОст(ОстКол);  
   |Функция Кол_воП=Счётчик() когда((П_СтатусД=Перечисление.ПризнРасхНакл.Продажа) и (РежимПродажи<>ПризнакПродажи));
   |Функция Кол_воВ=Счётчик() когда((П_СтатусД1=ПризнПрихода) или (П_СтатусД1=ПризнПрихода1) или (П_СтатусД1=ПризнПрихода2));  
   |Функция КоВ=Сумма(ДефВопр);
   |Функция КоЛ=Сумма(ДефКолич);
   |Функция КолЗаказов = КонОст(Заказы);  
   |Функция КолЗаказовГод = КонОст(ЗаказыГод);  
   |Функция КолИнвойсов = КонОст(Инвойсы);  
   |Группировка Товар упорядочить по Товар.Наименование все;
   |Условие((Склад1=1));
   |Условие((Товар в ВыбТовар));
   |Условие((Поставщик в ВыбПоставщик));
   |"//}}ЗАПРОС
   ;  
   Если _ВсюРозницу=1 Тогда  
       ТекстЗапроса=ТекстЗапроса+"Условие (Склад>1);";
   КонецЕсли;  
   Если розП=1 Тогда
       ТекстЗапроса=ТекстЗапроса+"Условие (Клиент в СписКлн);";  
       ТекстЗапроса=ТекстЗапроса+"Условие (РежимПродажи=глРозница);";
       //ТекстЗапроса=ТекстЗапроса+"Условие (Клиент.РежимПродажи=глРозница);";
   КонецЕсли;
КонецПроцедуры

Процедура ОбороткаЗаПериоды()  
   Если дбф=1 Тогда
       Если ПустаяСтрока(ФайлВыгрузки1)=1 Тогда
           Предупреждение("Не указан файл");
           Возврат;
       КонецЕсли;
       File_dbf=СоздатьОбъект("Xbase");
       Crea_file(File_dbf);
       File_dbf.AutoSave(1);  
   КонецЕсли;
   // Определяем кол-во перидов и заполняем массив интервалов
   N_Per=5;
   Если Use5=0 Тогда N_Per=4 КонецЕсли;
   Если Use4=0 Тогда N_Per=3 КонецЕсли;
   Если Use3=0 Тогда N_Per=2 КонецЕсли;
   Если Use2=0 Тогда N_Per=1 КонецЕсли;  
   
   Если ПустоеЗначение(ВыбСклад)=1 Тогда
       СписКлн=СоздатьОбъект("СписокЗначений");
       Скл=СоздатьОбъект("Справочник.Склады");
       Скл.ВыбратьЭлементы();
       Пока Скл.ПолучитьЭлемент()=1 Цикл  
           Если ПустоеЗначение(Скл.КлиентРасх)=0 Тогда    // ПустоеЗначение(Скл.Клиент)
               СписКлн.ДобавитьЗначение(Скл.Клиент);    
           КонецЕсли;
       КонецЦикла;  
   Иначе
       СписКлн=ВыбСклад.Клиент;
   КонецЕсли;  
   
   СпрВидРасх=СоздатьОбъект("Справочник.ВидыРасходов");
   Если СпрВидРасх.НайтиПоНаименованию("1402 Содержание легкового транспорта",0)>0 Тогда
       ВыбВидРасходов=СпрВидРасх.ТекущийЭлемент();
   Иначе
       ВыбВидРасходов="";
   КонецЕсли;
   Если СпрВидРасх.НайтиПоНаименованию("1403 Содержание грузового транспорта",0)>0 Тогда
       ВыбВидРасходов1=СпрВидРасх.ТекущийЭлемент();
   Иначе
       ВыбВидРасходов1="";
   КонецЕсли;
   
   
   Склад_1=глЦентрСкл;
   Для ncl=1 По N_Per Цикл
       Если ncl=1 Тогда
           Start_date[ncl]=ДатаНач1;
           End_Date[ncl]=ДатаКон1;
       КонецЕсли;
         Если ncl=2 Тогда
           Start_date[ncl]=ДатаНач2;
           End_Date[ncl]=ДатаКон2;
       КонецЕсли;
         Если ncl=3 Тогда
           Start_date[ncl]=ДатаНач3;
           End_Date[ncl]=ДатаКон3;
       КонецЕсли;
         Если ncl=4 Тогда
           Start_date[ncl]=ДатаНач4;
           End_Date[ncl]=ДатаКон4;
       КонецЕсли;
         Если ncl=5 Тогда
           Start_date[ncl]=ДатаНач5;
           End_Date[ncl]=ДатаКон5;
       КонецЕсли;
   КонецЦикла;

   ОстСк1=0;ОстСк1И=0;
   ОстСкВ=0;ОстСкВИ=0;
   Заказ=0;ЗаказИ=0;ЗаказИР=0;
   Инвойс=0;ИнвойсИ=0;
   ЗакКл=0;ЗакКлИ=0;  
   
   ТЗ = СоздатьОбъект("ТаблицаЗначений");
   ТЗ.НоваяКолонка("KodArticle","Строка");
   ТЗ.НоваяКолонка("Article","Строка");
   ТЗ.НоваяКолонка("PIN","Стрка");
   ТЗ.НоваяКолонка("Postavchik","Строка");
   ТЗ.НоваяКолонка("Analog","Строка");
   ТЗ.НоваяКолонка("sort","Число",2);
   ТЗ.НоваяКолонка("MinKolAvto","Число");
   ТЗ.НоваяКолонка("ZakazPrim","Строка");
   ТЗ.НоваяКолонка("Komplekt","Число");
   ТЗ.НоваяКолонка("Prim","Строка");
   ТЗ.НоваяКолонка("Ves","Число");
   ТЗ.НоваяКолонка("Xodovaia");
   ТЗ.НоваяКолонка("Limit","Число");  
   ТЗ.НоваяКолонка("Rasprodaza");    //Распродажа
   ТЗ.НоваяКолонка("ProgSS","Число");
   ТЗ.НоваяКолонка("StartQ1","Число",19); ТЗ.НоваяКолонка("StartQ2","Число",19);    ТЗ.НоваяКолонка("StartQ3","Число",19);    ТЗ.НоваяКолонка("StartQ4","Число",19);    ТЗ.НоваяКолонка("StartQ5","Число",19);
   ТЗ.НоваяКолонка("ProKol1","Число",19); ТЗ.НоваяКолонка("ProKol2","Число",19);    ТЗ.НоваяКолонка("ProKol3","Число",19); ТЗ.НоваяКолонка("ProKol4","Число",19);    ТЗ.НоваяКолонка("ProKol5","Число",19);
   ТЗ.НоваяКолонка("KolPro1","Число",19);    ТЗ.НоваяКолонка("KolPro2","Число",19);    ТЗ.НоваяКолонка("KolPro3","Число",19);    ТЗ.НоваяКолонка("KolPro4","Число",19);    ТЗ.НоваяКолонка("KolPro5","Число",19);
   ТЗ.НоваяКолонка("DefKoV1","Число",19);    ТЗ.НоваяКолонка("DefKoV2","Число",19);    ТЗ.НоваяКолонка("DefKoV3","Число",19);    ТЗ.НоваяКолонка("DefKoV4","Число",19);    ТЗ.НоваяКолонка("DefKoV5","Число",19);
   ТЗ.НоваяКолонка("DefKol1","Число",19);    ТЗ.НоваяКолонка("DefKol2","Число",19);    ТЗ.НоваяКолонка("DefKol3","Число",19);    ТЗ.НоваяКолонка("DefKol4","Число",19);    ТЗ.НоваяКолонка("DefKol5","Число",19);
   ТЗ.НоваяКолонка("OstSkl","Число",19);
   ТЗ.НоваяКолонка("OstSklVse","Число",19);
   ТЗ.НоваяКолонка("Zakaz","Число",19);
   ТЗ.НоваяКолонка("Invois","Число",19);  
   ТЗ.НоваяКолонка("GR","Строка");
   ТЗ.НоваяКолонка("GRGR","Строка");
   ТЗ.НоваяКолонка("GRGRGR","Строка");      
   ТЗ.НоваяКолонка("Original","Строка");  
   ТЗ.НоваяКолонка("ЭтоГруппа","Число");
   ТЗ.НоваяКолонка("ЦенаОпт","Число");
   ТЗ.НоваяКолонка("ЦенаМОпт","Число");
   Тз.НоваяКолонка("ПрихЦена","Число");
   ТЗ.НоваяКолонка("ВалютаЗакупки","Строка");
   
   Таб=СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   Таб.ВывестиСекцию("Титры|ВертТовар");  
   Таб.ПрисоединитьСекцию("Титры|Продажи1");
   Таб.ПрисоединитьСекцию("Титры|Дефицит1");
   Если Use2=1 Тогда
       Таб.ПрисоединитьСекцию("Титры|Продажи2");
       Таб.ПрисоединитьСекцию("Титры|Дефицит2");
   КонецЕсли;
   Если Use3=1 Тогда
       Таб.ПрисоединитьСекцию("Титры|Продажи3");
       Таб.ПрисоединитьСекцию("Титры|Дефицит3");
   КонецЕсли;
   Если Use4=1 Тогда
       Таб.ПрисоединитьСекцию("Титры|Продажи4");
       Таб.ПрисоединитьСекцию("Титры|Дефицит4");
   КонецЕсли;
   Если Use5=1 Тогда
       Таб.ПрисоединитьСекцию("Титры|Продажи5");
       Таб.ПрисоединитьСекцию("Титры|Дефицит5");
   КонецЕсли;  
   Таб.ПрисоединитьСекцию("Титры|Заказы");
   //СформироватьСтрокуТаб("Титры");
   Лимиты=СоздатьОбъект("Справочник.БухЛимиты");  
   Спр=СоздатьОбъект("Справочник.Лимит");  
   ncl=1;
   Запрос=СоздатьОбъект("Запрос");
   ТекстЗапроса=
   "//{{ЗАПРОС(Сформировать1)
   |Обрабатывать НеПомеченныеНаУдаление;
   |Период с ДатаНач1 по ДатаКон1;
   |Товар       &
70 Ёпрст
 
01.09.11
13:15
(69) где остальной кусок ?
71 Ёпрст
 
01.09.11
13:24
(69) где остальной кусок кода ?
кинь лучше как внешний файлик.
72 ЧеловекДуши
 
01.09.11
13:28
Попробуй оптимизировать отчет.
Даже на 64-битной винде, 1С использует только 2 гига :)
73 little_s
 
01.09.11
17:06
(+71) завтра кину внешний.. сейчас уже не на работе.

(72) протестировано.. использует больше.. уменя 2.1Гб использовала.
74 little_s
 
01.09.11
17:07
(71) а куда скинуть?
75 Ёпрст
 
01.09.11
17:12
(74) на любую файлопомойку.

Я на сколько понял, у тебя запрос в цикле по периодам + заполнение где-то /зачем-то невъебенистической ТЗ, которая и жрёт всю память, хотя попутно в дбф файлик всё пишется.
Для начала, выкини ТЗ из кода совсем.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн