Иногда в процессе работы с системой возникает необходимость отобразить все записи в основном реестре, у которых есть прикрепленные файлы на закладке "Файлы".
Для решения этой задачи предлагаю один вариант решения, рассмотренный на примере раздела "Контрагенты". Для остальных разделов можно сделать по аналогии.
Хочу отметить, что самое сложное в этой задаче - это создать правильный фильтр в запросе. Но это не проблема... Попытаюсь описать как можно более доходчиво, как это можно сделать:

1. Добавляем колонку подзапроса в sq_Account (называем HasFile).
2. В FROM указываем связь с таблицей tbl_FileInAccount (псевдоним FileInAccount1)
3. Здесь же добавляем еще одну связь с таблицей tbl_Files (LEFT OUTER JOIN).
4. В Select создаем поле ID (делаем выборку из tbl_FileInAccount).
5. В условии Where создаем фильтр сравнения AccountID (tbl_Account.ID)= FileInAccount1.AcountID
6. Здесь же в Where создаем фильтр сравнения (Compare Filter).
7. В этом фильтре в FROM указываем связь с таблицей tbl_FileInAccount (псевдоним FileInAccount2)
8. В этом же фильтре создаем поле ID (в Select). Делаем выборку из FileInAccount2.
9. В Where создаем фильтр сравнения AccountID (FileInAccount2.AccountID = tbl_Account.ID).
Итак, сохраняем изменения и можно считать, что самое сложное сделано!
Добавляем в датасет ds_Account булевское поле, в поле "Колонка" выбираем наше поле HasFile из запроса, даем ему заголовок "Есть файл". Добавляем в грид колонку.
Перезапускаем рабочее приложение Terrasoft CRM и проверяем созданный функционал.

Желаю удачи!

С уважением,
Мельникова Екатерина

Нравится

Поделиться

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

Еще есть один вариант настройки пользовательского фильтра на наличие файлов у записи (на примере задач).

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

Добрый день! Есть проблема при импорте данных из excel файла в dataset. При импорте небольших фалов (70 Кб) все происходит отлично. При импорте больших файлов (700 Кб) в гриде, где отображается этот dataset данные идут в непонятном для меня порядке. А именно строки, правильные строки в непонятном порядке(проверял на разных фалах, установить какую-либо закономерность или последовательность в разбросе записей не удалось).
Импортирую следующим скриптом:

function btnImportOnClick(Control) {
        var FileName = GetNewValue();
        if (System.PromptForFileName(FileName,
                        "Файлы Excel" + ' (*.xls;*.xlsx)|*.xls;*.xlsx|'+
                        "Все файлы" + ' (*.*)|*.*', '',
                        msgSelectFileForImport, '', false)) {
                var FileNameValue = FileName.Value;
                var ExlApp = new ActiveXObject("Excel.Application");
                var WorkBook = ExlApp.Workbooks.Open(FileNameValue);
                var TempPriceDS = Services.GetNewItemByUSI('ds_TempPrice');
                TempPriceDS.Open();
                while (!TempPriceDS.IsEOF) {
                        TempPriceDS.Delete();
                }
                TempPriceDS.AutoRefresh = false;
                TempPriceDS.DisableEvents();
                for (var i = 0; i WorkBook.Sheets.Count; i++) {
                        var CurrentSheet = WorkBook.Sheets(i + 1);
                        for (var j = 1; j = CurrentSheet.UsedRange.Rows.Count; j++) {
                                TempPriceDS.Append();
                                for (var e = 1; e = 30; e++) {
                                        TempPriceDS.DataFields.Items(e).Value = CurrentSheet.Cells(j, e).Value;
                                }
                                TempPriceDS.Post();
                        }
                }
                TempPriceDS.AutoRefresh = true;
                TempPriceDS.EnableEvents();
                WorkBook.Close();
                ExlApp.Quit();
                var SupplierWindow = GetSingleItemByCode('wnd_PriceGridArea', null);
                SupplierWindow.Show();
        }
}

Нравится

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

Здравствуйте!
Почему Вы решили, что в не правильном? Вы импортируете непосредственно в базу данных, а потом показываете отдельное окно?

Еще раз здравствуйте!
Да я импортирую непосредственно в БД, а потом показываю окно. В окне данные отображаются в непонятном порядке. Проверяю в Microsoft ManagmentStudio - то же самое, порядок АБСОЛЮТНО непонятный.

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

Доброе утро!
Я хочу сказать, что первая строка excel файла записывается в таблицу какой-нибудь 1386_ой, а на первом месте в записаной таблице стоит строка где-то из середины (или любого другого места) excel файла.

В таблице нет понятия 1386 или еще какой-нибудь позиции. То что Вы видете это только один из способов отображения. В данном случае SQL Server Management Studio.
Если Вы хотите сохранить порядок записей как в файле Excel Вам необходимо добавить колонку с порядковым номером, далее на уровне базы данных так же добавить поле, куда настроить импорт. Далее в запросе, который используется при отображении, установить сортировку. Например так:

select field1, field2, ...
from some_table
order by field_for_order
Показать все комментарии