Независимый форум, посвященный системе БОСС-Кадровик и всему, что с ней связано
|
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Arbuz
Зарегистрирован: 23.04.2018 Сообщения: 4
|
Добавлено: Чт Июн 29, 2023 19:11 Заголовок сообщения: Как сделать динамическое присвоение значений |
|
|
Доброго времени суток всем форумчанам!
Возникла необходимость оптимизировать работу функционала формы диалога со множеством галочек "включающих" дату (если нажата галка) и блока даты со сбросом её значения в '1900-01-01' (если снята галка).
Основной принцип работы этой схемы такой:
Код: |
IF @[запрос]:galka = 0
THEN {
LET @[запрос]:Date1 = '1900-01-01';
DRAWFIELD @[запрос], Date1;
DISFIELD @[запрос], Date1;
};
|
Моя задумка в том, чтобы запускать такой код в цикле WHILE через переменную счётчик. Но при формировании строки-кода (что описан выше), я никак не могу записать строку с LET как мне нужно.
Я могу определить название нужного мне поля для присвоения даты, но только, когда я формирую строку кода вроде:
Код: | SELECT 'LET ' + DLGNAME[''] + ':' + _locNameDate_[''] + ' = ' + '''' + '1900-01-01' + '''' + '; ' INTO :aaa;
|
где _locNameDate_ - это поле с датой и пытаюсь её запустить на выполнение, как получаю ошибку.
Ошибка появляется, т.к. при выполнении, Босс-Кадровик автоматически представляет эту конструкцию переменной в подобном ключе:
Код: | LET '1900-01-01' = '1900-01-01'; |
Естественно, в таком случае будет ошибка.
Как заставить Босс не заменять конструкцию @[запрос]:Date1 сразу на значение, а оставить её в виде текста @[запрос]:[Имя_поля]?
Помогите, пожалуйста, решить данную проблему. |
|
Вернуться к началу |
|
 |
Spartak
Зарегистрирован: 18.03.2010 Сообщения: 185
|
Добавлено: Сб Июл 01, 2023 19:49 Заголовок сообщения: |
|
|
возможно break поможет |
|
Вернуться к началу |
|
 |
Arbuz
Зарегистрирован: 23.04.2018 Сообщения: 4
|
Добавлено: Сб Июл 01, 2023 19:53 Заголовок сообщения: |
|
|
Spartak писал(а): | возможно break поможет |
Поясните, пожалуйста, как мне необходимо прописать этот BREAK?
Просто в таком виде?
Код: |
BREAK @[имя_запроса]:Date1;
|
|
|
Вернуться к началу |
|
 |
Arbuz
Зарегистрирован: 23.04.2018 Сообщения: 4
|
Добавлено: Вс Июл 02, 2023 13:40 Заголовок сообщения: |
|
|
Всё! Нашёл решение проблемы сам.
Спасибо Вам, "Spartak", что подали идею с командой BREAK.
Она, увы, не помогла, но надоумила меня, из любопытства, попробовать команду: xSql()
И она помогла!
Вот как выглядит решение моей проблемы:
Код: |
SELECT 'LET DLGNAME:' + Имя_Нужного_Поля[''] + '''' + '1900-01-01' + '''' + '; '
+ 'DRAWFIELD ' + DLGNAME[''] + ', ' + Имя_Нужного_Поля[''] + ';'
INTO :_strSQL;
Execute xSql(:_strSQL);
|
|
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|