Сравнение строковых массивов

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

 Пример:

Источник 1 Источник 2
Реализация товаров и услуг №10 от 07.12.2016 Реализация товаров и услуг №5 от 01.12.2016
Реализация товаров и услуг №12 от 05.12.2016 Реализация товаров и услуг №20 от 10.12.2016
Реализация товаров и услуг №5 от 01.12.2016

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

 Для решения проблемы создана обработка, сравнивающая массивы строк. На рисунке показано первоначальное заполнение левой и правой части, как в таблице выше:

 sm1

После нажатия кнопки в правой части остаются те строки, которых нет в левой части:

sm2

 Скачать обработку (1C v8.3) >>

Чтение DBF файлов и Memo полей при помощи 1С

Для чтения файлов DBF из 1С можно использовать объект XBase, однако до того момента как понадобится чтение полей Memo. В этом случае XBase использовать бесполезно, требуется другой подход. Для примера возьмем файл «C:\Base\MyFile.dbf» Решение проблемы на клиенте приведено ниже:

ИмяФайла = «MyFile»;
ИмяПапки = «C:\Base»;
// создаем объект доступа к БД
oConn = Новый COMОбъект(«ADODB.Connection»);
// задаем строку-соедние с указанием расположения БД
oConn.ConnectionString = «provider=vfpoledb.1;Data Source =»
+ИмяПапки + «;Mode=ReadWrite»;
// SQL запрос делается прямо по имени файла
Query = «Select * From «+ИмяФайла+«.dbf»;
// создаем объект доступа к набору записей
record = New COMОбъект(«ADODB.Recordset»);
Попытка
     record.Open(Query, oConn); // выполняем запрос к таблице
Исключение
     Сообщить(«Ошибка при обращении к таблице: «+ОписаниеОшибки());
     Возврат Неопределено;
КонецПопытки;
// выводим типы колонок таблицы
// тип это число, например:

// 
11 —Булево, 129 — Строка, 131 — Число, 201 — Мемо
Для каждого Field из record.Fields Цикл
     Сообщить(«Поле «Field.Name + » имеет тип « + Строка(Field.Type));
КонецЦикла;
// выводим строки выборки
Пока Не record.EOF() Цикл
     Сообщить(«Контрагент « + Строка(record.Fields(
«Customer»).Value) + » имеет ИНН «Строка(record.Fields(«Inn«).Value) );
     record.MoveNext();
КонецЦикла;

Для работы этого кода необходимо установить соответствующий драйвер Fox Pro и можно скачать программу для просмотра файлов DBF. Без установки драйвера никакими возможностями 1C мемо поля не прочитать.

Скачать драйвер: Fox pro
Скачать программу просмотра DBF файлов: Редактор DBF