Универсальный поиск и замена дублирующихся элементов справочников (управляемое и обычное приложение) с учетом общих реквизитов

26.06.14

Задачи пользователя - Поиск данных

Короче, обработка взята в http://infostart.ru/public/204468/ Добавлена замена в общих реквизитах справочников и документов. Выкладываю, ибо может кому нужно будет срочно. В описании есть код, который можно вставить в исходную обработку. З.Ы. Для всех, кто скажет, что поиск и замену можно использовать типовую, в обычном приложении: если у вас есть подписки, методы которых лежат в модулях, в которых запрещен вызов сервера - у вас скорее всего возникнет необходимость использовать обработку в управляемом приложении.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Поиск и замена дублирующихся элементов с учетом общих реквизитов
.epf 34,73Kb ver:1.0
239 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Возникла необходимость удалить дубли в справочнике. Взял обработку //infostart.ru/public/204468/


Однако, в конфигурации есть общие реквизиты, в которых так же нужно произвести замену. Пришлось добавить в код небольшие изменения: в процедуре, по сути, изменена одна процедура. Вот ее код. Может, кому пригодится.

 

&НаСервере
Функция ВыполнитьЗаменуЭлементовНаСервере(ПравильныйЭлемент, МассивСсылокПоиска = Неопределено)

Если МассивСсылокПоиска = Неопределено Тогда
ТаблицаСсылок = Неопределено;
ВыполнитьПоискСсылок(Ложь, ТаблицаСсылок);
Иначе
ТаблицаСсылок = НайтиПоСсылкам(МассивСсылокПоиска);
КонецЕсли;

БылиИсключения = Ложь;
Если ВыполнятьВТранзакции Тогда
НачатьТранзакцию();
КонецЕсли;
ОбрабатываемаяСсылка = Неопределено;

ПараметрыЗамены = Новый Структура;

Для Каждого РегистрБухгалтерии ИЗ Метаданные.РегистрыБухгалтерии Цикл
ПараметрыЗамены.Вставить(РегистрБухгалтерии.Имя+"Субконто", РегистрБухгалтерии.ПланСчетов.МаксКоличествоСубконто);
ПараметрыЗамены.Вставить(РегистрБухгалтерии.Имя+"Корреспонденция", РегистрБухгалтерии.Корреспонденция); 
КонецЦикла;

ПараметрыЗамены.Вставить("Объект", Неопределено); 

//Поймем, какие общие реквизиты подходят по типу и сделаем из них массив
ОбщиеРеквизиты = Новый Массив;

Для Инд = 0 По Метаданные.ОбщиеРеквизиты.Количество() - 1 Цикл 

Если Не Метаданные.ОбщиеРеквизиты[Инд].Тип.СодержитТип(ТипЗнч(ПравильныйЭлемент)) Тогда 

Продолжить;
КонецЕсли;

ОбщиеРеквизиты.Добавить(Метаданные.ОбщиеРеквизиты[Инд]);
КонецЦикла;
//

Для Каждого СтрокаТаблицы Из ТаблицаСсылок Цикл

Ссылка = СтрокаТаблицы.Ссылка;

Если ОбрабатываемаяСсылка <> СтрокаТаблицы.Данные Тогда
Если ОбрабатываемаяСсылка <> Неопределено и ПараметрыЗамены.Объект <> Неопределено Тогда

Если ОтключатьКонтрольЗаписи Тогда
ПараметрыЗамены.Объект.ОбменДанными.Загрузка = Истина;
КонецЕсли;

Попытка
ПараметрыЗамены.Объект.Записать();
Исключение
БылиИсключения = Истина;
Если ВыполнятьВТранзакции Тогда
Возврат ВыполнитьОткат();
КонецЕсли;
КонецПопытки;
ПараметрыЗамены.Объект = Неопределено;
КонецЕсли;
ОбрабатываемаяСсылка = СтрокаТаблицы.Данные;

КонецЕсли;


Если Метаданные.Документы.Содержит(СтрокаТаблицы.Метаданные) Тогда

Если ПараметрыЗамены.Объект = Неопределено Тогда
ПараметрыЗамены.Объект = СтрокаТаблицы.Данные.ПолучитьОбъект();
КонецЕсли;

Для Каждого Реквизит Из СтрокаТаблицы.Метаданные.Реквизиты Цикл
Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) И ПараметрыЗамены.Объект[Реквизит.Имя] = Ссылка Тогда
ПараметрыЗамены.Объект[Реквизит.Имя] = ПравильныйЭлемент;
КонецЕсли;
КонецЦикла;

//Поймем, нужно ли менять значение в общем реквизите
Для Инд = 0 По ОбщиеРеквизиты.Количество() - 1 Цикл 
ОРеквизит = ОбщиеРеквизиты[Инд];
ЭлементСостава = ОРеквизит.Состав.Найти(СтрокаТаблицы.Данные.Метаданные());
Если Не ЭлементСостава = Неопределено И ЭлементСостава.Использование = Метаданные.СвойстваОбъектов.ИспользованиеОбщегоРеквизита.Использовать Тогда 
ПараметрыЗамены.Объект[ОРеквизит.Имя] = ПравильныйЭлемент;
КонецЕсли;
КонецЦикла;

Для Каждого ТЧ ИЗ СтрокаТаблицы.Метаданные.ТабличныеЧасти Цикл
Для Каждого Реквизит Из ТЧ.Реквизиты Цикл
Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда
СтрокаТабЧасти = ПараметрыЗамены.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);
Пока СтрокаТабЧасти <> Неопределено Цикл
СтрокаТабЧасти[Реквизит.Имя] = ПравильныйЭлемент;
СтрокаТабЧасти = ПараметрыЗамены.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЦикла;

Для Каждого Движение ИЗ СтрокаТаблицы.Метаданные.Движения Цикл

ЭтоДвижениеРегистраБухгалтерии = Метаданные.РегистрыБухгалтерии.Содержит(Движение);
ЕстьКорреспонденция = ЭтоДвижениеРегистраБухгалтерии и ПараметрыЗамены[Движение.Имя + "Корреспонденция"];

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

СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, Измерение.Имя);
Пока СтрокаТабЧасти <> Неопределено Цикл
СтрокаТабЧасти[Измерение.Имя] = ПравильныйЭлемент;
НадоЗаписывать = Истина;
СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, Измерение.Имя);
КонецЦикла;
КонецЕсли;
КонецЕсли; 
КонецЦикла;

Если Метаданные.РегистрыСведений.Содержит(Движение) Тогда
Для Каждого Ресурс ИЗ Движение.Ресурсы Цикл
Если Ресурс.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда
СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, Ресурс.Имя);
Пока СтрокаТабЧасти <> Неопределено Цикл
СтрокаТабЧасти[Ресурс.Имя] = ПравильныйЭлемент;
НадоЗаписывать = Истина;
СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, Ресурс.Имя);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;

Для Каждого Реквизит ИЗ Движение.Реквизиты Цикл
Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда
СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, Реквизит.Имя);
Пока СтрокаТабЧасти <> Неопределено Цикл
СтрокаТабЧасти[Реквизит.Имя] = ПравильныйЭлемент;
НадоЗаписывать = Истина;
СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, Реквизит.Имя);
КонецЦикла;
КонецЕсли;
КонецЦикла;

Если Метаданные.РегистрыБухгалтерии.Содержит(Движение) Тогда

Для ИндексСубконто = 1 по ПараметрыЗамены[Движение.Имя + "Субконто"] Цикл
Если ЕстьКорреспонденция Тогда
СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "СубконтоДт"+ИндексСубконто);
Пока СтрокаТабЧасти <> Неопределено Цикл
СтрокаТабЧасти["СубконтоДт"+ИндексСубконто] = ПравильныйЭлемент;
НадоЗаписывать = Истина;
СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "СубконтоДт"+ИндексСубконто);
КонецЦикла;
СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "СубконтоКт"+ИндексСубконто);
Пока СтрокаТабЧасти <> Неопределено Цикл
СтрокаТабЧасти["СубконтоКт"+ИндексСубконто] = ПравильныйЭлемент;
НадоЗаписывать = Истина;
СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "СубконтоКт"+ИндексСубконто);
КонецЦикла; 
Иначе 
СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "Субконто"+ИндексСубконто);
Пока СтрокаТабЧасти <> Неопределено Цикл
СтрокаТабЧасти["Субконто"+ИндексСубконто] = ПравильныйЭлемент;
НадоЗаписывать = Истина;
СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "Субконто"+ИндексСубконто);
КонецЦикла; 
КонецЕсли; 
КонецЦикла; 
КонецЕсли;


Если НадоЗаписывать Тогда
НаборЗаписей.Загрузить(ТаблицаНабора);
Если ОтключатьКонтрольЗаписи Тогда
НаборЗаписей.ОбменДанными.Загрузка = Истина;
КонецЕсли;
Попытка
НаборЗаписей.Записать();
Исключение
БылиИсключения = Истина;
Если ВыполнятьВТранзакции Тогда
Возврат ВыполнитьОткат();
КонецЕсли;
КонецПопытки;
КонецЕсли;
КонецЦикла;


Для Каждого Последовательность ИЗ Метаданные.Последовательности Цикл
Если Последовательность.Документы.Содержит(СтрокаТаблицы.Метаданные) Тогда
НадоЗаписывать = Ложь;
НаборЗаписи = Последовательности[Последовательность.Имя].СоздатьНаборЗаписей();
НаборЗаписи.Отбор.Регистратор.Установить(СтрокаТаблицы.Данные);
НаборЗаписи.Прочитать();

Для Каждого Измерение ИЗ Последовательность.Измерения Цикл
Если Измерение.Тип.СодержитТип(ТипЗнч(Ссылка)) И НаборЗаписи[0][Измерение.Имя]=Ссылка Тогда
НаборЗаписи[0][Измерение.Имя] = ПравильныйЭлемент;
НадоЗаписывать = Истина;
КонецЕсли;
КонецЦикла; 
Если НадоЗаписывать Тогда
Если ОтключатьКонтрольЗаписи Тогда
НаборЗаписи.ОбменДанными.Загрузка = Истина;
КонецЕсли;
Попытка
НаборЗаписи.Записать();
Исключение
БылиИсключения = Истина;
Если ВыполнятьВТранзакции Тогда
Возврат ВыполнитьОткат();
КонецЕсли;
КонецПопытки;
КонецЕсли;
КонецЕсли;
КонецЦикла;



ИначеЕсли Метаданные.Справочники.Содержит(СтрокаТаблицы.Метаданные) Тогда

Если ПараметрыЗамены.Объект = Неопределено Тогда
ПараметрыЗамены.Объект = СтрокаТаблицы.Данные.ПолучитьОбъект();
КонецЕсли;

Если СтрокаТаблицы.Метаданные.Владельцы.Содержит(Ссылка.Метаданные()) И ПараметрыЗамены.Объект.Владелец = Ссылка Тогда
ПараметрыЗамены.Объект.Владелец = ПравильныйЭлемент;
КонецЕсли;

Если СтрокаТаблицы.Метаданные.Иерархический И ПараметрыЗамены.Объект.Родитель = Ссылка Тогда
ПараметрыЗамены.Объект.Родитель = ПравильныйЭлемент;
КонецЕсли;

Для Каждого Реквизит Из СтрокаТаблицы.Метаданные.Реквизиты Цикл
Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) И ПараметрыЗамены.Объект[Реквизит.Имя] = Ссылка Тогда
ПараметрыЗамены.Объект[Реквизит.Имя] = ПравильныйЭлемент;
КонецЕсли;
КонецЦикла;

//Поймем, нужно ли менять значение в общем реквизите
Для Инд = 0 По ОбщиеРеквизиты.Количество() - 1 Цикл 
ОРеквизит = ОбщиеРеквизиты[Инд];
ЭлементСостава = ОРеквизит.Состав.Найти(СтрокаТаблицы.Данные.Метаданные());
Если Не ЭлементСостава = Неопределено И ЭлементСостава.Использование = Метаданные.СвойстваОбъектов.ИспользованиеОбщегоРеквизита.Использовать Тогда 
ПараметрыЗамены.Объект[ОРеквизит.Имя] = ПравильныйЭлемент;
КонецЕсли;
КонецЦикла;

Для Каждого ТЧ ИЗ СтрокаТаблицы.Метаданные.ТабличныеЧасти Цикл
Для Каждого Реквизит Из ТЧ.Реквизиты Цикл
Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда
СтрокаТабЧасти = ПараметрыЗамены.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);
Пока СтрокаТабЧасти <> Неопределено Цикл
СтрокаТабЧасти[Реквизит.Имя] = ПравильныйЭлемент;
СтрокаТабЧасти = ПараметрыЗамены.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЦикла;

ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(СтрокаТаблицы.Метаданные)
ИЛИ Метаданные.ПланыСчетов.Содержит(СтрокаТаблицы.Метаданные)
ИЛИ Метаданные.ПланыВидовРасчета.Содержит(СтрокаТаблицы.Метаданные)
ИЛИ Метаданные.Задачи.Содержит(СтрокаТаблицы.Метаданные)
ИЛИ Метаданные.БизнесПроцессы.Содержит(СтрокаТаблицы.Метаданные) Тогда

Если ПараметрыЗамены.Объект = Неопределено Тогда
ПараметрыЗамены.Объект = СтрокаТаблицы.Данные.ПолучитьОбъект();
КонецЕсли;

Для Каждого Реквизит Из СтрокаТаблицы.Метаданные.Реквизиты Цикл
Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) И ПараметрыЗамены.Объект[Реквизит.Имя] = Ссылка Тогда
ПараметрыЗамены.Объект[Реквизит.Имя] = ПравильныйЭлемент;
КонецЕсли;
КонецЦикла;

Для Каждого ТЧ ИЗ СтрокаТаблицы.Метаданные.ТабличныеЧасти Цикл
Для Каждого Реквизит Из ТЧ.Реквизиты Цикл
Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда
СтрокаТабЧасти = ПараметрыЗамены.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);
Пока СтрокаТабЧасти <> Неопределено Цикл
СтрокаТабЧасти[Реквизит.Имя] = ПравильныйЭлемент;
СтрокаТабЧасти = ПараметрыЗамены.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);
КонецЦикла; 
КонецЕсли;
КонецЦикла;
КонецЦикла; 

ИначеЕсли Метаданные.Константы.Содержит(СтрокаТаблицы.Метаданные) Тогда

Константы[СтрокаТаблицы.Метаданные.Имя].Установить(ПравильныйЭлемент);


ИначеЕсли Метаданные.РегистрыСведений.Содержит(СтрокаТаблицы.Метаданные) Тогда 

СтруктураИзмерений = Новый Структура;
НаборЗаписей = РегистрыСведений[СтрокаТаблицы.Метаданные.Имя].СоздатьНаборЗаписей();
Для Каждого Измерение ИЗ СтрокаТаблицы.Метаданные.Измерения Цикл
НаборЗаписей.Отбор[Измерение.Имя].Установить(СтрокаТаблицы.Данные[Измерение.Имя]);
СтруктураИзмерений.Вставить(Измерение.Имя);
КонецЦикла;
Если СтрокаТаблицы.Метаданные.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический Тогда
НаборЗаписей.Отбор["Период"].Установить(СтрокаТаблицы.Данные.Период);
КонецЕсли;
НаборЗаписей.Прочитать();
ТаблицаНабора = НаборЗаписей.Выгрузить();
НаборЗаписей.Очистить();

Если ОтключатьКонтрольЗаписи Тогда
НаборЗаписей.ОбменДанными.Загрузка = Истина;
КонецЕсли;


Если Не ВыполнятьВТранзакции Тогда
НачатьТранзакцию();
КонецЕсли;

Попытка

НаборЗаписей.Записать();

Для Каждого Колонка ИЗ ТаблицаНабора.Колонки Цикл
Если ТаблицаНабора[0][Колонка.Имя] = Ссылка Тогда
ТаблицаНабора[0][Колонка.Имя] = ПравильныйЭлемент;
Если СтруктураИзмерений.Свойство(Колонка.Имя) Тогда
НаборЗаписей.Отбор[Колонка.Имя].Установить(ПравильныйЭлемент);
КонецЕсли;

КонецЕсли;
КонецЦикла;

НаборЗаписей.Загрузить(ТаблицаНабора);

НаборЗаписей.Записать();

Если Не ВыполнятьВТранзакции Тогда
ЗафиксироватьТранзакцию();
КонецЕсли; 

Исключение

Если ВыполнятьВТранзакции Тогда
БылиИсключения = Истина;
Возврат ВыполнитьОткат();
Иначе
ОтменитьТранзакцию();
КонецЕсли;

КонецПопытки;

Иначе
Сообщить("Ссылки типа "+СтрокаТаблицы.Метаданные+" не заменяются!!");
КонецЕсли;
КонецЦикла;

Если ПараметрыЗамены.Объект <> Неопределено Тогда
Если ОтключатьКонтрольЗаписи Тогда
ПараметрыЗамены.Объект.ОбменДанными.Загрузка = Истина;
КонецЕсли;
Попытка
ПараметрыЗамены.Объект.Записать();
Исключение
БылиИсключения = Истина;
Если ВыполнятьВТранзакции Тогда
Возврат ВыполнитьОткат();
КонецЕсли;
КонецПопытки;
КонецЕсли;

Если ВыполнятьВТранзакции Тогда
Если БылиИсключения Тогда
ОтменитьТранзакцию();
Иначе
ЗафиксироватьТранзакцию();
КонецЕсли; 
КонецЕсли;
Возврат Не БылиИсключения;

КонецФункции

Вступайте в нашу телеграмм-группу Инфостарт

Удаление дубли общий реквизит

См. также

Информационная безопасность Поиск данных ServiceDesk, HelpDesk Журналы и реестры данных 1С 8.3 Россия Бухгалтерский учет Бюджетный учет Налоговый учет Управленческий учет Платные (руб)

Полный контроль над изменениями в 1С без нагрузки на вашу базу. Мгновенный доступ к истории изменений, удобное сравнение и откат данных в один клик. Простой отчет с визуальным отображением изменений Откат на любую версию объекта в два клика История изменения данных хранится во внешней базе

180000 руб.

05.09.2025    5450    2    1    

4

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5. Работает на возможностях платформы, внешние компоненты не используются.

6000 руб.

25.02.2026    5711    19    1    

21

Поиск данных Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 2 1С:Розница 3.0 Платные (руб)

Обработки помогут Вам легко и, главное, быстро (в 5 раз и быстрее штатной обработки 1С), выполнить поиск дублирующих данных в Ваших базах 1С на платформах 8.1-8.3. Это позволит уменьшить объем лишней информации в справочниках и документах, планах видов характеристик и др., упростит работу с данными пользователям. А так же можно, одним нажатием, узнать в каких ссылочных объектах есть вообще дубли! Понятное расположение команд и настроек, в сочетании с описанием и справкой, еще упростят процесс. А так же обновления Вы получаете бесплатно в течение года с момента приобретения данных обработок! (Обновление от 27.11.2023, версия 6.12)

13420 руб.

14.05.2012    172794    360    253    

591

Поиск данных Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта Стажер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 Беларусь Россия Казахстан Платные (руб)

Встройте искусственный интеллект прямо в вашу 1С за один вечер. «Цифровой сотрудник» - это чат с нейросетью внутри привычного интерфейса 1С, который умеет отвечать не «в общем», а по вашим данным: обучите его на регламентах, инструкциях и прайсах компании, подключите к данным информационной базы - и получите ассистента, который консультирует бухгалтера по учёту, отвечает менеджеру по прайсу и достаёт цифры из базы по запросу на обычном русском языке. Поддерживаются OpenAI, DeepSeek, Qwen и локальные LLM - включая вариант, когда данные вообще не покидают ваш контур.

3660 руб.

03.08.2026    877    1    0    

3

Поиск данных 1С:Управление торговлей 11 Россия Платные (руб)

Возможность по ИНН контрагента быстро найти Партнера с которым связан контрагент.

7015 руб.

11.09.2025    1188    1    0    

3

Учетные задачи Поиск данных Подбор и обработка объектов 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

1.обработка позволяет автоматически вычислить дубли и привести их к единому наименованию во всех документах. 2.так же есть возможность в документах поменять счета учета для номенклатуры. Например разные бухгалтера оформляют поступление одного и того же товара - один занес на 10.01, второй на 41.01 в результате в ОСВ у нас минусы. В обработке есть возможность наглядно увидеть такие ошибки и тут же их поправить не бегая по всем документам. Достаточно поставить галочку у номенклатуры и указать счет учета который надо найти и счет учета на который надо его заменить. Обработка сама вычислит документы в которых номенклатура с галочкой была задействована и заменит счета учета. Что бы не было излишнего изменения документов, в обработке указываются типы документов, где операция замены счета разрешена (например Поступление ТМЦ, Реализация, Отчет о розничных продажах, возврат покупателю итд.)

7320 руб.

05.06.2026    688    2    0    

4

Поиск данных Программист Пользователь 1С 8.3 1С:Библиотека стандартных подсистем Абонемент ($m)

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

1 стартмани

27.04.2026    1887    18    war41k    5    

16
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. pvb2003 05.02.15 00:41 Сейчас в теме
Проблемка - 8.3.5.1383 и БП 3.0.37.35
Попытка обработать задвоившийся справочник "Организации" выдает "Неверное имя колонки" ... как бороться?
2. AlgoritmS 06.04.15 13:00 Сейчас в теме
(1) такая же ошибка :(
3. Akuji 22 03.11.15 12:44 Сейчас в теме
По наименованию с учетом владельца как сделать замену?
Для отправки сообщения требуется регистрация/авторизация