Обновление №7 для VOGBIT v.1.1.37841 - В производственном модуле внесен ряд изменений, направленных на упрощение работы с программой на «максимальном» уровне. В том числе: изменён порядок вывода на экран информации о количестве (запланированных/сданных деталей) – стало более наглядно и удобно

Последние темы на форумах VOGBIT

Порядок заданий - Производство
Константин Чилингаров: 18541 Pksfera14881 написал: у меня в заказе таких изделий 100 шт вогбит не дает сделать сменное задание второму пока первый не нарежет все 100 шт Это "последовательностью" настроенной как раз определяется. Выше тут обсуждалось. У вас ст ...
Проблема со справочником "Номенклатура" - Общие вопросы
Константин Чилингаров: Здравствуйте, 18371 Mariska17-17 написал: во вкладке Подразделения: производственные участки, оборудование, посты и т.д. выводятся общим списком Нужно выбрать "Категорию". См. /support/622/#_v7660 здесь , рис.8,9,10.
Шаблон отчёта при многосменной работе - Производство
Константин Чилингаров: Здравствуйте, Нет. Не будет так работать. Нужна современная версия. 1. Терминал - это не полностью отдельная, независимая программа, а по сути точно такой же клиент VOGBIT, как и обычное рабочее место. Только запускается на нём не тот exe файл ...
Чистка номенклатурного справочника - Прочее
Константин Чилингаров: Хм... Странно... Базу бы, конечно, посмотреть, по-хорошему. Попробовал разные примеры, вроде, нормально всё. Если есть в спецификации или чём-нибудь подобном позиция (когда такое сообщение пишется), то нормально, вроде, "где используется" ...
справочник номенклатура - Производство
Константин Чилингаров: Последнее сообщение /forum/messages/forum29/topic2443/message15138/2443-poryadok-zadaniy#message15138 перенесено . Причина - несоответствие теме топика. Пожалуйста, обратите внимание на /forum/forum24/topic928/ рекомендации , п.2.
Заказная спецификация - Состав и технология
Fomina: Спасибо. Попробую
Редактирование накладных - Материалы, Комплектующие, Складской учёт
Константин Чилингаров: Здравствуйте, Тоже можно изменить, но тут немного посложнее уже. Для не очень подготовленного пользователя проще всего, наверное, сделать будет в 2 шага: 1. Из оформленного прихода неправильную позицию удалить. 2. Сделать штатными средствами (Склад ...
Сброс группировки по подразделам. - Ошибки в работе
Константин Чилингаров: Здравствуйте, Ладно, не нужно тогда видео. Вроде, понятно. Ответ /forum/messages/forum39/topic2439/message15127/2439#message15127 вот здесь .
Изменения количества номенклатуры для заявки. - Интерфейс программы
Константин Чилингаров: Ответ сразу на это и /forum/messages/forum40/topic2434/message15126/2434#message15126 вот на это сообщение. Предисловие: В основном используют эту связку ("Обеспеченность" -> "Заявка на закупку") немного не так сейчас большин ...
Ошибка - Прочее
Mariska17-17: Спасибо, помогло!
Невозможно запустить приложение в связи с недействительными данными активации - Активация, Деактивация, Лицензии
Елена Ковалева: Отвечено по e-mail.
Импорт данных - Экспорт импорт данных
Константин Чилингаров: Здравствуйте, 18371 Mariska17-17 написал: Как оставить заявочку на предоставление модуля для импорта данных? На почту или через форму обратной связи на сайте послать. 18371 Mariska17-17 написал: Может ли он импортировать состав изделий из техн ...
Место хранения в расчете потребности - Материалы, Комплектующие, Складской учёт
Константин Чилингаров: Здравствуйте, В "место хранения" по умолчанию (если специально ничего не настраивать) подставляется то подразделение, куда последний раз приходовалась через "складской учёт" соответствующая номенклатура. Когда на предприятии неск ...
Коэффициент потерь - Состав и технология
Константин Чилингаров: Не предусмотрено. Ставить "коэффициент на заказ". Есть стандартный вариант - ставить в "норму расхода" (количество материала) сразу значение с учётом усреднённых потерь. Тогда можно хоть на каждую деталь при желании разный принцип ...
Блокировка изменения номенклатуры - Интерфейс программы
Константин Чилингаров: В целом, посыл понятен. Что можно сделать - думать нужно. С учётом разных нюансов и ситуаций. Подумаем.
Получить данные о заказах на закупку, счетах, актов замены с помощью запроса SQL - Экспорт импорт данных
Константин Чилингаров: Здравствуйте, Очень неточный вопрос. Нужно поточнее как-то сформулировать. По порядку: Такой сущности отдельной, как "счёт" в VOGBIT нет. Есть сущность "заявка на закупку". По смыслу – список с некоторой атрибутивной инф ...
Терминал тп 5. Закрытие незаконченных заданий. - Терминалы
Константин Чилингаров: В текущей версии никаких подобный настроек нет.  Отката назад из этого окна нет, насколько я помню, потому что к моменту его появления часть информации о "закрытии задания" фактически уже записалась. Нужно уже до конца доводить. Если неправ ...
Выбор участка в окне редактирования - Ошибки в работе
Alex-220781: Спасибо. Исправил.  Хотел по памяти настроить. Не получилось.  Старею... 
Состав изделия и использования разных материалов в одной и той же детали - Состав и технология
Константин Чилингаров: Здравствуйте, Первое, что нужно отметить: Если у Вас есть диван определённой модели с обивкой из одной ткани и точно такой же по конструкции, но с обивкой из другой ткани, то со всех сторон будет лучше, если в базе данных это будет две разные н ...
Терминалы, аппаратная часть - Терминалы
Константин Чилингаров: Последнее время, регулярно возникают вопросы по аппаратной части цеховых терминалов. Пока выложу сюда, как отдельную тему, кратко по основным моментам. Надеюсь, будет полезно. Итак, поехали: С технической точки зрения «цеховой терминал» - эт ...

Пример создания плагина

Разработка приложений и функций - Плагины - Технические вопросы
Страницы: 1 2 След.
Пример создания плагина
 
вот пример простого плагина, который добавляет кнопку в Toolbar окна номенклатуры.
При нажатии на кнопку создаётся и показывается форма "Коллекции компонентов".
Пример написан на C#
Код
using System;
using Csdn.Vogbit.Base;
using Csdn.Vogbit.Data;
using Csdn.Vogbit.Forms;
using Csdn.Vogbit.Main;
using System.Windows.Forms;

namespace VogbitPluginExample
{
    [Caption("PluginExample")]
    [ID("{EB7B1DCC-0DDE-4eaf-B500-2D669DE4557C}")]
    public class Example: PlugInBase
    {
        private const string CommandGuidString = "{67ED1590-AB70-46f7-94F9-58A462D333DB}";
        private const string CategoryGuidString = "{B18D68B3-33B2-45eb-BBCA-424B30E65B48}";

        protected override void Connect()
        {
            base.Connect();
            ExtForms.EventHandler += ExtFormsEventHandler;
        }

        void ExtFormsEventHandler(object sender, ExtensibleFormsEventArgs e)
        {
            if (e.EventType == ExtensibleFormsEventType.NewForm)
            {
                if (e.PlugInForm.GetType() == typeof(NomenclatureGridForm))
                {
                    var commandId = new Guid(CommandGuidString);
                    var categoryId = new Guid(CategoryGuidString);

                    var barManager = (IBarManager) e.PlugInForm;
                    var barCategory = barManager.BarCategories.Add(categoryId, "Пример");

                    var exampleButton = barManager.BarCommands.AddButtonCommand(commandId, barCategory, "Команда", false);
                    //exampleButton.IconGlyph = 
                    exampleButton.Caption = "Пример кнопки";
                    exampleButton.ActionExecute += ExampleButtonActionExecute;
                }
            }
        }

        void ExampleButtonActionExecute(object sender, ActionExecuteEventArgs e)
        {
            if (((IPlugInDataForm)ExtForms.ActiveForm).CurrentItem != null)
            {
                //long nmkId = ((NomenclatureItem) ((IPlugInDataForm) ExtForms.ActiveForm).CurrentItem).ID;
                long nmkId = ((IPlugInDataForm) ExtForms.ActiveForm).CurrentItem["ID"].AsLongInt;

                var formParams = new PlugInFormParams();
                formParams["OwnerID"].Value = nmkId;

                var collectionsForm = ExtForms.GetNewForm(typeof (OwnedComponentCollectionsForm).ToString());
                collectionsForm.TabText = "Пример формы";
                collectionsForm.OpenForm(formParams);
                collectionsForm.ShowFloatingForm(DockStyle.None);
            }

        }
    }
}
 
вот скомпилированная библиотека и скриншот.
 
Этот пример попробовал.
Хочется побольше примеров, таких как
- создания пользовательского окна встроенного в VIGBIT (например номенклатура + несколько параметров)
- пример пользовательского модального окна
 
Для того, что бы встроить окно в Vogbit надо наследовать свою форму от одной из вогбитовских.
Например, для "номенклатура + несколько параметров" можно занаследоваться от DataViewForm.
Потом пишем запрос и вываливаем данные в форму.
Вот простой пример формы и запроса:
Код
using Csdn.Vogbit.Base;
using Csdn.Vogbit.Forms;
using Csdn.Vogbit.QB;

namespace VogbitExample
{
    public partial class NmkAndParamsForm : DataViewForm
    {
        public NmkAndParamsForm(IExtensibleApplication app)
            : base(app)
        {

        }

        protected override void OnLoad(System.EventArgs e)
        {
            base.OnLoad(e);

            GetData();

            DataControl.Columns.Add(DataSource.PropertyDefs["Notation"], "Обозначение");
            DataControl.Columns.Add(DataSource.PropertyDefs["Name"], "Наименование"]);
            DataControl.Columns.Add(DataSource.PropertyDefs["p1Value"], "L");
            DataControl.Columns.Add(DataSource.PropertyDefs["p2Value"], "Nmax");
        }


        void GetData()
        {
            var sqlQuery = new SqlQuery();
            var selectQuery = sqlQuery.CreateQuery();
            var nmk = (Csdn.Vogbit.QB.Schema.Views.Nomenclature)selectQuery.From.AddView(Views.Nomenclature, "nmk");
            var p1 = (Csdn.Vogbit.QB.Schema.Views.ObjectParameters) selectQuery.From.AddView(Views.ObjectParameters, "p1");
            var p2 = (Csdn.Vogbit.QB.Schema.Views.ObjectParameters)selectQuery.From.AddView(Views.ObjectParameters, "p2");

            var j1 = new Join(nmk, p1, JoinType.Inner, new Condition().EqualTo(nmk.ID, p1.OwnerID).EqualTo(p1.ParameterNotation, "L")).
                InnerJoin(p2, new Condition().EqualTo(nmk.ID, p2.OwnerID).EqualTo(p2.ParameterNotation, "Nmax"));

            selectQuery.Joins.Add(j1);
            selectQuery.Columns.AddAllColumns(nmk);
            selectQuery.Columns.Add(p1.ParameterValue, "p1value");
            selectQuery.Columns.Add(p2.ParameterValue, "p2Value");

            sqlQuery.Add(selectQuery);

            var data = ExtensibleApplication.Application.ExecuteQuery(sqlQuery);

            data.Close();
            data.Prepare();
            DataSource = data;
        }
    }
}

показать эту форму:
Код
var f = ExtForms.GetNewForm(typeof(NmkAndParamsForm).ToString());
 f.ShowFloatingForm(DockStyle.None);
если хотите показать модальное окно:
Код
f.ShowDialog();
Если хотите встраиваемое окно, но со своими контролами - наследуйтесь от XtraForm.
Для создания диалогового окна можно наследоваться от EditDialog
Если хотите совсем своё окно - стандартным способом.
 
для демо-базы результат должен выглядить так:
2.png (21.64 КБ)
 
А можете показать реализацию аналогичных плагинов на VB.NET.
Спасибо.
 
А разве недостаточно примера для одного языка ? Тем более для языков .Net, где всё очень похоже ?
 
Convert C# to VB.NET
 
Возможно ли рассчитывать и добавлять норму расхода материала на деталь (кг),в констр.спец. по размерам детали(лист а х b;прокат L ), параметрам самого материала (уд,вес),применив коэффициенты расхода по типу детали (1,1;1,05 и др).Какой алгоритм,мож. пример,с чего начать... :D
 
Цитата
yser83 пишет:
Возможно ли рассчитывать и добавлять норму расхода материала на деталь (кг),в констр.спец. по размерам детали(лист а х b;прокат L ), параметрам самого материала (уд,вес),применив коэффициенты расхода по типу детали (1,1;1,05 и др)
Да, возможно.
Пишется плагин, который будет это делать и вперёд!
Обычное программирование. Ничего сложного. Пишется алгоритм на бумажке (в файле произвольного формата) что на что умножать и по каким правилам. И пишется потом плагин, который это делает и результат в нужное место записывает. Например, берёт параметры детали, параметры материала, определённым образом их обрабатывает по какому-то алгоритму и результат записывает в норму расхода. С точки зрения программирования, при наличии толкового ТЗ - задачка элементарная.
Писали мы такие калькуляторы для расчёта норм расхода в своей предыдущей программе (в TCS).

Цитата
yser83 пишет:
пример,с чего начать...
В смысле?
Вы хотите сами плагин свой написать?
Тогда начать со следующего:
1. Написать для VOGBIT свой плагин типа "Hello World"
2. Написать свой плагин, который берёт у выбранной номенклатуры параметр "A" и параметр "B", умножает их друг на друга и значение записывает в параметр "C".
 
Да ! интересно разобраться
писал на С# в VS под Win, а как тут разобраться, откуда "брать" параметр куда вставлять...
 
По поводу "откуда" и "куда".

Деталь - номенклатурная позиция

Характеристики детали (длина, ширина и т.п.) - параметры этой номенклатурной позиции.

Материал (в базе данных) - номенклатурная позиция

Характеристики материала (удельный вес и т.п.) - параметры номенклатуры материала

Техпроцесс - коллекция компонентов, связанная с номенклатурой детали. Тип связи LT_ManProcess.

Материал детали - компонент в коллекции (в техпроцессе). Тип связи LT_Material.

Характеристики заготовки (размеры и т.п.) - параметры этого компонента.

Это всё было по части "откуда".
"Куда":

Норма расхода материала - количество  единица измерения компонента "материал" в коллекции (в техпроцессе).
 
"брать" так:
1. получаете параметры нужного объекта(номенклатуры, компонента, коллекции...)
2. среди всех параметров находите нужный. Искать можно по любому полю. В примере поиск по UID'у. На больших объёмах лучше искать по ParameterID.
3. возвращаете значение найденного параметра(в примере параметр типа double)
Код
var objParams = ExtensibleApplication.Application.General.ObjectParameters(objId);
var searchResult = objParams.QuickSearch(new[] { "ParameterUID" }, new object[] {"ObjectParameterUid"});
if (sr.Length > 0)
{
   return ((ObjectParameter) searchResult[0]).ParameterValue.AsDouble;
}

Добавляем параметр так:
1. получаете параметры нужного объекта(номенклатуры, компонента, коллекции...)
2. создаёте новый параметр
3. изменяете необходимые значения
4. сохраняете
Код
var objParams = ExtensibleApplication.Application.General.ObjectParameters
var objParam = objectParameters.AddNew();
if(objParam != null)
try
{
   objParam.ParameterID.Value = parameterId;
        objParam.ParameterValue.Value = parameterValue;
        objParam.Save();
}
finally
{
   objParam.Cancel();
}
 
Спасибо, попробую разобраться...
Изменено: yser83 - 22.01.2014 15:41:49
 
возможна отладка плагина в Visual Studio ?
vogbit против "Это приложение не может быть запущено под отладчиком. Деактивируйте все активные отладчики и запустите приложение снова"
 
Цитата
yser83 пишет:
возможна отладка плагина в Visual Studio ?
нет
 
как плагины делать? тока коммерчески...
 
Да, если брать коммерческую версию, то там стоит защита. И не даёт запускать под отладчиком. Вариант последней версии программы, который может работать под отладчиком, доступен только разработчикам.

Но есть предложение:
Если хотите, можем найти какую-нибудь прошлогоднюю версию программы в виде голой платформы (без плагинов) и без защиты от запуска под отладчиком. И бесплатно вам лично её дать.
Базу можем любую к ней на выбор дать, хоть "демо", хоть "стартовую". Нам всё равно.
Для вашей задачи подойдёт полностью. С точки зрения считывания/записывания параметров разницы между старой и новой версией нет никакой. Можно на старой версии тренироваться, отлаживать и т.п.
Если потом захотите то, что получится, использовать в последней версии, то просто пересобрать надо будет под новую. Отладчик для этого не нужен, как я понимаю.
 
Это очень интересное предложение...работать будут два приложения на одном компьютере?
 
Найдём какую-нибудь такую версию, которая будет ;)

Надо будет только не ставить её через setup обычный, скорее всего, а просто переписать файлы в нужное место. И запускать оттуда ярлыком, а не через меню "Пуск".
Ну это мы напишем вам кратенькую инструкцию, что куда положить.
 
Спасибо.
 
В общем, если надумаете, пишите на почту.
В течение недели после этого, что-нибудь вам подберём и вышлем с инструкцией.
 
Здравствуйте, Константин. Пробую подключить  скомпиллированный (код- пример кнопки с форума) ,  dll-ка получается 6 кб, в Вогбите не видет в настройке панели (пример-пример кнопки), думаю настройки VS 2013 надо, как то  особенно поставить, подскажите в чем может быть проблемма.
 
Код меняли?
Для разработки используем студию 2012, но вряд ли дело в настройках студии.
Фреймворк 4.5 попробуйте в настройках поставить.
Скиньте файл получившийся
 
Менял guid, текст "моя кнопка", собирать пробовал на разных версиях фрейма...
 
У меня ваша кнопка появилась.
По умолчанию она скрыта.
Можно через код достать так:
Код
barManager.MainToolBar.AddCommand(CommandGuidString, Guid.Empty, false);

или руками: показать панель инструментов-> добавить или удалить кнопки -> Настройка -> Команды -> Мой пример -> Мой пример кнопки и тащите на панель. В след. раз она там будет (и в ленте тоже)
 
У меня в командах(категории:  ) нет"Мой пример", а при использовании оригинального файла пример кнопки VogbitPluginExample, пример -> пример кнопки работает...
Изменено: yser83 - 14.02.2014 16:29:06
 
Вероятно, в директории вогбита оба файла лежат. С одинаковым ID плагина. "Форумный" подцепился раньше. Удалите "форумный", оставьте свой.
 
Удален,в списке файлов программы был,а в директории программы "форумный" остался, удалил, все заработало !!! Спасибо!!!
 
Потихоньку разбираюсь...Создана кнопка в панели окна номенклатура, находит параметры выбранной детали. Подскажите,пожалуйста, где найти параметр материала, данной детали,и возникла проблемка с "Quantity"(кол.материала),как (из номенклатуры) вернуть в компоненты детали, вроде все корректно изложил...
Изменено: yser83 - 19.02.2014 04:10:52
Страницы: 1 2 След.
Сейчас на форуме (гостей: 10)
Всего зарегистрированных пользователей: 2839
Приняло участие в обсуждении: 332
Всего тем: 804
Всего сообщений: 6066

×
Вход на сайт