21 января 2022 г.

1СОшибка Для объекта метаданных "Документ.ЗаявкаНаРасходованиеСредств" не найден идентификатор в справочнике "Идентификаторы объектов метаданных"

В справочнике ИдентификаторыОбъектовМетаданных некоторые элементы имеют знаки вопроса в реквизитах и помечены на удаление. Может выскакивать ошибка "{ОбщийМодуль.ОбщегоНазначения.Модуль(2646)}: Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных(). Для объекта метаданных "Документ.ЗаявкаНаРасходованиеСредств" не найден идентификатор в справочнике "Идентификаторы объектов метаданных"."

Рекомендации простые:

  1. открыть через меню "Все функции" справочник "Идентификаторы объектов метаданных", нажать кнопку "Обновить данные справочника"; 
  2. если указанной кнопки нет - выполнить программный код: Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(); 
  3. либо запустить программу с параметром командной строки 1С:Предприятия 8 "/С ЗапуститьОбновлениеИнформационнойБазы"; 
  4. либо увеличить номер версии конфигурации, чтобы при очередном запуске выполнились процедуры обновления данных информационной базы.
На УНФ не прокатило, пришлось садится и разбираться. В итоге пришел к решению - удалить помеченные элементы справочника ИдентификаторыОбъектовМетаданных, но для этого нужно разорвать связи. Кстати удаление возможно только через Стандартные=>Удаление помеченных.

10 января 2022 г.

1СЗапрос Выбрать дубли по основному полю

Изначально в справочнике не должно было быть повторений по двум реквизитам, ни вместе, ни по отдельности, но при случайно проверке были выявлены события когда два элемента имеют одинаковый Реквизит1 и различный Реквизит2, для выявления такого казуса можно использовать запрос, в котором соединяем справочник на себя где Реквизит1=Реквизит, а Реквизит2<>Реквизит2/ Вроде все, но нет, т.к. выдача будет двойной, а т.к. нам не важно какой элемент будет выбран, то добавляем еще одно сравнение - Ссылка>Ссылка. Прошу обратить внимание, данное решение работает только на одном дубле, если их больше, то ситуация будет другой.


ВЫБРАТЬ

	Участники.НомерКарты КАК НомерКарты,

	Участники.НомерТелефона КАК НомерТелефона,

	Участники1.НомерТелефона КАК НомерТелефона1

ИЗ

	Справочник.Участники КАК Участники

		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Участники КАК Участники1

		ПО Участники.НомерКарты = Участники1.НомерКарты

			И Участники.НомерТелефона <> Участники1.НомерТелефона

			И Участники.Ссылка > Участники1.Ссылка

УПОРЯДОЧИТЬ ПО

	НомерКарты


22 декабря 2021 г.

Notepad++ поменять местами колонки

 Если массив данных поддается одной логике, то процесс можно автоматизировать.

Задача стояла простая - есть 65К+ строк, "Имя;'номерТелефона;'НомерКарты", нужно представить данные так - "НомерКарты Имя". Это можно сделать при помощи Excel/Calc и прочих табличных программ, но на ПК кроме Notepad++ больше ничего нету. А Notepad++ поддерживает регулярные выражения.

В качестве поля поиска выступит: "(\w+);'(\w+);'(\w+)", т.к. нам известен шаблон, мы т.о. получим массив размерностью в три элемента и заменим его на нужные нам: "\3 \1", вот и все. За 15 сек программа решит задачу:

Данные до

Данные после

Обращаем внимание что "\w" - это не все до следующего разделителя ";", а "слово" с точкой запятой в конце. В моем случае почти на всех строках шаблон был именно такой, если же до точки запятой появится делитель, то схема не сработает.

1СОшибка УНФ не сохраняет начальный экран

Завел себе УНФ и не стал заморачиваться с предварительной настройкой, а просто синхронизировал с БП. Убрал начальную страницу настройки в разделе "Настройка начальной страницы", настроил панели под себя... И какого же было мое удивление, когда перезапустив базу я увидел начальную страницу О_О

Подумал может кэш, т.к. галки "завершить настройку" на странице нету. Оказалось - нет, кэш тут не при чем. Пошел копать дальше. Наткнулся на константу "Дата первого запуска", заполнена не была, установка проблему не решила. Полез разбираться, откуда идет вызов, в итоге нашел ОбщиеМодули.ИнформацияПРиЗапуске.ГлобальныеНастройки(). Здесь как раз идет опрос различных частей и устанавливается признак отображения страницы. Почитав код, нашел это:


Если Настройки.Показывать Тогда
	УстановитьПривилегированныйРежим(Истина);
	ЗаписьРегистра = РегистрыСведений.ПакетыИнформацииПриЗапуске.Получить(Новый Структура("Номер", 0));
	ПакетыСтраниц = ЗаписьРегистра.Состав.Получить();
	УстановитьПривилегированныйРежим(Ложь);
	Если ПакетыСтраниц = Неопределено Тогда
		Настройки.Показывать = Ложь;
	Иначе
		Информация = ПодготовитьПакетыСтраницКВыводу(ПакетыСтраниц, НачалоДня(ТекущаяДатаСеанса()));
		Если Информация.ПодготовленныеПакеты.Количество() = 0
			Или Информация.МинимальныйПриоритет = 100 Тогда
			Настройки.Показывать = Ложь;
		КонецЕсли;
	КонецЕсли;
КонецЕсли;

  

Открыл регистр "Пакеты информации при запуске", там только 1с запись со значением "0", установил отличное и получил значение Настройки.Показывать равным Ложь. Проверил - теперь открывается мой внешний вид.

5 декабря 2021 г.

[Microsoft][ODBC Text Driver] The Microsoft Access database engine could not find

Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC Text Driver] The Microsoft Access database engine could not find the object 'FA_BTL_DAILY_REPORT 02_12.decode.CSV'. Make sure the object exists and that you spell its name and the path name correctly. If 'FA_BTL_DAILY_REPORT 02_12.decode.CSV' is not a local object, check your network connection or contact the server administrator.

21 ноября 2021 г.

1С Нумерация в запросе (УФ)

На платформе 8.3 появилась давно возможность нумерации строк прямо в запросе, все хорошо, но нумерация идет от 1, а мне нужно было от нуля. Решение оказалось банальным, равно как и сортировка записей во временной таблице:

1С Выделить дробную часть

Функция Дроб(Число)
ДробнаяЧасть=Число-Цел(Число);
Возврат(ДробнаяЧасть)
КонецФункции;