Конференция для 1С специалистов "&На1С" в Краснодаре. Запись секции "Разработка"
00:00 Начало
00:04:51 Открытие конференции
00:17:44 Пётр Грибанов
"Обзор новинок платформы"
00:52:13 Антон Дорошкевич
"1С на Linux и Postgres" как это сейчас работает и что не работает?"
01:38:18 Перерыв на кофе брейк
02:03:14 Николай Толстошеев
"Расширения в жизни отдела разработки in-house и в команде проекта"
02:45:02 Валентина Петрова
"Как методология влияет на разработку в ЗУП"
03:17:00 Дмитрий Шевалдин
"EDT: опыт консерватора"
03:51:40 Перерыв на обед
05:32:13 Ольга Бурангулова
"Как мы подсистему сертификации в ERP внедряли"
05:50:45 Эльдар Мингалиев
"Использование платформы 1С для разработки сайтов"
06:29:57 Перерыв на кофе брейк
07:22:00 Павел Мельников
"Внутренние механизмы платформы, разбираем работу платформы на уровне СУБД"
07:48:56 Владимир Сатаров
"Как спроектировать структуру регистра сведений?"
https://www.youtube.com/watch?v=-jQtpOoz5oU
👉@DevLab1C
00:00 Начало
00:04:51 Открытие конференции
00:17:44 Пётр Грибанов
"Обзор новинок платформы"
00:52:13 Антон Дорошкевич
"1С на Linux и Postgres" как это сейчас работает и что не работает?"
01:38:18 Перерыв на кофе брейк
02:03:14 Николай Толстошеев
"Расширения в жизни отдела разработки in-house и в команде проекта"
02:45:02 Валентина Петрова
"Как методология влияет на разработку в ЗУП"
03:17:00 Дмитрий Шевалдин
"EDT: опыт консерватора"
03:51:40 Перерыв на обед
05:32:13 Ольга Бурангулова
"Как мы подсистему сертификации в ERP внедряли"
05:50:45 Эльдар Мингалиев
"Использование платформы 1С для разработки сайтов"
06:29:57 Перерыв на кофе брейк
07:22:00 Павел Мельников
"Внутренние механизмы платформы, разбираем работу платформы на уровне СУБД"
07:48:56 Владимир Сатаров
"Как спроектировать структуру регистра сведений?"
https://www.youtube.com/watch?v=-jQtpOoz5oU
👉@DevLab1C
Определить это Linux или Windows
👉@DevLab1C
СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоLinux = СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86 ИЛИ СистемнаяИнформация.ТипПлатформы.Linux_x86_64;
👉@DevLab1C
👍3
Media is too big
VIEW IN TELEGRAM
Индикатор прогресса в 1С (Прогресс-бар)
В этом видео мы покажем, как легко и быстро реализовать индикатор прогресса (прогресс-бар) в 1С. Вы узнаете, как сделать интерфейс 1С более дружелюбным для пользователей, визуализировать выполнение длительных операций и избежать ощущения «зависшей» программы.
источник
👉@DevLab1C
В этом видео мы покажем, как легко и быстро реализовать индикатор прогресса (прогресс-бар) в 1С. Вы узнаете, как сделать интерфейс 1С более дружелюбным для пользователей, визуализировать выполнение длительных операций и избежать ощущения «зависшей» программы.
источник
👉@DevLab1C
👍3
Фильтрация таблицы значений
👉@DevLab1C
С помощью построителя запросов
// ТаблицаОтборов - Таблица значений с колонками
// ИмяОтбора - Строка
// ВидСравнения - ВидСравнения
// Значение - Any
// Возвращает отфильтрованную таблицу значений
Функция ОтфильтроватьТаблицуЗначений(ТаблицаЗначенийДляФильтрации, ТаблицаОтборов)
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаЗначенийДляФильтрации);
Для Каждого СтрокаКоллекции Из ТаблицаОтборов Цикл
Отбор = Построитель.Отбор.Добавить(СтрокаКоллекции.ИмяОтбора);
Отбор.ВидСравнения = СтрокаКоллекции.ВидСравнения;
Отбор.Использование = Истина;
Отбор.Значение = СтрокаКоллекции.Значение;
КонецЦикла;
Возврат Построитель.Результат.Выгрузить();
КонецФункции
👉@DevLab1C
👍3
В Конфигураторе, между редактором формы и текстом модуля, можно быстро переключаться без помощи мыши
Для управляемых форм
Для обычных форм
👉@DevLab1C
Для управляемых форм
Alt+1
(форма) и Alt+2
(модуль).Для обычных форм
Ctrl+PageDown
и Ctrl+PageUp
вперед и назад по вкладкам.👉@DevLab1C
👍1
Восстановить положение окна программно
👉@DevLab1C
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
ЭтаФорма.ИмяСохраненияПоложенияОкна = Новый УникальныйИдентификатор();
КонецПроцедуры
👉@DevLab1C
Быстрый поиск по фразе в коде (CTRL+F3)
Если в коде нужно быстро найти какую-то фразу, можно выделить её и нажать CTRL + F3, тогда она автоматически подставится в поле поиска сверху и нажатием F3 можно будет переходить по всем местам этой фразы в коде.
Таким образом мы экономим время на копирование фразы (кстати, фразу можно быстро выделить, зажав CTRL и щелкнув внутри фразы), а также на перемещение мышью и вставку этого текста в поле поиска.
👉@DevLab1C
Если в коде нужно быстро найти какую-то фразу, можно выделить её и нажать CTRL + F3, тогда она автоматически подставится в поле поиска сверху и нажатием F3 можно будет переходить по всем местам этой фразы в коде.
Таким образом мы экономим время на копирование фразы (кстати, фразу можно быстро выделить, зажав CTRL и щелкнув внутри фразы), а также на перемещение мышью и вставку этого текста в поле поиска.
👉@DevLab1C
👍1
Как разрешить выбирать в поле на форме номенклатуру только типа «Комплект» (или другое условие)
Рассмотрим на примере документа «Изменение состава комплекта» из сертификационного экзамена 1С: Специалист по платформе. У него есть реквизит «Комплект» с типом «Номенклатура». Нужно сделать так чтобы в этом поле пользователь мог выбирать номенклатуру только с видом номенклатуры «Комплект».
Для этого нужно у этого реквизита в свойствах указать Параметры выбора
Таким образом больше не нужно ничего писать в коде для гарантии того что пользователь сможет выбирать только комплекты.
👉@DevLab1C
Рассмотрим на примере документа «Изменение состава комплекта» из сертификационного экзамена 1С: Специалист по платформе. У него есть реквизит «Комплект» с типом «Номенклатура». Нужно сделать так чтобы в этом поле пользователь мог выбирать номенклатуру только с видом номенклатуры «Комплект».
Для этого нужно у этого реквизита в свойствах указать Параметры выбора
Отбор.ВидНоменклатуры(Комплект):
Таким образом больше не нужно ничего писать в коде для гарантии того что пользователь сможет выбирать только комплекты.
👉@DevLab1C
Как быстро поменять название процедуры, назначенной на событие
Бывает так что имя процедуры слишком длинное или оно устарело. А чтобы его поменять – нужно изменить и название процедуры в коде и исправить её название в обработчике события.
Для быстрого изменения же следует делать это в поле с именем процедуры в событии. При изменении 1С предложит поменять имя процедуры:
И при нажатии «Да» имя процедуры изменится и в коде. Таким образом можно быстро выполнять рефакторинг.
👉@DevLab1C
Бывает так что имя процедуры слишком длинное или оно устарело. А чтобы его поменять – нужно изменить и название процедуры в коде и исправить её название в обработчике события.
Для быстрого изменения же следует делать это в поле с именем процедуры в событии. При изменении 1С предложит поменять имя процедуры:
И при нажатии «Да» имя процедуры изменится и в коде. Таким образом можно быстро выполнять рефакторинг.
👉@DevLab1C
👍1
Глюки платформы. Почему нельзя добавить команду «Перейти» к нужному регистру
Если на форме документа нельзя добавить команду "Перейти" - "Остатки номенклатуры" или любого другого регистра, то нужно открыть свойства нужного регистра и снять-поставить галку "Использовать стандартные команды". Это глюк платформы.
👉@DevLab1C
Если на форме документа нельзя добавить команду "Перейти" - "Остатки номенклатуры" или любого другого регистра, то нужно открыть свойства нужного регистра и снять-поставить галку "Использовать стандартные команды". Это глюк платформы.
👉@DevLab1C
Отладка под определенным пользователем
Чтобы запускать 1С в режиме отладки из конфигуратора от имени другого пользователя, можно задать нужного пользователя в параметрах конфигуратора (меню Сервис – Параметры) на вкладке "Запуск 1С: Предприятия":
👉@DevLab1C
Чтобы запускать 1С в режиме отладки из конфигуратора от имени другого пользователя, можно задать нужного пользователя в параметрах конфигуратора (меню Сервис – Параметры) на вкладке "Запуск 1С: Предприятия":
👉@DevLab1C
👍2
Архивирование файлов средствами 1C (ZIP)
Код 1C v 8.х
👉@DevLab1C
Код 1C v 8.х
ИмяZIPФайла = ПолучитьИмяВременногоФайла(".zip");
ФайлАрхива = Новый ЗаписьZipФайла(ИмяZIPФайла, , ,
МетодСжатияZIP.Сжатие,
УровеньСжатияZIP.Оптимальный);
ФайлАрхива.Добавить(ИмяВременногоФайла,
РежимСохраненияПутейZIP.СохранятьОтносительныеПути,
РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
ФайлАрхива.Записать();
👉@DevLab1C
Как быстро сохранить огромный отчет в EXCEL?
Иногда бывает так, что отчет очень большой (> 65535 строк), а работать с этим всем нужно через EXCEL - 1С такой отчет в xls не сохранит. Да и отчеты с меньшим количеством строк сохраняются в xls-файл очень долго.
Приведенная здесь небольшая хитрость поможет Вам сохранять для EXCEL таблицы с бОльшим количество строк и делать это быстрее.
Выведите отчет, идем в меню Файл-Сохранить копию и выбираем тип "Документ HTML4". Файл сохранится быстрее, чем в xls, и его корректно откроет EXCEL.
Потом можно в EXCEL пересохранить в xls или xlsx.
👉@DevLab1C
Иногда бывает так, что отчет очень большой (> 65535 строк), а работать с этим всем нужно через EXCEL - 1С такой отчет в xls не сохранит. Да и отчеты с меньшим количеством строк сохраняются в xls-файл очень долго.
Приведенная здесь небольшая хитрость поможет Вам сохранять для EXCEL таблицы с бОльшим количество строк и делать это быстрее.
Выведите отчет, идем в меню Файл-Сохранить копию и выбираем тип "Документ HTML4". Файл сохранится быстрее, чем в xls, и его корректно откроет EXCEL.
Потом можно в EXCEL пересохранить в xls или xlsx.
👉@DevLab1C
Media is too big
VIEW IN TELEGRAM
Универсальные коллекции значений 1С
Ильяс Низамутдинов
Урок №1. Массивы
Урок №2. Структура
Урок №3. Соответствие
Урок №4. Список значений
Урок №5. Таблица значений
Урок №6. Дерево значений
Урок №7.Бинарный поиск по таблице значений 1С
Все видео на youtube
👉@DevLab1C
Ильяс Низамутдинов
Урок №1. Массивы
Урок №2. Структура
Урок №3. Соответствие
Урок №4. Список значений
Урок №5. Таблица значений
Урок №6. Дерево значений
Урок №7.Бинарный поиск по таблице значений 1С
Все видео на youtube
👉@DevLab1C
👍2🔥1
Media is too big
VIEW IN TELEGRAM
Ускорение и оптимизация 1С. Базовый курс (2022)
5 примеров ошибок в коде, которые приводят к замедлению работы 1С
Почему документ с одной строкой проводится 7,5 секунд
Как исправить ошибку при запуске после внедрения подсистемы Оценка производительности из БСП
Как ускорить процесс реструктуризации и обновления 1С в разы
3 принципа работы блокировок, о которых стоит знать каждому программисту 1С
Как «поймать» медленные запросы
Все видео на youtube
👉@DevLab1C
5 примеров ошибок в коде, которые приводят к замедлению работы 1С
Почему документ с одной строкой проводится 7,5 секунд
Как исправить ошибку при запуске после внедрения подсистемы Оценка производительности из БСП
Как ускорить процесс реструктуризации и обновления 1С в разы
3 принципа работы блокировок, о которых стоит знать каждому программисту 1С
Как «поймать» медленные запросы
Все видео на youtube
👉@DevLab1C
👍1🔥1
Получить каталог Мои документы в 1С 8.3
Представленная функция универсальная и рекомендуется к использованию на любой версии платформы. Также существуют и штатные методы платформы который также можно использовать для решения данной задачи.
👉@DevLab1C
&НаСервере
Функция ПолучитьКаталогМоиДокументы()
МояОбработка = ЭтотОбъект.Метаданные().ПолноеИмя();
КаталогMyDocuments = ХранилищеНастроекДанныхФорм.Загрузить(МояОбработка, "КаталогСохранения");
Если ПустаяСтрока(КаталогMyDocuments) Тогда // не заполнен
WScript = Новый COMОбъект("WScript.Shell");
КаталогMyDocuments = WScript.SpecialFolders().Item("MyDocuments");
WScript = Неопределено;
КонецЕсли;
Возврат КаталогMyDocuments;
КонецФункции
Представленная функция универсальная и рекомендуется к использованию на любой версии платформы. Также существуют и штатные методы платформы который также можно использовать для решения данной задачи.
👉@DevLab1C
👍1
Создать, удалить пользователя, вывести список пользователей в 1С 8.3
👉@DevLab1C
Процедура СоздатьПользователя()
ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
ПользовательИБ.Имя = "odin1Crus";
ПользовательИБ.Пароль = "4dSwer4";
ПользовательИБ.ПоказыватьВСпискеВыбора = Истина;
ПользовательИБ.Роли.Добавить(Метаданные.Роли.АдминистраторСистемы);
ПользовательИБ.ОсновнойИнтерфейс = Метаданные.Интерфейсы.Основной;
ПользовательИБ.Записать();
КонецПроцедуры
Процедура УдалитьПользователя()
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени("odin1Crus");
ПользовательИБ.Удалить();
//ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
//ПользовательИБ.Удалить();
КонецПроцедуры
Процедура ВывестиСписокПользователей()
СписокПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого ПользовательИБ Из СписокПользователей Цикл
Сообщить(ПользовательИБ);
КонецЦикла;
КонецПроцедуры
👉@DevLab1C
🔥3👍1
Чтение и проверка прав и ролей пользователей в 1С 8.3
👉@DevLab1C
&НаСервере
Процедура ЧтениеИПроверкаПравИРолейПользователей() // Варианты прав: Чтение, Изменение, Добавление, Удаление, Проведение
// Чтение права к объекту метаданных у текущего пользователя
Если ПравоДоступа("Изменение", Метаданные.Справочники.Материалы) Тогда
Сообщить("Доступ к справочнику Материалы на изменение открыт!");
КонецЕсли;
// Чтение права к объекту метаданных у определенной роли
Если Не ПравоДоступа("Удаление", Метаданные.Справочники.Материалы, Метаданные.Роли.Менеджер) Тогда
Сообщить("У роли Менеджер нет прав на удаление в справочнике Материалы!");
КонецЕсли;
// Проверка права к объекту метаданных у других пользователей
ВсеПользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого Пользователь Из ВсеПользователи Цикл
Если ПравоДоступа("Изменение", Метаданные.Справочники.Материалы, Пользователь) Тогда
Сообщить("Доступ для " + Пользователь.Имя + " на изменение открыт!");
КонецЕсли;
КонецЦикла;
// Чтение роли у текущего пользователя
Если РольДоступна("Администратор") Тогда
Сообщить("У Вас права Администратора!");
КонецЕсли;
// Проверка права у пользователя и в случае его отсутствия - вызов исключения
ВыполнитьПроверкуПравДоступа("Изменение", Метаданные.Справочники.Материалы); // "Нарушение прав доступа!"
КонецПроцедуры
👉@DevLab1C
👍3🔥1
Сохранение, чтение и удаление настроек пользователя в 1С 8.3
👉@DevLab1C
&НаСервере
Процедура СохранениеЧтениеУдалениеНастроекПользователя()
// Сохранение произвольных настроек конкретного пользователя
НастройкиПользователя = Новый Структура;
НастройкиПользователя.Вставить("Фамилия", "Дарк");
НастройкиПользователя.Вставить("Имя", "Жанна");
НастройкиПользователя.Вставить("Пол", "Ж");
НастройкиПользователя.Вставить("Возраст", 19);
// Параметры: Ключ объекта, Ключ настроек, Настройки, Описание настроек, Владелец настроек,
ХранилищеОбщихНастроек.Сохранить("Отчет.ОСВ", "КлючНастроек", НастройкиПользователя, ,ИмяПользователя());
// Сохранение произвольных настроек для всех пользователей
ВсеПользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого Пользователь Из ВсеПользователи Цикл
ХранилищеОбщихНастроек.Сохранить("Отчет.ОСВ", "КлючНастроек", НастройкиПользователя, ,Пользователь.Имя);
КонецЦикла;
// Чтение сохраненных настроек пользователя
ЧтениеНастроек = Неопределено;
Попытка
ЧтениеНастроек = ХранилищеОбщихНастроек.Загрузить("Отчет.ОСВ", "КлючНастроек",,ИмяПользователя());
Исключение
Сообщить("Не достаточно прав доступа к настройкам пользователя: "+ИмяПользователя());
КонецПопытки;
Если ЧтениеНастроек = Неопределено Тогда // Значит настроек нет
Сообщить("Не получилось прочитать настройки.");
Иначе // Чтение настроек
Сообщить("Имя:"+ЧтениеНастроек.Имя+"; Фамилия:"+ЧтениеНастроек.Фамилия+
"; Пол:"+ЧтениеНастроек.Пол+"; Возраст:"+ЧтениеНастроек.Возраст);
КонецЕсли;
// Удаление сохраненных настроек пользователя
ХранилищеОбщихНастроек.Удалить("Отчет.ОСВ", "КлючНастроек", ИмяПользователя());
// Удаление сохраненных настроек у всех пользователей
ХранилищеОбщихНастроек.Удалить("Отчет.ОСВ", "КлючНастроек", Неопределено);
КонецПроцедуры
👉@DevLab1C
👍3🔥2