1С: Сброс пароля администратора в файловой БД

Рассматриваю вариант под ОС Linux. В некотором смысле это получается даже проще чем под Windows — не нужно искать никаких дополнительных утилит типа редактора HEX- всё уже есть «базе»

1) Открываем на просмотр в mc файл 1Cv8.1CD

2) Переходим в режим просмотра HEX — F4.

3) Ищем в режиме поиска в шестнадцатеричном формате сочетание 00 09 00 75 00 73

4) Заменяем 00 09 на 01 09, сохраняем изменения

5) Ищем 56 38 55 53 45 52 53 4D , заменяем 56 на 48

6) Открываем утилиту chdbfl из папки /opt/1cv8/x86_64/8.3.25.1445 (у вас папка другая конечно), и восстанавливаем базу.

После чего запускаем конфигуратор и входим без пароля

1С: Поиск элемента справочника с одинаковыми кодами.

1С позволяет создавать элементы справочника (да и документа) с одинаковыми кодами (номерами), в этом случае поиск элемента по типичному:

 справочники.ГруппыПользователей.НайтиПоКоду("123");

Становится невозможным. Есть несколько вариантов решения данной проблемы:

1) Можно поискать по заведомо уникальному реквизиту (если есть):

 справочники.ГруппыПользователей.НайтиПоРеквизиту("Артикул","123");

2) Можно поискать по уникальному идентификатору (если известен):

доко.ТекущийЭтап=Справочники.itilprofЭтапыМаршрутов.ПолучитьСсылку(Новый УникальныйИдентификатор("149e1ab6-325f-11ec-9560-005056be733d"));

3) Можно поискать по сочетанию факторов, которые сделают элемент уникальным (в данном случае по владельцу):

ТекДок.ТекущийЭтап			= справочники.itilprofЭтапыМаршрутов.НайтиПоКоду("Регистрация",,,Справочники.itilprofМаршруты.НайтиПоНаименованию("Инцидент"));

1С: Явное указание даты в запросе

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

И ДатаЗапуска='2025.07.16 12:13:14'

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

справа="ДатаВремя("+Формат(Год(справа),"ЧГ=0")+","+Месяц(справа)+","+День(справа)+")";	
....
sql=sql+"и ДатаЗапуска>"+справа

1С: Длина имени файла превысила 8 символов

При работе с файлами dbf, может возникать такая ошибка, если для генерации временного файла используется стандартная конструкция вида:

ПолучитьИмяВременногоФайла(".dbf")

И по слухам это не ошибка 1С, а особенность работы с файлами DBF — в самом формате файла не предусмотрен размер файла более 8 символов. Поэтому функцию «ПолучитьИмяВременногоФайла», можно заменить следующей конструкцией:

ИмяВременногоФайлаХар = КаталогВременныхФайлов()+Лев(Новый УникальныйИдентификатор(),8)+".dbf";

Ну и далее работать как-то так:

		Таблица = Новый XBase;     		
     	        Таблица.ОткрытьФайл(ИмяВременногоФайлаХар);
		Таблица.Первая();    
		Пока Не Таблица.ВКонце() Цикл
                  Если Не Таблица.ЗаписьУдалена() Тогда
		    Сообщить(Таблица.ACCOUNT);
                  конецесли;
                  Таблица.Следующая();
                конеццикла;	
	       Таблица.ЗакрытьФайл();

1с: Открытие формы для выбора дополнительных параметров из обработки

Задача: открыть дополнительную форму и обработать выбор параметра.

Решение: сделаем эту задачу, используя «оповещения». А именно откроем форму, а при завершении выбора параметров, создадим оповещение для основной формы в котором обработаем что собственно было выбрано на дополнительной форме.

Основная форма:

&НаКлиенте
Процедура ПоменятьИсполнителя(Команда)
	П = Новый Структура("НовыйИсполнительОграничения",объект.НовыйИсполнительОграничения);	
	ОткрытьФорму("ВнешняяОбработка.МастерРаспределенияЗаявкоНаОтключение.Форма.ФормаВыбораИсполнителя",П,ЭтотОбъект,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры   


&НаКлиенте
 Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    Если ИмяСобытия = "ВыбранНовыйИсполнитель" Тогда
        объект.НовыйИсполнительОграничения=Параметр;
    КонецЕсли;
 КонецПроцедуры

Дополнительная форма:


&НаКлиенте
Процедура ВыбратьИЗакрыть(Команда)
	ПараметрВызова = объект.НовыйИсполнительОграничения;
	ФормаИсточник = "ВнешняяОбработка.МастерРаспределенияЗаявкоНаОтключение.Форма.Форма";
	Оповестить("ВыбранНовыйИсполнитель",ПараметрВызова,ФормаИсточник);
	Закрыть();
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	объект.НовыйИсполнительОграничения=Параметры["НовыйИсполнительОграничения"];
КонецПроцедуры
Дополнительная форма в обработке
1 2 3 4 5 37