Главная  |  Продукты  |  Услуги и цены  |  Клиенты  |  Контакты
 
1C Предприятие 7.7
Наши решения
Программирование
1С Предприятие 8.*
Наши решения
Партнерские разработки
Типовые решения
Программирование
Администрирование
Web проекты
Интернет-магазины
Поиск по сайту

 
Управление интернет-магазином
 

Подсистема «Управление интернет-магазином» позволяет используя типовые конфигурации 1С 8 «Управление торговлей» и «Управление торговым предприятием», «Управление небольшой фирмой» и др. организовать удобное управление интернет-продажами.

Цена: 1000$ Подробная информация о модуле

 

Главная arrow Программирование arrow Основные функции arrow Проверка дублей строк используя запрос и временные таблицы
Проверка дублей строк используя запрос и временные таблицы Версия в формате PDF Версия для печати Отправить на e-mail
Рейтинг: / 4
ХудшаяЛучшая 
Написал Валецкий Станислав   
Для корректности формирования движений документа перед проведением необходимо проверить табличную часть на дублирование строк. Можно сделать это перебором строк, а можно проверить дубли выполнив запрос к табличной части документа, при этом нужно учесть что документ перед выполнением запроса должен быть записан. для решения данной проблемы мы используем временные таблицы. Для универсальности функции дублирования строк, мы введем параметр - "Список ключей". Это будут основные колонки для проверки дублей.

 
 
СписокКлючей = Новый СписокЗначений;
СписокКлючей.Добавить("Номенклатура");
 
//Функция поиска дублей на вход принимает исходную таблицу и список ключей
Функция ПроверкаДублейСтрокТЧ(ТаблицаПоискаДублей,СписокКлючей) Экспорт
 
//Флаг дублей - изначально ложь
ЕстьДубли = Ложь;
 
//Для разграничения строк нам дополнительно понадобиться колонка "номер строки"
//В случае ее отсутствия ее необходимо добавить и заполнить
НашлиКолонкуСНомеромСтроки = ТаблицаПоискаДублей.Колонки.Найти("НомерСтроки");
 
Если НашлиКолонкуСНомеромСтроки = Неопределено Тогда
   ТаблицаПоискаДублей.Колонки.Добавить("НомерСтроки");
   Сч = 1;
   Для каждого Стр Из ТаблицаПоискаДублей Цикл
     Стр.НомерСтроки = Сч;
     Сч = Сч + 1;
   Конеццикла;
Конецесли;
 
//Создаем менеджер временных таблиц
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
 
//Конструируем запрос следующим образом
Запрос.Текст =
   "ВЫБРАТЬ ";
   //Добавляем ключевые поля
   Для Каждого Ключ Из СписокКлючей Цикл
      Запрос.Текст = Запрос.Текст + "
      |Таблица." + Ключ.Значение + ",";
   КонецЦикла;
   Запрос.Текст = Запрос.Текст + "
   |Таблица.НомерСтроки
   |ПОМЕСТИТЬ ВремТаблица
   | ИЗ &ТПД КАК Таблица";
   Запрос.УстановитьПараметр("ТПД", ТаблицаПоискаДублей);
   Запрос.Выполнить();
 
   //Выполняем следующий запрос
 
   Запрос.Текст = "ВЫБРАТЬ 
 
   | Таблица1.НомерСтроки КАК НомерСтроки1,
   | Таблица2.НомерСтроки КАК НомерСтроки2
   |ИЗ
   | ВремТаблица КАК Таблица1
   | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ";
 
   Для Каждого Ключ Из СписокКлючей Цикл 
     Запрос.Текст = Запрос.Текст + "
     | ТаблВнутр." + Ключ.Значение + ", ";
   Конеццикла;
 
   Запрос.Текст = Запрос.Текст + "
   | ТаблВнутр.НомерСтроки
   | ИЗ
   | ВремТаблица КАК ТаблВнутр
   | ) КАК Таблица2
   | ПО (Таблица1.НомерСтроки <> Таблица2.НомерСтроки)";
 
   Для Каждого Ключ Из СписокКлючей Цикл 
     Запрос.Текст = Запрос.Текст + "
     | И (Таблица1." + Ключ.Значение + " = Таблица2." + Ключ.Значение + ")";
   Конеццикла; 
 
   //выбираем результат запроса, сообщаем о дублях и возвожим флаг дублей в истину
 
   Результат = Запрос.Выполнить();
 
   Выборка = Результат.Выбрать();
 
   Пока Выборка.Следующий() Цикл
 
 
 
     Если ПустоеЗначение(Выборка.НомерСтроки1) ИЛИ ПустоеЗначение(Выборка.НомерСтроки2) Тогда
        Продолжить;
     Конецесли; 
 
     Сообщить("Обнаруженны дубли строк: строка "+Выборка.НомерСтроки1+" и строка "
     +Выборка.НомерСтроки2,СтатусСообщения.ОченьВажное);
     ЕстьДубли = Истина;
 
   Конеццикла;
 
   Возврат ЕстьДубли;
 
КонецФункции
 
 
 
 

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:
Жирный Курсив Подчеркнутый Зачеркнутый Цитата


Защитный код
Обновить

< Пред.   След. >
Карта сайта
1C-PROFI © 2018
Использование материалов разрешено только с указанием ссылки (для web сайтов гиперссылки)
www.megastock.ru