Функция для вычисления разницы между двумя датами

Публикация № 178811

Разработка - Универсальные функции

3
Функция РазностьДат

Простая функция для вычисления разности между датами в любых единицах.

От типовой отличается тем, что реализована функцией языка запросов РАЗНОСТЬДАТ.

В приложении - обработка, демонстрирующая работу функции.

3

Скачать файлы

Наименование Файл Версия Размер
РазностьДат.epf
.epf 7,94Kb
20.03.13
32
.epf 7,94Kb 32 Скачать

Специальные предложения

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо
1. Tahallus 426 20.03.13 17:16 Сейчас в теме
Я вижу Вы открыли для себя РАЗНОСТЬДАТ
4. yuraos 954 20.03.13 18:32 Сейчас в теме
Как много нам (1) открытий чудных,
готовит мануала дух!
И опыт - сын багов (ударение на первый слог) трудных,
И гений - алгоритмов друг!

---
ааасторожно надо мануал 1с-ный публиковать.

сначала надо группой поддержки заручиться...
...которая восторженно ох-ахает и
плусует-плусует-плусует!!!
:)
5. yuraos 954 20.03.13 18:42 Сейчас в теме
(1)
похоже разработчики платформы,
которые лепили встроенные функции и те
которые реализовывали функционал запросов
друг о друге ничего не знали.
---
иначе бы, наверное, была встроенная функция РАЗНОСТЬДАТ()
и не было бы повода для такой статьи
:)
37. AlexO 127 21.03.13 12:55 Сейчас в теме
(1)(24) andrewks,
точно, а то потом знания будут утеряны :)
2. AnryMc 720 20.03.13 17:32 Сейчас в теме
Долго думал. Ставить или нет "-". У человека всего 3 звездочки (уже 2). И решил, что будет - 1.
3. straus 20.03.13 18:28 Сейчас в теме
6. yuraos 954 20.03.13 18:48 Сейчас в теме
Tahallus,
к стати поздравляю!
Инфостарт рассылает спам что ты автор этой публикации
:)
Смотри скриншот.
Прикрепленные файлы:
7. AnryMc 720 20.03.13 18:51 Сейчас в теме
(6) yuraos, Точно. И мне тоже ;-)))
8. andrewks 1269 20.03.13 18:56 Сейчас в теме
(6) yuraos, в письмах, которые приходят мне, с некоторых пор не только автор, но и название не отображается.

Тема: "Инфостарт - Новый комментарий"
и так - для любой ветки
9. yuraos 954 20.03.13 19:10 Сейчас в теме
(8) andrewks,

Любопытно скрипты работают на Инфорстарте...
А ты через какой браузер ходишь по Инфостарту ???

Я через Оперу и его почтовый клиент юзаю.
10. andrewks 1269 20.03.13 19:17 Сейчас в теме
(9) yuraos, у меня The Bat!. но это, собственно, не важно, ибо в исходнике письма Subject приходит именно такой, проверял.
раньше было нормально, слетело после падения/переезда на новый сервер
11. yuraos 954 20.03.13 19:39 Сейчас в теме
(10) andrewks,
в самом деле от браузера (и тем более от клиента)
вроде не должна рассылка зависеть...


слетело после падения/переезда на новый сервер


имеешь ввиду, когда Инфостарт начал глючить не по децки,
а потом совсем накрылся медным тазом
и после чего они развернули бэкап (уж не знаю на каком серваке - новом или старом) ???
14. AnryMc 720 20.03.13 21:30 Сейчас в теме
(6) yuraos, Самое интересное, что из одних веток письма приходят правильно...
12. WKBAPKA 211 20.03.13 21:10 Сейчас в теме
ну для кого то это и открытие... хотя 1С могла бы сделать функцию, как бэ не сложно
13. WKBAPKA 211 20.03.13 21:14 Сейчас в теме
куку .. РАЗНОСТЬДАТ реализовано в запросах, а чел выложил расчет разницы в датах не в запросе (обработку не качал, так что предполагаю)... в языке 8-ки это, как в 7.7. не реализовано, так что зря вы нападаете на начинающего программиста... т.к. я вредный, поставлю плюс, поддержу молодежь!
15. AnryMc 720 20.03.13 21:32 Сейчас в теме
(13) WKBAPKA,
Да ещё в разных единицах измерения.
Ты меня почти убедил. Нетрализую свой "-".
16. smaharbA 20.03.13 21:34 Сейчас в теме
(13) не поверите - в 77 реализовано в одно действие
17. AnryMc 720 20.03.13 21:53 Сейчас в теме
19. andrewks 1269 20.03.13 22:19 Сейчас в теме
(16) как насчёт секунд/минут/часов?
18. andrewks 1269 20.03.13 22:18 Сейчас в теме
(13) WKBAPKA, реализуется в одну строку: (Макс(Дата1,Дата2)-Мин(Дата1,Дата2))/СекундВЕдинице

я понимаю, что РАЗНОСТЬДАТ в запросе - это круто и гламурно, но дёргать из-за этих мелочей сервер явно чрезмерно. а если уж эта функция окажется в цикле с кол-вом итераций, например, 10000, так и вообще вредно
21. yuraos 954 20.03.13 22:20 Сейчас в теме
(13) WKBAPKA,
вот вам моя реализация в составе подсистемы ViewValues
и совершенно бесплатно:



// возвращает дату смещенную на указанное число интервалов указанного типа
Функция ДобавитьКДате(Знач ИсхДата, ТипИнтервала, Знач ЧислоИнтервалов) Экспорт
	Если ТипЗнч(ИсхДата) <> Тип("Дата") Тогда
		ИсхДата = '0001-01-01';
	КонецЕсли; 
	Если ТипЗнч(ЧислоИнтервалов) <> Тип("Число") Тогда
		ЧислоИнтервалов = 0;
	КонецЕсли;
	
	ТекстЗапроса = "ВЫБРАТЬ
	|	ДОБАВИТЬКДАТЕ(&ИсхДата, !ТипИнтервала!, &ЧислоИнтервалов) КАК СмещДата"; // !ТипИнтервала! 
	
	Если Нрег(ТипИнтервала) = НРег("СЕКУНДА") ИЛИ Нрег(ТипИнтервала) = НРег("СЕК") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "СЕКУНДА");
	ИначеЕсли Нрег(ТипИнтервала) = НРег("МИНУТА") ИЛИ Нрег(ТипИнтервала) = НРег("МИН") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "МИНУТА");
	ИначеЕсли Нрег(ТипИнтервала) = НРег("ЧАС") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ЧАС");
	ИначеЕсли Нрег(ТипИнтервала) = НРег("ДЕНЬ") ИЛИ Нрег(ТипИнтервала) = НРег("ДНИ") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ДЕНЬ");
	ИначеЕсли Нрег(ТипИнтервала) = НРег("НЕДЕЛЯ") ИЛИ Нрег(ТипИнтервала) = НРег("НЕД") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "НЕДЕЛЯ");
	ИначеЕсли Нрег(ТипИнтервала) = НРег("ДЕКАДА") ИЛИ Нрег(ТипИнтервала) = НРег("ДЕК") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ДЕКАДА");
	ИначеЕсли Нрег(ТипИнтервала) = НРег("МЕСЯЦ") ИЛИ Нрег(ТипИнтервала) = НРег("МЕС") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "МЕСЯЦ");
	ИначеЕсли Нрег(ТипИнтервала) = НРег("КВАРТАЛ") ИЛИ Нрег(ТипИнтервала) = НРег("КВ") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "КВАРТАЛ");
	ИначеЕсли Нрег(ТипИнтервала) = НРег("ПОЛУГОДИЕ") ИЛИ Нрег(ТипИнтервала) = НРег("ПОЛГОДА") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ПОЛУГОДИЕ");
	ИначеЕсли Нрег(ТипИнтервала) = НРег("ГОД") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ГОД");
	Иначе
		ВызватьИсключение(
		"Непредусмотренный тип интервала '"+ТипИнтервала+"' для добавления к дате !");
		Возврат Null;
	КонецЕсли; 
	
	Запрос = Новый Запрос(ТекстЗапроса);
	Запрос.УстановитьПараметр("ИсхДата", ИсхДата);
	Запрос.УстановитьПараметр("ЧислоИнтервалов", ЧислоИнтервалов);
	
	тзРезультат = Запрос.Выполнить().Выгрузить();
	
	Возврат тзРезультат[0][0];
КонецФункции

// возвращает разницу между переданными датами в интервалах указанного типа
Функция РазностьДат(Знач ИсхДатаНач, Знач ИсхДатаКон, ТипИнтервала) Экспорт	
	Если ТипЗнч(ИсхДатаНач) <> Тип("Дата") Тогда
		ИсхДатаНач = '0001-01-01';
	КонецЕсли; 
	Если ТипЗнч(ИсхДатаКон) <> Тип("Дата") Тогда
		ИсхДатаКон = '0001-01-01';
	КонецЕсли; 
	
	ТекстЗапроса = "ВЫБРАТЬ
	|	РАЗНОСТЬДАТ(&ИсхДатаНач, &ИсхДатаКон, !ТипИнтервала!) КАК ЧислоИнтервалов"; // !ТипИнтервала! 
	
	Если Нрег(ТипИнтервала) = НРег("СЕКУНДА") ИЛИ Нрег(ТипИнтервала) = НРег("СЕК") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "СЕКУНДА");
	ИначеЕсли Нрег(ТипИнтервала) = НРег("МИНУТА") ИЛИ Нрег(ТипИнтервала) = НРег("МИН") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "МИНУТА");
	ИначеЕсли Нрег(ТипИнтервала) = НРег("ЧАС") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ЧАС");
	ИначеЕсли Нрег(ТипИнтервала) = НРег("ДЕНЬ") ИЛИ Нрег(ТипИнтервала) = НРег("ДНИ") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ДЕНЬ");
	ИначеЕсли Нрег(ТипИнтервала) = НРег("МЕСЯЦ") ИЛИ Нрег(ТипИнтервала) = НРег("МЕС") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "МЕСЯЦ");
	ИначеЕсли Нрег(ТипИнтервала) = НРег("КВАРТАЛ") ИЛИ Нрег(ТипИнтервала) = НРег("КВ") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "КВАРТАЛ");
	ИначеЕсли Нрег(ТипИнтервала) = НРег("ГОД") Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "!ТипИнтервала!", "ГОД");
	Иначе
		ВызватьИсключение(
		"Непредусмотренный тип интервала '"+ТипИнтервала+"' для вычисления разницы дат !");
		Возврат Null;
	КонецЕсли; 
	
	Запрос = Новый Запрос(ТекстЗапроса);
	Запрос.УстановитьПараметр("ИсхДатаНач", ИсхДатаНач);
	Запрос.УстановитьПараметр("ИсхДатаКон", ИсхДатаКон);
	
	тзРезультат = Запрос.Выполнить().Выгрузить();
	
	Возврат тзРезультат[0][0];
КонецФункции



Показать


;)
22. yuraos 954 20.03.13 22:25 Сейчас в теме
(21)(18) andrewks,
Хотя говорят в платформе 8.2.17 добавили функцию,
позволяющую время в миллисекундах отмерять...
мож они и эти функции наконец добавили ???
а то стремно и позорно как-то...сервер напрягать для посчета смещенной даты.
26. andrewks 1269 20.03.13 22:41 Сейчас в теме
(22) yuraos, а смысл добавлять? лично я не вижу. если хронометр с миллисекундами может быть очень полезен, то тут всё реализуется примитивными арифметическими операциями
27. smaharbA 21.03.13 00:30 Сейчас в теме
(26) ну положим в толстом миллисекунды реализуются штатно
28. andrewks 1269 21.03.13 08:09 Сейчас в теме
29. smaharbA 21.03.13 10:43 Сейчас в теме
(27) для толстого
Перем Скрыпт;
Процедура ДокументСформирован(Поле)
	Скрыпт=Поле.Документ.Script;
КонецПроцедуры

Процедура КнопкаВыполнитьНажатие(Кнопка)
	Пока Истина Цикл
		Попытка
			Скрыпт.ДатаМиллисекондов();
			Прервать;
		Исключение
		КонецПопытки;
	КонецЦикла;
	Сообщить(Скрыпт.ДатаМиллисекондов(0));
	Предупреждение(1,10);
	Сообщить(Скрыпт.ДатаМиллисекондов(0));
КонецПроцедуры

Процедура ПриОткрытии()
	ПолеHTMLДокумента=ЭлементыФормы.Найти("ПолеHTMLДокумента");
	Если ПолеHTMLДокумента=Неопределено Тогда
		ПолеHTMLДокумента=ЭлементыФормы.Добавить(Тип("ПолеHTMLДокумента"),"ПолеHTMLДокумента");
	КонецЕсли;
	ПолеHTMLДокумента.УстановитьТекст("<script type='text/javascript'>ДатаМиллисекондов=function(){return (new Date().getTime())}</script>");
	ПолеHTMLДокумента.УстановитьДействие("ДокументСформирован",Новый Действие("ДокументСформирован"));
КонецПроцедуры
Показать
30. AnryMc 720 21.03.13 11:07 Сейчас в теме
(29) smaharbA,

Вызвало некоторый ступор
Перем Скрыпт
- это от какого корня?
31. andrewks 1269 21.03.13 11:44 Сейчас в теме
(29) smaharbA, что-то мне кажется, что при вызове браузера со скриптом миллисекунды уже не будут интересны ))
32. andrewks 1269 21.03.13 11:45 Сейчас в теме
(29) smaharbA, интересно а в 8.3 под линукс будет это работать? надо будет опробовать
33. AnryMc 720 21.03.13 11:50 Сейчас в теме
(29) smaharbA,

ну положим в толстом миллисекунды реализуются штатно
- это что? Штатно?
34. andrewks 1269 21.03.13 12:21 Сейчас в теме
(33) AnryMc, формально - штатно. а то, что там прячется вражий браузер - это за кадром :)
35. AlexO 127 21.03.13 12:32 Сейчас в теме
(29) smaharbA,
и где тут штатная реализация средствами 1С?
(22) yuraos,
да, это ТекущаяУниверсальнаяДатаВМиллисекундах
44. yuraos 954 21.03.13 17:00 Сейчас в теме
(35) AlexO,
ммммм...это комментарий от соседней функции залез в буфер
:)

а примерная реализация как в этом посте (39)
39. yuraos 954 21.03.13 16:24 Сейчас в теме
(29) smaharbA,
а во эта и для ТОЛСТОГО и для НЕ-ТОЛСТОГО...
лишь бы Винда была, да ОДМИНЫ с правами чей-нибудь не нарулили
;)
// Функция, возвращающая время в миллисекундах или секундах.
//
&НаКлиентеНаСервереБезКонтекста
Функция ВремяВМиллисекундах()
    Попытка
        Script = Новый COMОбъект("MSScriptControl.ScriptControl");
        Script.Language = "javascript";
        Script.Timeout   = -1;
        Время = Script.Eval("var d = new Date(); d.getTime()");
    Исключение
        Время = ТекущаяДата();
    КонецПопытки;
    
    Возврат Время;
КонецФункции

// Пример.
//
Процедура ПримерИспользования()

   Начало = ВремяВМиллисекундах();
   КоличествоСтрок = 0;
   Для Каждого Элемент ИЗ Массив Цикл
         КоличествоСтрок = КоличествоСтрок  + 1;
         ...
   КонецЦикла;
   Конец  = ВремяВМиллисекундах();

   ВремяВыполнения = (Конец - Начало) / 1000;

   РезультСтрока = НСтр("ru = 'Результат процесса (количество строк = %КоличествоСтрок%, время выполнения = %ВремяВыполнения% с)'");
   РезультСтрока = СтрЗаменить(РезультСтрока, "%КоличествоСтрок%", Строка(КоличествоСтрок));
   РезультСтрока = СтрЗаменить(РезультСтрока, "%ВремяВыполнения%", Строка(ВремяВыполнения));

КонецПроцедуры

Показать


Любезно предоставил уважаемый StepByStep
в своей публикации
40. yuraos 954 21.03.13 16:27 Сейчас в теме
(39)
к стати о птичках...

через COMОбъект("MSScriptControl.ScriptControl")
можно все остальные функции для работы с датами реализовать

без 1С-ного запроса и следовательно не напрягая сервер.

Там в скрипте используется класс с понятным назначением.
48. andrewks 1269 22.03.13 08:21 Сейчас в теме
(40) yuraos, в то время, когда космические корабли бороздят просторы Вселенной грядёт стабильная 8.3, нужно использовать более универсальные механизмы, которые будут работать и на Win и на Lin.
поэтому я считаю, что +-*/ - наше всё. если лень вспоминать, сколько секунд в часе - можно накатать пару-тройку функций, чтобы потом их использовать
50. yuraos 954 22.03.13 19:26 Сейчас в теме
(48) andrewks,
стабильная 1С-ка говоришь???
вот щастье то какое!!!
...
но боюсь я до этого не доживу.
;)))
53. andrewks 1269 22.03.13 22:53 Сейчас в теме
(50) yuraos, будущее уже близко ))
Прикрепленные файлы:
54. AlexO 127 23.03.13 00:18 Сейчас в теме
(53) andrewks,
грядёт стабильная 8.3,

будущее уже близко ))

вашими планами - да мед пить 1с разрабатывать :))
55. yuraos 954 23.03.13 08:32 Сейчас в теме
(54) AlexO,
интересно есть ли у кого статистика
по среднему количеству количеству выявленных багов допустим
за месяц или за год эксплуатации
по всем платформам для сравнения
8.0
8.1
8.2
ну и для новоявленного чуда-юда
8.3

???
56. andrewks 1269 23.03.13 11:57 Сейчас в теме
(54) AlexO, планы не мои :) я только разместил объяву ©
52. yuraos 954 22.03.13 19:29 Сейчас в теме
(48) andrewks,
а насчет универсальности,
пожалуй,
с тобой соглашусь.
43. yuraos 954 21.03.13 16:56 Сейчас в теме
(26) andrewks,
возможно ты прав...
... хоть и не всегда действия элементарны.

Например год когда 365 дней, когда 366.
может где-нибудь аукнуться при вычислении разницы в годах.

но ведь в других средах программирования
делают зачем-то встроенные аналоги функций вроде
РазностьДат() и ДобавитьКДате()

и в языке запросов их 1С тоже сделала.


Если на небе зажигаются звезды, значит это кому-то надо...
20. andrewks 1269 20.03.13 22:19 Сейчас в теме
я не вредный, плюс ставить не буду, минус тоже
23. WKBAPKA 211 20.03.13 22:29 Сейчас в теме
какой кошмар? а мне то зачем?
24. andrewks 1269 20.03.13 22:38 Сейчас в теме
(23) WKBAPKA, берите, пока дают ))
25. yuraos 954 20.03.13 22:39 Сейчас в теме
(23) WKBAPKA,
да так ... за компанию.
извини если что.
36. AlexO 127 21.03.13 12:33 Сейчас в теме
(0) автор, форма сделана красиво, но какой смысл заложен запросом складывать\вычитать даты?
Показать пример использования РАЗНОСТЬДАТ?
38. AlexO 127 21.03.13 13:04 Сейчас в теме
Нет, ну согласитесь - форма-то красива, как в 7.7 практически :)
41. PiccaHut001 21.03.13 16:53 Сейчас в теме
42. PiccaHut001 21.03.13 16:53 Сейчас в теме
Давно мечтал о таком, теперь буду даты складывать.Автору респект.
45. yuraos 954 21.03.13 17:07 Сейчас в теме
ГОСПОДА!

А КУДА ПОДЕВАЛСЯ АВТОР СТАТЬИ (уважаемый vsuh) ???

Хоть бы один пост оставил.
:)

В личку что ли писать благодарности
за приятное общение на этой ветке ???
46. AlexO 127 22.03.13 00:03 Сейчас в теме
(45) yuraos,
Ушел писать обработки по ДОБАВИТЬКДАТЕ, найти запросом МАКСИМУМ и МИНИМУМ :)
47. Поручик 4328 22.03.13 07:29 Сейчас в теме
(45) Автор пошёл дальше читать Габеца и Гончарова - Простые примеры разработки.
49. Степанова Н. 22.03.13 17:08 Сейчас в теме
Для чего это вообще нужно
51. yuraos 954 22.03.13 19:27 Сейчас в теме
(49) Степанова Н.,
да так, особо не для чего.
...
так поболтать-почирикать.
;)
57. alexin08 61 27.03.13 10:04 Сейчас в теме
А для кадровика этот калькулятор очень даже интересен!
58. chmv 11.08.14 09:05 Сейчас в теме
59. Vovan58 45 11.08.14 09:37 Сейчас в теме
Как статью по поводу работы с датами - было бы интересно, а за деньги - стыдно!
Оставьте свое сообщение

См. также

Универсальное удаление движений регистров накопления по всем непроведенным документам 10

Инструменты и обработки Программист Пользователь Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции Чистка базы

Попалась база КА 2.4 с движениями по регистрам, у которых регистратор был непроведен или помечен на удаление. Написал небольшую обработку по удалению таких записей из регистров.

1 стартмани

27.09.2019    1050    2    John_d    14       

1С REST API клиент. Обмен из 1С с сайтом/магазином WordPress/WooCommerce с помощью REST API 11

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf УУ Оптовая торговля Розничная торговля Абонемент ($m) Универсальные обработки WEB Универсальные функции

Обмен 1С с сайтом на WordPress и магазином Woocommerce. Внешняя обработка сделана как REST API клиент сайта WordPress, позволяет разработчику публиковать/изменять/удалять/просматривать посты/страницы/товары/фотографии (в связке с товаром/страницей) на сайте/магазине WordPress/Woocommerce. Обработки сделаны с использованием обычных форм, демо-формы использования в комплекте.

10 стартмани

29.07.2019    1904    4    osivv    14       

Экспортные процедуры и функции общих модулей БП 3.0, ЗУП 3.1, УТ 11 32

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Универсальные функции

Таблицы экспортных процедур и функций общих модулей конфигураций БП КОРП 3.0, ЗУП КОРП 3.1, УТ 11 + обработка по формированию такой таблицы из любой конфигурации.

14.06.2019    3397    329    SanchoD    29       

Работа с графической схемой в объектной модели DOM 37

Статья Программист Конфигурация (md, cf) v8 v8::УФ Абонемент ($m) Универсальные функции

Пример кода для работы с графической схемой в объектной модели DOM, платформа 8.3.12.

1 стартмани

04.06.2019    3054    4    botokash    19       

Программное формирование картинки в 1С:Предприятие 8.3.9 (ПотокВПамяти / ЗаписьДанных) 50

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

В статье представлен код программного формирования картинки (двоичные данные) без всяких внешних компонент, без формирования строки Base64, используя лишь встроенные механизмы 1С предприятие 8.3.9 (объекты ПотокВПамяти и ЗаписьДанных). Сам по себе код формирования картинки не несёт ничего нового. Всё описано в википедии. Захотелось попробовать новые методы, но никак не доходитили руки. В приложении обработка практически с этим же кодом.

1 стартмани

16.05.2019    4208    5    yku    7       

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 508

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования Внешние источники данных WEB Универсальные функции Инструментарий разработчика Универсальные обработки

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

1 стартмани

31.01.2019    24589    242    bonv    102       

Альтернатива внешним печатным формам. ЗУП 3.1 23

Статья Программист Расширение (cfe) v8 v8::СПР ЗУП3.x Зарплата Абонемент ($m) Печатные формы документов Универсальные функции Практика программирования Разработка

Как в ЗУП 3.1.8 отказаться от внешних печатных форм и расширением увеличить количество полей, доступных при редактировании макетов, для изменения печатных форм Т1, Т5, Т8 и аналогичные пользователями.

1 стартмани

30.01.2019    5779    10    Mogilnikova    2       

Создание и запуск скрипта для ввода текста на базе AutoHotkey 7

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Универсальные функции

Механизм для ввода текста в поля данных, в случаях, когда нет возможности использовать буфер обмена. Полезен в тех случаях, когда необходимо ввести пароль в заблокированный сеанс RDP или когда надо передать какую-либо текстовую информацию в удаленный сеанс, а буфер обмена не доступен или отключен администратором.

1 стартмани

28.01.2019    2225    1    Wezoowy    1       

Использование подсистемы БСП "Заполнение объектов" 133

Статья Программист Расширение (cfe) v8 v8::УФ 1cv8.cf Россия Абонемент ($m) Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем)

Применение механизмов БСП для добавления новых команд заполнения к формам различных объектов. Использование расширений конфигурации для доработки. Шаблоны для реализации собственных команд заполнения.

1 стартмани

23.11.2018    12789    8    ids79    14       

Отправка электронной почты с помощью локального почтового клиента из 1С, развернутой под удаленным рабочим столом 12

Инструменты и обработки Программист Пользователь Архив с данными v8 КА1 БП2.0 УТ10 УПП1 Windows Абонемент ($m) Печатные формы документов Универсальные функции Email

Решение для интерактивной (нажал-отредактировал) отправки электронных писем и печатных форм через почтовый клиент (Thunderbird, Outlook) находящийся на локальном компьютере, из конфигурации 1С, развернутой под удаленным рабочим столом (RDP, remote-app). Подходит также для локального развертывания 1С. Представлен пример быстрой интеграции с конфигурациями "Управление торговлей 10.3", "Управление производственным предприятием 1.3", "Комплексная автоматизация 1.1", "Бухгалтерия предприятия 2.0".

1 стартмани

21.09.2018    10883    10    stvorl    0       

Доработка функции ОбщегоНазначения.ЗаменитьСсылки для автоматической чистки или свёртки табличных частей 4

Статья Программист Архив с данными v8 Абонемент ($m) Универсальные функции

Стандартная обработка по замене дублей ругается на документ с неуникальными строками. Предполагается, что их нужно либо а) удалить, либо б) свернуть. Я немного модифицировал код функции ОбщегоНазначения.ЗаменитьСсылки, встроив в него вызов процедуры, переопределяемой в модуле менеджера соответствующего документа. И в этом модуле менеджера мы уже сами определяем - удалить или свернуть. Ну и вообще там чего хошь можно с этой коллекцией сделать - сам же ж процедуру пишешь...

1 стартмани

12.09.2018    2859    albert.goncharov    0       

Пропорциональное распределение в запросе 35

Статья Программист Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

Периодически в работе сталкиваюсь с задачей пропорционального распределения сумм в запросе. Ситуация усложняется, когда распределяемые суммы изначально не известны и определяются в процессе выполнения запроса. Эта статья один из примеров решения такой задачи.

1 стартмани

28.06.2018    7940    1    invertex    7       

Поиск свободного штрихкода одним запросом по оригинальной методике 4

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf УУ Розничная торговля Абонемент ($m) Универсальные функции

Поиск свободного кода для создания штрих-кода, одним запросом по оригинальной методике, с возможностью выбора границ для разграничения кодов ( например для распределенных баз или подразделений. Принцип поиска состоит в создании таблицы свободных кодов и ее клона сдвинутого на 1.

1 стартмани

19.06.2018    3782    BackHand001    4       

Проверка таблицы на дублирование строк (ТаблицаЗначений, ТабличнаяЧасть) и получение массива таких строк 9

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

Функция для проверки дублирования строк в ТаблицеЗначений или ТабличнойЧасти. Также, если необходимо, возвращает массив задублированных строк (можно обработать).

1 стартмани

05.02.2018    7707    6    uri1978    27       

Свертка таблицы значений. С блэкджеком и всем остальным 5

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

Функция свертки таблицы значений. Умеет в отличие от стандартного метода все, что можно делать на языке запросов.

1 стартмани

22.01.2018    7486    2    dusha0020    10       

Определение MIME-типа файла 6

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

Небольшая, но полезная функция для определения MIME-типа файла по его расширению. Сэкономит время разработчикам.

1 стартмани

12.01.2018    7141    2    o.nikolaev    4       

Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула 8

Отчеты и формы Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Печатные формы документов Практика программирования Универсальные функции

Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.

1 стартмани

29.12.2017    21238    21    agent00mouse    0       

Запуск приложений на клиенте из RDP-сессии 8

Инструменты и обработки Системный администратор Архив с данными v8 1cv8.cf Windows Абонемент ($m) Универсальные функции

Часто на терминальном сервере, где работает 1С, закрыт или ограничен запуск сторонних приложений, интернет и т.д. Такая ситуация часто встречается в облаках. В данной статье описан простой вариант выхода из ситуации, когда все необходимое стороннее ПО запускается на клиенте. Обработки содержат код, приведенный в статье, и могут быть доработаны под конкретную инфраструктуру.

1 стартмани

30.10.2017    8338    5    GusevNA    4       

Простые подсистемы: Библиотека подсистем 11

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 Абонемент ($m) Инструментарий разработчика Универсальные обработки Универсальные функции

Библиотека простых подсистем и наработок, облегчающих жизнь разработчика и внедренца, предоставляя относительно готовые решения. Логическое развитие линейки публикаций "Простые подсистемы". Базируются на БСП. Вошли часть ранее опубликованных подсистем и новые. Всего 5 штук (будет больше).

1 стартмани

26.10.2017    7824    7    pbabincev    1       

Размеры управляемой формы 100

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом Универсальные функции

Как рассчитать ширину и высоту управляемой формы или отдельного элемента, чтобы адаптировать интерфейс программно при их изменении.

1 стартмани

08.10.2017    17473    46    json    8       

Шаблон внешней обработки регламентного задания с формой настройки параметров выполнения 86

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Инструментарий разработчика Универсальные функции

Шаблон внешней обработки призван упростить программисту процесс реализации внешнего регламентного задания. Пригоден к использованию во всех конфигурациях на управляемых формах, в которых присутствует подсистема "Дополнительные отчеты и обработки" из состава библиотеки стандартных подсистем (БСП) версии 2.1 и выше.

1 стартмани

28.05.2017    17272    140    Bassgood    10       

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов 175

Статья Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    38206    166    DarkAn    86       

Универсальная процедура по загрузке файла из интернета 10

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Практика программирования WEB Универсальные функции

Передаем в процедуру всего два параметра: откуда взять и куда положить. Остальное она сделает сама

1 стартмани

17.05.2017    11629    9    json    2       

Правильный вопрос 16

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

Заметили, что пользователи бездумно кликают по первой попавшейся кнопке, не удосужившись прочитать текст предупреждения или вопроса? Данная функция призвана решить данную проблему!

1 стартмани

15.05.2017    9056    SvoyakMartin    15       

Web сервис 1С 24

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Практика программирования WEB Универсальные функции

Пример реализации простого web сервиса. Особенность: не используются XDTO пакеты, определяемые в дереве конфигураций; возможность передачи любых структур данных: списки значений, таблицы значений, табличные документы и т.п.

1 стартмани

21.03.2017    22028    74    hiduk    33       

Набор математических функций 19

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

Небольшой набор математических функций для работы с массивами чисел.

1 стартмани

12.01.2017    10890    2    SvoyakMartin    17       

Сравнение строк. Наибольшая общая последовательность 6

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Универсальные функции

Заданы две строки Строка1 и Строка2. Требуется найти наибольшую общую подпоследовательность (НОП) этих строк.

1 стартмани

14.11.2016    7302    2    Alex_YAM    4       

Набор процедур для парсера консоли запросов 7

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Универсальные функции

Данный набор функций и процедур необходимо вставить в Консоль запросов для управляемого приложения 1С 8.2 - 8.3 (Такси) http://infostart.ru/public/64522/, и вы получите возможность разбирать сложные запросы на вложенные, вносить необходимые правки и собирать измененные подзапросы в запрос. Данный модуль не содержит консоли!!! Ее придется отдельно скачать по ссылке http://infostart.ru/public/64522/

1 стартмани

09.11.2016    7753    3    blockcode    5       

Организация выбора месяца из списка (универсально + НЕ модально ) 7

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом Универсальные функции

Пришлось столкнуться с такой проблемой, как выбор месяца из ниспадающего списка (с элементами вида "НазваниеМесяца Год") с возможностью изменения года. Хочу предложить универсальный вариант реализации данного механизма на основе механизма http://infostart.ru/public/167549/ ЗЫ: основные отличия: - вместо "НачалоВыбораИзСписка" работаем с "ОбработкаВыбора" без модальности - Обратное преобразование в дату не только на русском - Универсальность процедур. Одна функция выбирается в нескольких полях.

1 стартмани

09.11.2016    10583    11    igorkosmos    4       

Отладка/доработка модуля менеджера "на лету" 89

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Практика программирования Универсальные функции

Данный прием позволяет отлаживать и дорабатывать модуль менеджера во внешней обработке без необходимости пересохранять конфигурацию и перезапускать базу

1 стартмани

23.10.2016    22622    19    json    22       

Автоматическое разбиение строки на подстроки по ширине колонки / ячейки или по количеству символов 12

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные обработки Универсальные функции

Длинный адрес контрагента или нестандартная фамилия не входит в одну строку, а РазмещениеТекста = Переносить по какой-либо причине не устраивает? Что можно сделать? Вот пара полезных функций для решения данного вопроса с примерами применения.

1 стартмани

21.10.2016    11688    2    SvoyakMartin    3       

Сверка таблиц при разработке через тестирование 14

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Абонемент ($m) Инструментарий разработчика Практика программирования Универсальные функции

Данная статья про инструмент, который я использую уже продолжительное время, и который, по моему мнению, заслуживает внимания. Также опишу несколько примеров его применения.

1 стартмани

09.10.2016    12083    11    json    1       

(Удобняшка) выполнение произвольного кода в большом количестве баз 4

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 Абонемент ($m) Универсальные функции

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

1 стартмани

29.09.2016    9150    1    nomadon    4       

Функция преобразования промежутка времени в строку 7

Статья Программист Нет файла v8 1cv8.cf Россия Абонемент ($m) Универсальные функции

Функция предназначена для преобразования промежутка времени в строку с разбивкой по годам, дням, часам, минутам, секундам.

1 стартмани

23.09.2016    8288    5    vovant    1       

Вывод Таблицы Значений или Дерева Значений на экран управляемой формы без объявления колонок в реквизитах формы 49

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

Примеры взаимных преобразований Таблицы значения в Дерево значений или Табличный документ с использованием универсальных функций и макетов Системы компоновки данных. Примеры представлены в форме удобной для копирования в разработку.

1 стартмани

13.09.2016    28098    47    pavley2002    11       

Алгоритм по переносу вложенных запросов в пакеты 15

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Универсальные функции

Запросы неудобно отлаживать, если в них есть вложенные запросы. Данный алгоритм помогает отредактировать текст запроса таким образом, чтобы все вложенные запросы перенеслись в пакеты.

1 стартмани

26.08.2016    7878    19    ostapchenko.alexandr    20       

7 правил RFC 4180 22

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Универсальные функции

Что такое CSV? Описание правил формата RFC4180 и пара функций чтения/записи CSV текста в ТЗ согласно этим рекомендациям (с экранированием и _поддержкой многострочных полей_).

1 стартмани

22.08.2016    12527    15    kuzyara    2       

Запросы &НаКлиенте для Управляемого приложения 6

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

Разбитый между клиентом и сервером код размывает и усложняет логику прикладного решения. Для запроса из базы данных одной записи предлагаю &НаКлиенте использовать универсальную процедуру "ЗаполнитьИзЗапроса".

1 стартмани

08.05.2016    7103    2    sereginseregin    14       

Консоль и функция рекурсивного запроса 9

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Тестирование и исправление Универсальные функции

Консоль предназначена для отладки и просмотра результатов выполнения РЕКУРСИВНОГО ЗАПРОСА в режиме 1С:Предприятие. В консоли реализована универсальная функция для выполнения рекурсивных запросов.

1 стартмани

10.02.2016    10507    5    sereginseregin    1       

Генерация QR-кода (управляемая форма, обычное и управляемое приложение) 59

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Абонемент ($m) Универсальные функции Универсальные обработки

Обработку можно быстро и легко интегрировать в любую конфигурацию с и без БСП (Библиотека Стандартных Подсистем).

3 стартмани

04.02.2016    35451    151    tunesoft    24       

Динамический отбор динамического списка. Управляемая форма 1С: 8.3 11

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Универсальные функции

Так как в версии 1С:Предприятие 8.3.6 в управляемой форме появилась возможность получать текущие данные динамического списка с учетом всех отборов и видимости полей, было решено добавить простой удобный отбор по полям динамического списка, так как нас не устраивали стандартные отборы. В тестовой информационной базе наглядно показано как работает этот вариант отбора. При добавлении,удалении, изменении колонок динамического списка, поля отбора будут динамически строиться и работать на основании текущего состояния динамического списка - без доработки. В данной публикации только показываю идею использования новой возможности версии 1С 8.3.6, поэтому данный вариант отбора можно улучшать бесконечно.

1 стартмани

25.01.2016    16797    23    1prog@bk.ru    3       

Расчет интегралов 8

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Практика программирования Универсальные функции

Обработка для расчета определенного интеграла методом прямоугольников

1 стартмани

27.11.2015    8229    sojuznik    12       

Автоматическая подстановка уничтожений временных таблиц в текст запроса 7

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

Функция, которая сама подставляет в текст запроса "УНИЧТОЖИТЬ" в местах последнего использования ВТ.

1 стартмани

14.11.2015    14976    SeiOkami    3       

Механизм контроля заполнения реквизитов 32

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

Механизм позволяет в пользовательском режиме настраивать контролируемые реквизиты, тем самым помогает справиться с невнимательностью пользователей. Не требует снятия с поддержки типовых объектов, внося минимум изменений в конфигурацию. Не привязан ни к конкретным конфигурациям, ни к БСП.

1 стартмани

25.10.2015    10220    28    yur4ik9408    10       

Регистрация запуска обработок во внешнем источнике данных 16

Инструменты и обработки Системный администратор Архив с данными v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты Универсальные функции

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

1 стартмани

23.10.2015    8374    4    vsuh    2       

Прикрепление внешних файлов к документам и справочникам 1С 8.3 (управляемые формы) 29

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 1cv8.cf Россия Windows Абонемент ($m) Практика программирования Универсальные функции

В данной статье мы рассмотрим, как просто и быстро в любую конфигурацию на базе управляемых форм добавить функционал прикрепления внешних файлов к документам и справочникам. Я начну описание с нуля, т.е. с создания пустой конфигурации. Так что даже любой малоопытный разработчик (вроде меня =) ) сможет реализовать данный функционал в своей или уже написанной конфигурации. Если Вам не хочется разбираться с ниже написанной инструкцией, можете скачать файл*.doc с описанием и скриншотами, либо уже саму готовую конфигурацию.

1 стартмани

15.10.2015    62694    119    omenfarsh    27       

Нелинейная многомерная оптимизация - это просто. Часть 3. Имитация отжига 39

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Математика и алгоритмы Универсальные функции

Метод имитации отжига для поиска оптимального решения. И, как обычно, универсальная функция поиска этого самого решения.

1 стартмани

13.10.2015    14777    22    dusha0020    5