Мои комментарии

Заголовок Comment Дата публикации Дата обновления
А что на счет пожеланий 3 и…

А что на счет пожеланий 3 и 4? Кнопки-то работают, а тут "сокрытие информации" :)

Кстати во встроенном…

Кстати во встроенном калькуляторе все Ок.

Так можно выкрутиться…

Так можно выкрутиться благодаря функции ИМЯ_ГРАФЫ.

Только через ее, родимую, все и делается)

Недостаток такого подхода,…

Недостаток такого подхода, если в бланке несколько таких граф для ввода счетов.
Тогда опять функция завязывается на имя конкретной переменной, а на каждую графу нужна своя общая переменная и своя функция.

Согласен. 
Но, пока других решений нет, попробую через СПИСОК_АТРИБУТОВ("$",С), где каждая строка из 2-х частей: <название графы>разделитель<значение>    

Эврика! Общая переменная…

Эврика! Общая переменная. Можно и аттрибут, но писанины больше.
Test.ibl
ПЕРЕМ ТИП_СТРОКА: кодвыбсч;
                         
ФУНКЦИЯ ТИП_ЛОГИКА: ВЫБ_СЧ(ПЕРЕМ ТИП_СТРОКА:х)
х=ВЫБОР_СЧЕТА(х,НЕТ); 
УСТ_АТРИБУТ("$пред_расч","ДА");
кодвыбсч=?(СЧЕТ_СУЩ(х),х,"");
КОМАНДА_БЛАНКА("RECALC");
ВЫБ_СЧ=СЧЕТ_СУЩ(х);
КОНЕЦ_ФУНКЦИИ
Формульный раздел
ИСПОЛЬЗОВАТЬ("Test");
Код_г_к=кодвыбсч; Код_г_к1=кодвыбсч; Код_г_к2=кодвыбсч;
папраз=АТРИБУТ("$пред_расч");
ЕСЛИ папраз="ДА" ТО УСТ_АТРИБУТ("$пред_расч",""); СООБЩЕНИЕ("Стоп"); СТОП; КОНЕЦ_ЕСЛИ
СООБЩЕНИЕ("Ок");

Спасибо за часть идеи) Может еще кому пригодиться.

Я попробовал в конец функции…

Я попробовал в конец функции ВЫБ_СЧ добавить КОМАНДА_БЛАНКА("RECALC").
Так пересчитывает и ошибки не возникает.

Ошибки-то нет, но в графу вывода ничего не подставляется. А в повторном вызове функции подставляется предыдущее значение.
Не решена задачка :( 

Чем не устраивает вариант с…

Чем не устраивает вариант с картинкой?

Попробую, только размножаются они с большой скоростью :) Чем меньше элементов, тем надежнее.

Доброго дня!
потребуется…

Доброго дня!

потребуется задание 8 цветов для фона и текста разных состояний. Как-то перебор, на мой взгляд.

Согласен, перебор. А хотя бы только текста. Он ведь во всех состояниях черный :)

Закрытие, как по ОК,…

Закрытие, как по ОК, необходимо для получения текущего номера записи для последующей передачи в БД_РЕДАКТОР в параметр "номер" и возврата к ней при перезапуске БД_РЕДАКТОР.
Даже если курсор стоит на "+", получем номер следующей записи. Например, в БД 99 записей, получим 100, подставим в "номер" и окажемся в том же месте. 

Предлагаю сделать так. Добавить новый обработчик "Й" (НастроЙка):
ФУНКЦИЯ ТИП_SQL ТИП_ЛОГИКА: &lt;Имя&gt;(ПЕРЕМ ТИП_СТРОКА: код)

Прекрасная идея. Только непонятно назначение параметра "код".

Если "код" пустая строка, то закрытие окна БД_РЕДАКТОР не требуется, ?

Возможно я мыслю категориями языка «Инфо-Бухгалтер», т.к. чтобы изменить вид окна БД_РЕДАКТОРа, например: спрятать ненужные столбцы, добавить новые, изменить их размер и т.п., мне необходимо перезапустить БД_РЕДАКТОР с получением положения курсора.
Алгоритм простой: 
  1) перед запуском БД_РЕДАКТОРа создаю $атрибут с любым названием, например $бд_настройка;
  2) запускаю БД_РЕДАКТОР;
  3) нажимаю на кнопку "Настройка";
  4) в обработчике, если изменены параметры просмотра, устанавливаю значение $атрибута и значение функции ДА, если не требуется изменение вида - НЕТ;
  5) если обработчик вернул НЕТ, как вы и предлагаете, ничего не делаем;
  6) если обработчик вернул ДА, БД_РЕДАКТОР закрывается, как по ОК;
  7) считываем $атрибут и принимаем решение: перезапускать или выбирать.
При этом ничего не меняется в текущем поведении БД_РЕДАКТОРа, т.к. несуществующий атрибут будет возвращать "". Вопрос только в том будет ли виден $атрибут в обработчике БД_РЕДАКТОРа, запускаемого через ВЫРАЖЕНИЕ? Может его делать глобальным?   

Спасибо за ответ. Файл…

Спасибо за ответ. Файл нормально открывался без сообщений. Дело было действительно в Экселе. После перезагрузки сервера вечером заработало нормально. К сожалению раньше невозможно это было сделать, т.к. на нем работает розница 3-х магазинов он-лайн. Я накануне обновил версию «Инфо-Бухгалтер» и клиент, как обычно бывает, возбухал,что все от обновления.

Стандартные пункты меню…

Стандартные пункты меню создаются один раз при старте программы.
Как Вы их текст планировали менять? На ходу подсунуть другую dll с ресурсами?

День добрый!
Причем тут dll? Можно гораздо проще) Меняю ibmenu.ini и выполняю ОБНОВИТЬ_МЕНЮ. При этом для стандартных пунктов не срабатывает Visible и Text.
Контекстные меню не обновляются при открытых окнах, если программа обновления запускается через панель инструментов. В остальных случаях все Ок. 
Я это заметил только из-за того, что у меня на тулбаре кнопка для оперативного переключения языка и видов меню, чтобы настраивать вид интерфейса без рестарта программы. 
Для юзеров это совершенно неважно, так что не стоит на этом заморачиваться. Добавил для того, чтобы убедиться, что не из-за моих действий.
Спасибо за ответ!

Просто перезапуск он и в…

Просто перезапуск он и в фильтрации/сортировке есть. А как считать новые настройки? Лучше, если обработчик возвращает "НЕТ" - перезапуск, а если "ДА" - то выход, а там БД_РЕДАКТОР в цикле и через какой-нибудь атрибут решать, перезапустить или закончить редактирование.

  Вообще-то это не связано с…

Вообще-то это не связано с фильтрацией или сортировкой.

У меня есть пользовательские настройки видов справочников: ширина, видимость и позиция поля в таблице. Каждый раз при просмотре крайне неудобно сжимать/растягивать или прятать поля. Поэтому, настроив один раз вид справочника, всегда получаешь необходимую информацию. Настройку удобнее всего производить в браузере, когда сразу видишь результат. После настройки необходимо перезапустить БД_РЕДАКТОР, чтобы увидеть изменения.

Сейчас для этого использую кнопку "ОК", когда "ред_при_выборе=ДА", и специальный режим, задаваемый в определениях, чтобы его можно было выключить, когда настройка не нужна. Когда задан режим настройки, при нажатии на "ОК" запускается программа настройки видимости. По отмене браузер закрывается.

Оптимально для этого иметь кнопку "Настройка" или "Вид", которая появляется при наличии соотвествующего обработчика, как в фильтрации и сортировке.

Думал, может приспособить для этого кнопки фильтра и сортировки :)

P.S. Браузер у меня один для всех БД, а их описания полей, ссылки на обработчики, настройки видимости и заголовки поле находятся в специальных БД.

Спасибо за развернутый ответ…

Спасибо за развернутый ответ и пример! А то мне представлялось, что это внутри БД_РЕДАКТОРа зашито :).

Еще один вопрос по обработчикам БД_РЕДАКТОРа: можно ли из обработчика, например Ф или С, закончить редактирование, как по кнопкам "ОК" и "Отмена"? "СТОПы" не работают.

Возможность располагать…

Возможность располагать несколько кнопок и опций в типовых операциях в одной строке.
Что сейчас мешает? Чтобы описания были короче можно использовать строковые подстановки (через %).

ОПЕРАЦИЯ Тесты: Кнопки
%2="StandInp"
*#ск(%2,"КНОПКА_НК"):"Старый код"  *#нк(%2,"КНОПКА_НК"):"Новый код"
ВЫЧИСЛИТЬ                                                                   
ИСПОЛЬЗОВАТЬ("Common");
ВВЕСТИ;                       
КОНЕЦ
Недопустимое действие для данного типа 17.09.2024 15:30:16.919 
Ошибка во входном поле SERVICE.TOP :(38,3) 17.09.2024 15:30:16.990

Тоже для опций или опция+кнопка. Приходится все кнопки и опции располагать на разных строках, что увеличивает высоту окна т/о.

АТРИБУТ("название") при вызове из ibx программы настройки бланка возвращает название бланка. Хорошо иметь АТРИБУТ("файл_бланка") для четкого идентификации источника вызова, поскольку название меняется гораздо чаще.

Есть АТРИБУТ("файл"). Не оно?

Нет, не оно.
Пример: бланк 04_04SPI.BLW "4. Акт о списании основного средства", программа настройки: Tune_Blank.ibx
В Tune_Blank.ibx имеем:
АТРИБУТ("название") =&gt; "4. Акт о списании основного средства"
АТРИБУТ("файл")=&gt;"TUNE_BLANK.SRC"
Ранее писал программы настройки для каждого бланка. Потом перешел на настройки из общей таблицы по коду бланка. Там же и т/о. Но все равно приходилось писать одинаковые программы вызова настройки, в которых в параметрах функции указывалось имя файла бланка. Сейчас ищу по названию бланка. Немного громоздко, но работает. Однако при изменении названия, приходится менять все параметры в БД настройке(.

В журнале Ctrl+C не работает как копирование.

Есть параметр командной строки /ALTACCEL, который меняет комбинации клавиш для "Сохранить" на Ctrl+S, а "Копировать" на Ctrl+C.

Работаю я и мои клиенты постоянно с /ALTACCEL. Именно для этого режима и описана ситуация.
В журнале Ctrl+C и Ctrl+V работает в верхнем и нижнем окнах, а в окне редактирования - нет.

Проблема только в размере…

Проблема только в размере индекса для индексных переменных и использовании операторов ВЫБОР (  ) #  :ИНАЧЕ КОНЕЦ_ВЫБОРА, СБРОС и т.п. Приходится переписывать часть кода или создавать подобный функционал для интерпретатора.

  День добрый! Спасибо за…

День добрый!

Спасибо за ответ!

Вне всяких подозрений:) Действительно вызов через ВЫРАЖЕНИЕ используется для динамического формирования, но не только столбцов, а и режимов редактирования, обработчиков событий и дополнительных параметров, которые, к сожалению, задаются в явном виде.

Еще в середине нулевых я ушел от использования БД_РЕДАКТОР в формульных разделах написанием универсальных браузеров ibx c фильтрацией, многоуровневостью и т.п. для каждой БД, которые вызывались через единственную функцию с соответствующими параметрами.

Лет 6 назад мне надоело писать процедуры ibx для инициализации и браузеров для каждой новой БД. Я реализовал идею единых инициализации и браузера для всех БД, с сохранением параметров и структуры БД в 2-х таблицах. Теперь для создания, изменения структуры БД достаточно внести ее в список баз данных с описанием индекса, многоуровневости, обработчиков для каждого уровня, сортировки, специальных обработчиков событий, предпроцессорами обработки данных, а также описать поля со всеми параметрами и функциями выбора в другой таблице. И здесь без "ВЫРАЖЕНИЕ" никак не обойтись. Напрягает только то, что выполнение происходит в режиме интрепретатора.

С нетерпением жду новую версию.

P.S. Есть у меня еще функция динамической настройки вида браузера во время редактирования (видимость, размеры, доступность полей). Реализовано коряво: через кнопку "ОК" в особом режиме задаваемом в определениях. Было бы замечательно добавить обработчик с кнопкой "Настройка" (аналогично "Фильтр") или в контекстное меню.

Спасибо. Прописал корневой…

Спасибо! Прописал корневой узел как "json type=object" и всё заработало. Mime не понадобился.

И как сделать видимой…

И как сделать видимой картинку здесь?

(Тема не указана)

Пример.

Ошибка возникает после редактирования файла ANSI. Если просто открыть ранее сохраненный, работает.

Пытаюсь передать файлы *.top ibw.ini. Вложить в сообщение не получается.

Отправил на 

help@ib.ru