Имя: Пароль:
1C
1С v8
Временная таблица уже существует (8.3)
,
0 cfk
 
02.12.15
14:36
тзДанные77  = Новый ТаблицаЗначений;                
            мт             = Новый Массив;
            мт.Добавить(Тип("Строка"));          
            мт.Добавить(Тип("Дата"));          
            мт.Добавить(Тип("Число"));          
            отСтрока     = Новый ОписаниеТипов(мт,,,
                Новый КвалификаторыЧисла(9,2,ДопустимыйЗнак.Любой),
                Новый КвалификаторыСтроки(25,ДопустимаяДлина.Переменная),
                Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя),);
            
            стрКолонки     = Новый Структура("Документ,Период,Организация,ОрганизацияКлюч,"
                +"Склад,СкладКлюч,Контрагент,КонтрагентКлюч,Сумма");                
            Для каждого киз Из стрКолонки Цикл
                тзДанные77.Колонки.Добавить(киз.Ключ,отСтрока);
            КонецЦикла;
            
            Пока РН77.ПолучитьДокумент()=1 Цикл
                Если РН77.Проведен()=1 Тогда
                    стз = тзДанные77.Добавить();
                    стз.Документ         = РН77.НомерДок;
                    стз.Период             = РН77.ДатаДок;
                    стз.Организация     = РН77.Фирма.Наименование;
                    стз.ОрганизацияКлюч = РН77.Фирма.Код;
                    стз.Склад             = РН77.МестоХранения.Наименование;
                    стз.СкладКлюч         = РН77.МестоХранения.Код;
                    стз.Контрагент        = РН77.Контрагент.Наименование;
                    стз.КонтрагентКлюч    = РН77.Контрагент.Код;
                    стз.Сумма             = РН77.Итог("СуммаСНДС");
                КонецЕсли;                
                 //Сообщить("Документ <"+РН77.НомерДок
                 //    +"> от <"+РН77.ДатаДок
                 //    +">Фирма <"+РН77.Фирма.Наименование
                 //    +"> Контрагент <"+РН77.Контрагент.Наименование
                 //    +"> Сумма <"+РН77.Итог("СуммаСНДС")
                 //   +"> Проведен <"+РН77.Проведен()
                 //   +">");                                  
            КонецЦикла;
                
               З = Новый Запрос;            
               мвт = Новый МенеджерВременныхТаблиц;
               З.МенеджерВременныхТаблиц = мвт;                        
            З.УстановитьПараметр("тзДанные77",тзДанные77);
                        
            З.Текст = "                
                |ВЫБРАТЬ
                |    тзДанные77.Организация,
                |    тзДанные77.ОрганизацияКлюч,
                |    тзДанные77.Склад,
                |    тзДанные77.СкладКлюч,
                |    тзДанные77.Контрагент,
                |    тзДанные77.КонтрагентКлюч,
                |    тзДанные77.Документ,
                |    тзДанные77.Период,
                |    тзДанные77.Сумма
                |ПОМЕСТИТЬ Данные77
                |ИЗ
                |    &тзДанные77 КАК тзДанные77
                |;
                |
                |////////////////////////////////////////////////////////////////////////////////
                |ВЫБРАТЬ
                |    Данные77.Организация,
                |    Данные77.ОрганизацияКлюч КАК Ключ,
                |    МАКСИМУМ(Организации.Ссылка) КАК Ссылка
                |ИЗ
                |    Данные77 КАК Данные77
                |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
                |        ПО Данные77.ОрганизацияКлюч = Организации.Ключ
                |
                |СГРУППИРОВАТЬ ПО
                |    Данные77.Организация,
                |    Данные77.ОрганизацияКлюч
                |
                |ИМЕЮЩИЕ
                |    МАКСИМУМ(Организации.Ссылка) ЕСТЬ NULL ";
            рз = З.Выполнить();
1 cfk
 
02.12.15
14:37
{Обработка.Импорт.Форма.Форма.Форма(141)}: Ошибка при вызове метода контекста (Выполнить): {(12, 11)}: Временная таблица уже существует "Данные77"
ПОМЕСТИТЬ <<?>>Данные77
2 ДенисЧ
 
02.12.15
14:39
второй раз вызываешь без обнуления переменных...
3 cfk
 
02.12.15
14:39
(1)нет
4 Nuobu
 
02.12.15
14:40
(1) Отладкой делаешь З.Выполнить(), смотришь результат.
А как оно само доходит до этой строчки, то падает.
5 cfk
 
02.12.15
14:40
тоесть (2) нет =) С первого раза выскакивает. А менеджер в исключении закрывается
6 VikingKosmo
 
02.12.15
14:40
(4) 300%
7 cfk
 
02.12.15
14:41
(4) не понял, чем будет отличаться отладка от рантайма в данном случае
8 Nuobu
 
02.12.15
14:41
(7) Сделай без отладки.
9 VikingKosmo
 
02.12.15
14:41
(7) тем, что в рантайм не будет повторного создания ВТ
10 cfk
 
02.12.15
14:43
(8,9) где вы видите повторное создание. С ПЕРВОГО раза выскакивает, говорю вам. и Менеджер временных таблиц закрывается каждый раз при исключении. Т.е. временные таблицы после каждого исключения уничтожаются.
11 cfk
 
02.12.15
14:45
(8), (9) так понятнее?
Попытка                
        v77 = Новый COMОбъект("V77.Application");
        
        Dir = стрПар.Каталог;
        Usr = стрПар.Пользователь;
        Pwd = стрПар.Пароль;
        
        ConnStr = "/D"""+Dir+""""
            +" /N"""+Usr+""""+            
            ?(StrLen(TrimAll(Pwd))<>0," /P"""+Pwd+""" ","");
        
//        Сообщить("Подключаюcь как <"+Usr+"> к <"+Dir+">");
        
        Если v77.Initialize(v77.RMTrade,TrimAll(ConnStr),"NO_SPLASH_SHOW") = 0 Тогда
            ВызватьИсключение("Сбой подключения к <"+Dir+">");
        КонецЕсли;
        
//        Сообщить("Успешно подключена база <"+Dir+">");
        
        Период = стрПар.Период;
        
        РН77 = v77.CreateObject("Документ.РасходнаяНакладная");
        Если РН77.ВыбратьДокументы(Период.ДатаНачала,Период.ДатаОкончания) = 1 Тогда
            
            тзДанные77  = Новый ТаблицаЗначений;                
            мт             = Новый Массив;
            мт.Добавить(Тип("Строка"));          
            мт.Добавить(Тип("Дата"));          
            мт.Добавить(Тип("Число"));          
            отТипы     = Новый ОписаниеТипов(мт,,,
                Новый КвалификаторыЧисла(9,2,ДопустимыйЗнак.Любой),
                Новый КвалификаторыСтроки(25,ДопустимаяДлина.Переменная),
                Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя),);
            
            стрКолонки     = Новый Структура("Документ,Период,Организация,ОрганизацияКлюч,"
                +"Склад,СкладКлюч,Контрагент,КонтрагентКлюч,Сумма");                
            Для каждого киз Из стрКолонки Цикл
                тзДанные77.Колонки.Добавить(киз.Ключ,отТипы);
            КонецЦикла;
            
            Пока РН77.ПолучитьДокумент()=1 Цикл
                Если РН77.Проведен()=1 Тогда
                    стз = тзДанные77.Добавить();
                    стз.Документ         = РН77.НомерДок;
                    стз.Период             = РН77.ДатаДок;
                    стз.Организация     = РН77.Фирма.Наименование;
                    стз.ОрганизацияКлюч = РН77.Фирма.Код;
                    стз.Склад             = РН77.МестоХранения.Наименование;
                    стз.СкладКлюч         = РН77.МестоХранения.Код;
                    стз.Контрагент        = РН77.Контрагент.Наименование;
                    стз.КонтрагентКлюч    = РН77.Контрагент.Код;
                    стз.Сумма             = РН77.Итог("СуммаСНДС");
                КонецЕсли;                
                 //Сообщить("Документ <"+РН77.НомерДок
                 //    +"> от <"+РН77.ДатаДок
                 //    +">Фирма <"+РН77.Фирма.Наименование
                 //    +"> Контрагент <"+РН77.Контрагент.Наименование
                 //    +"> Сумма <"+РН77.Итог("СуммаСНДС")
                 //   +"> Проведен <"+РН77.Проведен()
                 //   +">");                                  
            КонецЦикла;
                
               З = Новый Запрос;            
               мвт = Новый МенеджерВременныхТаблиц;
               З.МенеджерВременныхТаблиц = мвт;                        
            З.УстановитьПараметр("тзДанные77",тзДанные77);
                        
            З.Текст = "                
                |ВЫБРАТЬ
                |    тзДанные77.Организация,
                |    тзДанные77.ОрганизацияКлюч,
                |    тзДанные77.Склад,
                |    тзДанные77.СкладКлюч,
                |    тзДанные77.Контрагент,
                |    тзДанные77.КонтрагентКлюч,
                |    тзДанные77.Документ,
                |    тзДанные77.Период,
                |    тзДанные77.Сумма
                |ПОМЕСТИТЬ Данные77
                |ИЗ
                |    &тзДанные77 КАК тзДанные77
                |;
                |
                |////////////////////////////////////////////////////////////////////////////////
                |ВЫБРАТЬ
                |    Данные77.Организация,
                |    Данные77.ОрганизацияКлюч КАК Ключ,
                |    МАКСИМУМ(Организации.Ссылка) КАК Ссылка
                |ИЗ
                |    Данные77 КАК Данные77
                |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
                |        ПО Данные77.ОрганизацияКлюч = Организации.Ключ
                |
                |СГРУППИРОВАТЬ ПО
                |    Данные77.Организация,
                |    Данные77.ОрганизацияКлюч
                |
                |ИМЕЮЩИЕ
                |    МАКСИМУМ(Организации.Ссылка) ЕСТЬ NULL ";
            рз = З.Выполнить();
            Если НЕ рз.Пустой() Тогда
                //ЗначениеВР З.Выполнить().Выгрузить(),ДанныеФормыВЗначение(
                тзОрганизации = З.Выполнить().Выгрузить();
                стрРезультат.Значения.Вставить("Организации",тзОрганизации);
            КонецЕсли;    
            
            //Склады
            З.Текст = "
                |ВЫБРАТЬ
                  |    Данные77.Склад,
                  |    Данные77.СкладКлюч КАК Ключ,
                  |    МАКСИМУМ(Склады.Ссылка) КАК Ссылка
                  |ИЗ
                  |    Данные77 КАК Данные77
                  |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
                  |        ПО Данные77.СкладКлюч = Склады.Ключ
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    Данные77.Склад,
                  |    Данные77.СкладКлюч
                |
                  |ИМЕЮЩИЕ
                  |    МАКСИМУМ(Склады.Ссылка) ЕСТЬ NULL ";
            рз = З.Выполнить().Выгрузить();
            Если НЕ рз.Пустой() Тогда
                тзСклады = рз.Выгрузить();
                стрРезультат.Значения.Вставить("Склады",тзСклады);
            КонецЕсли;
            
            //Контрагенты
            З.Текст = "
                |ВЫБРАТЬ
                  |    Данные77.Контрагент,
                  |    Данные77.КонтрагентКлюч КАК Ключ,
                  |    МАКСИМУМ(Контрагенты.Ссылка) КАК Ссылка
                  |ИЗ
                  |    Данные77 КАК Данные77
                  |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
                  |        ПО Данные77.КонтрагентКлюч = Контрагент.Ключ
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    Данные77.Контрагент,
                  |    Данные77.КонтрагентКлюч
                |
                  |ИМЕЮЩИЕ
                  |    МАКСИМУМ(Контрагенты.Ссылка) ЕСТЬ NULL ";
            Если НЕ рз.Пустой() Тогда
                тзКонтрагенты = рз.Выгрузить();
                стрРезультат.Значения.Вставить("Контрагенты",тзКонтрагенты);
            КонецЕсли;
                                          
            //Продажи
            З.Текст = "
                |ВЫБРАТЬ
                |    Данные77.ОрганизацияКлюч,
                |    Данные77.СкладКлюч,
                |    Данные77.КонтрагентКлюч,                
                |    Данные77.Документ,
                |    Данные77.Период,
                |    Данные77.Сумма                
                |ИЗ Данные77";
            Если НЕ рз.Пустой() Тогда
                тзПродажи = рз.Выгрузить();
                стрРезультат.Значения.Вставить("Продажи",тзПродажи);
            КонецЕсли;
                
            мвт.Закрыть();
            стрРезультат.Результат = Истина;
        Иначе                                        
            Сообщить("У подключенной базы в выбранном периоде нет документов!");
        КонецЕсли;
        
        v77 = Неопределено;
        
    Исключение
        Сообщить(ОписаниеОшибки());        
        Если мвт<>Неопределено Тогда
            мвт.Закрыть();
        КонецЕсли;
        v77 = Неопределено;
    КонецПопытки;
12 НЕА123
 
02.12.15
14:48
рз = З.Выполнить();
            Если НЕ рз.Пустой() Тогда
                //ЗначениеВР З.Выполнить().Выгрузить(),ДанныеФормыВЗначение(

                тзОрганизации = З.Выполнить().Выгрузить();
13 cfk
 
02.12.15
14:50
(12) Дайте пепла, я одел рубище
Закрыто
14 cw014
 
02.12.15
15:01
З.МенеджерВременныхТаблиц = мвт;
Удаляй это нафиг
15 cw014
 
02.12.15
15:01
А, стоп
16 cw014
 
02.12.15
15:01
Ошибся
17 cfk
 
02.12.15
15:18
(14),(15),(16) Слово ЗАКРЫТО означает что проблема решена. Тема Закрыта.
Закон Брукера: Даже маленькая практика стоит большой теории.