Простейшее получение Вида документа по ИД
Аккуратнее с однотипными группировками в SQL
Как узнать является ли строка числом?
Сохранение настроек множественного фильтра
Scaner1C.dll. Компонента не загружена
Как узнать размер картинки и размер файла в 1с 7.7?
Запуск 1С в терминальном режиме. Как запустить проводник, как показать рабочий стол?
Создание документов по OLE (ОЛЕ) - "Неизвестная ошибка"
При переносе в другую группу справочника записать элемент (Объект заблокирован)
Неудачная попытка создания объекта
Как удалить 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С. А хочется передать файл какой-то себе по почте, полазить по папкам
Если не помогает 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" (версия ...)
Переустановка криптопровайдера из старого комплекта поставки ничего не даст.
Как получить ссылку на перечисление по метаданным? <в начало>
Как вариант: использование внешней компоненты 1cpp.dll. Загружаем ее и создаем объект.
ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "1cpp.dll"); Meta = СоздатьОбъект("MetaDataWork");
Далее, используя вид перечисления и идентификатор, получаем представление объекта в базе данных.
А затем преобразуем строку в ссылку на объект.
ИД = Meta.ОбрМетаСКЛ("$Перечисление." + ВидПеречисления + "." + Идентификатор); Ссылка = Meta.ЗначениеИзСтрокиБД("Перечисление." + ВидПеречисления, СтрЗаменить(ИД,"'",""));
Продолжение следует...