Работа с приложением в языке 1С 8.3, 8.2 (в примерах)

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат

ОбщиеОбъекты Запросы ПрикладныеОбъекты УниверсальныеФункции

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

Оглавление (нажмите, чтобы раскрыть)

/// Как узнать имя текущего пользователя в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакУзнатьИмяТекущегоПользователя(Команда)
 
    Сообщить(ИмяПользователя()); // Администратор
 
КонецПроцедуры
 
/// Как получить или изменить заголовок окна приложения в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакПолучитьИлиИзменитьЗаголовокОкна(Команда)
 
    // заголовок в 1с состоит из двух частей: префикс (короткая часть)
    // и сам заголовок (длинная часть)
 
    Сообщить(
        ПолучитьКраткийЗаголовокПриложения()
    ); // обычно пустой
 
    Сообщить(
        ПолучитьЗаголовокКлиентскогоПриложения()
    ); // название конфигурации, например Бухгалтерия предприятия
 
    // сделаем такой заголовок - Ромашка.Бухгалтерия
    УстановитьКраткийЗаголовокПриложения("Ромашка");
    УстановитьЗаголовокКлиентскогоПриложения("Бухгалтерия");
 
КонецПроцедуры
 
/// Как узнать текущий вариант интерфейса в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакУзнатьТекущийВариантИнтерфейса(Команда)
 
    Сообщить(
        ТекущийВариантИнтерфейсаКлиентскогоПриложения()
    ); // например, Такси или Версия8_2
 
КонецПроцедуры
 
/// Как узнать текущий размер основного шрифта в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакУзнатьТекущийРазмерШрифта(Команда)
 
    Сообщить(
        ТекущийВариантОсновногоШрифтаКлиентскогоПриложения()
    ); // Крупный или Обычный
 
КонецПроцедуры
 
/// Как подключить или отключить обработчик ожидания
/// для управляемой формы в 1с 8.3, 8.2
 
&НаКлиенте
Процедура РаботаСОбработчикамиОжиданияФормы(Команда)    
 
    // подключаем, чтобы процедура СкажиПривет
    // вызвалась через 3 секунды
    // процедура СкажиПривет определена чуть ниже
    ПодключитьОбработчикОжидания(
        "СкажиПривет", // имя процедуры
        3, // интервал в секундах
        Истина // однократный вызов
    );
 
    // тут же отключаем
    ОтключитьОбработчикОжидания("СкажиПривет");
 
КонецПроцедуры
 
&НаКлиенте
Процедура СкажиПривет()
 
    Сообщить("Привет!");
 
КонецПроцедуры
 
/// Как подключить или отключить глобальный обработчик
/// оповещения в 1с 8.3, 8.2
 
&НаКлиенте
Процедура РаботаСГлобальнымиОбработчикамиОповещения(Команда)
 
    // подключаем экспортируемую процедуру глОбработкаОповещение,
    // которая определена в модуле управляемого приложения
    // также можно располагать её в одном из общих модулей
    ПодключитьОбработчикОповещения("глОбработкаОповещения");
 
    // тут же проводим тест
    Оповестить("Кошмар", "Монстр", Объект);
 
    // и отключаем этот обработчик оповещения
    ОтключитьОбработчикОповещения("глОбработкаОповещения");
 
КонецПроцедуры
 
/// Как узнать скорость клиентского соединения в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакУзнатьСкоростьСоединения(Команда)
 
    Сообщить(
        ПолучитьСкоростьКлиентскогоСоединения()
    ); // Низкая или Обычная
 
КонецПроцедуры
 
/// Как узнать текущий режим запуска в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакУзнатьТекущийРежимЗапуска(Команда)
 
    Сообщить(
        ТекущийРежимЗапуска()
    ); // Авто, ОбычноеПриложение или УправляемоеПриложение
    // Неопределено, если внешнее соединение
 
КонецПроцедуры
 
/// Как узнать строку соединения инормационной базы в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакУзнатьСтрокуСоединенияСБазой(Команда)
 
    // часто из неё можно вытащить полезную информацию
    Сообщить(
        СтрокаСоединенияИнформационнойБазы()
    ); // Например, File="D:\Bases\Пустая";
 
КонецПроцедуры
 
/// Как заблокировать работу пользователя в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакЗаблокироватьРаботуПользователя(Команда)
 
    ЗаблокироватьРаботуПользователя();
 
КонецПроцедуры
 
/// Как завершить работу системы (вызывая обработчики
/// закрытия) в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакЗавершитьРаботуСистемы(Команда)
 
    ЗавершитьРаботуСистемы(
        Истина, // запрашивать возможность
        Ложь, // (необ.) перезапустить после завершения
        "" // (необ.) дополнительные параметры, если делается перезапуск
    );
 
КонецПроцедуры
 
/// Как прекратить работу системы (не вызывая обработчики
/// закрытия) в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакПрекратитьРаботуСистемы(Команда)
 
    ПрекратитьРаботуСистемы(
        Ложь, // (необ.) перезапустить после завершения
        "" // (необ.) дополнительные параметры, если делается перезапуск
    );
 
КонецПроцедуры
 
/// Как запустить ещё один экземпляр 1С Предприятия в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакЗапуститьЕщёОдинЭкземпляр1С(Команда)
 
    // выдаст ошибку в учебной версии, так как
    // в ней нельзя запускать больше одного сеанса
 
    ЗапуститьСистему(
        "", // дополнительные параметры
        Истина // дождаться завершения запущенной системы для продолжения
    );
 
КонецПроцедуры
 
&НаКлиенте
Процедура РаботаСДатой(Команда)
    РаботаСДатойНаСервере();
КонецПроцедуры
 
&НаСервереБезКонтекста
Процедура РаботаСДатойНаСервере()
 
    /// Как узнать часовой пояс сеанса в 1с 8.3, 8.2
 
    Сообщить(
        ЧасовойПоясСеанса()
    ); // например, Australia/Brisbane
 
    /// Как узнать текущую дату сеанса в 1с 8.3, 8.2
 
    Сообщить(
        ТекущаяДатаСеанса()
    ); // например, 16.02.2017 10:32:59
 
КонецПроцедуры
 
&НаКлиенте
Процедура РаботаСПравамиИРолями(Команда)
    РаботаСПравамиИРолямиНаСервере();
КонецПроцедуры
 
&НаСервереБезКонтекста
Процедура РаботаСПравамиИРолямиНаСервере()
 
    /// Как узнать есть ли право у текущего пользователя
    /// применительно к объекту метаданных в 1с 8.3, 8.2
 
    // Какие могут быть права: Чтение, Изменение , Добавление,
    // Удаление, Проведение и т.д. (см. справку к функции
    // ПравоДоступа в конфигураторе)
 
    Если ПравоДоступа(
            "Чтение", Метаданные.Справочники.Контрагенты
    ) Тогда
        Сообщить("Доступ на чтение к данному справочнику открыт!");
    КонецЕсли;
 
    /// Как узнать включает ли определенная роль в себя
    /// определенное право применительно к объекту
    /// метаданных в 1с 8.3, 8.2
 
    Если Не ПравоДоступа(
        "Изменение", Метаданные.Справочники.Контрагенты,
        Метаданные.Роли.Администратор
    ) Тогда
        Сообщить("У роли Администратор нет прав на изменения справочника!");
    КонецЕсли;
 
    /// Как использовать функцию проверки прав для других пользователей
    /// в 1с 8.3, 8.2
 
    Пользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
 
    Для Каждого Пользователь Из Пользователи Цикл
 
        Если ПравоДоступа(
                "Чтение", Метаданные.Справочники.Контрагенты,
                Пользователь
        ) Тогда
            Сообщить("Доступ для " + Пользователь.Имя + " на чтение открыт!");
        КонецЕсли;
 
    КонецЦикла; 
 
    /// Как узнать включена ли определенная роль для
    /// текущего пользователя в 1с 8.3, 8.2
 
    Если РольДоступна("Администратор") Тогда
        Сообщить("Приветствую тебя, Администратор!");
    КонецЕсли;    
 
    /// Как проверить право у пользователя и в случае
    /// его отсутствия вызвать исключение в 1с 8.3, 8.2
 
    ВыполнитьПроверкуПравДоступа(
        "Изменение",
        Метаданные.Справочники.Контрагенты
    ); // Вызовет исключение "Нарушение прав доступа!"
 
КонецПроцедуры
 
&НаКлиенте
Процедура КакУзнатьПолноеИмяПользователя(Команда)
    КакУзнатьПолноеИмяПользователяНаСервере();
КонецПроцедуры
 
/// Как узнать полное имя пользователя в 1с 8.3, 8.2
 
&НаСервереБезКонтекста
Процедура КакУзнатьПолноеИмяПользователяНаСервере()
 
    Сообщить(
        ПолноеИмяПользователя()
    );
 
КонецПроцедуры
 
&НаКлиенте
Процедура РаботаСНастройкамиПользователей(Команда)
    РаботаСНастройкамиПользователейНаСервере();
КонецПроцедуры
 
&НаСервереБезКонтекста
Процедура РаботаСНастройкамиПользователейНаСервере()
 
    /// Как сохранить произвольные настройки пользователя
    /// в 1с 8.3, 8.2
 
    // сохраним в настройках имя и фамилию    
    Настройки = Новый Структура;
    Настройки.Вставить("Имя", "Владимир");
    Настройки.Вставить("Фамилия", "Милькин");
    Настройки.Вставить("Возраст", 31);
 
    ХранилищеОбщихНастроек.Сохранить(
        "Обработка.ТестированиеКода", // ключ объекта
        "Автор", // ключ настроек
        Настройки,
        , // описание настроек
        ИмяПользователя() // владелец настроек,
        // если опустить, то настройки сохранятся
        // для текущего пользователя
    );
 
    /// Как сохранить произвольные настройки для всех пользователей
    /// в 1с 8.3, 8.2
 
    Пользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
 
    Для Каждого Пользователь Из Пользователи Цикл
 
        ХранилищеОбщихНастроек.Сохранить(
            "Обработка.ТестированиеКода", // ключ объекта
            "Автор", // ключ настроек
            Настройки,
            , // описание настроек
            Пользователь.Имя // владелец настроек
        );
 
    КонецЦикла;    
 
    /// Как прочитать сохраненные настройки пользователя
    /// в 1с 8.3, 8.2
 
    // восстанавливаем сохраненные настройки
 
    ВосстановленныеНастройки = Неопределено;
    Попытка
        ВосстановленныеНастройки = 
            ХранилищеОбщихНастроек.Загрузить(
                "Обработка.ТестированиеКода", // ключ объекта
                "Автор", // ключ настроек
                , // описание настроек
                ИмяПользователя() // владелец настроек, если
                // опустить, то настройки прочитаются
                // для текущего пользователя
            );
        // если настроек нет, то будет возвращено значение "Неопределено"
    Исключение
        Сообщить("Что-то пошло не так..., возможно не хватает прав.");
    КонецПопытки;
 
    Если ВосстановленныеНастройки = Неопределено Тогда
        Сообщить("Не получилось прочитать настройки.");
    Иначе
        Сообщить(ВосстановленныеНастройки.Имя);
        Сообщить(ВосстановленныеНастройки.Фамилия);
        Сообщить(ВосстановленныеНастройки.Возраст);
    КонецЕсли;
 
    /// Как удалить сохраненные настройки пользователя в 1с 8.3, 8.2
 
    ХранилищеОбщихНастроек.Удалить(
        "Обработка.ТестированиеКода", // ключ объекта
        "Автор", // ключ настроек
        ИмяПользователя() // владелец настроек, пропускать нельзя
        // если указать Неопределено, то настрйка
        // удалиться у всех пользователей
    );
 
    /// Как удалить сохраненные настройки у всех пользователей в 1с 8.3, 8.2
 
    ХранилищеОбщихНастроек.Удалить(
        "Обработка.ТестированиеКода", // ключ объекта
        "Автор", // ключ настроек
        Неопределено // владелец настроек, пропускать нельзя
    );
 
КонецПроцедуры
 
/// Скачать и выполнить эти примеры на компьютере

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

Работа с приложением в языке 1С 8.3, 8.2 (в примерах)

Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат

ОбщиеОбъекты Запросы ПрикладныеОбъекты УниверсальныеФункции

С уважением, (школа 1С программистов).



Владимир Милькин
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться: