8.х загрузка документов из accessa

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем mazza, 25 мар 2009.

  1. TopicStarter Overlay
    mazza
    Offline

    mazza Опытный в 1С

    Регистрация:
    4 фев 2009
    Сообщения:
    138
    Симпатии:
    0
    Баллы:
    26
    Подскажите, пожалуйста. Почему после загрузки документа №999 вылетает такая ошибка.
    {Форма.Форма(250)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Драйвер ODBC Microsoft Access] Ошибка синтаксиса (пропущен оператор) в выражении запроса 'НомерСчета = 1 000'.
    {Форма.Форма(254)}: Ошибка при вызове метода контекста (MoveFirst): Произошла исключительная ситуация (ADODB.Recordset): Операция не допускается, если объект закрыт.

    Процедура Счета(Кнопка) //ЗАГРУЗКА
    Если ЭлементыФормы.ПутьКФайлу.Значение = "" Тогда
    Предупреждение("Не выбрана база данных");
    Возврат;
    КонецЕсли;
    MBD = Новый COMОбъект("ADODB.CONNECTION");
    Попытка
    MBD.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq="+ЭлементыФормы.ПутьКФайлу.Значение+";Uid=Admin;Pwd=");
    Исключение Сообщить(ОписаниеОшибки());
    Возврат;
    КонецПопытки;
    //ТекстСелект = "SELECT ДатаВыписки,НомерСчета,КодКлиента, FROM ппп GROUP BY НомерСчета";
    //ТекстСелект = "SELECT НомерСчета,Max(ДатаВыписки),Max(КодКлиента) FROM ппп GROUP BY НомерСчета";
    ТекстСелект = "SELECT НомерСчета,ДатаВыписки,КодКлиента, count(*) FROM ппп GROUP BY НомерСчета,ДатаВыписки,КодКлиента";
    //ТекстСелект = "SELECT * FROM ппп";
    НаборЗаписей = Новый COMОбъект("ADODB.RecordSet");
    Попытка
    НаборЗаписей=MBD.Execute(ТекстСелект);
    Исключение Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Попытка НаборЗаписей.MoveFirst();
    Исключение //табилца пустая
    Сообщить(ОписаниеОшибки());
    НаборЗаписей.Close();
    Возврат;
    КонецПопытки;


    Пока НаборЗаписей.EOF()=0 цикл
    Дата = Строка(НаборЗаписей.Fields("ДатаВыписки").Value);
    КодЗаказа = Строка(НаборЗаписей.Fields("НомерСчета").Value);
    КодКлиента = Строка(НаборЗаписей.Fields("КодКлиента").Value);
    Новыйдокумент = Документы.СчетНаОплатуПокупателю.ПустаяСсылка();

    НовыйдокументСсылка = Документы.СчетНаОплатуПокупателю.НайтиПоНомеру(КодЗаказа,дата);

    Если НовыйдокументСсылка.Пустая() Тогда
    // элемент не нашли - создаем его
    Новыйдокумент = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
    Иначе
    // получим существующий
    Новыйдокумент = Документы.СчетНаОплатуПокупателю.НайтиПоНомеру(КодЗаказа,дата).ПолучитьОбъект();
    НовыйДокумент.Товары.Очистить();
    КонецЕсли;

    новыйдокумент.ВалютаДокумента=справочники.Валюты.НайтиПоКоду(810);
    новыйдокумент.Организация=справочники.Организации.НайтиПоКоду(1);
    Новыйдокумент.Номер = КодЗаказа;
    новыйдокумент.Дата= Дата;
    новыйдокумент.Контрагент=Справочники.Контрагенты.НайтиПоКоду(КодКлиента);
    новыйдокумент.ДоговорКонтрагента=справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной договор");
    новыйдокумент.Склад=справочники.Склады.НайтиПоНаименованию("Основной склад");


    //заполняем шапку документа

    ТекстСелект = "Select Цена,КодТовара,Продано from ппп where НомерСчета = "+ Строка(НаборЗаписей.Fields("НомерСчета").Value);
    НаборЗаписей1 = Новый COMОбъект("ADODB.RecordSet");
    Попытка
    НаборЗаписей1=MBD.Execute(ТекстСелект);
    Исключение Сообщить(ОписаниеОшибки());
    КонецПопытки;

    Попытка НаборЗаписей1.MoveFirst();
    Исключение //табилца пустая
    Сообщить(ОписаниеОшибки());
    НаборЗаписей1.Close();
    Сообщить("табчасть пуста, документ "+НовыйДокумент+" не сохранен!");
    Прервать;
    КонецПопытки;


    Пока НаборЗаписей1.EOF()=0 Цикл

    Цена = Строка(НаборЗаписей1.Fields("Цена").Value);
    КодТовара = Строка(НаборЗаписей1.Fields("КодТовара").Value);
    Продано = Строка(НаборЗаписей1.Fields("Продано").Value);
    НаборЗаписей1.MoveNext();

    новаястрокатабличнойчасти=новыйдокумент.Товары.Добавить();
    новаястрокатабличнойчасти.Номенклатура=Справочники.Номенклатура.НайтиПоКоду(КодТовара);
    новаястрокатабличнойчасти.Количество= Продано;
    новаястрокатабличнойчасти.СтавкаНДС=Перечисления.СтавкиНДС.НДС18;
    новаястрокатабличнойчасти.Цена= Цена;
    Новаястрокатабличнойчасти.Сумма= Цена*Продано;

    КонецЦикла ;
    новыйдокумент.Записать();
    // Сообщить("Загрузка счета №" +КодЗаказа);

    КонецЦикла;


    Сообщить("СЧЕТА ЗАГРУЖЕНЫ");
    КонецПроцедуры
  2. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Скорее всего системе не нравится пробел в представлении "1 000". Попробуй использовать не Строка(), а
    Код:
    Формат(НаборЗаписей.Fields("НомерСчета").Value,"ЧГ=0");
    

Поделиться этой страницей