1С:Предприятие 8
Відкрити в Telegram
🔥 Разработка в 1С — просто и понятно! 🔥 ✅ Полезные фишки и лайфхаки для разработчиков ✅ Объяснение сложных тем простыми словами ✅ Готовые решения, сниппеты и примеры кода ✅ Разбор ошибок и способов их устранения ✅ Новости и тренды в мире 1С
Показати більше879
Підписники
Немає даних24 години
+17 днів
-230 день
Архів дописів
Количество символов латиницы в искомой строке в 1С 8.3
Функция Получение_Количества_Символов_Латиницы(Знач СтрокаЛатиница) Экспорт
Найденные_Символы_Латиницы = Новый Массив;
СтрокаЛатиница = СокрЛП(СтрокаЛатиница);
СтрокаЛатиница = Нрег(СтрокаЛатиница);
ДлинаСтрокиЛатиницы = СтрДлина(СтрокаЛатиница);
Если ДлинаСтрокиЛатиницы > 0 Тогда
СимволыЛатиницы= "abcdefghijklmnopqrstuvxyz";
Для СЛ = 1 по ДлинаСтрокиЛатиницы Цикл
ТекСимвол = Сред(СтрокаЛатиница,СЛ,1);
Если Найденные_Символы_Латиницы.Найти(ТекСимвол) = Неопределено
и СтрНайти("abcdefghijklmnopqrstuvxyz",ТекСимвол) > 0 Тогда
Найденные_Символы_Латиницы.Добавить(ТекСимвол);
КонецЕсли;
КонецЦикла;
КонецЕсли;
//Возвращает количество найденных различных символов латиницы в строке 1С 8.3
Возврат Найденные_Символы_Латиницы.Количество();
КонецФункции
👉@DevLab1CАсинхронные функции
Обещание и Возвращающие Обещание в 1С 8.3
Процедура ВыполнениеПримераСАсих()
Попытка
ВыполнениеКода();
Исключение
// Исключение из ВыполнениеКода() не будет перехвачено здесь
КонецПопытки
КонецПроцедуры
Асинх Функция ВыполнениеКода() // Всегда возвращает Обещание
ВызватьИсключение "Выброшено в ВыполнениеКода()";
//При успешном завершении в Обещание будет завернуто значение, которое было аргументом оператора Возврат.
//Если при выполнении Асинх функции произошло исключение, то в Обещание будет завернуто это исключение.
КонецФункции
Обещание как аргумент оператора Ждать в 1С 8.3
Асинх Процедура ВыполнениеПримераСАсих()
Попытка
// Для того, чтобы узнать как завершилась Асинх функция – это использовать возвращенное ею Обещание как аргумент оператора Ждать.
Ждать ВыполнениеКода(Null);
Исключение
// Исключение из НеNull() будет перехвачено здесь
Сообщить("Передали Null");
КонецПопытки
КонецПроцедуры
Асинх Функция ВыполнениеКода(ПеремП) // Всегда возвращает Обещание
Если ПеремП = Null Тогда
ВызватьИсключение "Выброшено в ВыполнениеКода()";
Иначе
Возврат ПеремП;
КонецЕсли;
КонецФункции
// Асинх процедура не возвращает значения. А если при выполнении Асинх процедуры возникнет не перехваченное исключение,
// то это приведет к выдаче сообщения об ошибке.
👉@DevLab1CПеревод десятичного числа в шестнадцатеричное в 1С 8.3
&НаКлиенте
Функция Dec_to_Hex(Знач пDec)// пDec - десятичное число(Число)
Разрядность = 16;
стр16Число = "";
Пока пDec <> 0 Цикл
Поз =пDec % Разрядность;
стр16Число = Сред("0123456789ABCDEF", Поз + 1, 1) + стр16Число;
пDec = Цел(пDec / Разрядность);
КонецЦикла;
Возврат стр16Число; //Шестнадцатеричное число (Строка)
КонецФункции
👉@DevLab1C1C медленно работает по сети с базой на SQL Server
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL.
Перечислим неоптимальности в настройке:
1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. После установки, SQL пытается использовать для связи протокол "Named Pipes", который не обеспечивает быстрый обмен данными. Советуем изменить протокол по умолчанию на "TCP/IP". Изменить протоколы для связи с SQL сервером можно запустив утилиту SQL Server Configuration Manager. Обратите внимание - интересующие нас протоколы расположены в группе SQL Server network configuration. Протоколы из группы SQL native client configuration 1С не использует. Важно! Если программа 1С запускается на том же сервере, на котором запущен SQL-сервер,используйте для связи протокол "Shared Memory". Этот протокол обеспечит максимальную пропускную способность.
2) Включенные опции базы данных "Auto сreate statistics", "Auto update statistics". Данные опции разрешают SQL собирать статистику распределения данных в таблицах, обновляя статистику автоматическим образом. Отключите обе опции, т.к. создание и обновление статистики создает дополнительную загрузку сервера. Создайте задание на создание и обновление статистики, запускающееся в нерабочее время - например ночью.
3) Значение Checksum для опции Recovery->Page Verify. Во многих случаях достаточный контроль ошибок в страницах дисковой памяти обеспечивает значение данной опции - TornPageDetection. В этом случае контроль ошибок в страницах дисковой памяти использует иной вариант, более простой и быстрый нежели при значении опции - Checksum. Значение опции None - хоть и обеспечивает максимальное быстродействие, лучше не использовать, т.к. контроль ошибок страниц дисковой памяти средствами SQL сервера вообще производиться не будет.
4) Включенная опция полнотекстового индекса. Для ИБ 1С данная опция не требуется. Отключите её.
👉@DevLab1C
Как разрешить выбирать в поле на форме номенклатуру только типа «Комплект» (или другое условие)
Рассмотрим на примере документа «Изменение состава комплекта» из сертификационного экзамена 1С: Специалист по платформе. У него есть реквизит «Комплект» с типом «Номенклатура». Нужно сделать так чтобы в этом поле пользователь мог выбирать номенклатуру только с видом номенклатуры «Комплект».
Для этого нужно у этого реквизита в свойствах указать Параметры выбора
Отбор.ВидНоменклатуры(Комплект):
Таким образом больше не нужно ничего писать в коде для гарантии того что пользователь сможет выбирать только комплекты.
👉@DevLab1CСклонение ФИО, числа, слова по падежам в 1С 8.3
&НаСервере
Процедура Склонение()
// доступна с версии 8.3.13
ФИО_Падеж = ПолучитьСклоненияСтроки("Ковалевская Софья Васильевна", "Л=ru_RU;ПЛ=Женский", "ПД=Творительный");
// ПД: Именительный, Родительный, Дательный, Винительный, Творительный, Предложный
Для Индекс = 0 По ФИО_Падеж.Количество() - 1 Цикл
Сообщить(ФИО_Падеж[Индекс]); // Ковалевской Софьей Васильевной
КонецЦикла;
// доступна с версии 8.3.14
Число_Падеж = ПолучитьСклоненияСтрокиПоЧислу("золото", 2.75, "килограмм, грамм, 2", "ЧС=Количественное", "ПД=Предложный; ПЧ=ЧислоПрописью");
Для Индекс = 0 По Число_Падеж.Количество() - 1 Цикл
Сообщить(Число_Падеж[Индекс]); // Двух килограммах семидесяти пяти граммах золота
КонецЦикла;
Число_Падеж = ПолучитьСклоненияСтрокиПоЧислу("человек", 3, "", "ЧС=Порядковое", "ПД=Дательный; ПЧ=ЧислоСОкончанием");
Для Индекс = 0 По Число_Падеж.Количество() - 1 Цикл
Сообщить(Число_Падеж[Индекс]); // 3-му человеку
КонецЦикла;
Число_Падеж = ПолучитьСклоненияСтрокиПоЧислу("счастливый утёнок", 13, "", "ЧС=Порядковое", "ПД=Родительный; ПЧ=ЧислоПрописью");
Для Индекс = 0 По Число_Падеж.Количество() - 1 Цикл
Сообщить(Число_Падеж[Индекс]); // Тринадцатого счастливого утёнка
КонецЦикла;
Число_Падеж = ПолучитьСклоненияСтрокиПоЧислу("дом", 7, "", "ЧС=Порядковое", "ПД=Винительный; ПЧ=ЧислоСОкончанием");
Для Индекс = 0 По Число_Падеж.Количество() - 1 Цикл
Сообщить(Число_Падеж[Индекс]); // 7-ой дом
КонецЦикла;
КонецПроцедуры
👉@DevLab1CУроки мобильной разработки на 1С
Знакомство
Подготовка окружения перед началом разработки на мобильной платформе 1С
Первые шаги разработчика мобильного приложения 1С
Запуск и отладка приложения прямо на смартфоне
Урок 4 Разработка уникального мобильного приложения (Часть 1)
Урок 4 Разработка уникального мобильногоприложения (Часть 2)
Урок 5 Приложение и смартфон (Часть 1)
Урок 5 Приложение и смартфон (Часть 2)
Урок 6. Веб-сервисы и фоновые задания
Урок 7 Сборка приложения для Google Play Market
Урок 8 Публикация приложения в Google Play Market
Урок 9 Монетизация приложений
Урок 9 Монетизация приложений. Подписка
Все видео на youtube
👉@DevLab1C
Получить web-cсылку на объект метаданных
Примеры использования: для запуска ДО из других конфигураций или из Битрикс24 и т.п. интеграций
Функция ПолучитьWebСсылкуНаОбъект(Объект) Экспорт
НавСсылка = ПолучитьНавигационнуюСсылку(Объект);
ДлинаСтроки = СтрДлина(НавСсылка);
ПозицияРеф = СтрНайти(НавСсылка, "?ref");
НавСсылка = Прав(НавСсылка, ДлинаСтроки - ПозицияРеф + 1) + "#" + Лев(НавСсылка, ПозицияРеф - 1);
СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
srv = НСтр(СтрокаСоединения, "Srvr");
ref = НСтр(СтрокаСоединения, "Ref");
НавСсылка = "e1c://server/"+ srv + "/" + ref + НавСсылка;
Возврат НавСсылка;
КонецФункции
Если ссылки e1c не открываются, то необходимо текст ниже сохранить в файл с расширением reg и запустить его:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\e1c]
"EditFlags"=hex:02,00,00,00
"URL Protocol"="e1c"
@="URL:e1c"
[HKEY_CLASSES_ROOT\e1c\DefaultIcon]
@="C:\\Program Files (x86)\\1cv8\\common\\1ceunt.dll,17"
[HKEY_CLASSES_ROOT\e1c\shell]
[HKEY_CLASSES_ROOT\e1c\shell\open]
[HKEY_CLASSES_ROOT\e1c\shell\open\command]
@=""C:\Program Files (x86)\1cv8\common\1cestart.exe" /URL "%1""
👉@DevLab1CПЕРЕТАСКИВАНИЕ В 1С
Используя в пользовательском режиме перетаскивание в 1С, можно облегчить и ускорить работу пользователей. В этой статье рассмотрим реализацию механизма перетаскивания в управляемых формах 1С. В основном, этот механизм применяется для перетаскивания значений с одной таблицы на форме в другую. Классический пример – это форма подбора, когда номенклатуру с формы подбора нужно перетащить мышкой в табличную часть какого-то документа. Это не будет нудная статья с теорией, а в этой статье будут показаны некоторые практические способы перетаскивания как внутри формы, так и между формами.
https://telegra.ph/PERETASKIVANIE-V-1S-07-16
👉@DevLab1C
Расчет количества дней между датами ЗАПРОСОМ в 1С 8.3
&НаКлиенте
Процедура РасчетКоличестваДнейМеждуДатамиЗапросом(Команда)
ДатаНач = '20200415';
ДатаКон = '20200417';
Сообщить(РазницаДатНаСервере(ДатаНач, ДатаКон, "ДЕНЬ")); //2 дня
КонецПроцедуры
&НаСервере
Функция РазницаДатНаСервере(ДатаНач, ДатаКон, СтрПериод)
//СтрПериод - может быть "ДЕНЬ", "НЕДЕЛЯ", "МЕСЯЦ", "ГОД"
Запрос = Новый Запрос("ВЫБРАТЬ РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, "+СтрПериод+") КАК РазностьДат");
Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
Возврат Запрос.Выполнить().Выгрузить()[0].РазностьДат;
КонецФункции
👉@DevLab1C+1
Сложение двух дат в 1С 8.3
&НаКлиенте
Функция СложениеДат(Команда)
ПустаяДата = '00010101';
Дата1 = '20200415'; // 15.04.2020
Дата2 = '20220214'; // 14.02.2022
Результат = ПустаяДата + (Дата1 - ПустаяДата) + (Дата2 - ПустаяДата);
Сообщить("Дата = "+Результат); // Дата = 29.05.4041 0:00:00
Возврат Результат;
КонецФункции
Сравнение двух дат в 1С 8.3
&НаКлиенте
Процедура СравнениеДат(Команда)
Дата1 = '20200415'; // 15.04.2020
Дата2 = '20200415'; // 15.04.2020
Если Дата1.Сравнить(Дата2) = 0 Тогда
Сообщить("Даты равны");
КонецЕсли;
КонецПроцедуры
👉@DevLab1CРабота с датой и временем в 1С 8.3
&НаКлиенте
Процедура РаботаСДатойИВременем(Команда)
// Установка даты в переменную
ТолькоДата = '20200415'; // 15.04.2020
// Преобразование строки в дату
ТолькоДата = Дата("20200415"); // 15.04.2020
// Преобразование чисел в дату отдельными частями
ТолькоДата = Дата(2020, 04, 15); // 15.04.2020
// Установка в дате: часы, минуты и секунды
ДатаВремя = '20200415162703'; // 15 апреля 2020 г. 16 ч. 27 мин. 03 сек.
// Получение года (месяца, дня, часа, минуты, секунды) у даты
Год_Даты = Год(ДатаВремя); // 2020
Месяц_Даты = Месяц(ДатаВремя); // 4
День_Даты = День(ДатаВремя); // 15
Час_Даты = Час(ДатаВремя); // 16
Минута_Даты = Минута(ДатаВремя); // 27
Секунда_Даты = Секунда(ДатаВремя); // 03
// Прибавление к дате 3 секунды
Сообщить(ДатаВремя + 3); // 15.04.2020 16:27:06
// Прибавление к дате два месяца
Сообщить(ДобавитьМесяц(ДатаВремя, 2));// 15.06.2020 16:27:03
// Вычитание от даты одного месяца
Сообщить(ДобавитьМесяц(ДатаВремя, -1));// 15.03.2020 16:27:03
// Получение текущей (рабочей) даты
Сообщить(ТекущаяДата());
КонецПроцедуры
👉@DevLab1CВосстановить положение окна программно
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
ЭтаФорма.ИмяСохраненияПоложенияОкна = Новый УникальныйИдентификатор();
КонецПроцедуры
👉@DevLab1CКурс программирования 1С 8.3: обучение с нуля
Учебная версия 1С Предприятие 8.3: где скачать бесплатно и как установить
Установка платформы 1С 8.3 - инструкция по шагам
Создание новой базы в 1С 8.3
"Hello, 1C!": пишем первую программу на языке программирования 1С
Создание формы в 1С и работа с обработчиками
Глобальные переменные и модуль формы в 1С 8.3
Локальные переменные в 1С
Оператор присваивания и типы переменных в 1С
Условные операторы в 1С и работа с обычной формой
Управляемые формы в 1С 8.3 - знакомимся и создаем первую форму
Все видео на youtube
👉@DevLab1C
Проверки объекта на изменения
Функция ОбъектМодифицирован(Объект, ПроверятьТабличныеЧасти = Истина, ПроверятьСтандартные = Истина)
Ссылка = Объект.Ссылка;
Метаданное = Ссылка.Метаданные();
Для каждого Реквизит из Метаданное.Реквизиты Цикл
Если Объект[Реквизит.Имя] <> Ссылка[Реквизит.Имя] Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Если ПроверятьСтандартные Тогда
Для каждого Реквизит из Метаданное.СтандартныеРеквизиты Цикл
Если Объект[Реквизит.Имя] <> Ссылка[Реквизит.Имя] Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ПроверятьТабличныеЧасти Тогда
Для каждого ТЧ из Метаданное.ТабличныеЧасти Цикл
Если Объект[ТЧ.Имя].Количество() <> Ссылка[ТЧ.Имя].Количество() Тогда
Возврат Истина;
КонецЕсли;
Для Индекс = 0 по Объект[ТЧ.Имя].Количество()-1 Цикл
ОбъектСтрокаТЧ = Объект[ТЧ.Имя][Индекс];
СсылкаСтрокаТЧ = Ссылка[ТЧ.Имя][Индекс];
Для каждого РеквизитТЧ из ТЧ.Реквизиты Цикл
Если ОбъектСтрокаТЧ[РеквизитТЧ.Имя] <> СсылкаСтрокаТЧ[РеквизитТЧ.Имя] Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЕсли;
Возврат Ложь;
КонецФункции
👉@DevLab1CОбъекты 1С
Урок №1. Вводный
Урок №2. Метаданные
Урок №3. Менеджер объекта
Урок №4. Объекты метаданных 1С. Справочник
Урок №5. Ссылка
Урок №6. Объекты метаданных 1С. Документ
Урок №7. Объекты метаданных 1С. Табличная часть
Урок №8. Объекты метаданных 1С. Константы
Урок №9. Объекты метаданных 1С. Перечисления
Урок №10. Предопределённые элементы справочников
Урок №11. Подчинённые справочники
Урок №12. Иерархические справочники
Урок №13. Обработки
Урок №14. Выборка
Урок №15. Удаление и установка пометки удаления
Урок №16. Журнал документов
Урок №17. План видов характеристик
Урок №18. Отчёты
Урок №19. Внешние отчеты и обработки
Урок №20. Регистры накопления
Все видео на youtube
👉@DevLab1C
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
