Имя: Пароль:
1C
1С v8
ВыгрузкаДокументовВФайл
0 1c-programm
 
14.06.18
08:14
Добрый день, Уважаемые!
Подскажите, по какой причине может возникать ошибка:
{ВнешняяОбработка.ВыгрузкаДокументовВФайл.Форма.Форма.Форма(139)}: Ошибка при вызове метода контекста (Execute)
    НаборЗаписей = Подключение.Execute(ТекстЗапроса);
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near ')'.

Я хотела выгрузить документы в пдф и реестр в ексель.


Процедура ДействияФормыВыгрузитьФайлы(Кнопка)
    
    ФлагСценарий = Справочники.СценарииПланирования.ПустаяСсылка();
    КоличествоВыгруженныхДокументов = 0;
    ДокументыДляВыгрузки = "";
    Запятая = "";

    Для каждого СтрокаДанных из БюджетныеОперации Цикл
        НаименованиеФайлаВыгрузки = СтрЗаменить(СтрокаДанных.Документ, Символ(34), "");
        ПутСохранениеФайлов = ЭлементыФормы.Путь.Значение + "\";
        Если ФлагСценарий <> СтрокаДанных.Сценраий Тогда
            Если ФлагСценарий <> Справочники.СценарииПланирования.ПустаяСсылка() Тогда
                Если ДокументыДляВыгрузки <> "" Тогда
                     ПолучитьФайлДокумента(ДокументыДляВыгрузки, ПутСохранениеФайлов + СтрЗаменить(ФлагСценарий, Символ(34), "") + "\");;
                КонецЕсли;    
                ПечатьРеестра(ФлагСценарий, ПутСохранениеФайлов + СтрЗаменить(ФлагСценарий, Символ(34), "")+  "\Реестр.xslx");
                ДокументыДляВыгрузки = "";
                Запятая = "";
            КонецЕсли;
        
            СоздатьКаталог(ПутСохранениеФайлов+НаименованиеФайлаВыгрузки + "\");
        КонецЕсли;
        ФлагСценарий = СтрокаДанных.Сценраий;
                    
        Если СтрокаДанных.ЕстьФайлы Тогда
            ДокументыДляВыгрузки = ДокументыДляВыгрузки + Запятая;
            ДокументыДляВыгрузки = ДокументыДляВыгрузки + "'" + Строка(СтрокаДанных.Документ.УникальныйИдентификатор())+ "'";
            Запятая = "'";
        КонецЕсли;
        
        КоличествоВыгруженныхДокументов = КоличествоВыгруженныхДокументов + 1;

        Если КоличествоВыгруженныхДокументов = 150 Тогда
            КоличествоВыгруженныхДокументов = 0;
            Подключение.Close();
            УстановитьПодключение();
        КонецЕсли;
    КонецЦикла;

    ПолучитьФайлДокумента(ДокументыДляВыгрузки, ПутСохранениеФайлов + НаименованиеФайлаВыгрузки + "\");

    Сообщить("Данные выгружены!");    
КонецПроцедуры


Функция ПолучитьФайлДокумента(СсылкаНаДокумент, КаталогСохранения, Открыть = Ложь)
ТекстЗапроса = "select * where Id1C in ( " + СсылкаНаДокумент + ")";
    //    + " and ID = '" + ИД + "'";

    НаборЗаписей = Подключение.Execute(ТекстЗапроса);
    
    
    НаборЗаписей.MoveFirst();
    Пока НаборЗаписей.EOF() = 0 Цикл
        ЗначениеИзБД = НаборЗаписей.Fields(0).Value;
        Расширение   = НаборЗаписей.Fields(1).Value;
        Имя          = НаборЗаписей.Fields(2).Value;
        Имя          = СТрЗаменить(Имя,"?","");
    
        локПотокБайт = Новый ComSafeArray(ЗначениеИзБД);
        Поток = СоздатьПоток(неопределено);
        Поток.Write(локПотокБайт);
        Сообщить(КаталогСохранения + Имя + Расширение);
        Поток.SaveToFile(КаталогСохранения + "\" + Имя + Расширение, 2);
        
        НаборЗаписей.MoveNext();
    КонецЦикла;
    
    локПотокБайт.Resize(0,0);
    Поток.Close();
    НаборЗаписей.Close();
    
    
    Если Открыть Тогда
        ЗапуститьПриложение(КаталогСохранения + "\" + Имя + Расширение);
    КонецЕсли;
    
    Возврат КаталогСохранения + "\" + Имя + Расширение;
КонецФункции
1 butterbean
 
14.06.18
08:39
у тебя запятая не запятая
2 1c-programm
 
14.06.18
08:43
(1) где именно? не нашла)
3 Cool_Profi
 
14.06.18
08:55
ДокументыДляВыгрузки = ДокументыДляВыгрузки + "'" + Строка(СтрокаДанных.Документ.УникальныйИдентификатор())+ "'";

Тут смотри. запятойнету
4 1c-programm
 
14.06.18
09:05
(3) Спасибо, поменяла. Но выдает такую же ошибку(
Ошибка при вызове метода контекста (Execute)
5 Cool_Profi
 
14.06.18
09:13
(4) текст тот же?
6 Cool_Profi
 
14.06.18
09:14
ПРосто покажи тЕкстЗапроса
7 1c-programm
 
14.06.18
10:00
(5) да тот же



Запрос = Новый Запрос();

       Запрос.Текст = "ВЫБРАТЬ
                      |    ВложенныйЗапрос.СсылкаНаДокумент КАК СсылкаНаДокумент,
                      |    ВложенныйЗапрос.СуммаДокумента КАК СуммаДокумента,
                      |    ВложенныйЗапрос.Организация,
                      |    ВложенныйЗапрос.Сценарий,
                      |    ВложенныйЗапрос.СтатьяОборотов Как СтатьяБюджета
                      |ИЗ
                      |    (ВЫБРАТЬ
                      |        БюджетныеОперации.Организация КАК Организация,
                      |        БюджетныеОперации.Ссылка КАК СсылкаНаДокумент,
                      |        СУММА(БюджетныеОперацииОсновныеОперации.Сумма) КАК СуммаДокумента,
                      |        БюджетныеОперации.Сценарий КАК Сценарий,
                      |        БюджетныеОперации.ДатаНачала КАК ДатаНачала,
                      |        БюджетныеОперации.ДатаОкончания КАК ДатаОкончания,
                      |        NULL КАК ДатаПланирования,
                      |        БюджетныеОперацииОсновныеОперации.СтатьяОборотов КАК СтатьяОборотов
                      |    ИЗ
                      |        Документ.БюджетныеОперации КАК БюджетныеОперации
                      |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.БюджетныеОперации.ОсновныеОперации КАК БюджетныеОперацииОсновныеОперации
                      |            ПО БюджетныеОперации.Ссылка = БюджетныеОперацииОсновныеОперации.Ссылка
                      |    ГДЕ
                      |        БюджетныеОперации.ДатаНачала >= &НачПериода
                      |        И БюджетныеОперации.ДатаОкончания <= &КонПериода
                      |    
                      |    СГРУППИРОВАТЬ ПО
                      |        БюджетныеОперации.Организация,
                      |        БюджетныеОперации.Ссылка,
                      |        БюджетныеОперации.ДатаНачала,
                      |        БюджетныеОперации.ДатаОкончания,
                      |        БюджетныеОперации.Сценарий,
                      |        БюджетныеОперацииОсновныеОперации.СтатьяОборотов
                      |    
                      |    ОБЪЕДИНИТЬ ВСЕ
                      |    
                      |    ВЫБРАТЬ
                      |        ПланЗакупок.Организация,
                      |        ПланЗакупок.Ссылка,
                      |        ПланЗакупок.СуммаДокумента,
                      |        ПланЗакупок.Сценарий,
                      |        NULL,
                      |        NULL,
                      |        ПланЗакупок.ДатаПланирования,
                      |        ПланЗакупок.пр_СтатьяБюджета
                      |    ИЗ
                      |        Документ.ПланЗакупок КАК ПланЗакупок
                      |    ГДЕ
                      |        ПланЗакупок.ДатаПланирования = &НачПериода) КАК ВложенныйЗапрос
                      |ГДЕ
                      |    ВложенныйЗапрос.Организация = &Организация"
                   + ?(ПоВсемСценариям, "", " И ВложенныйЗапрос.Сценарий В (&Сценарий)") + ""
                   + ?(ПоВсемСтатьямЗатрат, "", " И ВложенныйЗапрос.СтатьяОборотов В (&СтатьяБюджета)") + "
                      |ИТОГИ
                      |    СУММА(СуммаДокумента)
                      |ПО
                      |    СсылкаНаДокумент";                

    
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("Сценарий", Сценарий);
    Запрос.УстановитьПараметр("СтатьяБюджета", СтатьяБюджета);
    Запрос.УстановитьПараметр("НачПериода", НачПериода);
    Запрос.УстановитьПараметр("КонПериода", КонПериода);
8 Cool_Profi
 
14.06.18
10:08
(7) не вижу в (7) выражения
ТекстЗапроса = "select * where Id1C in ( " + СсылкаНаДокумент + ")";
9 1c-programm
 
14.06.18
10:11
(8) А как должен быть подскажите пожалуйста!