Коллеги, подскажите пож-та.
Есть необходимость добавить дополнительное поле
Как добавить поле "Название страны на анг" в справочник "страна" ?

Нравится

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

Здравствуйте!

Ответили в рамках поддержки, но может кому-то еще понадобится.
Данная задача может быть выполнена следующим образом:
0) Перйдите в конфигурацию
1) Добавьте поле в объект "Страна" (поле с типом строка). Вы можете добавить это поле, заместив объект "Страна"
2) Добавьте схему с типом "Замещающая страница". Схему с типом "Замещающая страница" Вы можете найти в расширенном представлении кнопки "Добавить"
3) Выберите в качестве родительской страницы страницу "Страница редактирования страны"
4) В MainContolLayout Вам необходимо добавить элемент "Текстовое поле" (выделите MainContolLayout и нажмите правой кнопкой мышки, чтобы открыть доступные варианты)
5) Выделите добавленное поле в структуре и переместите его на нужное место (обычное перетаскивание мыши)
6) В свойствах этого поля укажите "Источник данных" - DataSource, Колонка данных - созданная на первом шаге колонка объекта "Страна".
7) Сохраните и опубликуйте страницу.

В результате новое поле будет добавлено на страницу редактирования справочника "Страна".

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

Добрый день! Потребовалось добавить поле "Код" в таблицу единиц измерения. Добавление самого поля не составило проблем, добавил его в таблицу, в sq_ запрос и в ds_ выборку. Но есть проблема по добавлению текстового поля в справочник. В администраторе я не нашёл wnd_ объект, который отображается для единицы измерения. В клиентской части, когда я захожу в Справочники->Настройки для пункта "Единицы измерения" не указано окна редактирования. Указан только источник данных. Как я понял, если отсутствует значение у окна редактирования, то поля должны как-то сами подтягиватся. Почему тогда код не появился?

Нравится

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

Если окно не указано, то используется стандартное окно редактирования из двух полей - Name и Description.
Сделайте свое окно редактирования (в качестве TemplateWindowUSI = wnd_BaseDBEdit) и укажите его в настройках справочника.

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

Добрый день!

В карточке контрагента есть возможность задавать два поля:
"Статус контрагента" и "Категория"
(см. вложенный файл)

При этом в списке "все контрагенты" столбцом отображается только информация из поля "статус контрагента", поле "категория" не подтягивается.

Подскажите как это можно исправить (настроить).

Спасибо.

Нравится

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

А где вложенный файл?
Вытянуть колонку в реестр можно, нажав на кнопку [+] в правом верхнем углу реестра и выбрав нужную колонку.
Это только для текущего пользователя, если надо для всех — настраивается иначе.

Файл приложен.
Надо для всех пользователей.
Настраивается иначе - как именно?

спасибо!

Уточняю вопрос. смотрите скрин.

Примерно так:

  • Закрыть Terrasoft.
  • Запустить программу TSAdmin (Администратор Terrasoft).
  • Открыть в ней сервис wnd_AccountsGridArea (выбрать в дереве справа «Accounts\General\Main Grid\wnd_AccountsGridArea»). Откроется дизайнер окна реестра контрагентов.
  • В дизайнере в дереве слева выбрать элемент gvAll (все контрагенты). Нажать на нём правой кнопкой мыши и выбрать «Определить колонки». Откроется список колонок.
  • Найти колонку CategoryID (или как там она у Вас называется), поставить ей галочку возле названия и галочку «Видимая» внизу окошка.
  • Нажать «ОК», затем сохранить изменения в сервисе, нажав на иконку с дискетой.
  • Закрыть TSAdmin, открыть Terrasoft.
  • Александр, спасибо Вам больше. Все получилось!

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

    В базовой версии приложения колонка "Полное название должности" заполняется, если заполнить поле "Должность". Т.е. срабатывает бизнес-правило.

    Если у Вас стоит задача, например, чтобы поле "Полное название должности" автоматически не проставлялось при заполении поля "Должность" (Рис. 1)


    Рис. 1

    то для этого необходимо на замещающей странице «ContactPageV2» добавить следующий метод:

    jobChanged: function() {
    return false;

    },

    который отключает базовый метод jobChanged (отвечает за изменение данных полей).

    Нравится

    Поделиться

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

    Здравствуйте! Подскажите как принудительно поставить поле в фокус?

    У меня по действию в разделе открывается inputBox в котором одно текстовое поле. Как его сразу поставить в фокус?

    Нравится

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

    как-то так

    var columnControl = addConditionView.items.getAt(0).getEl();
    if (!columnControl.getValue()) {
    	columnControl.focus();
    }

    Не совсем понял как это использовать. inputBox делаю следующим образом:

    var config = {
                    BarCode: {
                            dataValueType: Terrasoft.DataValueType.TEXT,
                            caption: 'Штрихкод'
                        }
    };
    Terrasoft.utils.inputBox('Отсканируйте ', callback, ['ok', 'cancel'], this, config,
                        {
                            defaultButton: 0
                        }
    );

    В Terrasoft.MessageBox.Items лежит только две кнопки "Ок" и "Отмена". Моего текстового поля там нет.

    В Terrasoft.MessageBox.controlConfig есть мой BarCode но как его поставить в фокус на открытии inputBox?

    Попробуйте в методе Init() напишите следующее

    var tb = document.getElementById('textBoxId');
    tb.focus()

    Ну через DOM объект я сделал просто вот так:

    $( document ).ready(function() {
                        $('.barcode input').focus();
                        $('.barcode input').keypress(function (event) {
                            if (event.which == '13') {
                                event.preventDefault();
                                $('span[data-item-marker=ОК]').click();
                            }
                        });
     });

    Но решение на мой взгляд не "кошерное". Я думал может можно как-то с помощью дополнительных параметров поля это реализовать.

    А в Terrasoft.MessageBox.init не заходит.

    Здраствуйте. Зачем такие усложенения. Человеку нужно чтоб в нужном поле после загрузки страницы в нужном поле установился фокус. Та и в вашем методе нужно к тому же подключать внешнюю библиотеку JQuery. Для такой простенькой задачки подключать внешнюю библиотеку, когда это можно сделать "чистым" Javascript, как по мне нецелесообразно

    Не после загрузки страницы а после отображения inputBox и в единственном поле. Библиотека JQuery у меня уже была подключена для других целей. Можно сделать и на чистом Javascript тут как-раз разницы никакой.

    А в функции Init() не подойдет проставить фокус?

    В Terrasoft.MessageBox.init ? Я переопределяю этот метод и туда не заходит процесс выполнения скрипта.

    Извините, сразу не понял. Я думал, Вам просто нужно на карточку.

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

    Стоит задача: Есть задача (активность в bpm), нужно послать письмо ответственному и автору какие поля были изменены. С отправлением письма разберусь, а как в bpm5 получить список всех полей сущности, и как по названию поля получить его заголовок. Думаю понятно объясню в коде

    Entity CurrentEntity = this.Entity; //Текущая запись - задача
    string[] arFieldsNames = ;//как получить в массив строк полей по сущности?
    string[] arFieldsTitles = ;//как получить массив заголовков полей либо ниже, как по названию поля, получить его заголовок?
    var emailBody = "Измененные значения:

    "
    ;//тело для письма
    for(var i=0;iarFieldsNames.Length;i++) {
            //Сравниваем старое и новое значение
            if (CurrentEntity.GetColumnOldValue(arFieldsNames[i]) != CurrentEntity.GetColumnValue(arFieldsNames[i])) {
                            var fieldTitle = ;//как получить сроку "Ответственный" по строке "Owner" или "OwnerId"?
                            emailBody += fieldTitle + ": " + CurrentEntity.GetColumnDisplayValue() + "

    "
    ;//Записываем в тело письма
            }
    }

    Грубо говоря хотелось бы получить такое
    Измененные значения:
    Ответственный: Пользователь2
    Состояние: В работе

    Можно конечно тупо в массивы забить названия и заголовки полей Активности, но вдруг это понадобится для Документов, Продаж и т.д. Постоянно вбивать как-то не очень хочется, а хочется универсальности.

    Нравится

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

    Хороший вопрос, поддерживаю.

    Здравствуйте!
    Доступ к колонкам можно получить так:

    var columns = this.Entity.Schema.Columns; //коллекция колонок
    //затем можно их перебрать
    foreach (var column in columns)
    {
    	//своя логика
            //column.Caption - подпись колонки, например
    }

    Если делать в БП, то можно получить схему из элемента "Чтение данных" так:

    var schema = ReadDataUserTask1.ResultEntity.Schema;

    То что надо. Спасибо.

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

    В процессе администрирования базы данных возникла необходимость определить причину возникновения ошибки. Определенный объём информации импортируется в базу данных, с которым далее пользователи работают. В процессе заполнения определенного набора полей автоматически высчитывалась итоговая сумма в поле «Итого». Но в определённый промежуток времени использования продукта начали появляться ошибки, связанные с несоответствием значения поля «Итого» сумме полей из которых оно вычисляется («Сумма покупки», «Наценка», «Сбор» и т.д.). Так как ошибку не получалось явно повторить, необходимо было разработать механизм для решения данной проблемы.

    Естественно самой реальной и первой причиной возникновения такой ошибки приходила идея о сбоях в работе событий полей окна редактирования (то есть значения в полях изменялись, а события данных полей(-я) не срабатывали).

    В основу решения было положено создание двух таблиц в базе данных для ведения логов, что происходят с записью набора данных. Первая таблица WindowLog, а вторая TriggerLog.

    Первая таблица WindowLog включает в себя поля «Дата создания»(CreatedOn), «Идентификатор записи» (RecordID), «Ответственный» (WindowsUser), «Имя поля породившего событие»(FieldName), «Итого» и поля из которых оно вычисляется («Сумма покупки», «Наценка», «Сбор» и т.д.). Для наполнения таблицы было использованы события невизуального компонента окна dlData: dlDataOnDatasetDataChange, dlDataOnDatasetBeforePost и dlDataOnDatasetAfterPost. В скрипте в событиях была создана функция, которая формировала SQL запрос к таблице WindowLog базы данных с фиксацией информации по указанным полям на момент срабатывания события.

    Запрос:

    INSERT INTO WindowLog (*набор полей*)
    SELECT (*набор полей*) -- Dataset('поле1'), Dataset('поле2'), Dataset('поле2')

    Вторая таблица TriggerLog включает в себя поля «Дата создания»(CreatedOn), «Идентификатор записи» (RecordID), «Состояние» (до изменения записи и после), «SystemUser», «Итого» и поля из которых оно вычисляется («Сумма покупки», «Наценка», «Сбор» и т.д.). Для заполнения данной таблицы был создан триггер на инструкцию UPDATE проблемной таблицы с двумя запросами вставки значений в таблицу. В одном запросе вставлялись значения до изменений, а во втором после.

    Запрос №1:

    INSERT INTO TriggerLog (*набор полей*)       
    SELECT (*набор полей*)
    FROM deleted

    Запрос №2:

    INSERT INTO TriggerLog (*набор полей*)       
    SELECT (*набор полей*)
    FROM inserted

    Результатом использования данного решения на основе анализа таблицы WindowLog было установлено, что срабатывают все события окна редактирования, влияющие на вычисление значения поля «Итого». В процессе использования окна редактирования и после сохранения записи значения поля «Итого» были корректны.

    Проанализировав записи в таблице TriggerLog было установлено, что в результате выполнения инструкции UPDATE было внесено некорректное значение. Сопоставив даты создания записей в таблице TriggerLog и WindowLog было установлено, что инструкция UPDATE была вызвана не в результате манипуляций с окном редактирования, а иным источником. На основании поля «SystemUser» таблицы TriggerLog было установлено что изменения были внесены с помощью импортера данных.

    Таблицу TriggerLog возможно расширить, добавив в нее поля, которые помогут ускорить процесс обнаружение источника изменений записи базы данных. Список дополнительных полей может выгладять следующим образом: ApplicationName, LoginName, HostName.

    PS: Принимаю предложения на доработку вашей конфигурации!!! Для более детальной информации можно связаться по следующему e-mail адресу: providnui@ukr.net !!!

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

    Всем удачи в этом не легком процессе!!!

    Нравится

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

    Здраствуйте,

    Добавила поле "признак" на карточку детали раздела. Хотелось бы, что бы, после того как поставила галочку на поле "признак" и нажала на кнопку "OK", невозможна было бы менять карточку. То есть убрать галочку с поля "признак". Не могли бы подсказать, как я могу, все это настроит?
    Заранее Спосиба.

    С уважением,
    Гюнель

    Нравится

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

    Гюнель, здравствуйте.

    На событии PageLoadComplete можно проверить, заполнено ли поле признак, и в зависимости от этого установить доступность контрола:

    if(Page.PriznakEdit.Value)
    {
           Page.PriznakEdit.Ebanled = false;
    }
    else
    {
           Page.PriznakEdit.Ebanled = true;
    }

    Здравствуйте.

    Я добавила на EditPage следующий скрипт.
    if (Page.DepartmentConfirmEdit.Value)
    {
    Page.DepartmentConfirmEdit.Enabled = false;
    }
    else
    {
    Page.DepartmentConfirmEdit.Enabled = true;
    }

    #DepartmentConfirmEdit - Название поля#

    Но во время компиляции выдает следующую ошибку.

    Cannot implicitly convert type "object" to "bool". An explicit conversion exists (are you missing a cast?)

    В чем ошибка не понимаю. Не могли бы помочь.

    Заранее спасибо.

    Не совсем понял. Вы хотите блокировать какое поле в зависимости от какого значения?

    На карточку деталь добавила логическое поле "признак". Если возможна, хочу добавит следующую функцию. Если пользователь поставит галочку на это поле, в дальнейшем не смог его поменять (убрать галочку).

    С уважением,
    Гюнель

    Тогда просто:

    Page.DepartmentConfirmEdit.Enabled = !Page.DepartmentConfirmEdit.Checked;

    Этот скрипт - на изменение поля и после базового PageLoadComplete.

    Здравствуйте, Гюнель.

    Компилятор говорит Вам, что не может неявно конвертировать значение с типом объект в булевский тип. Page.DepartmentConfirmEdit.Value - это объект, но во время проверки Вы обращаетесь к нему, как к булевому значению.

    Попробуйте изменить условие на: if (Page.DepartmentConfirmEdit.Value == string.IsEmpty)

    Здравствуйте,

    К сожелению у меня ничего не получилас.

    >Олейник Дмитрий

    if (Page.DepartmentConfirmEdit) {
    Page.DepartmentConfirmEdit.Enabled = false;
    } else {
    Page.DepartmentConfirmEdit.Enabled = true;
    }
    return true;

    Выдает следуюшую ошибку (прик. файл error01.jpg)

    >Maxim Gritsenko

    if (Page.DepartmentConfirmEdit.Value == string.IsEmpty) {
    Page.DepartmentConfirmEdit.Enabled = false;
    } else {
    Page.DepartmentConfirmEdit.Enabled = true;
    }
    return true;

    Выдает следуюшую ошибку (прик. файл error02.jpg)

    >Зверев Александр

    Page.DepartmentConfirmEdit.Enabled = !Page.DepartmentConfirmEdit.Checked;

    Выдает следуюшую ошибку (прик. файл error03.jpg)

    С уважением,
    Гюнель

    Гюнель, сделайте так:

    if(Page.PriznakEdit.Checked)
    {
           Page.PriznakEdit.Ebanled = false;
    }
    else
    {
           Page.PriznakEdit.Ebanled = true;
    }

    либо проще:

    Page.PriznakEdit.Enabled = !Page.DepartmentConfirmEdit.Checked;

    Спосиба, получилось.

    Но есть одна проблема. Когда я нажимаю кнопку "изменит", логическое поле "признак" опять становится активной. Что мне сделать что бы, даже при нажатии кнопки "изменит", это поле по-прежнему оставалось не активной.

    Заранее Спосиба.

    С уважением,
    Гюнель

    Page.DepartmentConfirmEdit.Enabled = !Page.DepartmentConfirmEdit.Checked;

    Этот код также нужно добавить и в скрипт после базового PageLoadComplete.

    К сожалению не получилось.
    Все ровно, когда я нажимаю кнопку "изменит", логическое поле "признак" опять становится активной.

    С уважением,
    Гюнель

    Здравствуйте, Гюнель.

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

    Здравствуйте,

    Да уверенна. (Прик. файлы, Объект и карточка деталь раздела)

    С уважением,
    Гюнель

    Здравствуйте, Гюнель.

    А в дизайнере карточки Вы вынесли колонку в DataSource и связали с контролом?
    Понимаю, что наводящие вопросы утомляют, но это самая вероятная причина.

    Здравствуйте,

    Думаю что нет (Прик. файлы,)

    С уважением,
    Гюнель

    Здравствуйте, Гюнель.

    В дизайнере карточки добавляете колонку:

    И затем в настройках контрола связываете контрол с ней:

    Добавила, но ничего не изменилась.
    Все ровно, когда я нажимаю кнопку "изменит", логическое поле "признак" опять становится активной.

    С уважением,
    Гюнель.

    Гюнель,

    Выложите, пожалуйста, схемы - будем проверять.

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

    Как изменить какое-либо поле сразу в нескольких карточках данных Terrasoft средствами Terrasoft без привлечения "взрослых" редакторов баз данных? Просто обычные пользователи устают менять вручную предположим поле Компания для карточек Контактов или поле Ответственный в карточках Контрагентов.

    Нравится

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

    Плохи дела. Ну единственное только ответственного можно через скрипт http://www.community.terrasoft.ru/blogs/7948. А вот этих двух строчек нет: http://www.community.terrasoft.ru/blogs/7715
    В общем в Террасофт нет возможности произвольно выделить сразу несколько контактов и контрагентов и применить изменение на одно из полей. Только вручную, карточка за карточкой... Жаль. В какой версии это появится? У нас 3.4.0.137

    Не позже 3.4.0.54 уже появилось. Возможно, в 3.4.0.54 эти 2 строчки там всё же есть.
    Попробуйте с правами админа выделить 2 записи и нажать "Изменить". Если массовое редактирование работает - можно и пользователям настроить.

    Не работает ни у админа, ни у пользователей. Может можно как-то сыграть через импорт данных через "Интеграции" из таблицы XLS, где колонка имен контрагентов и нужных полей? Пробую, но получается пока вот так (http://paste.omsklug.com/1110/):

    -----Импортируются данные из файла 'C:\Documents and Settings\Администратор\Мои документы\БД потенциальных клиентов - зубодолбёжная обработка.xls'
    Вычитываются данные из листа 'Зубодолбежная обработка'
    Импортируются данные из листа 'Зубодолбежная обработка'
    Импортируются данные в таблицу 'Контрагент'
    Импортируется запись Название = ООО "Ромашко"
    ***
    ***Dynamic SQL Error
    SQL error code = -303
    arithmetic exception, numeric overflow, or string truncation
    string right truncation
    Incompatible column/host variable data type
    Error Code: 249
    UPDATE "tbl_Account"
    SET "OwnerID" = :OwnerID,
    "AktivID" = :AktivID,
    "AccountTypeID" = :AccountTypeID,
    "AddressTypeID" = :AddressTypeID,
    "ClientLifeCyclePhaseID" = :ClientLifeCyclePhaseID,
    "ModifiedOn" = CURRENT_TIMESTAMP,
    "ModifiedByID" = '{251FB9AC-C17E-4DF7-A0CB-D591FDB97462}'
    WHERE("tbl_Account"."ID" = :ID)
    ***
    Импортируется запись Название = ООО "Петрушко"
    ***
    ***Dynamic SQL Error
    SQL error code = -303
    arithmetic exception, numeric overflow, or string truncation
    string right truncation
    Incompatible column/host variable data type
    Error Code: 249
    INSERT INTO "tbl_Account" ("OwnerID", "AktivID", "AccountTypeID", "AddressTypeID", "ClientLifeCyclePhaseID", "Name", "ID", "CreatedOn", "CreatedByID", "ModifiedOn", "ModifiedByID")
    VALUES (:OwnerID, :AktivID, :AccountTypeID, :AddressTypeID, :ClientLifeCyclePhaseID, :Name, :ID, CURRENT_TIMESTAMP, '{251FB9AC-C17E-4DF7-A0CB-D591FDB97462}', CURRENT_TIMESTAMP, '{251FB9AC-C17E-4DF7-A0CB-D591FDB97462}')
    ***
    Импортируется запись Название = ОАО "Заварушко"
    ***
    ***Dynamic SQL Error
    SQL error code = -303
    arithmetic exception, numeric overflow, or string truncation
    string right truncation
    Incompatible column/host variable data type
    Error Code: 249
    UPDATE "tbl_Account"
    SET "OwnerID" = :OwnerID,
    "AktivID" = :AktivID,
    "AccountTypeID" = :AccountTypeID,
    "AddressTypeID" = :AddressTypeID,
    "ClientLifeCyclePhaseID" = :ClientLifeCyclePhaseID,
    "ModifiedOn" = CURRENT_TIMESTAMP,
    "ModifiedByID" = '{251FB9AC-C17E-4DF7-A0CB-D591FDB97462}'
    WHERE("tbl_Account"."ID" = :ID)
    ***

    Что делать? Почему так неадекватно импортируется?

    Если конфигурация версии 3.4.0 (не бинарные файлы, а именно версия конфигурации) - должно присутствовать массовое изменение записей.
    Что касается импорта, лога недостаточно, необходим для тестирования настроенный шаблон и сам файл Excel.

    1. Где достать свежие релизы? Почему программа сама не обновляется? В Ubuntu Linux я просто пишу sudo apt-get upgrade и обновляю весь дистрибутив, а тут единственная программа обновится не может.
    2. Ну а вообще здравая мысль менять массово данные через импорт (если нет другой возможности)?

    "linuxmasterz" написал:1. Где достать свежие релизы? Почему программа сама не обновляется?

    Новые версии бинарников может выслать поддержка.
    Обновление тоже настроить можно. Складываете файлы в расшаренную папку, прописываете её в файле настроек. Все компьютеры с установленной системой при запуске обновятся.

    "linuxmasterz" написал: менять массово данные через импорт (если нет другой возможности)

    Мысль вполне приемлемая. Как минимум, хотя бы, по той причине, что можно отдать такую механическую работу на оутсорс или сотруднику комании но, к примеру, не пользователю системы, но способному с правиться с задачей заполнения/редактирования файла импорта.

    В версии 3.4.0.137 Terrasoft XRM нет массового изменения полей. Проверено. И не будет, я так понимаю.

    linuxmasterz, в версии 3.4.0.137 Terrasoft XRM присутствует массовое изменение записей:
    /system/files/1_131.png

    /system/files/2_71.png
    Функциональность реализована на уровне конфигурации, поэтому если Вы используете бинарные файлы версии 3.4.0, но версия конфигурации ниже - массового изменения записей не будет.

    а в BPMonline когда такое переедет? :-)

    Переносить подобную функциональность в BPMonline не планируется (на данный момент таких планов нет).

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

    Добрый день! Помогите разобратся в одном отчёте. Писали его разработчики до меня, я пока что вникаю в суть. До поры до времени работало, а в один прекрасный день стала появлятся ошибка.
    Суть в том, что в одном поле есть такая строка:

    [ds_CustomerAddress."AddressTypeName"]: [IIF(Length()>0,[ds_CustomerAddress."ZIP"], >, >)][IIF(Length()>0,[ds_CustomerAddress."TerritoryName"], >, >)][IIF(Length()>0,[ds_CustomerAddress."StateName"], >, >)][IIF(Length()>0,[ds_CustomerAddress."CityName"], >, >)][ds_CustomerAddress."Address"]

    Я понимаю смысл того, что строка должна выдавать, но не понимаю некоторых особенностей. Объясните, что обозначает пустое место после запятой в первом iif вот здесь:
    [ds_CustomerAddress."ZIP"], >

    и почему в етом же iif в разделе false написано просто " >" - ето пустая строка?

    И почему в данном отчёте выдаётся ошибка

    Unknown variable of datafield:
    Unknown variable of datafield: [ds_CustomerAddress."CityName"]
    Unknown variable of datafield: [ds_CustomerAddress."TerritoryName"]
    , хотя ети поля имеются в подгружаемых данных. Более того, сам отчёт формируется правильно, все значения отображаются. Откуда тогда ошибке взятся?

    Нравится

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

    Добрый день, Дмитрий.

    Оператор "< >" в блоке false функции IIF означает пустой DataField, т.е. в отчет подставится пустое место.
    По поводу пустого места после запятой, до конца не уверен, однако могу предположить, что у Вас в одном поле выводится совокупный адрес (индекс, страна, город, и пр.) соответственно такой конструкцией они выводятся через запятую с пробелом.
    По поводу ошибки, к сожалению ничего конкретного сказать не могу. Возможно где-то в коде нужно заменить конструкцию [ds_CustomerAddress."TerritoryName"] на

    <ds_CustomerAddress."TerritoryName">

    .

    Оказалось всё просто, хотя пришлось повозится. Вместо

    <[ds_CustomerAddress."TerritoryName"], >

    надо было написать

    <ds_CustomerAddress."TerritoryName">+", "

    А вместо

    < >
    " "

    Уж не говоря о том, что в скрипте были ссылки на несуществующие выборки.

    А работало до поры до времени наверняка из-за кеширования. Возможно, что у клиентов когда-то закешировался правильный вариант отчёта, на етом всё и держалось. Хотя, ето просто предположение. Спасибо за подсказку ;)

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