0. HostHost 107 07.10.19 08:30 Сейчас в теме

Полезные процедуры и функции для программиста

Все мы пишем программный код и часто используем процедуры, облегчающие его написание. Ниже приведена выборка таких полезных процедур и функций.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. SerVer1C 192 07.10.19 08:34 Сейчас в теме
У меня нет ЗарплатаКадры. Нет и БСП. Как мне быть?
jaroslav.h; asdf_88; CyberCerber; frkbvfnjh; BigB; zqzq; geron4; WizaXxX; Hans; Kami4; +10 Ответить
4. Kami4 07.10.19 08:56 Сейчас в теме
(1)
Согласен.
Нужно было заголовок темы изменить на "Типовые конфигурации: Полезные процедуры и функции для программиста".
bulpi; Juliank; +2 Ответить
12. MenZurKa 07.10.19 14:02 Сейчас в теме
(4) Еще и не все типовые, Розница и УТ точно не имеют механизмов ЗарплатаКадры, ЗарплатаКадрыОбщиеНаборыДанных и подобные...
6. acces969 07.10.19 09:18 Сейчас в теме
Вел когда-то подобные записи, когда начинал. Может кому - пригодится. БСП, разумеется, не используется.

Вставка рисунка в табличный документ без изменения макета
Рисунок = Шапка.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Верх = 4;
Рисунок.Высота = 22;
Рисунок.Ширина = 95;
Рисунок.Лево = 45;
Рисунок.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии,-1);
Карт = БиблиотекаКартинок.ВашаКартинка;
Рисунок.Картинка = Карт;


Программная эмуляция нажатий на кнопки клавиатуры
WSHShell = Новый COMОбъект("WScript.Shell");
      WSHShell.SendKeys("{UP}");


Пример раскраски текста форматированной строки
Если СокрЛП(ЭлементТекста) = "="
или СокрЛП(ЭлементТекста) = ">"
или СокрЛП(ЭлементТекста) = "<"
или СокрЛП(ЭлементТекста) = "*"
или СокрЛП(ЭлементТекста) = "/"
или СокрЛП(ЭлементТекста) = "+"
или СокрЛП(ЭлементТекста) = "-" тогда

ЭлементТекста = Новый ФорматированнаяСтрока(ЭлементТекста,, WebЦвета.Красный, WebЦвета.Белый);

иначеЕсли Нрег(СокрЛП(ЭлементТекста)) = "результат"
или нРег(СокрЛП(ЭлементТекста)) = "база"
или нРег(СокрЛП(ЭлементТекста)) = "размероклада"
или нРег(СокрЛП(ЭлементТекста)) = "недельнаяставканорма"
или нРег(СокрЛП(ЭлементТекста)) = "недельнаяставкафакт"
или нРег(СокрЛП(ЭлементТекста)) = "отработанодней"
или нРег(СокрЛП(ЭлементТекста)) = "отработаночасов" тогда

ЭлементТекста = Новый ФорматированнаяСтрока(ЭлементТекста,, WebЦвета.Синий, WebЦвета.Белый);

иначе
ЭлементТекста = Новый ФорматированнаяСтрока(ЭлементТекста,, WebЦвета.Белый, WebЦвета.Черный);
конецесли;
Показать


Типизация таблицы значений
РезультатТЗ = новый ТаблицаЗначений;
    Для Каждого Колонка из ТЗ.Колонки Цикл
        Имя = Колонка.Имя;
        МассивТипов = новый Массив(1);
        МассивТипов[0] = ТипЗнч(ТЗ[0][Имя]);
        Описатель = новый ОписаниеТипов(МассивТипов);
        РезультатТЗ.Колонки.Добавить(Имя, Описатель);
    КонецЦикла;
    
    Для каждого Строка из ТЗ Цикл
        СтрокаРез = РезультатТЗ.Добавить();
        ЗаполнитьЗначенияСвойств(СтрокаРез, Строка);
    КонецЦикла;
    
    ТЗ = РезультатТЗ.Скопировать();
Показать


Нестандартное обновление конфигурации. Конфигурация поставщика так же обновляется.
1) Загрузить новую конфигурацию из файла
конфигурация - загрузить конфигурацию из файла
2) На вопрос "обновить конфигурацию БД" нажать "НЕТ"
3) Включить возможность изменения
конфигурация - поддержка - настройка поддержки - включить возможность изменения
4) Конфигурация - конфигурация базы данных - сравнить,объединить с конфигурацией базы данных
5) Отметить галками объекты, которые изменялись. Там, где стоит галка, будут взяты старые (дописанные) модули. Где галка не стоит - будут взяты из типовой конфигурации Рейтинг
6) Действия - установить режим для всех - взять из базы данных
7) Выполнить


В приложенных файлах
1. Компоновка данных СКД наглядно (блок-схема и программный код)
2. Попсовые способы решения ошибки формата потока
3. Для размышлений
Прикрепленные файлы:
Компоновка данных скд.docx
Ошибка формата потока в 1С.docx
Подключение 1с к ардуино через COM-порт.txt
Aili; О.Ж; SkyJack; kompas-dm; ksnik; kn; dhurricane; NataliaZh; shard; wowik; kote; acanta; +12 Ответить
16. fenixnow 163 08.10.19 07:17 Сейчас в теме
(1) проходить мимо, эта статья не для вас
2. nomad_irk 40 07.10.19 08:44 Сейчас в теме
(0) БСП, конечно, годная подсистема, нужная, но, ИМХО, она сильно разбаловала программистов 1С......
bulpi; Kami4; +2 2 Ответить
3. QuickMix 07.10.19 08:55 Сейчас в теме
(2)да и не только БСП, а также функции работы с датами, строками, числами. Настоящие программисты перебирают в цикле каждый символ в строке, и не пользуются никакими функциями, дабы не слишком баловать себя.
aegoncharov; erutan; hydro2588_2015; bendarik; mark_oilbass; mivari; gulagm; memb3r; user774630; MrArmHaze; PLAstic; CyberCerber; A_Max; Kami4; +14 Ответить
17. nomad_irk 40 08.10.19 07:57 Сейчас в теме
(3) Естественно, всегда найдется тот, кто возведет что-угодно в абсолют и доведет это до абсурда :)
20. Monte Carlo 15.10.19 15:15 Сейчас в теме
(3) Настоящие программисты пишут только с использованием 0 и 1. Остальные - это избалованные лентяи.
7. YannikAlx 28 07.10.19 10:02 Сейчас в теме
(2) Ну чтоб программисты не баловались нужно запретить все языки кроме Ассемблера...
Вот где ИСТИННОЕ программирование, а остальное - баловство одно... ))))))))))
Monte Carlo; hydro2588_2015; gulagm; memb3r; user774630; MrArmHaze; KonstB; +7 Ответить
8. nomad_irk 40 07.10.19 10:10 Сейчас в теме
(7) тогда уж машинные коды, а ассемблер - для слабаков :)
9. EvgeniuXP 07.10.19 11:06 Сейчас в теме
5. wowik 609 07.10.19 09:08 Сейчас в теме
Отлично! Сохранил себе в минимализмы.
10. the1 388 07.10.19 11:43 Сейчас в теме
Это какая-то каша
Oldsad; kuzyara; MishaD; user774630; CSiER; CyberCerber; +6 Ответить
11. Lus_85 07.10.19 11:59 Сейчас в теме
Поделиться наработками с общественностью это хорошо. Но еще лучше их перед этим привести в порядок, а не вываливать файл Текущаяработа.txt.
Вывод сообщения пользователю- 3 пункта, получение предопределенного - 4 пункта. Просто надерганные куски из типовой.
Вот расскажите, кто кроме разработчиков БСП и типовых на ней использует п.35.
CyberCerber; +1 Ответить
13. PLAstic 217 07.10.19 14:19 Сейчас в теме
(11) Я. Есть РИБ на 26 баз. Правила обмена обновляются в ЦБ и для всех ПБ едины. При этом ПБ обновляются в разное время региональными админами. Нужно, чтобы правила обмена отрабатывали корректно по кускам кода, которые выполняются при загрузке в ПБ с разными версиями конфигурации: где есть общий модуль и где его нет.
Вообще, с увеличением сложности КИС задействуется больше механизмов.

А по теме: да, сумбур из обескураживших в момент первого знакомства кусков кода. :)
14. AlexandrSmith 46 07.10.19 21:59 Сейчас в теме
Статья полезная, хотя мне кажется нужно несколько другую тему осветить, и соответственно другие функции представить.
Alex1053669; +1 Ответить
15. buganov 59 08.10.19 06:11 Сейчас в теме
Почему всю БСП сюда не перепечатали? Там еще много полезностей.
Кстати, СтрРазделить не взлетит на 82, так что было бы полезно указывать платформу, на которой юзать тот или иной метод.
18. vadver 38 08.10.19 13:26 Сейчас в теме
п.15 надо изложить в следующей редакции:
Функция СведенияОВнешнейОбработке() Экспорт
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.4.4.106");
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	ПараметрыРегистрации.Версия = "1.0";
	ПараметрыРегистрации.БезопасныйРежим = Истина;
	ПараметрыРегистрации.Наименование = НСтр("ru = 'Добавляемая обработка'");
        
        МассивРазрешений = Новый Массив;
	МассивРазрешений.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина, ""));
	МассивРазрешений.Добавить(РаботаВБезопасномРежиме.РазрешениеНаСозданиеCOMКласса("Word.Application",,,""));
        ПараметрыРегистрации.Разрешения = МассивРазрешений;

	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = НСтр("ru = 'Имя команды обработки'");
	НоваяКоманда.Идентификатор = "ИдентификаторКоманды";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
	НоваяКоманда.ПоказыватьОповещение = Истина;
	Возврат ПараметрыРегистрации;
КонецФункции
Показать


И тут еще нет описания массива назначений, но там просто
ПараметрыРегистрации.БезопасныйРежим = Ложь;
это очень плохая практика
19. МимохожийОднако 127 13.10.19 07:26 Сейчас в теме
До кучки..)).
Получить массив из таблицы значений в 3 строчки
Функция МассивИзТЗ(ТЗ)
ТЗ.Колонки.Добавить("ккк");
ОтборИзТЗ= Новый Структура("ккк",Неопределено);
МассивДанных=ТЗ.НайтиСтроки(ОтборИзТЗ);
Возврать МассивДанных;
КонецФункции
21. acanta 67 15.10.19 15:44 Сейчас в теме
Современные настоящие программисты уже пишут в кубитах с вероятностью 50 процентов что 2*2 =4 и по 20% вероятности что 3 или 5 и по 5% все остальное.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Консультант-аналитик 1С
Набережные Челны
зарплата до 90 000 руб.
Полный день

Программист 1С
Набережные Челны
зарплата от 40 000 руб. до 110 000 руб.
Полный день

Программист 1С
Казань
зарплата от 40 000 руб. до 110 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день