Проверка дублей строк с помощью 1С++

Публикация № 17058

Разработка - Практика программирования

5
Проверяются только справочники, для остального надо переделать немного фрагмент кода с метаданными
Функция
глПроверкаДублейСтрок
(
ВыбДок
,
СтрокаСвертки
) Экспорт
ВидДок 
=
ВыбДок
.
Вид
()
;
	Список 
=
глРазложить
(
СтрокаСвертки
)
;
	
	ТекстЗапроса 
= "
|SELECT Строки1
.
LINENO_ НомерСтроки
	|
"; Для
Сч 
= 1
по Список
.
РазмерСписка
() Цикл
ТекИД	
=
Список
.
ПолучитьЗначение
(
Сч
)
;
		Вид	
= Метаданные.
Документ
(
ВидДок
).
РеквизитТабличнойЧасти
(
ТекИД
).
Вид;
		ТекстЗапроса 
=
ТекстЗапроса 
+ "
|
,
$Строки1
." + ТекИД + "
[
" + ТекИД + "
$Справочник
." + Вид + "
]
		|
"; КонецЦикла
;	
		
	ТекстЗапроса 
=
ТекстЗапроса 
+ "
|FROM 
(
|SELECT 
	|
"; Для
Сч 
= 1
по Список
.
РазмерСписка
() Цикл
ТекИД	
=
Список
.
ПолучитьЗначение
(
Сч
)
;
		Доб 
=
?
(
Сч 
= 1, "", ",")
;
		ТекстЗапроса 
=
ТекстЗапроса 
+ "
|
" + Доб + "
$Строки
." + ТекИД + " " + ТекИД + "
|
"; КонецЦикла
;	
	
	ТекстЗапроса 
=
ТекстЗапроса 
+ "
|FROM $ДокументСтроки
." + ВидДок + "
AS Строки With 
(
NOLOCK
)
|WHERE 
(
Строки
.
IDDOC 
=
:ВыбДок
)
|GROUP BY 
	|
"; Для
Сч 
= 1
по Список
.
РазмерСписка
() Цикл
ТекИД	
=
Список
.
ПолучитьЗначение
(
Сч
)
;
		Доб 
=
?
(
Сч 
= 1, "", ",")
;
		ТекстЗапроса 
=
ТекстЗапроса 
+ "
|
" + Доб + "
$Строки
." + ТекИД + "
|
"; КонецЦикла
;	
	
	ТекстЗапроса 
=
ТекстЗапроса 
+ "
|HAVING COUNT
(*) > 1
|
)
AS Подзапрос
	|LEFT JOIN $ДокументСтроки
." + ВидДок + "
AS Строки1 With 
(
NOLOCK
)
ON Строки1
.
IDDOC 
=
:ВыбДок 
	|
"; Для
Сч 
= 1
по Список
.
РазмерСписка
() Цикл
ТекИД	
=
Список
.
ПолучитьЗначение
(
Сч
)
;
		Доб 
=
?
(
Сч 
= 1, "", ",")
;
		ТекстЗапроса 
=
ТекстЗапроса 
+ "
|
AND
$Строки1
." + ТекИД + " =
Подзапрос
." + ТекИд + "
|
"; КонецЦикла
;	
		
	RecordSet
.
УстановитьТекстовыйПараметр
("ВыбДок",
ВыбДок
)
;
	
	ТЗ 
=
RecordSet
.
ВыполнитьИнструкцию
(
ТекстЗапроса
)
;
    
	Статус 
= 0
;
	
	ТЗ
.
ВыбратьСтроки
()
;
	
Пока
ТЗ
.
ПолучитьСтроку
() = 1 Цикл
Статус 
= 1
;
		
		СтрокаСообщения 
= "Строка: " +
Строка
(
ТЗ
.
НомерСтроки
)
;
		
Для
Сч 
= 1
по Список
.
РазмерСписка
() Цикл
ТекИД 
=
Список
.
ПолучитьЗначение
(
Сч
)
;
			СтрокаСообщения 
=
СтрокаСообщения 
+ ", " +
ТекИД 
+ ": " +
ТЗ
.
ПолучитьЗначение
(
ТЗ
.
НомерСтроки
,
ТекИД
)
;
		
КонецЦикла
;	
		Сообщить
(
СтрокаСообщения
)
;
	
КонецЦикла
;
	
	
Возврат
Статус;
КонецФункции


Функция глРазложить() есть в ТиС, примерно следующего содержания:

Функция
глРазложить
(Знач
Стр
,
Разделитель 
= ",") Экспорт
Список 
= СоздатьОбъект("СписокЗначений")
;
	Длина  
=
СтрДлина
(
Разделитель
)
;
	
	Стр 
=
СокрЛП
(
Стр
)
;
	Поз 
=
Найти
(
Стр
,
Разделитель
)
;
	
	
Пока 0 <
Поз 
Цикл
Список
.
ДобавитьЗначение
(
СокрП
(
Лев
(
Стр
,
Поз
-1)))
;
		
		Стр 
=
СокрЛ
(
Сред
(
Стр
,
Поз
+
Длина
))
;
		Поз 
=
Найти
(
Стр
,
Разделитель
)
;
	
КонецЦикла
;
	
	Список
.
ДобавитьЗначение
(
Стр
)
;
	
	
Возврат
Список;
	
КонецФункции


Пример вызова функции глПроверкаДублейСтрок():

Если
глПроверкаДублейСтрок
(
ТекущийДокумент
(), "Товар,Партия") = 1 Тогда
НеПроводить
(Контекст, "Устраните дубли!")
;
		
Возврат
;
	
КонецЕсли
;

Оригинал статьи
http://1c911.by/stati_1s/statya-proverka-dubley-strok-s-pomoshchyu-1s.htm
Изменения и новые публикации смотрите на http://1c911.by/stati-1s.htm
5

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. mihenius 23.11.07 13:49 Сейчас в теме
А может лучше дубли автоматом устранять?

не помешал бы вариант и для дбф ;)
2. Вадимко 201 23.11.07 14:24 Сейчас в теме
Может и лучше, ситуации разные бывают
Для ДБФ надо nolock убрать, остальное должно прокатить под ОЛЕДБ
3. adapter 26.11.07 09:59 Сейчас в теме
Вот вариант для борьбы с дублями, который работает на любом формате базы и без 1C++
http://www.adaptersoft.ru/index.php?name=News&file=article&sid=8

Таких вариантов в Сети много, мне моя реализация скромно кажется лучшей ;)
4. Вадимко 201 26.11.07 20:55 Сейчас в теме
2(3) Кхе-кхе... в принципе тут речь идет о проверке в обработке проведения, например
Конечно не спорю... мой пример - наиболее корявый и куевый, написан был быстро, на коленке
>>и без 1C++
это, наверное, очень медленно :)
Оставьте свое сообщение

См. также

Дистрибьюция 7.7. Часть 1. Жизненный цикл заявки покупателя. Одна заявка покупателя, много адресов доставки. 1

Статья Программист Нет файла v7.7 1С7:Комплекс 1С7:ТиС УУ Бесплатно (free) Практика программирования Адаптация типовых решений

Описан способ работы с учетом расписания с приоритетными покупателями - торговыми сетями (основными покупателями) в торговой или комплексной учетной системе на 1С 7.7. Множественная заявка покупателя на несколько торговых точек.

14.10.2019    521    ksnik    0       

Проверка часового пояса 9

Статья Программист Нет файла v7.7 Windows Бесплатно (free) Практика программирования

При использовании терминалок для удаленных баз, иногда при входе в базу данных необходимо исключить возможность входа пользователей с компьютеров с другим часовым поясом. Например, работают в Новосибирской базе с временем UTC +6 и пытаются зайти в базу с UTC +3.

16.05.2016    8172    kudenzov    3       

[ПОЛЕЗНЯШКА, 7.7] Как посчитать итоги по документам черным запросом с изподвывертом? 13

Статья Программист Нет файла v7.7 1cv7.md Windows Бесплатно (free) Практика программирования

Мелкая полезняшка, считает запросом итоговую сумму документов и количество документов.

12.03.2016    15468    CheBurator    18       

.Net в 1С. На примере использования HTTPClient, AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция 111

Статья Программист Нет файла v7.7 v8 Windows Бесплатно (free) Практика программирования WEB

Часто приходится парсить сайты, в том числе с авторизацией, перескакивая со страницы на страницу по ссылкам. Тот, кто занимался вэб программированием, знает, как удобно использовать JQuery и CSS селекторы. На .Net написана очень удобная библиотека AngleSharp. Я покажу, как с её помощью можно значительно облегчить себе труд.

10.03.2016    48339    Serginio    33       

.Net в 1С. Асинхронные HTTP запросы, отправка Post нескольких файлов multipart/form-data, сжатие трафика с использованием gzip, deflate, удобный парсинг сайтов и т.д. 37

Статья Программист Нет файла v7.7 v8 Windows Бесплатно (free) Практика программирования Разработка внешних компонент WEB

Очень часто нужно при работе с HTTP сервисами или сайтами использовать Асинхронные HTTP запросы, отправку на сервер нескольких файлов, использование сжатия трафика. Эта статья про то, как этого легко добиться.

09.03.2016    25366    Serginio    22       

Использование классов .Net в 1С для новичков 147

Статья Программист Нет файла v7.7 v8 Windows Бесплатно (free) Практика программирования Разработка внешних компонент Универсальные функции

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    62755    Serginio    104       

Пример HTTP запроса к УТМ ЕГАИС на платформе 1С 7.7 15

Статья Программист Нет файла v7.7 1cv7.md Россия Windows Оптовая торговля Розничная торговля Бесплатно (free) Практика программирования Внешние источники данных

Запрос реализован на объекте ServerXMLHTTP из встроенной в Windows библиотеки MSXML, результатом запроса является XML объект DOMDocument из той же библиотеки MSXML со встроенным интерфейсом его обработки

16.12.2015    19972    Palmer1976    3       

Экспорт нескольких MXL таблиц в один XLS файл, на отдельные листы. Простой алгоритм 20

Статья Программист Нет файла v7.7 v8 Windows Бесплатно (free) Практика программирования Загрузка и выгрузка в Excel

Статья посвящена распространённому вопросу - как сохранить несколько таблиц (отчетов) в формате MXL, с которым работает 1С, на отдельные листы одного Excel файла. Освещается простой алгоритм решения проблемы штатными средствами, без использования внешних модулей и библиотек (не относящихся к 1С и Excel).

23.11.2015    13946    etmarket    14       

Процедура расшифровки ячейки таблицы в отчетах 1С 7.7 11

Статья Программист Нет файла v7.7 1cv7.md Windows Бесплатно (free) Практика программирования Универсальные функции

Хочу поделиться с вами универсальной процедурой для расшифровки ячеек печатной формы отчетов в 1С 7.7.

24.09.2015    13769    Anzhey    13       

Универсальный способ сравнения таблиц 15

Статья Программист Нет файла v7.7 v8 Бесплатно (free) Практика программирования

На эту тему уже есть статьи, но этот способ нигде не описан. Хотя я его использую с тех пор, как занимаюсь программированием. Его преимущество в простоте и универсальности: можно применять на 1С, SQL, а также в любом другом языке программирования.

05.07.2015    14769    json    1       

Числа прописью в родительном падеже в 7.7? Легко! 13

Статья Программист Нет файла v7.7 1cv7.md Windows Бесплатно (free) Практика программирования

Вывод числительных прописью в родительном падеже штатными средствами в три строчки кода.

20.06.2015    10022    gimalaj    3       

Хитрости сохранения табличного документа в Excel для дальнейшей работы с ним 78

Статья Программист Нет файла v7.7 v8 1cv8.cf 1cv7.md Windows Бесплатно (free) Практика программирования Загрузка и выгрузка в Excel

Все пользователи 1С всех версий (начиная с 7-й) сталкиваются с проблемой нормальной работы с данными, сохраненными в Excel файл. Есть некоторые хитрости, которые позволяют облегчить работу с сохраненными данными из 1С в формат Excel.

16.01.2015    70802    shmellevich    35       

Исправление в типовой комплексной конфигурации глобальной функции глВсеРеквизитыДокументаЗаполнены() 4

Статья Программист Нет файла v7.7 1С7:Комплекс Россия Windows Бесплатно (free) Практика программирования

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

20.08.2014    5983    hvv2002    0       

ЗаполнитьЗначенияСвойств - заставляем работать в 7.7 11

Статья Программист Нет файла v7.7 1cv7.md Бесплатно (free) Практика программирования

Если вы используете в работе 1С:Предприятие 8.х, то наверняка знакомы и с замечательной системной процедурой, как ЗаполнитьЗначенияСвойств(). Ее использование помогает значительно упростить написание программного кода в ряде случае, делает его (код) более наглядным и простым. Но что же делать тем, кто до сих пор использует (постоянно или иногда) 1С:Предприятие 7.7?

24.07.2014    18729    tomvlad    5       

Полезные функции. Склонение (должность и фамилия подписантов). Любой язык 3

Статья Программист Нет файла v7.7 v8 Windows Бесплатно (free) Практика программирования

Уехал директор в командировку, отпуск... , оставил доверенность на хозяйственные операции на другого сотрудника. Все договора и другие документы в обмороке - "подписант" теперь другой, по тексту тоже много правок... Пересмотрел много публикаций, вариантов много, не приглянулось. Сделал свой "Баян" . У меня всего-то крутится пять фигурантов ... Нет простого, наглядного и всепогодного варианта без языкового барьера. Всем процессом управляет пользователь.

03.03.2014    15321    kompas-dm    5       

Реализация Ctrl+Z в 1С 7.7 (ТиС) 7

Статья Программист Нет файла v7.7 1С7:ТиС Windows Бесплатно (free) Практика программирования

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

15.07.2013    5535    a.o.popova    10       

Копия напечатанного документа или как спрятать документ. 2

Статья Программист Нет файла v7.7 Бесплатно (free) Журнал регистрации Практика программирования

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

11.04.2013    13092    Dima_    8       

Автосохранение документа в 1С 7.7 3

Статья Программист Нет файла v7.7 1cv7.md Россия Windows Бесплатно (free) Практика программирования

В данной статье мы рассмотрим автосохранение документа в 1С 7.7!

22.03.2013    11046    aagubarev    25       

Конвертация данных 2.1 (2.1.3.1) 1С 7.7 - 1С 8.Х передача параметра ПКО 14

Статья Системный администратор Программист Нет файла v7.7 v8 КД Бесплатно (free) Практика программирования Перенос данных из 1С7.7 в 1C8.X

Передача параметров по умолчанию доступна только для баз 1С 8.х -1С 8.х. Показан пример, как передать параметры из 1С 7.7 - 1С 8.х

10.12.2012    22174    serg_gres    6       

Устранение проблемы при работе с полем, которое ограничено маской ввода 3

Статья Программист Нет файла v7.7 1cv7.md Россия Бесплатно (free) Практика программирования

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

08.08.2012    14119    www2000    4       

Динамическая фильтрация в справочнике при вводе наименования 15

Статья Программист Нет файла v7.7 1cv7.md Россия Бесплатно (free) Практика программирования

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

02.07.2012    14222    maxpiter    62       

Обновление базы 1с 7.7. с помощью движка 1с 8.х 92

Статья Системный администратор Программист Нет файла v7.7 1cv7.md Россия Бесплатно (free) Практика программирования Администрирование данных 1С

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

28.04.2012    15858    Valerich    31       

v77. Робот 43

Инструменты и обработки no Внешняя обработка (ert,epf) v7.7 1cv7.md Россия Бесплатно (free) Практика программирования

Исполнитель Робот. Учебное пособие по программированию для детей дошкольного возраста. Без внешних компонент.

09.04.2012    10187    54    item    18       

Запуск внешней обработки по расписанию v7.7 39

Статья Программист Нет файла v7.7 1cv7.md Россия Windows Бесплатно (free) Практика программирования Администрирование данных 1С

Неоднократно возникали задачи организовать, например ежедневную выгрузку и отправку отчетов по эл.почте, и вот…

20.03.2012    39484    Yury1001    17       

v77. Закладки в многоуровневом справочнике аля Total Commander 28

Инструменты и обработки Программист Конфигурация (md, cf) v7.7 1cv7.md Россия Бесплатно (free) Практика программирования

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

09.03.2012    8804    44    item    17       

v77. Паинт 53

Инструменты и обработки Программист Внешняя обработка (ert,epf) v7.7 1cv7.md Россия Бесплатно (free) Практика программирования

v77. 1С:Паинт :) Такая вот игрушка. Без внешних компонент.

06.03.2012    11893    81    item    38       

Как уменьшить количество заблокированных объектов 26

Статья Программист Нет файла v7.7 1cv7.md Россия Бесплатно (free) Практика программирования

История о том как я решил пересобрать форму справочника клиентов и чем это все закончилось...

12.01.2012    13187    ShEvOvIcH    18       

Регистрация текста окна сообщений 4

Статья Программист Нет файла v7.7 1cv7.md Россия Бесплатно (free) Практика программирования

Для контроля работы пользователей потребовалось записывать текст окна сообщений в файл. Получился простейший механизм регистрации лог-файла. Удержать роста папки "Temp", в качестве рекомендации, может использование bat-файла, который будет чистить или архивировать получаемые логи. Таких батников в инете полным-полно. P.S. Особо по форуму не смотрел, может, есть уже такое.

28.11.2011    6373    sdin101    9       

7.7.: Готовим md-файл для публикации. В картинках. 46

Статья Программист Нет файла v7.7 1cv7.md Россия Бесплатно (free) Практика программирования

Вы доработали типовую конфигурацию: скажем, добавили новый Документ, и хотите им поделиться с обществом ИС. Но нельзя же выложить МД-шник целиком, это будет нарушением правил. И как тут быть?

14.09.2011    15039    Арчибальд    21       

Учет доверенностей 6

Статья Программист Нет файла v7.7 1С7:Бух 1С7:Комплекс 1С7:ТиС 1С7:ПУБ Документооборот и делопроизводство Бесплатно (free) Практика программирования

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

08.09.2011    9557    Sykoku    8       

Методика расчета резервов отпусков (счет 96) в 1С Зарплата и Кадры 7.7 с 2011 года (вариант) 32

Статья Программист Нет файла v77::Расчет 1С7:Бух 1С7:ЗиК Россия БУ Зарплата Бесплатно (free) Практика программирования

В статье рассмотрен один из возможных вариантов расчета резервов отпусков (счет 96) в 1С Зарплата и Кадры 7.7 с 2011 года.

14.06.2011    19398    vkr    48       

Выбор Движений документа по конкретному регистру, с помощью прямого запроса 0

Инструменты и обработки Программист Конфигурация (md, cf) v7.7 openconf 1cv7.md Россия Бесплатно (free) Практика программирования

Чтобы узнать какие движения сделал документ по конкретному регистру, в моем случае это регистр "ОстаткиПоСчетам" (оборотный), была написана следующая функция в глобальном модуле. Работает только для SQL версии и установленной внешнй компонентой 1С++!

26.05.2011    10527    Vix    4       

Прямой запрос на выборку подчиненных документов 6

Инструменты и обработки Программист Конфигурация (md, cf) v7.7 openconf 1cv7.md Россия Бесплатно (free) Практика программирования

Иногда необходимо получить список или таблицу документов, подчиненных выбранному. Для этого в глобальном модуле была написана функция с прямым запросом на выборку подчиненных документов. Работает только в SQL версии и при установленной внешней компоненте 1С++ !

26.05.2011    16846    Vix    5       

Некоторые ошибки и «проблемные» особенности реализации встроенного языка платформы 1С:Предприятие 7.7 96

Статья Программист Нет файла v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free) Практика программирования

Описание некоторых ошибок и особенностей реализации встроенного языка, которые создают «подводные камни» при программировании, а также возможных способов обхода этих проблем из собственного опыта работы на платформе 1С:Предприятие 7.7.

08.04.2011    42018    AleksR    102       

Монопольно ли запущена база 7.7 для SQL. Снятие single user в sql 9

Статья Системный администратор Программист Нет файла v7.7 openconf 1cv7.md Россия Бесплатно (free) Информационная безопасность Практика программирования

T-SQL скрипт, позволяющий определить монопольно ли запущена база на сервере SQL, а также перевести базу в multi user

11.03.2011    16416    d0dger    12       

Отпуск по уходу за ребенком. Расчет по-новому и по-старому 32

Статья Программист Нет файла v77::Расчет 1С7:ЗиК Россия Управление персоналом (HRM) Бесплатно (free) Практика программирования

По новому законодательству расчет среднего заработка для отпуска по уходу можно производить как по старым правилам, так и по новым, на усмотрение сотрудника. Реализуем это в ЗиК.

11.03.2011    10183    Nicholas    9       

Ошибки формата файла 2-НДФЛ в ЗиК релиз 306 100

Статья Программист Нет файла v77::Расчет 1С7:ЗиК Россия НУ Зарплата НДФЛ Бесплатно (free) Практика программирования

Ошибки 2НДФЛ в релизе: файл формируется как для ЮЛ, даже если работодатель ИП, опечатка "Отчетсвто", и указание имени файла с расширением. Нужно подправить отчет "СправкиПоНДФЛ".

02.02.2011    17113    1st    6       

ЗиК 305 ЗиК 306 Больничный лист. 107

Статья Программист Нет файла v77::Расчет 1С7:ЗиК Россия Зарплата Бесплатно (free) Практика программирования

Для переходящих больничных листов за счет работодателя оплачивается 2 дня, а не 3. Первоисточник: http://forums.kuban.ru/forum/viewtopi...669&page=2

25.01.2011    12207    Cvetic    26