Бьюсь над странной задачей. Обозначу, как перезапись строковых параметров в ТЗ

1. Mechanik21 24 04.09.20 09:57 Сейчас в теме
Существует несколько таблиц значений, данные в которые попадают из макетов по нажатию кнопки. У макетов есть области с параметрами. Параметры заполняются перед выводом в таблицы значений, на основании информации, введённой пользователем ранее.
Происходит примерно следующий алгоритм: получаем макет в табличный документ, по областям заполняем параметры, переводим табличный документ в таблицу значений и загружаем в ТЗ на форме.
Но вот беда, по условию задачи непараметризуемый текст из макета пользователь тоже может менять. И к заполнению данных может возвращаться.
И вот, когда он жмякает по волшебной кнопке второй раз, его изменения текста пропадают, обновляются только параметры. Не устраивает.
Я придумал вот что: завёл структуру параметров, которая заполняется непосредственно после первого вывода таблиц значений. Если они пустые, то функцией СтрЗаменить меняю слова в []-скобках на текущие параметры и заполняю параметрами структуру. При повторном заполнении таблицы, не трогаю макет, только по каждой строке отдельно ищу уже текстовые совпадения со структурой параметров. Той же конструкцией СтрЗаменить меняю старые переменные на новые. Перезаписываю структуру. Изменения текста остаются, новые переменные добавлены.
И в теории вроде бы всё хорошо, но на практике получается так, что иногда СтрЗаменить меняет что-то ещё, что менять не надо было. Просто совпало. Да и в целом решение кажется мне убогим. Хочу спросить совета у уважаемых участников форума, можно ли как-то по-другому выйти из ситуации?
Найденные решения
11. dvsidelnikov 48 04.09.20 10:34 Сейчас в теме
(10) я бы хранил это следующим образом:

ЗаполненныйШаблон= Новый Структура("Шаблон, Параметры"
, "Кооператив создается за счет [ОбязательныеВзносы] взносов, осуществляет [ВидыДеятельностиКооператива2] и иную деятельность."
, Новый Структура("ОбязательныеВзносы,ВидыДеятельностиКооператива2", "вступительный ", "наноинновационную"))
Mechanik21; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex-l19041 8 04.09.20 10:06 Сейчас в теме
(1)
непараметризуемый текст из макета пользователь тоже может менять
- сделать этот текст еще одним параметром.......
3. Mechanik21 24 04.09.20 10:07 Сейчас в теме
(2) как вы себе это представляете?
8. dvsidelnikov 48 04.09.20 10:20 Сейчас в теме
(1) Если параметры будут записываться сл. образом: [ИмяПараметра:ЗначениеПараметр] это не поможет избежать "совпадений"?
10. Mechanik21 24 04.09.20 10:24 Сейчас в теме
(8) Вы навели меня на мысль, что
Строку таблицы с подобной меткой переменной надо где-то хранить и перезаписывать.
Какая-то скрытая доп таблица с текстом и разделителями переменных...
11. dvsidelnikov 48 04.09.20 10:34 Сейчас в теме
(10) я бы хранил это следующим образом:

ЗаполненныйШаблон= Новый Структура("Шаблон, Параметры"
, "Кооператив создается за счет [ОбязательныеВзносы] взносов, осуществляет [ВидыДеятельностиКооператива2] и иную деятельность."
, Новый Структура("ОбязательныеВзносы,ВидыДеятельностиКооператива2", "вступительный ", "наноинновационную"))
Mechanik21; +1 Ответить
12. Mechanik21 24 04.09.20 10:40 Сейчас в теме
(11) Спасибо, так и сделаю.
dvsidelnikov; +1 Ответить
13. dvsidelnikov 48 04.09.20 10:45 Сейчас в теме
(12) рад помочь. По себе знаю как иногда замыливается восприятие задачи и просто не хватает постороннего свежего взгляда. Ещё одна сложность что это замыливание происходит в таких дебрях, которые и описать для постороннего взгляда очень сложно.
Удачи!
14. Mechanik21 24 04.09.20 10:49 Сейчас в теме
(11) Добавлю только номер пункта для однозначной идентификации
4. Mechanik21 24 04.09.20 10:10 Сейчас в теме
Вот маленький пример
Кооператив создается за счет [ОбязательныеВзносы] взносов, осуществляет [ВидыДеятельностиКооператива2] и иную деятельность.
Параметры видны? Видны. Текст виден? Виден.
[Кооператив создается за счет] [ОбязательныеВзносы] [взносов, осуществляет] [ВидыДеятельностиКооператива2] [и иную деятельность.]
Параметры видны? Видны. Текст виден? Где он?
6. alex-l19041 8 04.09.20 10:19 Сейчас в теме
(4) можно скрин ? (то что видит и меняет пользователь )
9. Mechanik21 24 04.09.20 10:22 Сейчас в теме
(6) так это видит пользователь. Эту строку он может перезаписать
Прикрепленные файлы:
5. dvsidelnikov 48 04.09.20 10:14 Сейчас в теме
Не уверен, что до конца понял суть решаемой задачи, но если всё же понял правильно, то почему бы не использовать разное обрамление для {Текста} и [Параметров]?!
7. Mechanik21 24 04.09.20 10:20 Сейчас в теме
(5) {Кооператив создается за счет} [ОбязательныеВзносы] {взносов, осуществляет} [ВидыДеятельностиКооператива2] {и иную деятельность.}
Что изменилось?
Я понимаю, что довольно путано объясняю, но постараюсь и вас понять тоже.
Смотрите, макет мы менять не можем. Пользователь меняет строки в таблице, которые подгружаются из макета только в первый раз. Вот это "[ОбязательныеВзносы]" превращается в "вступительный и паевой", например. Таким образом после возвращения к редактированию таблицы во второй раз в ней уже нет никаких разделителей.
15. slasher777 29.09.20 20:21 Сейчас в теме
Что значит "должно автоматически произойти списание при изменении статуса".
Документ уже проведен? или только записан? должны изменяться движения проведенного документа? Что должно происходить если пользователь сначала изменил статус на "Производство", а затем вернул статус в "Закупка" или изменил еще на какой-нибудь?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот