Форум программистов, компьютерный форум, киберфорум
1С
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.98/371: Рейтинг темы: голосов - 371, средняя оценка - 4.98
1 / 1 / 0
Регистрация: 24.07.2008
Сообщений: 658

Глобальные полезности

14.04.2010, 14:20. Показов 68791. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Давно хотел такую тему сделать, но руки не доходили
А тут повод хороший появился



Цитата Сообщение от Дайнеко
... У меня есть глобальная функция:

Код ( (Unknown Language)):
Функция ВзятьЧастное(Кфц_Числитель, Кфц_Знаменатель) Экспорт
Возврат ?(ПустоеЗначение(Кфц_Знаменатель) = 1, 0, Кфц_Числитель / Кфц_Знаменатель);
КонецФункции
И везде любое деление пишу только так: ПроцентПлана = ВзятьЧастное(КолПлан, КолФакт). Компактно и надежно, потому что "ПустоеЗначение(Кфц_Знаменатель)" правильно сработает и на 0 и на пустоту.
Предлагаю всем выкладывать в этой теме подобные полезные универсальные функции и процедуры

Вечером, как доберусь дома до своих старых баз, то и от себя что-нибудь выложу.

Правила публикации
Назначение: (краткое описание).
Входные параметры: (краткое описание)
Выходные параметры: (описание если есть)
Исходный код с форматированием: (кнопка 1С в редакторе не зря придумана)
Примеры использования: если требуется.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.04.2010, 14:20
Ответы с готовыми решениями:

Глобальные переменные
Доброго дня всем! Помогите плиз разобраться:-Перем глТекущийПользователь Экспорт; Мне необходимо получить ее значение в модуле объекта...

Глобальные переменные в 8.2
Спустя время вынужден опять задуматься над проблемой. 8.2 возненавидела глобальные переменные (ГП). А именно общие модули их не видят. В...

Глобальные изменения: внешние отчеты и обработки
Приветствую! Есть задача по типу: раньше мы брали показатели так то а теперь нужно брать так-то - заменить везде ))) Ок. В...

25
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 22
07.05.2013, 09:04
Студворк — интернет-сервис помощи студентам
Вот еще полезности:

Назначение: Определение модуля (абсолютного значения) числа.
Входные параметры: Исследуемое число
Выходные параметры: Искомый модуль числа

Код ( (Unknown Language)):
Функция МодульЧисла(ИсследуемоеЧисло)

Возврат Макс(ИсследуемоеЧисло, -ИсследуемоеЧисло);

КонецФункции // МодульЧисла()
Как вариант - условие

Код ( (Unknown Language)):
?(Число < 0, -Число, Число)
0
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 22
08.08.2013, 09:02
Упаковка и распаковка ZIP-архивов штатными средствами 1С 8.
Можно задавать уровень сжатия, пароль и комментарий к архиву.
Удобная обертка к ЗаписьZipФайла.


Код ( (Unknown Language)):
Функция фсЗапоковатьАрхив(пФайл, пАрхив, пБазоваяПапка = "", пПароль = "", пКомментарий = "", пОшибка = "") Экспорт
Попытка
лАрхив = Новый ЗаписьZipФайла(пАрхив, пПароль, пКомментарий, МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Максимальный, );
Исключение
пОшибка = ОписаниеОшибки();
Возврат Ложь;
КонецПопытки;
Попытка
лАрхив.Добавить(пБазоваяПапка + ?(ПустаяСтрока(пБазоваяПапка), "", "\") + пФайл);
Исключение
пОшибка = ОписаниеОшибки();
Возврат Ложь;
КонецПопытки;
Попытка
лАрхив.Записать();
Исключение
пОшибка = ОписаниеОшибки();
Возврат Ложь;
КонецПопытки;
Возврат Истина;
КонецФункции // фсЗапоковатьАрхив()

Функция фсРаспаковатьАрхив(пПуть, пАрхив, пСохронятьПапки = Истина, пПароль = "", пКомментарий = "", пОшибка = "") Экспорт
Попытка
лАрхив = Новый ЧтениеZipФайла(пАрхив, пПароль);
Исключение
пОшибка = ОписаниеОшибки();
Возврат Ложь;
КонецПопытки;
Попытка
пКомментарий = лАрхив.Комментарий;
лАрхив.ИзвлечьВсе(пПуть, ?(пСохронятьПапки, РежимВосстановленияПутейФайловZIP.Восста навливать, РежимВосстановленияПутейФайловZIP.НеВосс танавливать));
Исключение
пОшибка = ОписаниеОшибки();
Возврат Ложь;
КонецПопытки;
Попытка
лАрхив.Закрыть();
Исключение
пОшибка = ОписаниеОшибки();
Возврат Ложь;
КонецПопытки;
Возврат Истина;
КонецФункции // фсРаспаковатьАрхив()
0
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 22
08.08.2013, 21:19
Функция формирует синоним переменной из идентификатора, как это делает платформа 1С8.
Используется при визуализации таблицы значений, давая читабельные для пользователей названия колонок:

ТипДокументовРасчета ? Тип документов расчета
Сумма ? Сумма
ДокументыДляЕНВД ? Документы для ЕНВД
СуммаСНДС ? Сумма с НДС
СуммаБезНДС ? Сумма без НДС
ДляФНСЗаКвартал ? Для ФНС за квартал
ПФРДляОтчетности ? ПФР для отчетности

Источник: Инфостарт

Код ( (Unknown Language)):
// Моя первоначальная функция
// Формирует синоним переменной.
// Пример: на входе "ИмяПеременнойАБВГ", на выходе "Имя переменной АБВГ"
//
// Параметры
// ИмяРеквизита - Строка. Имя переменной, имя колонки таблицы
//
// Возвращаемое значение:
// Строка - Представление переменной
//
Функция СформироватьСиноним(ИмяРеквизита)

Перем Синоним, ъ, Символ, ПредСимвол, СледСимвол, Прописная, ПредПрописная, СледПрописная, ДлинаСтроки;

Синоним = ВРег(Сред(ИмяРеквизита, 1, 1));

ДлинаСтроки = СтрДлина(ИмяРеквизита);
Для ъ=2 По ДлинаСтроки Цикл
Символ = Сред(ИмяРеквизита, ъ, 1);
ПредСимвол = Сред(ИмяРеквизита, ъ-1, 1);
СледСимвол = Сред(ИмяРеквизита, ъ+1, 1);
Прописная = Символ = ВРег(Символ);
ПредПрописная = ПредСимвол = ВРег(ПредСимвол);
СледПрописная = СледСимвол = ВРег(СледСимвол);

// Варианты:
Если НЕ ПредПрописная И Прописная Тогда
Синоним = Синоним + " " + Символ;
ИначеЕсли Прописная И НЕ СледПрописная Тогда
Синоним = Синоним + " " + Символ;
Иначе
Синоним = Синоним + Символ;
Конецесли;
КонецЦикла;

Возврат Синоним;

КонецФункции // СформироватьСиноним()



// Переделанная nick-max функция
Функция Синоним(Знач Имя) Экспорт

НовоеИмя = "";
Имя = СтрЗаменить(Имя, "СНДС", "_сНДС");
Имя = СтрЗаменить(Имя, "ВПФР", "_вПФР");
Длина = СтрДлина(Имя);
Для Индекс = 1 По Длина Цикл

Символ = Сред(Имя, Индекс, 1);

Если Символ = НРег(Символ) Тогда
НовоеИмя = НовоеИмя + Символ;
Продолжить;
КонецЕсли;

Если Символ = ВРег(Символ) Тогда

Если Индекс > 1 Тогда
НовоеИмя = НовоеИмя + " "
КонецЕсли;

Аббревиатура = (Сред(Имя, Индекс, 3) = ВРег(Сред(Имя, Индекс, 3))) И (Длина - Индекс > 1);
Предлог = (Сред(Имя, Индекс, 2) = ВРег(Сред(Имя, Индекс, 2))) И (Длина > Индекс);

Если Аббревиатура Тогда
ДлинаАббревиатуры = 3;

Пока Сред(Имя, Индекс, ДлинаАббревиатуры) = ВРег(Сред(Имя, Индекс, ДлинаАббревиатуры))
И Индекс + ДлинаАббревиатуры <= Длина + 1 Цикл

ДлинаАббревиатуры = ДлинаАббревиатуры + 1
КонецЦикла;

ДлинаАббревиатуры = ДлинаАббревиатуры - 1;

Если (Индекс + ДлинаАббревиатуры - 1) = Длина Тогда
НовоеИмя = НовоеИмя + Сред(Имя, Индекс, ДлинаАббревиатуры);
Иначе
ДлинаАббревиатуры = ДлинаАббревиатуры - 1;
НовоеИмя = НовоеИмя + Сред(Имя, Индекс, ДлинаАббревиатуры) + " " + НРег(Сред(Имя, Индекс + ДлинаАббревиатуры, 1));
КонецЕсли;

Индекс = Индекс + ДлинаАббревиатуры;
Продолжить;
КонецЕсли;


Если Предлог Тогда
НовоеИмя = НовоеИмя + НРег(Символ) + " " + НРег(Сред(Имя, Индекс + 1, 1)) + " ";
Индекс = Индекс + 1;
Продолжить;
КонецЕсли;


НовоеИмя = НовоеИмя + НРег(Символ);


КонецЕсли;

КонецЦикла;

НовоеИмя = СтрЗаменить(НовоеИмя, "_", " ");
НовоеИмя = ВРег(Лев(НовоеИмя, 1)) + Прав(НовоеИмя, СтрДлина(НовоеИмя) - 1);
Возврат НовоеИмя;

КонецФункции
0
byroyv1991
27.07.2014, 13:51
Кое что полезное, действительно есть. Попробуем воплотить
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
03.02.2015, 21:03
Немного грабель и алгоритма их поиска. Предложили мне базы на новый сервак перенести, базы файловые, восьмерка бп3, зуп и семерочные. Сервер терминальный 64 бит. Вроде никаких грабель нет, а они есть ;-). После переноса пользователи стали жаловаться на вылеты программы, в журнале отображалось что-то типа

Имя сбойного приложения: 1cv8c.exe, версия: 8.3.5.1428, отметка времени: 0x54bd64a9
Имя сбойного модуля: KERNELBASE.dll, версия: 6.1.7601.17514, отметка времени 0x4ce7bafa
Код исключения: 0xe06d7363
Смещение ошибки: 0x0000b727
Идентификатор сбойного процесса: 0x10e4
Время запуска сбойного приложения: 0x01d03f72a10de886
Путь сбойного приложения: C:\Program Files (x86)\1cv8\8.3.5.1428\bin\1cv8c.exe
Путь сбойного модуля: C:\Windows\syswow64\KERNELBASE.dll
Код отчета: 85acf405-ab66-11e4-9350-001e67b9183b

Понятно, что ничего не понятно. Переустановка платформы\замена версии ничего не дает. Подрубил технологический журнал, вижу что 1с дампы собирает, а последнее сбойное действие отловить не могу - в эксепшинах пусто. Тогда мы пошли другим путем - у мелкомягких есть утилитка - называется process monitor. Она показывает какой процесс в системе что делал - какие ветки регистра читал\модифицировал, какие папочки\файлы создавал\читал\лочил\разлочивал, к каким длл обращался и т.п. Вот в нем то и увидел я, что сбор дампа начинается после создания и чтения файла в имени которого есть JobShelduer, тут то я и понял, что вылет обусловлен регламентной задачей. Вот только какой - их там много. Мониторя дальше поймал таки строчку с созданием файла, найденную гуглем. Оказалось сбоила регламентная задача обновление индекса полнотекстового поиска данных, ну и заодно задача по слиянию таких индексов. Так как этот поиск никому не уперся - отрубил задачу и все стало хорошо. Чуть позднее напишу про криптографию - там с граблями тоже все хорошо.
0
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 22
28.02.2017, 16:03
Решал задачу с округлением суммы с округлением до 5 (50, 500, и т.д.) в большую сторону.

СуммаДо5 = Окр(Сумма*2+4.999, -1, РежимОкругления.Окр15как20)/2;
СуммаДо50 = Окр(Сумма*2+49.99, -2, РежимОкругления.Окр15как20)/2;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.02.2017, 16:03

УФ в обычном приложении. Форма списка документа. Глобальные команды
Не объяснит ли кто мне, страдающему пользовательским кретинизмом, принцип появления кнопки &quot;На основании&quot; в панели Списка...

Глобальные и статические глобальные переменные
Скажите, чем отличаются глобальные переменные от статических глобальных переменных?

Breakpoints: сомневаюсь в полезности
Привет всем. Заметил, вот когда реально надо, что-то не получается и нужно глянуть проходят ли нужные значения. Завожу...

Метод с использованием функции полезности.
Доброго времени суток! Помогите пожалуйста решить в Mathcade следующую задачу: Изначально нам известно аналитическое выражение...

Задача (Функция полезности потребителя)
Функция полезности имеет вид : u(x1,X2) = 4x1x2, а доход выделенный для покупки данных товаров, равен 24. В оптимальный набор вошли 2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru