Простейшее получение Вида документа по ИД 

Аккуратнее с однотипными группировками в SQL

Как найти битую ссылку?

Как узнать является ли строка числом?

Неудачная попытка создания объекта

Как удалить Search Protect (HpUI.exe)?

Программа была завершена аварийно. Выполнить переиндексацию? 

MercuryFPrt1C : System Error.  Code: 5. Отказано в доступе

Ошибка проверки сертификата. Avest. Электронное декларирование

 

Простейшее получение Вида документа по ИД

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

Вот так можно получить вид документа из IDDOCDEF (полностью штатно):
 

Стр = "{" +"""O"""+","+"""0"""+","+"""0"""+","+"""*"""+","+"""0"""+","+"""0"""+","+"""         0   """+"}"; 
Стр = СтрЗаменить(Стр, "*", Строка(Вид)); 
//Вид - это что-то вроде 3508, тот что в DD и DDS (десятичное число)
Вид = ЗначениеИзСтрокиВнутр(Стр).Вид(); //А вот это уже идентификатор :)
 

Аккуратнее с однотипными группировками в SQL    <в начало>

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

Вот пример для ТиС:

ЗначениеСвойства = Справочник.Контрагенты.ОсновноеСвойство.ЗначениеСвойства;
ЗначениеСвойства1 = Справочник.Контрагенты.ОсновноеСвойство1.ЗначениеСвойства;
Группировка ЗначениеСвойства;
Группировка ЗначениеСвойства1;

Вот просто отсебятина:

|Организация = Справочник.МестаХранения.Организация;
|Организация1 = Справочник.МестаХранения.Организация1;
|Группировка Организация;
|Группировка Организация1;

Тип реквизитов Организация и Организация1 - "Справочник.Контрагенты"

 

Как найти битую ссылку?    <в начало>

Это знакомое <Объект не найден>

А вот так можно, например:

Если (ПустоеЗначение(Док.Докум) = 0) и (Док.Докум.Выбран() = 0)  Тогда
    Сообщить("В документе " + Док + " есть битая ссылка");
КонецЕсли;

ЗЫ. Аккуратно с непосредственным удалением объектов

 

Как узнать является ли строка числом?    <в начало>

Примеры: "0004" - число, "440ф0" - не число, "43.045" - число, "-33" - число, "5453.54.4" - не число и т.п.
Есть некоторые специфические ситуации вроде "+1", с которыми эта функция не справится. Приспосабливайте.

Функция ЭтоЧисло(Знач ТекСтр)
    ТекСтр = СокрЛП(ТекСтр);
    ТекСтр = СтрЗаменить(ТекСтр,"0","9"); 

    Если (СтрДлина(Число(ТекСтр)) <> СтрДлина(ТекСтр)) 
    или ((СтрДлина(ТекСтр) = 1) и (Найти("0123456789",ТекСтр) = 0)) Тогда 
        Возврат 0;
    КонецЕсли;

    Возврат 1;
КонецФункции // ЭтоЧисло() 
 

Сохранение настроек множественного фильтра    <в начало>

В типовых отчетах (например, в ТиС) не сохраняются настройки МФ. Поправить это несложно. Ниже приведены коды двух процедур, которые нужно изменить для решения этой проблемы.

Процедура ВводНового()
    ПерерисовкаНазванийЗакладок();
    УправлениеДиалогом();
    ТаблицаМФ.ВыводитьПиктограммы("ФлВкл");

    //1с911.by, сохранение МФ
    ТекСтрокаВТаблице = "";
    //Конец сохранение МФ
КонецПроцедуры // ВводНового()
 
Процедура ОбработкаПодбора(Значение)
    Если (СписокЭлементовМФ.НайтиЗначение(Значение)=0) Тогда
        Представление=""+Значение;
        Если ТипЗначенияСтр(Значение)="Справочник" Тогда
            Если СокрЛП(Метаданные.Справочник(Значение.Вид()).Владелец) <> "Метаданные" Тогда
                Представление=Представление+" ("+Значение.Владелец+")";
            КонецЕсли; 
        КонецЕсли;
        СписокЭлементовМФ.ДобавитьЗначение(Значение,Представление);
        ТаблицаМФ.ФлВкл=2; 

        //1с911.by, сохранение МФ
        глПриСменеСтрокиТаблицыМФ(1,ТекСтрокаВТаблице,Контекст);
        //Конец сохранение МФ
    КонецЕсли; 
КонецПроцедуры // ОбработкаПодбора() 

 

Scaner1C.dll. Компонента не загружена    <в начало>

Установите атоловский драйвер (скачать можно на официальном сайте АТОЛа)

 

Как узнать размер картинки и размер файла в 1с 7.7?    <в начало>

Размер файла узнать очень просто. Используем штатную работу с файлами

РазмерФайла = 0;
ФС.АтрибутыФайла(глКаталогКартинок + ИмяФайла, РазмерФайла);
Сообщить(РазмерФайла);

Размер картинки (ширину и высоту) можно узнать при помощи ВК avk, автор romix

Скачать ее можно по ссылке.

Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "avk.dll") = 0 Тогда
    Сообщить("Внешняя компонента avk не загружена!", "!");
КонецЕсли;    
    
Попытка
    avk = СоздатьОбъект("Addin.avk");
Исключение 
    Сообщить("Не создан объект Addin.avk!", "!");
    Возврат 0; 
КонецПопытки;

avk.ПолучитьРазмерJPG(глКаталогКартинок + ИмяФайла);
ШиринаКартинки = avk.x;
ВысотаКартинки = avk.y;

 

Запуск 1С в терминальном режиме. Как запустить проводник, как показать рабочий стол?    <в начало>

Некоторые нехорошие люди дают доступ к серверу весьма ограниченный. Заходишь в терминал и сразу же запускается 1С. А хочется передать файл какой-то себе по почте, полазить по папкам wink

Что делать?

Если не помогает Ctrl+Alt+End, запуск диспетчера задач (в котором можно выбрать "New Task" и набрать Explorer.exe), то пробуем действовать так: в 1С: Предприятии выполняем Меню - Сервис - Табло. В табло набираем ЗапуститьПриложение("explorer") и нажимаем Ввод.

Также можно действовать через Меню - Файл - Открыть: кликаем правой кнопкой мыши на любой папке и выбираем Проводник или "Открыть в новом окне" (за этот совет спасибо посетителю сайта).

 

Создание документов по OLE (ОЛЕ) - "Неизвестная ошибка"    <в начало>

Поиском можно найти разные пути решения этой ошибки: долгое время выполнения операции, неправильные данные в реестре, ошибки в конструкциях языка и проч. Недавно столкнулся с такой ошибкой, когда переделывал чужую обработку. Ошибка возникала то на одном документе, то на другом. Мне помогло вот что: убрал загрузку внешних компонент и создание объектов типа "ODBCRecordSet" для служебного пользователя. Просто добавил код в ПриНачалеРаботыСистемы():

Если ИмяПользователя() = "Обмен" Тогда
    Возврат;
КонецЕсли;  

//тут идет загрузка ВК 

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

 

При переносе в другую группу справочника записать элемент (Объект заблокирован)    <в начало>

Как изменить реквизит элемента при переносе его в другую группу?

Добавляем запись родителя и статус возврата в код процедуры ПриПереносеЭлементаВДругуюГруппу()

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

 

Неудачная попытка создания объекта    <в начало>

Если такая ошибка возникает при попытке создания объекта, например:

СоздатьОбъект("Amber.Compound");
CreateObject("Svcsvc.Service");

и т. п., то нужно сделать следующее:  

  • Убедиться в том, что происходит загрузка соответсвующей внешней компоненты (если указана загрузка из каталога ИБ, то там она и должна находиться)
  • Зарегистрировать ее если это нужно. В Пуск - Выполнить набрать, например, такую строку regsvr32 G:\DB77_SQL\Base1C\svcsvc.dll и нажать Ввод.

 

Как удалить Search Protect (HpUI.exe)?    <в начало>

Что делать, если заметили изменение домашней страницы на Search Protect и странную иконку в панели управления?

Нажимаем "Настройка", чтобы посмотреть что это за иконка.

Видим что это программа HpUI.exe.

Возвращаем обратно адрес домашней страницы и беспощадным образом удаляем в реестре (выполняя regedit) все, что связано с файлом HpUi.exe. Пытаемся снять процесс - ничего не получается, процесс запускается другим процессом.

Перезагружаем компьютер, выбираем загрузку в безопасном режиме и удаляем папку SupTab в Program Files (там находится этот файл).

Удаляем также папку C:\Program Files (x86)\MySearch (в случае 64-битной Windows) вместе со всем содержимым. На нее я бы не обратил внимания, если бы не установил антивирус (были найдены вредоносные файлы w.dll и w.x64.dll). Удаляем из реестра ветки, содержащие MySearch.

Все, вроде победили...

 

Программа была завершена аварийно. Выполнить переиндексацию?    <в начало> 

Часто требуется, чтобы робот гарантированно отработал на файловой базе 1С 7.7. Как это организовать?

Очень просто, перед выполнением регламентного задания старта робота выполнить так же, по расписанию, батник (delcdx.bat), в котором написать:

Del D:\Base_1C\*.cdx

Далее запускать 1С в монопольном режиме, с ключом /m

 

MercuryFPrt1C : System Error.  Code: 5. Отказано в доступе    <в начало> 

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

 

Ошибка проверки сертификата. Avest. Электронное декларирование    <в начало> 

Скорее всего Вы используете Windows 10. После обновления системы необходимо переустановить криптопровайдер Авест. Для этого нужно зайти на Аvest.by, выбрать Криптографическое ПО, далее Криптопровайдер, далее "Скачать последнюю версию" - "AvCSPBel" (версия ...)

Переустановка криптопровайдера из старого комплекта поставки ничего не даст.

 

Продолжение следует...