powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / 1С и SQL
3 сообщений из 3, страница 1 из 1
1С и SQL
    #32436196
Yura_dol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте все!

Недавно перешли на с DBF базы на sql и возникли некоторые трудности с реализацией запросов, которые в DBF базе работали, а в sql выдает ошибку:

SQL State: 42000
... Line2: incorrect synyax rear ')'

все вроде ясно нет ")", но где?


привожу пример процедуры которая содержит проблемный запрос


Процедура Заполнить()
Перем Запрос; // запрос

// проверяем заполнение дат
Если ПустоеЗначение(НачалоПериода)=1 Тогда
Предупреждение("Не выбрана дата начала анализа движений");
Возврат;
КонецЕсли;

Если ПустоеЗначение(КонецПериода)=1 Тогда
Предупреждение("Не выбрана дата конца анализа движений");
Возврат;
КонецЕсли;

Если ПустоеЗначение(ДатаОстатков)=1 Тогда
Предупреждение("Не выбрана дата формирования остатков");
Возврат;
КонецЕсли;

Если ПустоеЗначение(КвоПлановыхДней)=1 Тогда
Предупреждение("Не указано количество плановых дней");
Возврат;
КонецЕсли;

Если ПустоеЗначение(Контрагент)=1 Тогда
Предупреждение("Не выбран контрагент");
Возврат;
КонецЕсли;

ПроверитьКорректностьДат();

Если КоличествоСтрок() <> 0 Тогда
Если Вопрос("Удалить строки?","Да+Нет") = "Да" Тогда
УдалитьСтроки();
КонецЕсли;
КонецЕсли;

// Здесь формируется отчет, который использует регистры, критичные к
// последовательности проведения документов
// поэтому сравним установленные даты периода формируемого отчета с ГП
глПроверкаАктуальностиОтчета(НачалоПериода,КонецПериода,Фирма,0);

ВидТовараТовар = Перечисление.ВидыТМЦ.Товар;

Если КонецПериода >= ПолучитьДатуТА() Тогда
ТекстЗапроса = "
|Период с НачалоПериода;";
Иначе
ТекстЗапроса = "
|Период с НачалоПериода по КонецПериода;";
КонецЕсли;

ТекстЗапроса = ТекстЗапроса +
"Фрм = Регистр.Партии.Фирма;
|Товар = Регистр.Партии.ТМЦ;
|ВидТовара = Регистр.Партии.ТМЦ.ВидТМЦ;
|ПриходныйДокумент = Регистр.Партии.ПрихДокумент;
|ДокументДвижения = Регистр.Партии.ТекущийДокумент;
|ОстатокТовара = Регистр.Партии.ОстатокТовара;
|Стоимость = Регистр.Партии.Стоимость;
|Поставщик = Регистр.Партии.Поставщик;
|РегКодОперации = Регистр.Партии.КодОперации;

|Группировка Товар;
|Группировка ПриходныйДокумент Упорядочить По ПриходныйДокумент.ДатаДок,ПриходныйДокумент.ВремяДок;
|Группировка ДокументДвижения Упорядочить По ДокументДвижения.ДатаДок,ДокументДвижения.ВремяДок;

|Функция НачОстатокТовара = НачОст(ОстатокТовара);
|Функция КонОстатокТовара = КонОст(ОстатокТовара);
|Функция РасхОстатокТовара = Расход(ОстатокТовара);
|Функция ПрихОстатокТовара = Приход(ОстатокТовара);
|Функция НачСтоимостьТовара = НачОст(Стоимость);
|Функция КонСтоимостьТовара = КонОст(Стоимость);
|Функция РасхСтоимостьТовара = Расход(Стоимость);
|Функция ПрихСтоимостьТовара = Приход(Стоимость);

|Условие (Фрм=Фирма);
|Условие (Поставщик=Контрагент);
|Условие (ВидТовара=ВидТовараТовар);
|Условие (РегКодОперации в СписокКодовОпераций);
|";

Загол="";

СписокКодовОпераций = СоздатьОбъект("СписокЗначений");
СписокКодовОпераций.ДобавитьЗначение(Закупка);
СписокКодовОпераций.ДобавитьЗначение(ВводОстатков);
СписокКодовОпераций.ДобавитьЗначение(ВозвратОтПокупателя);
СписокКодовОпераций.ДобавитьЗначение(Продажа);
СписокКодовОпераций.ДобавитьЗначение(РозничнаяПродажа);
СписокКодовОпераций.ДобавитьЗначение(ПеремещениеВРозницу);
СписокКодовОпераций.ДобавитьЗначение(ПеремещениеИзРозницы);
СписокКодовОпераций.ДобавитьЗначение(ПеремещениеМеждуСкладами);
СписокКодовОпераций.ДобавитьЗначение(СписаниеИзлишков);
СписокКодовОпераций.ДобавитьЗначение(ОприходованиеИзлишков);

СписокКодовОперацийПродажа = СоздатьОбъект("СписокЗначений");
СписокКодовОперацийПродажа.ДобавитьЗначение(Продажа);
СписокКодовОперацийПродажа.ДобавитьЗначение(РозничнаяПродажа);

// выполняем запрос
Запрос=СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса)=0 тогда
Предупреждение("Запрос по Партиям не выполнился!");
Возврат;
КонецЕсли;

СписокВошедшихВЗапросТов = СоздатьОбъект("СписокЗначений");

// цикл по товарам, отобранным запросом
Запрос.ВНачалоВыборки();
Пока Запрос.Группировка("Товар")>0 Цикл
Товар = Запрос.Товар;
Если ПустоеЗначение(Товар) = 1 Тогда
Продолжить;
КонецЕсли;

Если Запрос.ЭтоГруппа("Товар")=1 Тогда // это группа
Продолжить;
КонецЕсли;

СписокВошедшихВЗапросТов.ДобавитьЗначение(Товар);
КонецЦикла;

ВремРегистры=СоздатьОбъект("Регистры");
РегОстатки=ВремРегистры.Остатки;
Если (ДатаОстатков-1)<ПолучитьДатуТА() Тогда
РегОстатки.УстановитьЗначениеФильтра("ТМЦ",СписокВошедшихВЗапросТов,2);
РегОстатки.УстановитьЗначениеФильтра("Фирма",Фирма,1);
РегОстатки.ВременныйРасчет();
ВремРегистры.РассчитатьРегистрыПО(ДатаОстатков-1);
КонецЕсли;

СписокГруппТоваров = СоздатьОбъект("СписокЗначений");

// цикл по товарам, отобранным запросом
Запрос.ВНачалоВыборки();
Пока Запрос.Группировка("Товар")>0 Цикл
Товар = Запрос.Товар;
Если ПустоеЗначение(Товар) = 1 Тогда
Продолжить;
КонецЕсли;

Если Запрос.ЭтоГруппа("Товар") = 1 Тогда // это группа
Продолжить;
КонецЕсли;

КоличествоПроданногоЗаПериод = Запрос.РасхОстатокТовара;
СтоимостьПроданногоЗаПериод = Запрос.РасхСтоимостьТовара;
КоличествоДнейПродажи = 0;
ОстатокТовара = РегОстатки.СводныйОстаток(Фирма,Товар,,"ОстатокТовара");

БылиДвиженияТовара = 0;
ДатаПоследнегоДвижения = НачалоПериода-1;
Остаток = Запрос.НачОстатокТовара;
ДатаПервогоПрихода = 0;
ДатаПоследнегоПрихода = 0;
ДатаПоследнейОтгрузки = 0;

Пока Запрос.Группировка("ПриходныйДокумент")>0 Цикл

ДатаПервогоПрихода = ?(ДатаПервогоПрихода=0,Запрос.ПриходныйДокумент.ДатаДок,ДатаПервогоПрихода);
ДатаПоследнегоПрихода = Запрос.ПриходныйДокумент.ДатаДок;
ЦенаУчетная = ОпределитьЦену(Запрос);

Пока Запрос.Группировка("ДокументДвижения")>0 Цикл
Если СписокКодовОперацийПродажа.НайтиЗначение(Запрос.РегКодОперации) = 0 Тогда
Продолжить;
КонецЕсли;

// документ движения остатка товара
ДокументДвижения = Запрос.ДокументДвижения;
Если ПустоеЗначение(ДокументДвижения) = 1 Тогда
Продолжить;
КонецЕсли;

ДатаПоследнейОтгрузки = ?(ДатаПоследнейОтгрузки=0,Запрос.ДокументДвижения.ДатаДок,ДатаПоследнейОтгрузки);
ДатаПоследнейОтгрузки = ?(Запрос.ДокументДвижения.ДатаДок>ДатаПоследнейОтгрузки,Запрос.ДокументДвижения.ДатаДок,ДатаПоследнейОтгрузки);
КонецЦикла;
КонецЦикла;

Если ДатаПоследнейОтгрузки = 0 Тогда
КоличествоДнейПродажи = 0;
глКомментарий(Шаблон("Для товара [Товар] не определено количество дней продажи."),1);
ИначеЕсли ДатаПоследнейОтгрузки = 0 Тогда
КоличествоДнейПродажи = 0;
глКомментарий(Шаблон("Для товара [Товар] не определено количество дней продажи."),1);
Иначе
КоличествоДнейПродажи = ДатаПоследнейОтгрузки - ДатаПервогоПрихода + 1;
КонецЕсли;

// рассчитываем скорость продаж и необходимый объем закупки
СкоростьПродажи = 0;
Если КоличествоДнейПродажи>0 Тогда
СкоростьПродажи = КоличествоПроданногоЗаПериод/(КоличествоДнейПродажи+1);
КонецЕсли;

Если УчитыватьОстаток=0 Тогда
НеобходимыйОбъемЗакупки = СкоростьПродажи*КвоПлановыхДней;
Иначе
НеобходимыйОбъемЗакупки = СкоростьПродажи*КвоПлановыхДней - ОстатокТовара;
КонецЕсли;

Если НеобходимыйОбъемЗакупки < 0 Тогда
Продолжить;
КонецЕсли;

НоваяСтрока();

ТМЦ = Товар;
Ед = Товар.ЕдиницаПоУмолчанию;
Коэффициент = Коэффициент;

ЦенаБезНДС = ЦенаУчетная;

ВидНДС = Товар.СтавкаНДС;
ПроцНДС = глПроцентНДС(ВидНДС,ДатаДок);
ЦенаСНДС = ЦенаБезНДС*(100+ПроцНДС)/100;

ОстатокКво = ОстатокТовара;
ОстатокСуммаБезНДС = ОстатокТовара * ЦенаБезНДС;
ОстатокСуммаСНДС = ОстатокТовара * ЦенаСНДС;
Прогноз = НеобходимыйОбъемЗакупки;

ДатаПП = ДатаПоследнегоПрихода;

КонецЦикла;
КонецПроцедуры // Сформировать
...
Рейтинг: 0 / 0
1С и SQL
    #32436206
Yura_dol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да забыл
1С v 7.70.021
SQL 2000 + SP3a
...
Рейтинг: 0 / 0
1С и SQL
    #32444545
Сонный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неплохо бы сначала локализовать строку процедуры в которой возникает ошибка при выполнении. Может быть и не в запросе дело. Если из конфигуратора запустить предприятие по ф11, а потом выполнить процедуру, то на какую строчку ругнется?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / 1С и SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]