Товарищи помогите решить задачу.

Есть справочное поле и собственно сам справочник, открывающийся в модальном окне.

Справочник вида :Название - Описание.

Задача фильтровать значения по колонке описание

Я так понимаю что в атрибутах я должен сделать что-то вроде

"UsrDebtorStatus":{
  dataValueType: Terrasoft.DataValueType.LOOKUP,
  lookupListConfig: {
      filter: function() {
      var description= "Дебитор";
      return Terrasoft.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "????????????",description);
              }
      }
  }

 

Нравится

2 комментария

если UsrDebtorStatus — обычный справочник, то скорее всего Name. Обычно 2 параметром идёт колонка из объекта (в "кубик" UsrDebtorStatus загляните). Ну и лучше всего по guid-у сортировать

Роман, добрый день!

Необходимую Вам фильтрацию поля в версии 7.11 можно реализовать с помощью пользовательской настройки "Бизнес-правила". 

Для реализации Вашей бизнес-задачи необходимо выполнить следующие шаги:

1. Согласно базовой логике приложения, для того, чтоб иметь возможность реализовать фильтрацию в зависимости от типа клиента, колонка, которая содержит записи типов клиентов (в справочнике), должна быть с типом "Справочник". Данную колонку необходимо добавить в разделе "Конфигурация":

  - найти объект, который является Вашим справочником

  - открыть объект, развернуть его наполнение объекта, нажать правой кнопкой мыши на "Inherited Columns", выбрать "Добавить", выбрать тип колонки "Справочник";

  - в свойствах созданной колонки, в поле «Справочник» указать справочник типов, по которому необходимо будет выполнять фильтрацию;

  - опубликовать объект.



2. На странице раздела, в которой будет присутствовать справочное поле, настроить бизнес-правило:

  - добавить действие бизнес-правила "Добавлять фильтр значений в поле"

  - указать в поле "какую колонку фильтровать и по какой связи в справочнике этого поля" - созданное справочное поле по связи с полем, в котором указан тип клиента;

  - указать в поле "по какому полю фильтровать" поле на странице раздела, в котором указан тип клиента;

  - сохранить изменения.

Больше о настройке бизнес-правил Вы сможете узнать на Академии: https://academy.terrasoft.ru/documents/sales-enterprise/7-11/nastroyka-biznes-pravil

Также на Академии есть информация по разработке бизнес-правила фильтрации: https://academy.terrasoft.ru/documents/technic-sdk/7-11/primer-primeneniya-pravila-filtration, но мы рекомендуем использовать функционал Бизнес-правил в Мастере раздела.

Показать все комментарии

Добрый день!

Как можно быстро убрать всех старых сотрудников из ответственных в записях разных разделов? При попытке удалить пользователя из системы выдает сообщение "Выбранного пользователя удалить невозможно, так как он используется в других объектах." Пробовал процессами переназначать ответственного в различных разделах, но все равно выдает данное сообщение. 

+ При попытке через @ указать сотрудника в сообщении ленты также выдает уволенных сотрудников.

Нравится

3 комментария

Здравствуйте, Александр!

К сожалению, пользовательскими методами нет возможности удалить пользователя из системы, так как он имеет множество связей (например, со страницей контакта). Данную манипуляцию необходимо выполнять на уровне базы данных.

В качестве обходного решения можем предложить убрать признак "Активен" в карточке пользователя у старых сотрудников. После данных действий, пользователь будет не активен. Либо, если есть необходимость стереть все данные о неактивных сотрудниках, обратитесь, пожалуйста, в техническую поддержку по адресу support@terrasoft.ru.

Одеяненко Юлия,

Добрый день! Только что проверил еще раз. Признак активности пользователя не влияет на возможность его выбора (по крайне мере, попробовал в карточке Активности) 

В BaseFiltersGenerateModule описана очень простая функция по фильтрации. Возможно, её где-то можно переопределить



    function OwnerFilter() {

        return Terrasoft.createColumnIsNotNullFilter('[SysAdminUnit:Contact].Id');

    }

Показать все комментарии

Пытаюсь соедениться с 1С, вот код:

namespace Terrasoft.Configuration.ImportAllAccountsService

{

    using System;

    using System.ServiceModel;

    using System.ServiceModel.Web;

    using System.ServiceModel.Activation;

    using System.Collections.Generic;

    using System.Collections.ObjectModel;

    using System.Data;

    using Terrasoft.Common;

    using Terrasoft.Core;

    using Terrasoft.Core.DB;

    using Terrasoft.Core.Entities;

    using Newtonsoft.Json;

    using Newtonsoft.Json.Linq;

    using System.CodeDom.Compiler;

    using System.Linq;

    using System.Runtime.Serialization;

    using System.Text;

    using System.Text.RegularExpressions;

    using System.Web;

    using Terrasoft.Core.Packages;

    using Terrasoft.Core.Factories;

    using V83;

    

    [ServiceContract]

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

    public class ImportAllAccountsService

    {

        [OperationContract]

        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,

        ResponseFormat = WebMessageFormat.Json)]

        public string ImportAllAccounts()

        {

            COMConnector comConnector = new COMConnector();

            return "Import complite1!!!";

            dynamic connection = comConnector.Connect(@"File='D:\1С-Install\FOP NEW';Usr='xxx';Pwd='yyy'");

            return "Import complite2!!!";

            dynamic dataArray1C = connection.Справочники.Контрагенты.Выбрать();

            return "Import complite3!!!";

            while (dataArray1C.Следующий == true)

            {

                return (string)dataArray1C.Наименование;

            }

        }

    }

}

в обычном проэкте в студии - работает, тут вылетает уже на строке  COMConnector comConnector = new COMConnector();

Нравится

5 комментариев

У кого есть идеи почему BPM не хочет работать с библиотекой 1С? Хотя при компиляциии шибок - нет...

Нашел еще такой код:

string ConnectString = @"File='D:\1С-Install\FOP NEW';Usr='xxx';Pwd='yyy'";

            var v81comConnector = Type.GetTypeFromProgID("V83.ComConnector");

            var v81 = Activator.CreateInstance(v81comConnector);

            Object[] arguments = { ConnectString };

            dynamic Connect = v81comConnector.InvokeMember("Connect", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v81, arguments);

            int count = Connect.Метаданные.Справочники.Количество();

            MessageBox.Show(count.ToString());

Работает без библиотеки!!! Тут выбивает ошибку на строке

var v81 = Activator.CreateInstance(v81comConnector);

Хотя в визуалке этот код отрабатывает на ура

С чем вылетает-то? 

Виталий, какая ошибка?

УРА!!! Решено!!! проблема была в сервере 64, помогла вот эта ссылка:

https://infostart.ru/public/197627/

Показать все комментарии
var someData = "123"; //Как передать эту переменную в процесс?
 
var args = {
              sysProcessName: "UsrProcess34",
           };
            // Запуск пользовательского бизнес-процесса.
           ProcessModuleUtilities.executeProcess(args);

 

Нравится

2 комментария

Роман, привет!

Добавь объект parameters в свой объект args.

                        processArgs = {

                            sysProcessName: "Process1",

                            parameters: {

                                Contact: ContactId

                            }

                        };

                        ProcessModuleUtilities.executeProcess(processArgs);

Спасибо за ответ, все получилось

Показать все комментарии

Настроил конфиг файлы Service, Scheduler, Worker.

 

При попытке AddSite получаю ошибку веб приложения Service. не подключилось подключиться к базе SQLLite.

Где настройка этой базы идет? 

 

 

Нравится

1 комментарий

Здравствуйте, Алексей!

1. Web.config. То, что красным - закомментить, зеленым - раскомментить.

2. ConnectionStrings.config​ <add name="ConnectionDb" connectionString="ПОЛНЫЙ ПУТЬ к БИНАРЯМ\GlobalSearch.db"/>

В IIS нажать browse и бд GlobalSearch​ будет создана автоматом.

 

Показать все комментарии

Подскажите как в отчете Word реализовать что бы сумма была прописью

Нравится

6 комментариев

Реализуйте VIEW, который возвращает сумму и используйте его в отчете

скажите пожалуйста, а как его использовать

1) В базе данных bpm'online есть Scalar-value functions "tsp_nonbox_NumberToCurrency" и "tsp_nonbox_NumberToPhrase" - они конвертируют цифры в слова. Если необходимы другие языки или валюты, можно их модифицировать.

2) Необходимо сделать View с выборкой из таблицы Invoice (или другой, где хранится ваша сумма).

Можно добавить в этот View все данные, которые нужны в отчете



Как пример (в нем используются несколько полей, так как иногда требуется печатать прописью то одну, то другую сумму):

CREATE VIEW [dbo].[UsrVwInvoiceAmount]

AS

SELECT [Invoice].[Id] AS [Id],

        [Invoice].[Id] AS [UsrInvoiceId],

        [Invoice].[Number] As [UsrInvoiceName],

        [Invoice].CreatedOn, 

        [Invoice].CreatedById, 

        [Invoice].ModifiedOn,

        [Invoice].ModifiedById,

       [Invoice].[Amount] AS [UsrAmount],

       [Invoice].[PrimaryAmount] AS [UsrPrimaryAmount]               

       dbo.tsp_nonbox_NumberToCurrency([Amount],'EUR','LV',0) AS [UsrAmountText],

       dbo.tsp_nonbox_NumberToCurrency([Amount],'EUR','EN',0) AS [UsrAmountTextEN],

       dbo.tsp_nonbox_NumberToCurrency([PrimaryAmount],'EUR','LV',0) AS [UsrPrimaryAmountText],

       dbo.tsp_nonbox_NumberToCurrency([PrimaryAmount],'EUR','EN',0) AS [UsrPrimaryAmountTextEN]

     

FROM  [Invoice]

 

2) В bpm'online создаете объект на основе этого VIEW:

3) Создать отчет на основе этого объекта или подключить этот объект к отчету на основе Invoice

Владимир Соколов,

Здравствуйте. При создании запроса возникает ошибка

сообщение: 4121, уровень: 16, состояние: 1, процедура: UsrVwInvoiceAmount, строка: 11 [строка начала пакета: 0]

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

Алена, необходимый Вам функционал действительно доступен в базовой версии приложения.

Для вывода поля «Сумма» прописью необходимо при создании шаблона добавить в выбранные поля не только поле «Сумма», но и поле, соответствующее сумме с примененным макросом (наглядный скриншот - http://prntscr.com/hnov0o). Данный макрос является преднастроенным, и его можно добавлять уже на этапе настройки колонок. При формировании шаблона непосредственно в MS Word необходимо добавлять на страницу шаблона именно колонку с заголовком Сумма[#NumberRU#].

Ссылку на Академию со статьей о базовых макросах очень кстати запостил Кропотов Александр Сергеевич в сообщении выше.

Показать все комментарии

Здравствуйте, подскажите как вытянуть данные из модального окна.

Программно вызываю открытие модального окна(Контрагенты).

Задача: по клику на элемент, вернуть данные(Например "название" или "ID") в вызывающий код.

Вот мой код:

 

//Выводим модальное окно
viewModal:function(){
var config = {
                    entitySchemaName: "Account",
                     multiSelect: false,
                     columns: ["Name","UsrINN"],
                     hideActions: false,//Скрываем кнопку "Добавить"
                     filters: contactFiler
                    };
               this.openLookup(config, this.myCallBack, this);
},
 
//Колбэк
 myCallBack:function(args){
 
                 args.???????????????????????????????(Что должно быть здесь?)
                 this.showInformationDialog("Callback");
  }

 

Нравится

2 комментария
myCallBack:function(args){
   debugger;
   //args.???????????????????????????????(Что должно быть здесь?)
   this.showInformationDialog("Callback");
}

Вы пишете дебаггер, открываете консоль(f12), ресстартите с кешем страницу, открываете ваше модальное окно(консоль всё ещё открыта), нажимате кнопку выбрать и тут выполнение кода должно приотстановиться. и уже через консоль смотрите какие переменные, что в них и т.п

По теме: в args вроде как хранится коллекция selectedRows, её уже перебирать через terrasoft.each

Спасибо за ответ, идея понятна. Я просто думал что уже есть некие готовые высокоуровневые методы.

Показать все комментарии

Вызывая из кода модальное окно (скажем раздела Контрагенты), есть ли возможность в вызывающий код вернуть информацию кол-ве отображенных элементов?

И это делается только запросом к БД?

Нравится

1 комментарий

Всем привет, есть ли возможность скрыть контейнер элементов.

Сейчас приходится удалять каждую кнопку по отдельность

Если есть то подскажите как

Нравится

1 комментарий

как программно посчитать общую стоимость из детали продукты по колонке стоимость.

В самой детали программно рассчитала стоимость.

Нравится

5 комментариев

Добрый день, Алёна!

Детализируйте, пожалуйста, свой запрос, так как из описания не совсем понятна суть. Вы уже сделали пересчет в детали и теперь хотите данное значение видеть в отдельном поле карточки? В таком случае вопрос решаем через бизнес-процесс элементами чтение данных и добавление данных. Если же речь о том, что нужно рассчитать стоимость на основании поля в детали (+ еще др. полей), то в таком случае можно использовать элемент "Формула" или воспользоваться инструкцией по добавлению вычисляемых полей полями https://academy.terrasoft.ua/documents/technic-sdk/7-11/dobavlenie-vych…

Адасюк Валерий Викторович,

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

Никульшина Алёна,

Если я правильно понял, то у вас необходимо отображать общую стоимость всех продуктов, которые привязаны к счету. В этом случае вам надо добавить поле к счету для хранения общей стоимости и обновлять его значение каждый раз, когда происходит изменения по продуктам в детали. И уже значение этого поля отображать в реестре секции по счетам. А вот как "правильно" обновлять такой тотал - это вопрос к бизнес логике. Это может быть в момент изменения перечня продуктов в самой детали и отталкиваться от прайса на момент изменения в самой детали. Либо это может быть некий бизнес процесс, который будет производить перерасчеты и изменять тотал в счетах. Например, когда вы решили изменить прайс по продукту и хотите, чтобы во всех счетах, которые неоплачены в течение трех дней, произвелись перерасчеты стоимости по каждому продукту и соответственно тотал по счету.

Максим Цынгаев,

Бизнес-процесс работает и при добавлении и при изменении данных в детали. Не удобно то что постоянно приходится обновлять страницу. Поэтому хотелось сделать вычисляемое поля и прописать скрипт. Но как его прописать у меня вопросы нужно брать данные из детали

 

Никульшина Алёна,

У вас БП отрабатывает асинхронно и после его выполнения (т.е. в callback) надо кидать событие. На карточке редактирования ловить это событие и применять обновление по общей суммы. Еще, как вариант, в определении детали на странице редактирования сделать подписку на изменения детали и там уже отрабатывать БП, а внутри callback вызова БП обновлять значение общей суммы.

Показать все комментарии