Новая версия VOGBIT 20.5 - Новая платформа: быстрее, надёжнее, удобнее. Новая подсистема управления приоритетами в производстве. Новые возможности для участков ЧПУ. Улучшенные «цеховые терминалы». Новые возможности для совместной работы менеджеров, инженеров и производства при изготовлении уникальной продукции под заказ. И многое другое…

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

Порядок строк приходной накладной - Интерфейс программы
Alex-220781: 13 Константин Чилингаров написал: Хорошо, понятно. Запишу отдельным пунктом в список предложений и пожеланий. Спасибо! Добрый день! На всякий случай, напоминаю. Может в следующем обновлении появиться. 3520 Alex-220781 написал: возможность пере ...
Календарный план - Производство
Андрей Тюрин: Здравствуйте. Во вкладке "Календарный план" при добавлении нового заказа технологические карты группируются, насколько я понял, так: сначала ТК1 на кран 3512, потом ТК1 на кран 3584, затем ТК2 на кран 3512, т. е. сначала все ТК1, потом все ...
Отсутствие РЦ в дашборде - Терминалы
Константин Чилингаров: Здравствуйте, Да, верно. На дашборде показываются данные по «текущей смене». Которая идёт непосредственно сейчас. Если таковой нет для соответствующего поста – он и не показывается. Другое дело, что dashboard в таком виде вообще достаточно беспол ...
Оформление выдачи готовой продукции из производства - Материалы, Комплектующие, Складской учёт
Константин Чилингаров: В окне «график производства» выделить позиции, которые передаются на склад. Нажать «Сдать на склад» (рис.1). Проверить, что правильно указан склад, куда передаётся, нажать «создать документ» (рис.2). Дальше можно при необходимости поправить количе ...
Отображения количества деталей в терминале - Интерфейс программы
1113: Доброго дня.  Предлагаю в терминале Тип 1 после авторизации, выбора участка и после выбора Заказа в окне выбора детали, выводить не только название детали (или , по сути, технологического процесса) но и количество этих деталей.  Обоснование: если ...
Приходный ордер - Прочее
Константин Чилингаров: Можно настроить шаблон отчёта, в котором по формуле посчитать значение соответствующих столбцов. Более сложные варианты я бы не стал рассматривать. Пояснение: В VOGBIT в тех задачах для чего, в основном, используется в этой программе подсистема ...
Работа с заданиями - Производство
Константин Чилингаров: "Сохранить в Excel" и "Отчёты" (reporter, который использует "шаблоны") - это разные инструменты, они работают по-разному. С настройкой шаблонов отчётов, если интереса/желания/времени глубоко в эту тему погружаться не ...
Производственные заказы - Производство
Константин Чилингаров: Здравствуйте, Начало - дата, когда было создано первое задание, связанное с этим заказом (картой заказа). Окончание - когда для данного заказа (карты заказа)  была нажата кнопка "Отметить, как законченные" в окне, которое у вас на карти ...
Исправление количества сданных изделий - Производство
Константин Чилингаров: Здравствуйте, Да, нормальная инструкция. Для "среднего" уровня актуальна. Это для случая, мех обработки или сборки несложной, когда сдаётся по количеству и нормо-часы закрываются по нормативам при этом (терминал "тип 2"). ...
Транспортные расходы - Прочее
Константин Чилингаров: Здравствуйте, Данная программа не предназначена для учёта расходов в понимании, например, финансового отдела. Таких как затраты на электроэнергию, транспорт, содержание помещений, вспомогательных служб и т.д. и т.п. Она просто не для этого.  Ч ...
Выполнение нескольких заданий одновременно. - Терминалы
Константин Чилингаров: Здравствуйте, Маловато исходной информации пока, чтобы что-то сказать. Какая цель (применения программы в данном месте)? Нужно просто отмечать и видеть, что кран такой-то закомплектован, кран такой-то закомплектован и т.д.? Или это какая-то сл ...
Удаление папки - Прочее
Наталья Захарова: Все получилось, спасибо.
Штрих код на деталях - Производство
Константин Чилингаров: 18336 Fomina написал: Я правильно понимаю, что в текущей версии штрих-код назначается автоматически? Если речь про тот штрих-код, который в "графике производства", то достаточно давно уже он назначается автоматически при создании задан ...
Колонка "Наладка" в Статистике производства - Прочее
Константин Чилингаров: Здравствуйте, Это для учёта работы наладчиков станков с ЧПУ. https://youtu.be/KnCDki8k-9Y?t=819 Вот из этой серии (13:39) Потом фильтр по этой колонке ставишь в "Статистике производства" и нужную группировку (например, по людям->д ...
Активация/деактивация - Активация, Деактивация, Лицензии
Константин Чилингаров: Здравствуйте, 3520 Alex-220781 написал: В новой версии 20.5 по прежнему есть ограничение на количество деактиваций? Да. 10 шт. В следующей версии, вполне вероятно, появится новый тип лицензий, которые можно будет запускать на разных компьюте ...
Пустой бланк - Демо версия
Константин Чилингаров: Можно, конечно. Если сами умеете - корректируйте. Если сами не умеете, то можем мы по вашим пожеланиям за скромную плату. В последнем случае - пишите на почту свои пожелания. Желательно, максимально подробно. Обсудим.
Аналоги в материалах - Материалы, Комплектующие, Складской учёт
Константин Чилингаров: Это погрешность округления. Коэффициент пересчёта округлили до 3 знаков, когда вводили (стоит в базе кг->м = 0,004). В итоге при пересчёте 698 кг в метры получается 2,792. Что уже не совсем точно. Если потом пересчитать обратно в метры (по тому ...
Статистика производства - Прочее
Константин Чилингаров: Дело в том, что «Техпроцесс» (то, что открывается по кнопке «Технология подробно» на изделии) и «Задания» (то, что открывается по двойному щелчку или по «выполнение» в «графике» производства») – это не одно и то же. Это разные вещи. Связанные между с ...
Пропадают спецификации и техпроцессы - Прочее
Наталья Захарова: Здравствуйте. Спасибо!
Ошибка при попытке сформировать отчет - Ошибки в работе
Константин Чилингаров: Отчёт из "Статистики производства", я так понимаю? При последнем обновлении меняли все бланки отчётов из этого режима на новые. Причина ошибки - не заменён бланк - старый, от старой версии сейчас в базе у вас лежит сейчас. Обновление пост ...

Ошибка работы триггера в базе SQL

Разработка приложений и функций - Плагины - Технические вопросы
Страницы: 1
Ошибка работы триггера в базе SQL
 
Добрый день. В программе Vogbit потребовалось реализовать механизм, который при обновлении таблицы (в данном случае, штрих-коды) автоматически записывает некоторые данные в файл. Решил сделать через триггер в БД SQL.
Триггер:
Код
USE [VOGBIT_splav]
GO
/****** Object:  Trigger [General].[csvBarCodesUpdate]    Script Date: 13.11.2017 9:00:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [General].[csvBarCodesUpdate]
ON [VOGBIT].[General].[BarCodes]  
AFTER Insert, Update, Delete
AS  
   EXEC sp_xp_cmdshell_proxy_account 'SPLAV/eremin.mv','a23B49';
   EXEC xp_cmdshell "C:/Progs/BarCodesQuery.bat"

После изменения Vogbit выдает сообщение "У пользователя нет разрешений на выполнение данного действия."
Подробности ошибки:
Код
Сообщение:
   У пользователя нет разрешений на выполнение данного действия.

Отправитель:
   Csdn.Vogbit.Data.BarCodes

Исключение:
   Csdn.Vogbit.Data.SqlServerException

Источник:
   Csdn.Vogbit.Data

Версия 1.1.37841 сборка 171

Внутреннее исключение:: У пользователя нет разрешений на выполнение данного действия.<KeyErr><ErrCode:6001FFFF>
<ErrNumber:15247>
<ErrSeverity:16>
<ErrState:1>
<ErrProcedure:Called from [General].[BarCodes.Insert]: >
<ErrLine:1>
Ошибка преобразования значения varchar "except" в тип данных int.


Список вызовов:
   в Csdn.Vogbit.Data.SqlExceptionBuilder.ThrowError(Object sender, SqlException ex, String database)
   в Csdn.Vogbit.Data.DataObjectList.TryToApplyInternal(Boolean useTransaction)
   в Csdn.Vogbit.Data.DataObjectList.Apply(Boolean raiseEvent)
   в Csdn.Vogbit.Data.BizObject.Save()
   в Csdn.Vogbit.Forms.BaseEditForm.Apply()
   в Csdn.Vogbit.Forms.EditDialog.EditFormApply()
   в Csdn.Vogbit.Forms.EditDialog.Apply()

Inner Exception ---------------

Сообщение:
   У пользователя нет разрешений на выполнение данного действия.<KeyErr><ErrCode:6001FFFF>
<ErrNumber:15247>
<ErrSeverity:16>
<ErrState:1>
<ErrProcedure:Called from [General].[BarCodes.Insert]: >
<ErrLine:1>
Ошибка преобразования значения varchar "except" в тип данных int.

Исключение:
   System.Data.SqlClient.SqlException

Источник:
   .Net SqlClient Data Provider

Список вызовов:
   в System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
   в System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
   в System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
   в System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
   в System.Data.Common.DbDataAdapter.Update(DataTable dataTable)
   в Csdn.Vogbit.Data.DataAdapter.Update(DataTable dataTable)
   в Csdn.Vogbit.Data.DataAdapter.UpdateDataTable(DataTable dataTable)
   в Csdn.Vogbit.Data.DataObjectList.ApplyInternal()
   в Csdn.Vogbit.Data.DataObjectList.TryToApplyInternal(Boolean useTransaction)


Что сделано неправильно и как это исправить?

P.S. Логин и пароль пользователя правильные.
Изменено: Максим Еремин - 13.11.2017 09:05:20
 
Крайне не рекомендуется добавлять свои триггера, таблицы и т.п. непосредственно в базу. После этого мы не гарантируем никоим образом ни работоспособность штатных функций, ни возможность обновления. П.7.2. лицензионного соглашения. Т.е. фактически такую базу мы поддерживать не будем. Если что-то с ней случиться - вам разбираться только самостоятельно.

Если нужно добыть какую-то информацию для использования её снаружи, то лучше написать plugin для этого.
 
Цитата
Если нужно добыть какую-то информацию для использования её снаружи, то лучше написать plugin для этого.

Но возможно ли написать какой-либо плагин для автоматического создания csv файла, а не по нажатию на кнопку?
 
Можно написать плагин, который будет всё время запущен, раз в какое-то время (хоть каждую минуту) проверять, не пора ли что-нибудь выгрузить, и если пора, то выгружать.
Например...

А что за задача то? По сути. Для чего нужно?
 
Для передачи в другую программу нужно выгружать в csv-файлы:
1. Таблица сотрудников со штрих-кодами
2. Таблица соответствий рабочих, выполняющих задания, и используемого в этом задании инструментом.
 
И там, и там объём данных маленький, а изменения редкие.
Для второго пункта, вполне должно хватить выгрузки раз в день. Максимум пару раз в день. Но это если уж очень активно работать...
Для первого и того реже. Там и раз в день не нужно.
Так что вполне можно обойтись plugin'ом. Я бы для начала сделал просто по кнопке. Чтобы всё обкатать, наладить.
А потом, когда уже реально заработает всё по прямому назначению, если реально надоест кнопку нажимать, сделал бы, чтобы она по времени нажималась сама.
 
Где можно посмотреть руководство по созданию плагинов и по таблицам (не нашел на сайте)?
Изменено: Максим Еремин - 13.11.2017 15:43:05
 
Руководства нет.
Слишком мало желающих пописать плагины самостоятельно  :)

Есть несколько тем на форуме. Вот, например.
 
При компиляции dll возникает ошибка:
Код
1>CSC : error CS1705: Сборка "Csdn.Vogbit.Main" с удостоверением "Csdn.Vogbit.Main, Version=1.1.37841.171, Culture=neutral, PublicKeyToken=ae4e3879760d1984" использует "Csdn.Vogbit.Forms, Version=65535.65535.65535.65535, Culture=neutral, PublicKeyToken=ae4e3879760d1984" с более высокой версией, чем у сборки "Csdn.Vogbit.Forms" с удостоверением "Csdn.Vogbit.Forms, Version=1.1.37841.171, Culture=neutral, PublicKeyToken=ae4e3879760d1984", на которую делается ссылка.

Код взят отсюда
Все библиотеки подключены, ошибок до компиляции не выдает. Как это исправить?
 
Цитата
Максим Еремин пишет:
Как это исправить?
используйте Visual Studio 12

Если формы вогбита не нужны, то можно писать не плагин, а отдельное приложение.
Тогда понадобится только Csdn.Vogbit.Data.dll - для доступа к данным через API.
В этом случае должно работать и в более новых студиях.
 
При запуске программы возникает ошибка
Код
VogbitPluginExport.Export: идентификатор плагина не определён.

Код сделан на основе этого. Что нужно в нем поменять? Это как-то связано со строками ниже?
Код
[Caption("PluginExport")]
[ID("{EB7B1DCC-0DDE-4eaf-B500-2D669DE4557C}")]
 
Вы плагин пишете(dll) или свою отдельную программу(exe)?
 
Цитата
Сергей пишет:
Вы плагин пишете(dll) или свою отдельную программу(exe)?
Плагин
 
Связано.
[ID("{EB7B1DCC-0DDE-4eaf-B500-2D669DE4557C}")]
это и есть идентификатор плагина.
Сейчас попробую собрать плагин из того сообщения.
 
В том то и дела, что код из того листинга работает, но я внес правки и он перестал. Вот мой код
Код
using System;
using Csdn.Vogbit.Base;
using Csdn.Vogbit.Data;
using Csdn.Vogbit.Forms;
using Csdn.Vogbit.Main;
using DevExpress.Utils;
using DevExpress.XtraEditors;
using System.Windows.Forms;
using Csdn.Vogbit.QB;

namespace VogbitPluginExport
{
    [Caption("PluginExport")]
    [ID("{EB7B1DCC-0DDE-4eaf-B500-2D669DE4557C}")]

    public class BarCodesForm : DataViewForm
    {
        public BarCodesForm(IExtensibleApplication app) : base (app)
        {

        }

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

            GetData();

            DataControl.Columns.Add(DataSource.PropertyDefs["BarCode"], "Штрих-код");
            DataControl.Columns.Add(DataSource.PropertyDefs["Name"], "ФИО");
        }

        void GetData()
        {
            var sqlQuery = new SqlQuery();
            var selectQuery = sqlQuery.CreateQuery();

            var barCode = (Csdn.Vogbit.QB.Schema.Views.BarCodes)selectQuery.From.AddView(Views.BarCodes, "barCode");
            var name = (Csdn.Vogbit.QB.Schema.Views.Employees)selectQuery.From.AddView(Views.Employees, "name");

            var j = new Join(barCode, name, JoinType.Inner, new Condition().EqualTo(barCode.ObjectID, name.ID));

            selectQuery.Joins.Add(j);
            selectQuery.Columns.Add(barCode.Code, "BarCode");
            selectQuery.Columns.Add(name.Name, "Name");

            sqlQuery.Add(selectQuery);

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

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

    }

    public class Export : 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(EmployeesGridForm))
                {
                    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.Caption = "Список штрих-кодов";
                    exampleButton.ActionExecute += ExampleButtonActionExecute;
                }
            }
        }

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

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

                var barCodesForm = ExtForms.GetNewForm(typeof(BarCodesForm).ToString());
                barCodesForm.TabText = "Список штрих-кодов";
                //barCodesForm.OpenForm(formParams);
                barCodesForm.ShowFloatingForm(DockStyle.None);
            }

        }
    }
}

Не уверен, что он правильный, но и проверить никак не могу. Как прописывать ИД плагина в дальнейшем, когда буду создавать другие плагины?
 
Это атрибуты класса.
Писать их надо перед соответствующим классом. Т.е. в вашем случае перед
Код
public class Export : PlugInBase
 
Цитата
Максим Еремин пишет:
Как прописывать ИД плагина в дальнейшем, когда буду создавать другие плагины?
Сгенерить новый GUID
 
Спасибо, заработало.

Подскажите ещё, пожалуйста, каким образом можно сделать экспорт данных из таблицы в CSV-файл с помощью какой-нибудь библиотеки Vogbit? Или нужно подключать стороннюю библиотеку?
Изменено: Максим Еремин - 29.11.2017 14:09:26
 
можно так попробовать
Код
(DataConrol as IDataExport).ExportTo(ExportFormat.Csv, "filename.csv")
 
Можно подробнее? Попробовал со строкой выше, не сохранилось.

Вот функция
Код
void GetData()
        {
            var sqlQuery = new SqlQuery();
            var selectQuery = sqlQuery.CreateQuery();

            var barCode = (Csdn.Vogbit.QB.Schema.Views.BarCodes)selectQuery.From.AddView(Views.BarCodes, "barCode");
            var name = (Csdn.Vogbit.QB.Schema.Views.Employees)selectQuery.From.AddView(Views.Employees, "name");

            var j = new Join(barCode, name, JoinType.Inner, new Condition().EqualTo(barCode.ObjectID, name.ID));

            selectQuery.Joins.Add(j);
            selectQuery.Columns.Add(barCode.Code, "BarCode");
            selectQuery.Columns.Add(name.Name, "Name");

            sqlQuery.Add(selectQuery);

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

            data.Close();
            data.Prepare();
            DataSource = data;
            (DataControl as IDataExport).ExportTo(ExportFormat.Csv, "vogbit__bar_name.csv");     
        }    
 
ошибку выдаёт?
колонки не созданы у DataControl'а

UPD: Попробовал. Вставил эту строчку после создания колонок. Работает.
 
Я понял, что функция Data.Columns.Add(), но так и не понял, каким там должен быть первый параметр. Подскажете?

UPD: Разобрался.
Изменено: Максим Еремин - 30.11.2017 13:57:23
 
Подскажите, каким запросом можно вывести задание, сотрудника который его выполняет, и необходимый для него инструмент? А то без документации разобраться в БД практически невозможно, уже который день ковыряюсь
 
Тут есть нюансы.
В первую очередь:
- работник, по которому это нужно, на посту один или их там несколько может быть?
- по каким заданиям нужно смотреть? Которые включены работнику в план на смену? Или которые ему "выданы" в рамках смены?
- из задания можно добыть операцию в техпроцессе, по операции этой можно добыть из техпроцесса "инструмент". Вопрос - какой? Весь, который на эту операцию указан?

(уровень учёта подразумевается "высокий" или "максимальный" используется)

В зависимости от ответов на эти вопросы, будут следующие уточняющие.
В зависимости от этого - логика, как искать.
А от этого запрос, соответственно, зависит.

P.S. Вообще, если такими вещами заниматься серьёзно, то неплохо бы обучение какое-то организовывать. Если хотите логику понимать и знать, как там что внутри устроено.
Потому что это так в двух словах на форуме не объяснить всё.
 
Цитата
- работник, по которому это нужно, на посту один или их там несколько может быть?
Работник на посту может быть только один
Цитата
- по каким заданиям нужно смотреть? Которые включены работнику в план на смену? Или которые ему "выданы" в рамках смены?
Если я правильно понял, что задания выдаются в рамках смены.
Цитата
- из задания можно добыть операцию в техпроцессе, по операции этой можно добыть из техпроцесса "инструмент". Вопрос - какой? Весь, который на эту операцию указан?
Весь инструмент для операции

Цитата
P.S. Вообще, если такими вещами заниматься серьёзно, то неплохо бы обучение какое-то организовывать. Если хотите логику понимать и знать, как там что внутри устроено.
Скорее всего, это последний плагин, который нужно разработать для Вогбита в рамках проекта, так что обучение не целесообразно.
Изменено: Максим Еремин - 05.12.2017 09:54:07
 
Тогда нужно делать так (если от работника идти):

1. найти задание(я) (task) с типом связи = LT_Unit_Task, со статусом = ST_MAN_3, и с таким работником в "плановых трудовых ресурсах" - рис.1.

2. найти задание с типом связи = LT_Place_task, для которого (1) является Object task’ом (связанным заданием) – рис.2

3. в (2) взять Planned step (запланированные этапы). Там указан компонент (и коллекция откуда этот компонент) – это и есть операция (и техпроцесс, откуда она) – рис.3

4. Взять из коллекции компоненты, подчинённые (3) с типом связи LT_Tools – это инструмент к этой операции в техпроцессе - рис.4.

И будет то, что вы хотели.
Инструмент из операции, которая в задании, выданном работнику.
1.png (66.88 КБ)
2.png (63.84 КБ)
3.png (66.96 КБ)
4.png (40.22 КБ)
Страницы: 1
Сейчас на форуме (гостей: 15)
Всего зарегистрированных пользователей: 3172
Приняло участие в обсуждении: 364
Всего тем: 804
Всего сообщений: 6067

Полезные ссылки:
Себестоимость Видео-презентация подготовка производства складской учет Полная версия VOGBIT Создание новой базы данных VOGBIT управление данными Планирование мелкосерийного производства Техническая Подготовка Производства электронный архив управление качеством деактивации VOGBIT активация VOGBIT управление производством Производственный заказ Установка VOGBIT управление ремонтами Трудоёмкость Деактивация VOGBIT планирование производства базы данных VOGBIT Начало работы инструкция Расчёт комплектации Складской учёт загрузка оборудования расчет себестоимости ТПП Демонстрационный режим VOGBIT Обновление VOGBIT График производства технологическая подготовка производственный учет Тип нормирования Заказ на производство производство металлоконструкций Нормирование пост руководство администраторов VOGBIT Планирование производства разработчика отчетов vogbit состав изделия демоверсия технология Состав изделия Обзор обновления Генератор отчетов склад Сменное задание Задания для производства Выбор уровня учёта новая база данных Расчёт общей стоимости материалов Заявки покупателей Управляемый расчёт материалов Парт
×
Вход на сайт