Обновление наименований ключей аналитики

29.07.22

Задачи пользователя - Адаптация типовых решений

Зачастую работая в базе несколько лет, у контрагентов изначальные наименования приводятся к корректным, синхронизируясь с ЕГРЮЛ, или же у договора меняется имя на корректное. Но программистам / аналитикам или консультантам приходится видеть ключи аналитики со старыми наименованиями. Для этого есть такая маленькая обработка, обновляющая наименования ключей аналитики.

Файлы

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

Наименование Скачано Купить файл
Обновление наименований ключей аналитки. :
.epf 8,96Kb
27 2 500 руб. Купить

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

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

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

Зачастую работая в базе несколько лет, у контрагентов изначальные наименования приводятся к корректным, синхронизируясь с ЕГРЮЛ, или же у договора меняется имя на корректное. Или же вы объединяли дубли разных контрагентов, анализируя проводки документов, вам выводится именно ключ аналитики, это может сбивать вас с толку. Программистам / аналитикам или консультантам приходится видеть ключи аналитики со старыми наименованиями. Для этого есть такая маленькая обработка, обновляющая наименования ключей аналитики. 

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

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

Обработка будет работать на ERP 2.4.ххх и ERP 2.5.7 - 2.5.8 гарантированно, имена процедур генерации имени оставлены оригинальные, так что даже при использовании поздней версии (когда ее выпустят) можно будет за пару минут модернизировать код.

Код:


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

Функция ПолучитьПолноеНаименованиеКлючаАналитики_АналитикаУчетаНоменклатуры(МенеджерЗаписи)

	Возврат СокрЛП(МенеджерЗаписи.Номенклатура) + "; " 
		+ ?(ЗначениеЗаполнено(МенеджерЗаписи.Характеристика), СокрЛП(МенеджерЗаписи.Характеристика) + "; ", "")
		+ ?(ЗначениеЗаполнено(МенеджерЗаписи.Серия), СокрЛП(МенеджерЗаписи.Серия) + "; ", "")
		+ ?(ЗначениеЗаполнено(МенеджерЗаписи.Назначение), СокрЛП(МенеджерЗаписи.Назначение) + "; ", "")
		+ ?(ЗначениеЗаполнено(МенеджерЗаписи.СтатьяКалькуляции), СокрЛП(МенеджерЗаписи.СтатьяКалькуляции) + "; ", "")
		+ СокрЛП(МенеджерЗаписи.МестоХранения);

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

Функция НаименованиеКлючаАналитики_АналитикаУчетаПартий(СтруктураРеквизитовКлюча)
	
	Наименование = "";
		
	Если ЗначениеЗаполнено(СтруктураРеквизитовКлюча.ГруппаФинансовогоУчета) Тогда
		Наименование = Наименование + НСтр("ru = 'Группа';
											|en = 'Group'") + ": " + СтруктураРеквизитовКлюча.ГруппаФинансовогоУчета + "; ";
	КонецЕсли;
	
	Если ЗначениеЗаполнено(СтруктураРеквизитовКлюча.Поставщик) Тогда
		Наименование = Наименование + НСтр("ru = 'Поставщик';
											|en = 'Vendor'") + ": " + СтруктураРеквизитовКлюча.Поставщик + "; ";
	КонецЕсли;
	
	Если ЗначениеЗаполнено(СтруктураРеквизитовКлюча.Контрагент) Тогда
		Наименование = Наименование + НСтр("ru = 'Контрагент';
											|en = 'Counterparty'") + ": " + СтруктураРеквизитовКлюча.Контрагент + "; ";
	КонецЕсли;
	
	Если ЗначениеЗаполнено(СтруктураРеквизитовКлюча.НалогообложениеНДС) Тогда
		Наименование = Наименование + НСтр("ru = 'Налогообложение НДС';
											|en = 'VAT taxation'") + ": " + СтруктураРеквизитовКлюча.НалогообложениеНДС + "; ";
	КонецЕсли;
		
	Если ЗначениеЗаполнено(СтруктураРеквизитовКлюча.СтавкаНДС) Тогда
		Наименование = Наименование + НСтр("ru = 'Ставка НДС';
											|en = 'VAT rate'") + ": " + СтруктураРеквизитовКлюча.СтавкаНДС + "; ";
	КонецЕсли;  	
   		
	Если ЗначениеЗаполнено(СтруктураРеквизитовКлюча.ВидЦенности) Тогда
		Наименование = Наименование + НСтр("ru = 'Вид ценности';
											|en = 'Asset tax class'") + ": " + СтруктураРеквизитовКлюча.ВидЦенности + "; ";
	КонецЕсли;  	
	
	Если ЗначениеЗаполнено(СтруктураРеквизитовКлюча.КодСтроки) Тогда
		Наименование = Наименование + НСтр("ru = 'Код строки (продукция)';
											|en = 'Line code (manufactured products)'") + ": " + СтруктураРеквизитовКлюча.КодСтроки;
	КонецЕсли;
	
	Наименование = СокрЛП(Наименование);
	
	Если Прав(Наименование, 1) = ";" Тогда
		Наименование = СокрЛП(Сред(Наименование, 1, СтрДлина(Наименование) - 1));
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(Наименование) Тогда
		Наименование = "<>";
	КонецЕсли;
	
	Возврат Наименование;
	
КонецФункции
	
Функция ПолучитьПолноеНаименованиеКлючаАналитики_АналитикаУчетаНаборов(МенеджерЗаписи)

	Возврат СокрЛП(МенеджерЗаписи.НоменклатураНабора) + "; " 
		+ ?(ЗначениеЗаполнено(МенеджерЗаписи.ХарактеристикаНабора), СокрЛП(МенеджерЗаписи.ХарактеристикаНабора), "");

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

Чтобы было понимание, насколько это актуально, вот, например, из демоверсии ERP 2.5.8 часть результата выполнения обработки, видно, что было и что стало.

 

 

 

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

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

См. также

Адаптация типовых решений 1С:Предприятие 8 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

32330 руб.

29.06.2023    10892    33    15    

40

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

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

36600 руб.

28.08.2025    5358    2    2    

5

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

5084 руб.

07.02.2023    11636    111    20    

67

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

Расширение "Дополнительные документы" предназначено для создания дополнительных документов различного назначения, как форм для внесения данных так и печатных форм в расширяемой конфигурации пользовательскими средствами, без работы в конфигураторе и внесения изменений в структуру данных. Тестировалось для "1С:БП", "1С:УНФ","1С:КА"

21859 руб.

29.12.2025    523    1    6    

2

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

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

9760 руб.

17.06.2025    2518    6    0    

6

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Расширение для УНФ, чтобы автоматически отменять старые резервы и не мешалть эффективно продавать.

9150 руб.

02.08.2023    7342    24    5    

41

Адаптация типовых решений 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Расширение для вывода информации об остатках и ценах номенклатуры в форме списка и выбора номенклатуры. (УТ 11, КА 2, ERP). Позволяет получать информацию о ценах, остатках и доступности в разрезе складов и характеристик номенклатуры, информацию по документам резерва.

7930 руб.

16.10.2025    734    1    0    

1
Для отправки сообщения требуется регистрация/авторизация