Список форумов BOSSForum.RU - Форум. БОСС-Кадровик
Независимый форум, посвященный системе БОСС-Кадровик
и всему, что с ней связано
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Проблема с непарными кавычками

 
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> X-язык
Предыдущая тема :: Следующая тема  
Автор Сообщение
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Пн Окт 10, 2022 17:47    Заголовок сообщения: Проблема с непарными кавычками Ответить с цитатой

Заметили в последнее время ошибки при работе процедур, работавших годами.
В частности, zrp_PRC_enumeration стала выдавать ошибку только при повторном выполнении. Т.е., в первый раз корректно. Во второй раз - ошибка "Incorrect syntax near CFilter_".
Причем, значение алиаса CFilter_ одинаково, что при первом выполнении, что при втором.
Закомментили `FREE #zrp_rep` и всё заработало как часы.
Недавно тоже столкнулись с подобной проблемой, но уже не вспомню где именно проявлялось.


Последний раз редактировалось: tveritin (Чт Июл 20, 2023 23:17), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Вт Окт 11, 2022 16:17    Заголовок сообщения: Ответить с цитатой

Не помогло исключение 'FREE ...' из текста процедуры.
Хотя, частично помогло, теперь при первом запуске (после запуска БК) дает ошибку.
А при втором и последующих запусках - норм.
CFilter_ уже указывал в виде CFilter_[']
И присвоение алиаса делал в виде
ALIAS cFilter_ := { AND EXISTS(SELECT TOP 1 1 FROM sl_uni_tax SS WHERE SS.cmonth BETWEEN _yp_*12+1 AND _yp_*12+mp_ AND SS.id_firm = @@id_firm AND SS.t = type) };
Куда дальше копать - не понимаю.


Последний раз редактировалось: tveritin (Вт Окт 11, 2022 16:51), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
RVV
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 14.01.2010
Сообщения: 449

СообщениеДобавлено: Вт Окт 11, 2022 16:34    Заголовок сообщения: Ответить с цитатой

Переменную нужно объявлять как LOCAL
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Вт Окт 11, 2022 16:36    Заголовок сообщения: Ответить с цитатой

cFilter_ уже и так объявлена как LOCAL, это в базовой процедуре.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Ср Окт 12, 2022 10:20    Заголовок сообщения: Ответить с цитатой

Пришлось избавиться от CFilter_ вообще, скопировав запрос INSERT...SELECT.
Т.е, для IF yp_ > 2010 сделал свой запрос, а для ELSE - свой.
2 дня потрачено на костылестроение, т.к. логически понять причину ошибки я не смог.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
RVV
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 14.01.2010
Сообщения: 449

СообщениеДобавлено: Ср Окт 12, 2022 12:07    Заголовок сообщения: Re: Некорректно отрабатывает FREE Ответить с цитатой

tveritin писал(а):
Заметили в последнее время ошибки при работе процедур, работавших годами.
В частности, zrp_PRC_enumeration стала выдавать ошибку только при повторном выполнении. Т.е., в первый раз корректно. Во второй раз - ошибка "Incorrect syntax near CFilter_".
Причем, значение алиаса CFilter_ одинаково, что при первом выполнении, что при втором.
Закомментили `FREE #zrp_rep` и всё заработало как часы.
Недавно тоже столкнулись с подобной проблемой, но уже не вспомню где именно проявлялось.


В процедуре zrp_prc_enumeration
есть команда FREE sl_uni_tax;

и нет `FREE #zrp_rep`
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Ср Окт 12, 2022 12:56    Заголовок сообщения: Ответить с цитатой

У нас базовый объект совпадает полностью с серийным. Проверили только что.
И строки `FREE sl_uni_tax` точно нет. И `FREE #zrp_rep` точно есть.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
RVV
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 14.01.2010
Сообщения: 449

СообщениеДобавлено: Чт Окт 13, 2022 12:39    Заголовок сообщения: Ответить с цитатой

Виноват. Это у меня ... другой объект Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Чт Окт 13, 2022 12:51    Заголовок сообщения: Ответить с цитатой

Выяснили, что если есть в наименовании предприятия непарные кавычки (не апострофы), то ошибка вываливается. Странно, что через раз вываливается, иногда интерпретатор всё проглатывает без разговоров.
Добавляем еще одну кавычку в наименование и всё ОК.
Но, конечно же, это не решение проблемы.
Уже как минимум с десяток лет наименование предприятия не менялось, а проявляться это стало только в последние дни.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Чт Июл 20, 2023 23:30    Заголовок сообщения: Ответить с цитатой

Год прошел и я забыл как решается данная проблема. Потратил полдня, чтоб вспомнить.

Либо написать серверную функцию и подставлять ее
Код:
dbo.user_quotes_set('АО "bla bla "bla" ')


, либо
Код:
replace ('АО "bla bla "bla" ', char(34), char(148))


Третий вариант для тех, кто убежден в обязательной парности яи... (сорри) кавычек, добавлять кавычку обязательно не в явном виде.
И тут необходим предварительный подсчет этих самых кавычек
Код:
'АО "bla bla "bla" ' + iif((select (count(*)+1) % 2 from string_split('АО "bla bla "bla" ', char(34))) <> 0, char(34), '')



Для меня самый приемлемый вариант - второй.

Пусть будет здесь как база знаний, может и уважаемые наши разработчики Босс-Кадровика обратят внимание на этот нюанс.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> X-язык Часовой пояс: GMT + 4
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Pоwerеd by рhpВB © 2001, 2005 рhpВB Grouр
Русская поддержка phрВB
Rambler's Top100 Рейтинг@Mail.ru Список форумов BOSSForum.RU