Бьюсь над странной задачей. Обозначу, как перезапись строковых параметров в ТЗ
Существует несколько таблиц значений, данные в которые попадают из макетов по нажатию кнопки. У макетов есть области с параметрами. Параметры заполняются перед выводом в таблицы значений, на основании информации, введённой пользователем ранее.
Происходит примерно следующий алгоритм: получаем макет в табличный документ, по областям заполняем параметры, переводим табличный документ в таблицу значений и загружаем в ТЗ на форме.
Но вот беда, по условию задачи непараметризуемый текст из макета пользователь тоже может менять. И к заполнению данных может возвращаться.
И вот, когда он жмякает по волшебной кнопке второй раз, его изменения текста пропадают, обновляются только параметры. Не устраивает.
Я придумал вот что: завёл структуру параметров, которая заполняется непосредственно после первого вывода таблиц значений. Если они пустые, то функцией СтрЗаменить меняю слова в []-скобках на текущие параметры и заполняю параметрами структуру. При повторном заполнении таблицы, не трогаю макет, только по каждой строке отдельно ищу уже текстовые совпадения со структурой параметров. Той же конструкцией СтрЗаменить меняю старые переменные на новые. Перезаписываю структуру. Изменения текста остаются, новые переменные добавлены.
И в теории вроде бы всё хорошо, но на практике получается так, что иногда СтрЗаменить меняет что-то ещё, что менять не надо было. Просто совпало. Да и в целом решение кажется мне убогим. Хочу спросить совета у уважаемых участников форума, можно ли как-то по-другому выйти из ситуации?
Происходит примерно следующий алгоритм: получаем макет в табличный документ, по областям заполняем параметры, переводим табличный документ в таблицу значений и загружаем в ТЗ на форме.
Но вот беда, по условию задачи непараметризуемый текст из макета пользователь тоже может менять. И к заполнению данных может возвращаться.
И вот, когда он жмякает по волшебной кнопке второй раз, его изменения текста пропадают, обновляются только параметры. Не устраивает.
Я придумал вот что: завёл структуру параметров, которая заполняется непосредственно после первого вывода таблиц значений. Если они пустые, то функцией СтрЗаменить меняю слова в []-скобках на текущие параметры и заполняю параметрами структуру. При повторном заполнении таблицы, не трогаю макет, только по каждой строке отдельно ищу уже текстовые совпадения со структурой параметров. Той же конструкцией СтрЗаменить меняю старые переменные на новые. Перезаписываю структуру. Изменения текста остаются, новые переменные добавлены.
И в теории вроде бы всё хорошо, но на практике получается так, что иногда СтрЗаменить меняет что-то ещё, что менять не надо было. Просто совпало. Да и в целом решение кажется мне убогим. Хочу спросить совета у уважаемых участников форума, можно ли как-то по-другому выйти из ситуации?
Найденные решения
(10) я бы хранил это следующим образом:
ЗаполненныйШаблон= Новый Структура("Шаблон, Параметры"
, "Кооператив создается за счет [ОбязательныеВзносы] взносов, осуществляет [ВидыДеятельностиКооператива2] и иную деятельность."
, Новый Структура("ОбязательныеВзносы,ВидыДеятельностиКооператива2", "вступительный ", "наноинновационную"))
ЗаполненныйШаблон= Новый Структура("Шаблон, Параметры"
, "Кооператив создается за счет [ОбязательныеВзносы] взносов, осуществляет [ВидыДеятельностиКооператива2] и иную деятельность."
, Новый Структура("ОбязательныеВзносы,ВидыДеятельностиКооператива2", "вступительный ", "наноинновационную"))
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(10) я бы хранил это следующим образом:
ЗаполненныйШаблон= Новый Структура("Шаблон, Параметры"
, "Кооператив создается за счет [ОбязательныеВзносы] взносов, осуществляет [ВидыДеятельностиКооператива2] и иную деятельность."
, Новый Структура("ОбязательныеВзносы,ВидыДеятельностиКооператива2", "вступительный ", "наноинновационную"))
ЗаполненныйШаблон= Новый Структура("Шаблон, Параметры"
, "Кооператив создается за счет [ОбязательныеВзносы] взносов, осуществляет [ВидыДеятельностиКооператива2] и иную деятельность."
, Новый Структура("ОбязательныеВзносы,ВидыДеятельностиКооператива2", "вступительный ", "наноинновационную"))
Вот маленький пример
Кооператив создается за счет [ОбязательныеВзносы] взносов, осуществляет [ВидыДеятельностиКооператива2] и иную деятельность.
Параметры видны? Видны. Текст виден? Виден.
[Кооператив создается за счет] [ОбязательныеВзносы] [взносов, осуществляет] [ВидыДеятельностиКооператива2] [и иную деятельность.]
Параметры видны? Видны. Текст виден? Где он?
Кооператив создается за счет [ОбязательныеВзносы] взносов, осуществляет [ВидыДеятельностиКооператива2] и иную деятельность.
Параметры видны? Видны. Текст виден? Виден.
[Кооператив создается за счет] [ОбязательныеВзносы] [взносов, осуществляет] [ВидыДеятельностиКооператива2] [и иную деятельность.]
Параметры видны? Видны. Текст виден? Где он?
(5) {Кооператив создается за счет} [ОбязательныеВзносы] {взносов, осуществляет} [ВидыДеятельностиКооператива2] {и иную деятельность.}
Что изменилось?
Я понимаю, что довольно путано объясняю, но постараюсь и вас понять тоже.
Смотрите, макет мы менять не можем. Пользователь меняет строки в таблице, которые подгружаются из макета только в первый раз. Вот это "[ОбязательныеВзносы]" превращается в "вступительный и паевой", например. Таким образом после возвращения к редактированию таблицы во второй раз в ней уже нет никаких разделителей.
Что изменилось?
Я понимаю, что довольно путано объясняю, но постараюсь и вас понять тоже.
Смотрите, макет мы менять не можем. Пользователь меняет строки в таблице, которые подгружаются из макета только в первый раз. Вот это "[ОбязательныеВзносы]" превращается в "вступительный и паевой", например. Таким образом после возвращения к редактированию таблицы во второй раз в ней уже нет никаких разделителей.
Что значит "должно автоматически произойти списание при изменении статуса".
Документ уже проведен? или только записан? должны изменяться движения проведенного документа? Что должно происходить если пользователь сначала изменил статус на "Производство", а затем вернул статус в "Закупка" или изменил еще на какой-нибудь?
Документ уже проведен? или только записан? должны изменяться движения проведенного документа? Что должно происходить если пользователь сначала изменил статус на "Производство", а затем вернул статус в "Закупка" или изменил еще на какой-нибудь?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот