Использование com-соединения для сопоставления номенклатуры, контрагентов

26.06.24

Задачи пользователя - Анализ учета

Com-подключение для сравнения номенклатуры, контрагентов, остатков.

Всем привет! 

В статье не будет обсуждений конструкций вида ЗапросCOM = COM.NewObject("Запрос")
и получать типы объектов тоже не будем.

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

Суть в двух словах. 

В одной базе (База-1) в общем модуле будут созданы функции, возвращающие таблицу значений названий номенклатуры, контрагентов или остатков и других значений примитивных типов.

В другой базе (База-2) мы создадим ком-подключение к Базе-1, будем получать из Базы-1 таблицу значений названий номенклатуры, контрагентов, остатков. Далее в Базе-2 создадим пользовательскую форму для сопоставления названий номенклатур, контрагентов, остатков. Отдадим на откуп сопоставление номенклатуры, контрагентов, остатков пользователям. 

Уточнения:

1) в Базе-2 не надо использовать ком-объект NewObject("Запрос") - с запросами мы работаем исключительно в Базе-1, конструируем их, выполняем.

Передаем в другую базу только ТаблицуЗначений. Ссылки не передаем, но если надо передать ссылки, то заменяем их на УИД.

Так как в запросе мы не можем получить УИДы (на момент написания статьи 6 мая 2020г), то потребуется пройтись в цикле по выборке, чтобы определить по каждой ссылке соответствующий УИД в возвращаемой ТаблицеЗначений. 

2) Ком-подключение используется не для программной обработки данных, а для визуального сопоставления справочников и остатков именно пользователями программы 1С. Пользователи видят расхождение, и производят дальнейшую обработку номенклатуры, контрагентов, остатков исходя из смысла рабочего процесса (см. рис. ниже с примерами задач).

Примеры возникновения подобных задач:

1) Есть база Источник (например, КА) и есть база Приемник (некая база адресного хранения товаров). Номенклатура переходит из базы Источника в базу Приемник с помощью заданного плана обмена, товары сопоставляются между базами по уникальному идентификатору УИД. Одной из задач в таком случае становится сопоставить остатки товаров в базах.

2) Есть две независимые базы БП и УТ, учет ведется параллельно, обмен между базами не настроен.

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

3) Есть несколько баз УТ, и надо объединить базы в одну базу. Если базы находятся в одной локальной сети, то для первоначального сопоставления номенклатуры и контрагентов можно использовать прямое подключение по com-технологии (см. рис.).

На рисунке показано сравнение номенклатуры по названию. Использовано Левое соединение таблиц, но вы можете использовать Полное соединение таблиц, чтобы увидеть какая номенклатура не совпадает по названию в обеих базах.

Технология использования:

За ком-интерфейс отвечает компонента dll - comcntr.dll (переводится как "управление ком"), которая расположена в установочной папке 1с (см. рис.). Именно эту компоненту вам надо зарегистрировать в опер. системе самостоятельно, если этого не сделала платформа 1с при первоначальной установке. Помните о лицензии +1 при соединении.

В Базе-1 придется создать общий модуль, задать ему свойство "внешнее соединение" (рис. ниже).

В общем модуле Базы-1 функции условно можно разделить на две категории:

  • функции, которые получают данные из этой же базы для передачи Таблицы Значений в другую базу.
  • и функции, которые используются для работы с другой базой - например, та же функция получения Ком-соединения с другой базой.

Смотрите разделение функций на рис. ниже.

Остальную функциональность в Базе-2 для использования ком-подключения и сопоставления номенклатуры (контрагентов или остатков) можно разработать во внешней обработке (рис. ниже).

Таким образом, если у вас имеется не редактируемая на поддержке типовая БП и редактируемая измененная УТ, то вы можете создать экспортные функции в общем модуле УТ, а подключаться по ком-соединению из БП и видеть расхождения в номенклатуре в пользовательской форме БП. То есть, снимать с поддержки БП не придется, потому что будете использовать внешнюю обработку.

Далее будут представлены алгоритмы создания ТаблицыЗначений в Базе-1 (Листинг 1) и алгоритмы обхода ТаблицыЗначений в Базе-2 (Листинг 2).

 
 Листинг 1. Алгоритм создания ТаблицыЗначений для передачи в другую базу данных

 

//////////////////////////////////////////////////
//Работа с этой базой данных

//получаем таблицу Наименование, УИД, Код
Функция ПолучитьТаблицуТоваров() Экспорт
	
ТЗ = Новый ТаблицаЗначений;	
	ТЗ.Колонки.Добавить("Наименование");    //основная информация
	ТЗ.Колонки.Добавить("УИД");             //вспомогательная информация 
	ТЗ.Колонки.Добавить("Код");             //вспомогательная информация
	
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	Номенклатура.Ссылка КАК Ссылка,
	|	Номенклатура.Наименование,
	|	Номенклатура.Код
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	|	Номенклатура.ПометкаУдаления = ЛОЖЬ
	|	И Номенклатура.ЭтоГруппа = ЛОЖЬ
	|
	|УПОРЯДОЧИТЬ ПО
	|	Ссылка
	|АВТОУПОРЯДОЧИВАНИЕ";
	
	Результат = Запрос.Выполнить();
	Выборка = Результат.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		
		Стр = ТЗ.Добавить();
		Стр.Наименование = СокрЛП(Выборка.Наименование);
		Стр.УИД = Строка(Выборка.Ссылка.УникальныйИдентификатор());
		Стр.Код = СокрЛП(Выборка.Код);

	КонецЦикла;
	
	Возврат ТЗ;
	
КонецФункции

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

//получаем остатки по всем складам одного товара
Функция ПолучитьОстаткиПоТовару(Наименование) Экспорт
	
	ТЗ = Новый ТаблицаЗначений;
	ТЗ.Колонки.Добавить("Склад");
	ТЗ.Колонки.Добавить("Количество",Новый ОписаниеТипов("Число")); 

	//Справочники.Номенклатура.НайтиПоНаименованию(Наименование,Истина);
	
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	Номенклатура.Ссылка
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	|	Номенклатура.ПометкаУдаления = ЛОЖЬ
	|	И Номенклатура.ЭтоГруппа = ЛОЖЬ
	|	И Номенклатура.Наименование = &Наименование";
	
	Запрос.УстановитьПараметр("Наименование", Наименование);
	
	Результат = Запрос.Выполнить();
	Если Результат.Пустой() Тогда
		Возврат ТЗ;
	КонецЕсли;
	
	Выборка = Результат.Выбрать();
	Если Выборка.Количество() > 1 Тогда
		
		Стр = ТЗ.Добавить();
		Стр.Склад = "Проблема: найдено несколько товаров с таким наименованием";
		Стр.Количество = 0;

		Возврат ТЗ;
		
	КонецЕсли;
	
	Номенклатура = Неопределено;
	Если Выборка.Следующий() Тогда    		
		Номенклатура = Выборка.Ссылка;	
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(Номенклатура) Тогда
		Возврат ТЗ;
	КонецЕсли;
	
	ТЗ = Новый ТаблицаЗначений;
	ТЗ.Колонки.Добавить("Склад");
	ТЗ.Колонки.Добавить("Количество",Новый ОписаниеТипов("Число")); 
	
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	ТоварыНаСкладахОстатки.Склад КАК Склад,
	|	ТоварыНаСкладахОстатки.КоличествоОстаток
	|ИЗ
	|	РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки
	|
	|УПОРЯДОЧИТЬ ПО
	|	Склад
	|АВТОУПОРЯДОЧИВАНИЕ";

	Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
	
	Результат = Запрос.Выполнить();
	Выборка = Результат.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		
		Стр = ТЗ.Добавить();
		Стр.Склад = СокрЛП(Выборка.Склад);
		Стр.Количество = Выборка.КоличествоОстаток;
		
	КонецЦикла;
	
	Возврат ТЗ;
	
КонецФункции

//получаем УИД товара
Функция ПолучитьИдентификаторТовара() Экспорт
КонецФункции

 

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

 

В листинге 2 представлены функции: подключение к базе по ком-соединению, получение остатков из базы. Помним, что мы получаем по ком-соединению ком-таблицу - то есть это не просто таблица значений, а некий объект ком-подключения, напоминающий таблицу значений. Примитивные типы данных передаются через ком-таблицу стандартно, остальные типы значений не переносятся. После получения ком-таблицы для работы с ее данными требуется создать свою ТаблицуЗначений с полями предопределенных типов значений - см. Листинг 3 - это пример из обработки Сравнение остатков по регистрам накопления.

 
 Листинг 3. Получение своей таблицы значений

 

Функция ПолучитьТЗ(ИмяРегистра, ТЗ_КомОбъект) Экспорт
	
	ТЗ = Новый ТаблицаЗначений; 
	
	РегистрНакопления = Метаданные.РегистрыНакопления[СокрЛП(ИмяРегистра)];
	Для Каждого Измерение Из РегистрНакопления.Измерения Цикл
		ТЗ.Колонки.Добавить(Измерение.Имя, Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(200)));
	КонецЦикла;
	
	Для Каждого Ресурс Из РегистрНакопления.Ресурсы Цикл
		ТЗ.Колонки.Добавить(Ресурс.Имя + "Остаток", Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(200)));
	КонецЦикла;
	
	Для Каждого Стр из ТЗ_КомОбъект Цикл
		
		НоваяСтрока = ТЗ.Добавить();
	
		Для Каждого Измерение Из РегистрНакопления.Измерения Цикл  			
			НоваяСтрока[Измерение.Имя] = СокрЛП(Стр[Измерение.Имя]);			
		КонецЦикла;
		
		Для Каждого Ресурс Из РегистрНакопления.Ресурсы Цикл
			НоваяСтрока[Ресурс.Имя + "Остаток"] = СокрЛП(Стр[Ресурс.Имя + "Остаток"]);
		КонецЦикла; 	
		
	КонецЦикла;
	
	Возврат ТЗ;
	
КонецФункции

 

 

Работа с ком-подключением задается только пользователю с определенной ролью (захватывается одна лицензия платформы 1с) - в моем случае, я создал роль "КомКоннектор", вы можете использовать одну из предопределенных типовых ролей.

При работе с ТЗ надо помнить о типах значений, которые мы передаем/получаем через ТаблицуЗначений - для таблиц значений типы полей надо задавать заранее (см листинги).

При работе с ком-подключением используйте конструкцию Попытка Исключение КонецПопытки.

Принцип использования ком-подключения:

  1. управлять из одной базы-2 объектами другой базы-1 не нужно.
  2. нам не нужно даже передавать в другую базу-1 какую-либо информацию.
  3. нам нужно в базе-2 только получить таблицу из базы-1, которую мы проанализируем в базе-2.

Собственно, это все. Всем добра! :)

С пользой для клиентов, Рустем

 
 См. также
  1. Анализ прав и ролей. Поиск подходящего профиля - алгоритмический анализ и поиск
  2. Оцифровка и визуализация склада - программная прорисовка склада
  3. Удаление документов для любых баз на управляемых формах
  4. Удаление справочников для любых баз на управляемых и обычных формах
  5. Перенумерация документов и справочников - с учетом префиксов номеров
  6. Свертка базы УТ 10.3 подокументно - новая концепция 
  7. Матричное программирование - демо-стенд матричного калькулятора
  8. Справочное хранение товаров в КА 2.5 - кейс запуска адресного склада
  9. Мини-обзор разных задач - от очевидного до неочевидного
  10. Поиск отчета по документам - пример анализа незнакомых конфигураций
  11. Флажок в динамическом списке - от теории до практики "как бы простой" задачи
  12. Из Json в ДеревоЗначений - удобный просмотрщик json-структуры
  13. Внедрение адресного склада в КА 2.5 - кейс запуска адресного склада
  14. Фрилансеру: про цены, про клиентов, про планирование - мое исследование
  15. Что такое форматированный документ - прекрасная возможность раскрасить любой текст
  16. Программная работа с упаковками в КА 2.5 - примеры адаптаций механизмов упаковок в КА 2.5
  17. Универсальное сравнение регистров накопления - связь по измерениям, сравнение по ресурсам
  18. Обход объекта рекурсивно - просмотр реквизитов документа с бесконечным открытием подуровней

 

См. также

Регламентированный учет и отчетность Анализ учета Бюджетный учет Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Управленческий учет Платные (руб)

Расширение «Отчет ГОЗ» для 1С:Бухгалтерия 3.0 ПРОФ и КОРП позволяет автоматизировать ведение раздельного учета и подготовку отчетности для Торговых и Производственных организаций, участвующих в ГосОборонЗаказе. Эффективный инструмент ведения раздельного учета по гособоронзаказам для Торговых и Производственных компаний

108900 руб.

20.02.2024    2983    6    1    

7

Анализ учета Закрытие периода Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Налог на прибыль НДС Платные (руб)

Каждый бухгалтер не раз сталкивался с требованием от налоговой инспекции пояснить расхождения в показателях декларации по Налогу на прибыль («Доходы от реализации» + «Внереализационные доходы») и налоговой базой по НДС за год. Являются ли ошибкой подобные расхождения? Как пояснить налоговой их причину? Отчет «Анализ расхождений выручки НДС и Налога на прибыль в декларациях» для 1С (БП 3.0 ПРОФ и КОРП, КА 2, ЕRP) поможет найти все расхождения.

8500 руб.

21.10.2017    91025    369    173    

319

Анализ учета Бухгалтер Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Расширение автоматически анализирует управленческий учёт 1С:УНФ, помогает находить и исправлять ошибки, а также проверять те места, которые хорошо бы проверить. Разработка для тех, кто хочет построить управленческий финансовый учет в УНФ.

15000 руб.

28.07.2022    10416    13    25    

31

Работа с интерфейсом Анализ учета Мониторинг Платформа 1С v8.3 8.3.14 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью подсистемы "Инфоборды". Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Подсистема реализована в форме расширения 1С.

27.03.2025    1167    3    developer118    7    

8

Регламентированный учет и отчетность Анализ учета Бизнес-аналитик Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Инструмент "Расширенная экспресс-проверка" можно использовать в дополнение к типовой проверке, он ответит на вопросы, всё ли у вас хорошо в учёте и готовы ли вы к сдаче отчётности

12500 руб.

19.11.2024    450    1    0    

3

SALE! 15%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Анализ учета Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная обработка позволит Вам легко и просто, а главное - быстро, выполнить сравнение данных между ЛЮБЫМИ базами (и РИБ, по правилам конвертаций) по контрольным суммам выбранных объектов баз 1С, работающих на платформах 8.3 и выше. Удобный и понятный интерфейс в виде "мастера". Высокая скорость сравнения достигается за счет специального алгоритма расчета контрольной суммы объекта/записи и сравнения по данным суммам объектов 2х баз через файл. Имеется возможность выбора реквизитов, по которым система будет сравнивать объекты. Сравнение количества записей в движениях документов, возможность сравнивать данные по правилам конвертации и не только! Выбор объектов конфигурации для КАЖДОГО узла в отдельности с индивидуальным отбором для каждого объекта конфигурации, работа с FTP, сохранение или загрузка настроек, сохранение или загрузка результата сравнения, регистрация на обмен объекта и его движений. (Обновление от 12.11.2024, версия 2.2-2.5)

19200 16320 руб.

27.10.2017    43126    30    13    

48

Менеджеры внешних отчетов Анализ учета Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Платные (руб)

Расширение «Контрольные отчеты» для автоматизации процесса проверки ведения учета в ПП. Со списком ошибок могут работать ответственные пользователи. Помогает в процессе внедрения ПП находить нарушения в бизнес-процессах. 

12000 руб.

08.08.2023    2485    4    1    

7

Анализ учета Анализ продаж Бизнес-аналитик Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

ABC-анализ — метод, позволяющий классифицировать ресурсы фирмы по степени их важности. Отличный отчет для анализа выручки и продаж! Может применяться в сфере деятельности любого предприятия. В его основе лежит принцип Парето — 20% усилий обеспечивают 80% результата.

6000 руб.

26.06.2022    13169    19    7    

24
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Nikola23 707 07.05.20 09:11 Сейчас в теме
ОМГ! COM соединение в 2020 году. Я не говорю, что технология плохая, но неужели вас утраивает скорость?
А если соединение зависнет намертво?

http сервисы - вот что я выбираю.
3. RustIG 1881 07.05.20 09:29 Сейчас в теме
(1) скорость в представленных задачах - быстрая - неуловимая я бы сказал - один раз получаем таблицу с данными, далее можно сразу отключать Ком-соединение (сделать равным Неопределено). Далее работа с данными происходит внутри одной базы - сравниваем элементы.
По сравнению с http-запросами - время на развертывание минимально.
Я предлагаю использовать ком-подключение только для разовых операций - НЕ ДЛЯ ОБРАБОТКИ данных онлайн, НЕ ДЛЯ ПЕРИОДИЧЕСКИХ ОБМЕНОВ.
Тут задачи узкоспециализированные, которые встречаются или раз в жизни компании, или за редким исключением сверить остатки.
Но соглашусь с тем, что если надо периодически сравнивать остатки для баз (как в моем примере №1), тогда надо продумывать http-запросы. В этом случае базы можно разнести по разным локальным сетям, по разным серверам. По поводу скорости нет статистики. Зато информации на Инфостарт много.
7. Nikola23 707 07.05.20 13:14 Сейчас в теме
(3) Сравниваете построчно?
А если таблица остатков 100000 строки и вторая таблица такая же?

Вы ищите конкретное расхождение или только факт, что все ок/не ок?
8. RustIG 1881 07.05.20 14:50 Сейчас в теме
(7) листинг кода есть в публикации.
не понял, что значит построчно и не построчно сравнивать?
конечно, есть разница когда 100 тыс или 40 тыс позиций в таблице - ждать приходится разное
кол-во секунд.
Плюс логику надо закладывать - к примеру в обороте за последний год может быть 10 тыс. позиций, а в таблице номенклатуры за все годы работы накопилось 70 тыс.Тогда и сравнивать надо только 10 тыс. Это отсекается алгоритмами.
По ситуации надо решать задачи - я во всех своих публикациях придерживаюсь этой мысли - универсально тут нельзя рассуждать. Согласен, что если не приемлемо долго происходит сравнение названий, то надо придумывать дополнительные механизмы - к примеру, сохранение и восстановление значений таблиц - использовать типовые стандартные механизмы формы, чтобы при повторном открытии форм снова и снова не запускать сравнение.
ДА и к тому, это сравнение всегда "на убывание" - пользователь всегда должен корректировать расхождения и уменьшать их количество, а не накапливать их.
9. RustIG 1881 07.05.20 14:56 Сейчас в теме
(7) развернуть механизм ком-сравнения занимает 5 минут. копируете один листинг в одну базу в общий модуль, второй листинг во внешнюю обработку в модуль формы, накидываете кнопки и тестируете подключение и сравнение номенклатуры, контрагентов, кол-во.
Я аккумулировал небольшой свой опыт работы на трех разных проектах, о которых описал, плюс четвертый опыт использовал мой коллега для предварительной подготовки баз БП 3.0 и УТ 11 перед настройкой обмена УТ-БП.

Я считаю это удачное решение - я вижу развитие этого механизма - хотел бы увидеть - в использовании расширений - тогда не придется снимать с поддержки конфигруацию. В типовых конфигурациях очень много общих модулей с признаком "Внешнее соединение". Можно ли их расширить, добавив свои процедуры для механизма ком-сравнения?
10. Nikola23 707 07.05.20 15:09 Сейчас в теме
(9) точно так же и с сервисами. Копируете расширение (фреймворк) и работаете.
Платформонезависимо, без глюков.

Так, например, на майских праздниках я решал задачу "выявить и устранить расхождения сс-ти в ERP". Где кто-то взял и испортил все с 17го года.

Вероятно и COM дал бы результат, но за какое время? Тут нельзя взять и после запроса отключиться)

Сотни миллионов строк движений регистров проверялось.
Если раходится, сразу же запрашивались детальные данные и движение восстанавливалось.
11. RustIG 1881 07.05.20 15:11 Сейчас в теме
(10) я хотел бы познать ваши методы , искренне говорю.
12. Nikola23 707 07.05.20 15:39 Сейчас в теме
(11) статья уже готовится) Что бы не пропустить - добавляйтесь в друзья. Инфостарт пришлет уведомление.
2. Nikola23 707 07.05.20 09:12 Сейчас в теме
Плюсую за монетизацию в конце статьи. Как удалось договориться с модератором?)
Если ответ длинный, напишите в личку, пожалуйста.
4. RustIG 1881 07.05.20 09:30 Сейчас в теме
(2) Задал вопрос в техподдержку, получил ответ, что запрещено для получения оплаты за свои обработки, а за донаты не запрещено.
5. dsdred 3882 07.05.20 09:37 Сейчас в теме
Для таких вещей использую OData
Разворачивать не трудно, хоть у себя на локалке опубликовал и пользуйся.
6. RustIG 1881 07.05.20 10:20 Сейчас в теме
(5) да, отличное замечание! были наработки по ком, поделился, дополнением стало то, что при написании статьи систематизировал свои знания.
13. igslepenko 16 25.01.24 11:56 Сейчас в теме
Добрый день, натолкнулся на эту публикацию, очень заинтересовала, но, почему-то, не отображаются листинги, как их посмотреть, ознакомиться с ними?
14. RustIG 1881 26.06.24 16:36 Сейчас в теме
(13)
Добрый день, натолкнулся на эту публикацию, очень заинтересовала, но, почему-то, не отображаются листинги, как их посмотреть, ознакомиться с ними?


обновил - смотрите
15. Светлый ум 455 10.12.24 05:27 Сейчас в теме
Оставьте свое сообщение