Добрый день!
Приложение: Сырье. Материалы. (Товары. Готовая продукция).
Задача.
Достаточно большой справочник групп. Хотелось бы устанавливать фильтр на справочник групп (оставлять только нужные группы) при входе в документ в зависимости от вида, типа движения и типовой операции.
Попробовал в плагине, работающему по событию на вход, задать ключевой интервальный фильтр: mGrup->(SetScope(cScope,xScope,xScope1)).
Результат: справочник фильтруется по наименованиям, но не по кодам. Коды выводятся все.
Пробывал тоже самое делать вместо mGrup с алиасом SmGrup. Результат тот же.
Других «подходящих» открытых рабочих областей, с которыими можно было бы поэкспериметировать, не вижу.
:
Можно ли с помощью плагина установить фильтр при входе в документ в зависимости от вида, типа движения и типовой операции?
nordk пишет:
Виноват - это калькуляция для расхода.
Приход определяется по типовой операции.
По идее смена кода типовой операции должна приводить к смене
модели калькуляции, вот только Вы уверены что типовую операцию
Вы меняете?
У меня не получается ее менять.
И меня не получается (см.выше)? Поэтому и пишу, что решил обратиться за помощью.
Автоматизируем контроль за правильностью действий пользователя.
При входе в СКЛАДСКОЙ ПРИХОДНЫЙ документ включается плагин, по результатам работы которого определяется - ту или нет типовую операцию выбрал пользователь. Если нет, то предлагается или жестко или мягко покинуть документ.
Читая документацию XBA, а именно о том, что: «Плагин “Вход в документ” выполняется сразу после того, как отобразится форма с документом и инициализируются все рабочие переменные, то есть непосредственно перед началом ввода/редактирования данных», появилась следующая .
Если инициализируются только рабочие переменные, то зачем покидать документ, не лучше предложить пользователю по таким-то причинам заменить типовую операцию. Если он соглашается, то заменить необходимые рабочие параметры здесь же в плагине, чтобы дальше система продолжила работать с уже измененной типовой операцией.
Первоначально мне показалось, что это будет очень просто. Достаточно будет заменить код типовой операции, которая вызовет нужную модель калькуляции (из-за нее вся проблема). Заменил код типовой операции – параметр PcodeOper. Не помогло. Стал искать переменную с кодом модели калькуляции. Такую переменную в явном виде не нашел. На этом остановился. Обращаюсь за помощью.
к Сан Санычу и к тому кто знает.
Можно ли реализовать задачу как описано выше? Если да, то как?
Возможный вариант замены данных после завершения ввода документа по событию «На запись» рассматривать не стоит. Так как он проигрывает в конкурентной борьбе ныне действующему варианту по критерию цена-качество.
Александр Титов пишет:
Вот так попробуйте:
IF OpenLedger()
....
Почему-то не сразу, но запустилась. Функцию возьмем на вооружение.
Спасибо!
:
А нельзя ли пересчет запускать без отображения заставки "Зарегистрировано изменение в проводках ... Достроить данк данных", выбирая жестко в плагине режим "Рассчитать и продолжить".
Добрый день!
С SP11 в БЭСТ-5-3.4 предоставлена возможность "привязки" партионных групп ТМЦ к нескольким счетам учета. Теперь бюджетникам одну группу можно "привязывать" к разным парам "Префикс-Счет". А это значит, что теперь не увеличивая числа групп, можно вести учет ТМЦ в ОУ в разрезе "префиксов" или, другими словами, в разрезе программ, на которые выделяются денежные средства. Большое дело! Для себя для краткости эту возможность мы назвали СУП (счета учета партий).
В настоящее время столкнулись с рядом неудобств при использовании СУП-а (определимся, напишем на HotLine), но есть одно "неудобство", переходящее в проблему.
При списании раскрываем картотеку и не можем определить какую партию мы должны списать по той или иной программе финансирования ("префиксу"). На экране нет никакой информации по СУП-у и нет возможности выставить фильтр по СУП-у. Конечно возможность фильтра надо реализовывать штатно с выбором значений из справочника КФК-Расходы. Для этого обратимся с доработкой на HotLine. Надеюсь, что она будет сделана. Но когда? А СУП надо "кушать" сейчас. В связи с этим попытались выкрутиться с помощью плагинов следующим образом.
Нам представлялось (в чем сейчас сомневаемся), что в документе раскрывается картотека, а именно файл mKart. В mKart есть поля атрибутов и поле Pref с нужными нам значениями. Поступаем следующим образом. Берем одно из полей атрибутов, которое не используется у нас в номенклатурных карточках, например, Marka. При оприходовании ТМЦ плагином копируем содержимое поля Pref в поле Marka. Для чего? Если сделать поле Marka действующим атрибутом, то оно появляется в окне фильтра картотеки склада в документе. Если справочник атрибутов сделать идентичным справочнику КФК-Расходы, то F2 можно выбрать нужное значение и установить фильтр - отобрать ТМЦ, которые относятся к той или программе финансирования ("префиксу"). Увы, так не работает?! Этот фильтр работает при условии, что поле Marka заполнено в файле mLabel. А это не наш вариант. В нашем варианте "Одна номенклатура" - "Много партий с разными СУП".
Пробовали другой вариант. Плагином по событию "вход в картотеку" ставили фильтр с помощью DBPUSH() на записи mKart. Фильтр ставится (проверяли листанием записей с их выводом на экран), но картотека склада открывается вся?!
Хотели "обыграть казино". Не получилось. Облом.
.
Можно ли "обыграть казино" в нашем случае? О "тяжелых" решениях (типа заменить кусок от картотеки и далее своим) речь конечно не идет. Нужны простые решения. Типа наших. Не удачных, но "красивых".
Добрый день!
При считывании MDIM система "ругается" на отсутствие _LEN_NNOPER.
Определил равным 22. Вроде прошло. Во избежание возможных сбоев на будующее при считывании других переменных, прошу уточнить 22 - это правильно?
Добрый день!
Проверяем заполнение полей в складских документах, используя вызов "перед записью". Наряду с полями документа, надо проверить правильность заполнения атрибутов карточек номенклатур и партий, вводимых в фактурной части документа. Но на момент вызова плагина строки документа еще не в базе данных, а во временных переменных и массивах.
.
Как "вытащить" параметры строк документа, а именно {Grup, Nnum, MDim, Partia} из памяти?
Просматривая все подряд переменные Private, нашел строки документа в нескольких местах. К примеру в строке (не знаю, как это правильно называется): aWindow - 2 - 7 - CARGO[1,i]. Там все параметры каждой строки документа хранятся в своей строковой переменной.
.
Как их оттуда "вытащить"? Или есть другие возможности?
Не пробывал, но думал.
Здесь два момента:
1) Что начинается вперед: генерация проводок или сохранение полей документа? Конечно, это можно проверить.
2) Но как после проверки заполнения полей, снова перенаправить программу на работу с полями документа, а потом снова выйти на плагин и т.д. (как организовать такой цикл)?
Нет конечно.
Как показало практика, даже при штатном программировании проводок в других ПП, поддерживать это не получается. Чаще бывает проще добавить новую простую конкретную типовую операцию, чем снова погружать в старый алгоритм.
И от параметров шапки и от введенных позиций.
Но хотелось бы иметь Событие и не как частный случай, а как правило. И не только для складских документов, но и для имущества и других возможных подобных документов.
Не лучший вариант, но попробуем.
Не лучший потому, что если типовая операция из нескольких проводок, то плагин на суммы надо ставить в каждом, чтобы проводки не формировались. Поскольку плагины к тому же формируют аналитики, то на одну типовую операцию их становится "много".
Хотелось бы чего-нибудь по-проще и по-надежней. Типа события "Перед формирование проводок". Если .Т., то формируем. Если.F., то не формируем.
БЭСТ-5-3.4 Бюджет. Решаем следующую задачу.
Счета с многосегментной аналитикой – в среднем 4-5 уровней. Поскольку в Имуществе нет моделей калькуляции, то основной поток документов направляем по штатной цепочке: Материалы. Закупка – Материалы. Передача в эксплуатацию – Кнопка Имущество.
Если действовать штатно, то после нажатия кнопки Имущество необходимо заполнить 6 полей со счетами и их аналитиками (учет - 2, износ - 2, затраты - 2). Поскольку счета у нас с многоуровневой аналитикой (от 4 до 6 уровней), то по факту каждый раз вручную надо заполнять чуть более 20 полей. Но кроме того надо правильно и выбрать счета. Выбор их зависит от источника финансирования (как минимум 3 – бюджет, предпринимательство, целевые) и от вида затрат (бюджет, прямые ПрД, косвенные ПрД, косвенные от ФБ и ПрД). Заполнение перечисленных полей понятно напрягает.
Настройки же таковы, что вся необходимая информация для заполнения вышеназванных полей уже есть в Материалах. Поэтому в Материалах рядом с кнопкой Имущество подключен FileEval(), который запускается после кнопки Имущества и заполняет нужные поля. Все бы ничего, но картину портит то, что надо еще раз нажимать кнопку Имущество и генерировать проводки. Это не сложно, но не «красиво».
Попробовали поступить следующим образом. При нажатии кнопки Имущество выбираем некоторую типовую операцию, например 000. Запускаем плагин, устанавливаем счета в карточках, заменяем типовую операцию 000 и проводки на нужные.
Проблема:
Такую замену проводок Банк данных по счетам конечно не видит. В нем тоже все надо перестраивать, а это не просто. Представляется, что у разработчиков для этих целей есть специальная функция, типа оперативного пересчета банка данных при изменении журнала хозяйственных операций. Если бы ее запускать в плагине, то проблема будет решена.
: Можно ли решить нашу проблему?
Добрый день!
Возможно ли в БЭСТ-5-3.4 реализовать следующую задачу?
Многосегментную аналитику в типовых операциях формируют FileEval().
Хотелось бы перед генерацией проводок проверить - все ли необходимые поля заполнены и правильно ли. Если нет, то на экран выдается сообщение чего не хватает и что нет так. Проводки в этом случае не генерируются. Если все Ок!, то проводки генерируются.
Вариант вставлять сообщения в FileEval(), формирующие аналитики не подходит. Проводки в этом случае формируются. Но основная беда в том, что сообщение появляется столько раз сколько строк фактурной части документа. Как от этого уйти не знаю.
Пакет обновления № 29 от 19.02.07
1. В программе Бэст4+ может использоваться новая серия ключей Rainbow Safe Net Sentinel (Sentinel SuperProNet), серия SRM00409-10. Ключи являются сетевыми (в локальном варианте в них прописывается 1 место). Если такие ключи используются, то для работы с ними необходимо установить сервис и драйвера ключа. Установка драйвера и сервиса ключа производится запуском программы Sentinel Protection Installer 7.3.2.exe из каталога UTIL\rainbow\Windows\Server\Sentinel Protection Installer установленной версии программы. Следует выбрать полную установку (complete). При запросе следует разрешить внести разрешения для сервиса ключа в брандмауер Windows (ответить Yes). Перегрузиться.
:
БЭСТ-4+ с ключем Rainbow Safe Net Sentinel (Sentinel SuperProNet), серия SRM00409-10 может работать в сети с ОС Novell Netware на сервере порт LPT?
Если да, то как его установить?
Алексей Новиков пишет:
Во-первых, можно написать заглушку в виде файла 'prg', который будет содержать строку вида "hfileeval('001.hrb')".
Воспользовался первым вариантом. После чего вышел еще на одну проблему перехода.
Конструкция FileEval("namefile.prg",{список параметров})позволяла "экономить" на плагинах, в случае однородных задач, путем задания разных значений параметров. Запускать, аналогичным образом, с параметрами hrb до сих пор как-то нужды не было.
.
Возможно ли это? Если да, то как это прописать в заглушке?
Уточняю, в проводках запускаем конструкцию FileEval("namefl2.prg",{список параметров}), а заглушка имеет вид:
HFileEval("namefl1.hrb")
Return Nil
Заранее спасибо за ответ
nordk пишет:
А новые уже принимайте решение как будете делать, если пункт меню - то пожалуйста и я об этом написал, чтобы Ваши индексы и базы поддерживать кладите их в соответствующее место. Если на события, то новые можете на hrb делать.
Подскажите, пожалуйста, а какие конструкции прочтения плагинов понимают шаблоны типовых операций в версии Б-5_34 (речь идет о полях Шифр анал.учета и Алгоритм прочтения суммы)?
У меня проходит ТОЛЬКО старый вариант: FileEval("имя плагина",{список параметров}).
Можно ли сразу восспользоваться резултатами компиляции?
Алексей Новиков пишет:
Видимо, в БЭСТ 3.4 что-то переделали.
Можно сделать так.
В каталоге client\bin создаёте каталог userlibs. В этот каталог копируете скомпилированную библиотеку (userlibs.bdll). Библиотека автоматически не копируется из каталога server\Data\Pro\userlibs\ при запуске БЭСТ-5 3.4, так как это было в БЭСТ-5 3.3. Но загрузку библиотек из client\bin\userlibs не отключили, поэтому после того, как Вы скопируете туда свою библиотеку, Ваш плагин начнёт запускаться.
Спасибо. Заработало.
Цитата
nordk пишет:
Посмотрите для начала на УРОК 3 пункт 2 и на описание ко второму пакету версии 3.4.
Уже читаю.
Цитата
Алексей Новиков пишет:
Не торопитесь Виктор, вот выйдет версия 3.5, там разработчик опять упорядочит поддержку пользовательских решений и опять будем переписывать свои плагины под новый стандарт, потому что старый отключат. :-)
Алексей!
Благодаря Вашей помощи, после нескольких переустановок БЭСТ-5-34-6 и многократного повторения одних и тех же действий линковка прошла.
Эмпирически вышел на следующую последовательность действий:
1. Установить БЭСТ-5-34-6. Развернуть БД.
2. Запустить BestIde.exe. Снять галку Опции – Настройки – Соединение c SourceSafe. Выйти.
3. Запустить BestIde.exe. Выбрать предприятие. Создать пользовательский проект. Открыть окно редактора. Написать процедуру.
4. Настроить Свойства проекта – Общее и Переменные среды как у Вас.
5. Нажать F7.
После этого дальнейшие компиляции и линковки идут.
Возможно, кто-то скажет, что все это бред. Спорить не буду. Но, увы, по другому убрать сообщение W0000 :Не указаны библиотеки, с которыми надо линковаться! у меня не получалось. Проверял на двух машинах.
Компиляция прошла, но продолжить пример из Быстрого старта в Б-5-34-6 все равно не получилось.
Сделал все как написано в Быстром старте:
1. Запустил Best.exe –d. По Alt-Tab перешел в БЭСТ. В АРМе по Ctrl-F5 написал:
Имя файла: @MyTest
Параметры:
Вызов: по требованию
Горячая клашиша: K_ALT_1
2. Запускаю процедуру по Alt-1 в ответ получаю сообщение:
Ошибка при выполнении функции MyTest
Ровно то же самое в БЭСТ-5-33 работает. Открывается окно отладчика и можно пройти с помощью клавиши F10 по строкам.
Похоже, что в БЭСТ-5-34-6, где-то что-то опять не подключено.
:
Что не так? Что делаете Вы?
Заранее благодарю, за ответ. Если можно в картинках.