Ещё немного функционального стиля в 1С или Как нам отфильтровать таблицу значений

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

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

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

Возникла задача.
Есть таблица значений с колонкой Период типа Дата.

Как нам отфильтровать таблицу и выбрать только те строки, которые, например, укладываются в определенный диапазон?

Встроенная функция Скопировать(...)  с отбором строк по переданной структуре нам в данном случае не помощник - соответствие не точное.

Перебор - некрасиво и громоздко.

Загрузка ТЗ во временную таблицу запроса и отбор им - стрельба из пушки по воробьям.

Немного покумекал и придумал следующее:

ОтфильтрованнаяТЗ = ФильтрТЗ(ТЗ, "{ИмяКолонки1} + {ИмяКолонки2} <= {ИмяКолонки3} >> {ИмяКолонки2} <> 0");

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

Значение в фигурных скобках обозначает значение в соответствующей колонке. В итоге выражение должно давать в результате Истина или Ложь, в зависимости от этого строка ТЗ будет передана в обработку на следующий этап конвейера.

При проверке условия применяется Вычислить(...), так что при написании условий учитывайте имеющиеся ограничения.

Сама функция выглядит достаточно просто, но, возможно, её можно упростить и ещё:

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

Функция МассивВыражений(ВыражениеФильтрации)
	ВыражениеРазделенное = СтрРазделить(СтрЗаменить(ВыражениеФильтрации, ">>", "$"), "$", Ложь);
	МассивВыражений = Новый Массив;
	
        Для Каждого Выражение Из ВыражениеРазделенное Цикл
		ВыражениеОбработанное = СтрЗаменить(Выражение, "{", "СтрТЗ.");
		ВыражениеОбработанное = СтрЗаменить(ВыражениеОбработанное, "}", "");
		
		МассивВыражений.Добавить(ВыражениеОбработанное);
	КонецЦикла;
	
	Возврат МассивВыражений;
КонецФункции

 

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Steelvan 16.05.20 12:07 Сейчас в теме
Скорость своего творчества проверял ?
Новиков; t278; awk; r2d255; +4 Ответить
2. CyberCerber 493 16.05.20 15:45 Сейчас в теме
Но что-то я не понял, чем это лучше простого перебора? Тут даже несколько переборов будет, на каждую часть условия. И если по первой части отобрали почти все строки, мы опять их все проходить будем...
Тогда уж можно было передавать полноценное условие на строку вида "Колонка1 = А И Колонка2 < Б ИЛИ Колонка3 = В". Так мы сразу проверяем полное условие за один проход, можем использовать ИЛИ и т.д.
wolfsoft; gubanoff; Xershi; vladimirmatancev; +4 Ответить
3. GlebHappy 113 16.05.20 20:40 Сейчас в теме
(2) Да, такой вариант будет работать - но не потеряется ли читаемость условия?
5. CyberCerber 493 17.05.20 05:41 Сейчас в теме
(3) Как по мне, оно будет более читаемое, чем ваше, потому что это всем знакомый формат, а не что-то новое.
4. PowerBoy 2960 16.05.20 22:10 Сейчас в теме
Запросом будет быстрей, на больших таблицах - точно.
the1; nomad_irk; vladimirmatancev; +3 Ответить
13. ImHunter 192 18.05.20 08:05 Сейчас в теме
(4) Весьма спорное утверждение;)
Запросом будет быстрей, на больших таблицах - точно.

Как по-твоему ТЗ попадает на сервер? Делается куча запросов по передаче и вставке каждой строки ТЗ во временную таблицу БД. Т.е., сам запрос, вероятно, быстро отработает. Но будет куча накладных расходов.

Насчет (0) - выглядит на мой взгляд красиво. Обязательно попробую попробовать.
14. nomad_irk 49 18.05.20 09:57 Сейчас в теме
(13)А ничего, что ТЗ на клиенте не умеет жить от слова совсем? :)
16. ImHunter 192 18.05.20 10:03 Сейчас в теме
(14) Как бы, ну и что? К статье это вообще не имеет отношения. Запрос, например, тоже на клиенте не живет.
17. nomad_irk 49 18.05.20 10:05 Сейчас в теме
(16) Так зачем ТЗ передавать на сервер? Она там уже всегда.
18. ImHunter 192 18.05.20 10:24 Сейчас в теме
(17) Имеется в виду передача ТЗ в СУБД для выполнения запроса. Ведь Запрос только с данными СУБД и работает.
При использовании параметра запроса типа ТЗ, платформа неявно создает ВТ. Отсюда, кстати, требование типизации ТЗ. И потом происходит построчное наполнение ВТ.
19. nomad_irk 49 18.05.20 10:27 Сейчас в теме
(18)В любом случае, это работает быстрее, т.к. реализуется средствами платформы.
20. ImHunter 192 18.05.20 10:29 Сейчас в теме
(19) А мы тут никакие ВК и не обсуждаем;) Все только платформой и делается.
6. acanta 74 17.05.20 06:13 Сейчас в теме
По стандартам 7.7 вычислить/шаблон было не 1с совместимо, из за невозможности синтаксического контроля. Хотя позже я видела несколько тиражных решений, со статусом 1с совместимо, использующих эти методы.
В 8ке что то изменилось (кроме того что в поставку стало возможным не включать код)?
7. vladimirmatancev 17.05.20 09:48 Сейчас в теме
Перебор - некрасиво и громоздко.

Для Каждого СтрТЗ Из ТЗ Цикл

А где тут без перебора?
D_astana; CyberCerber; wolfsoft; gubanoff; t278; awk; +6 Ответить
8. awk 714 17.05.20 10:45 Сейчас в теме
(7) Статья явный перебор. :)
CyberCerber; gubanoff; wazup666; +3 Ответить
9. acanta 74 17.05.20 11:08 Сейчас в теме
Обычная ситуация, допустим у нас таблица значений с кодами товаров, периодами и суммами продаж. Необходимо дополнить ее колонками с какими то расчетным показателями, реквизитами товаров, наименованием и т.п.
В запросе делаем соединение тз со справочником и вычисляем все что вычисляется.
А если периоды нужно разделить, то соединяем тз с самой тз столько раз, сколько максимально периодов может получиться.
После чего отбираем по требуемому диапазону. Так?
10. logarifm 1072 17.05.20 19:23 Сейчас в теме
Нахрена изобретать сей велосипед, когда ТЗ можно сделать источником данных построителя запроса и наложить любые отборы!!!!
Vlad_2008; wazup666; +2 Ответить
11. oleganatolievich 145 17.05.20 21:21 Сейчас в теме
Для Каждого СтрТЗ Из ТЗ Цикл
Если Вычислить(Выражение) Тогда

ну такое...

(10) плюсую.
22. aspirator23 420 18.05.20 12:04 Сейчас в теме
(10) При том что почти во всех типовых конфигурациях есть в БСП функция на построителе для таких отборов. И работает очень быстро - мне даже кажется быстрее самодельного запроса.
30. Sergafan10 21.05.20 15:43 Сейчас в теме
(22) не подскажете адрес такой функции. Поискал в БСП 3.0.1.19 - не нашёл. Может плохо искал?
12. acanta 74 17.05.20 21:50 Сейчас в теме
В случае дробления периодов имхо перебор не самое худшее решение. Мне попалась ситуация, в которой больше 15 полей в запросе из табличной части (табеля) выбивало программу.
Если построчно нет неявных запросов к базе, а только 2*2 то почему это должно быть проблемой?
15. ImHunter 192 18.05.20 09:59 Сейчас в теме
Вообще, появление таких способов - это недоработка 1С (кто бы сомневался;). Ведь есть платформенный объект СравнениеЗначений. Почему бы не расширить функционал этого объекта, чтобы писать свой код сравнения... И почему бы не использовать такие объекты при сортировках и фильтрах...
21. Goleff74 166 18.05.20 10:49 Сейчас в теме
Для коллекции значений смысл имеет на клиенте. Для ТЗ - такое.
23. Darklight 22 18.05.20 14:18 Сейчас в теме
Жесть - ну вы даёте - для того чтобы применить несколько условий соединённых операцией "И"- Вы устраиваете перебор всей таблицы, пускай и каждый раз сокращающейся (и то не факт) после применения каждого условия.Это даже не стрельба из пушки - это стрельба из пулемёта типа "Миниган" по воробьям. Да ещё и с применением функции Вычислить - со всеми её недостатками и ограничениями (главный из них - отсутствие поддержки в iOS и требование небезопасного режима выполнения от сеанса), не говоря уже о снижении производительности в многократном циклическом вызове!

Ну ладно бы ещё - ожидать действительно правильной динамической реализации функционального подхода - когда код-реализация алгоритма перебора и фильтрации сначала генерируется целиком (с одним циклом перебора) - а потом уже выполняется единой инструкцией "Выполнить" (ах да - для web-клиента это не возможно... а какой тут нафиг WEB-Клиент - он таблицы значений вообще не поддерживает; но если сделать поддержку для клиентской коллекции ДанныеФормы, то для неё придётся сделать отдельную ветку алгоритма с циклическим (одним циклом) вызовов проверки условий через "Вычислить") - но это снижение производительности только для WEB-Клиента будет, не так уж часто используемого на практике).

Ну, а то, что если уже делать такую функцию - то надо сделать поодержку и других коллекций "ДеревоЗначений", "СписокЗначений", "Структура", "Соответствие", "Массив" (для последние коллекций имеется в виду, что фильтр будет на Значение, которое может содержать какое-то составное значение - например Структуру).

Ну а, на мой взгляд, пока поддержки а-ля LINQ не появится в 1С - все эти способы лишены практического смысла. Чаще всего условия всё-таки проверяются на равенство (хотя вот, да, бывают случаи на неравенство - хотя такой фильтр тоже возможно часто эффективно сделать на инверсию равенства - одним перебором, тем более когда есть одновременно и на равенство и на неравенство условия) - тогда такой алгоритм всегда нужно реализовывать через "НайтиСтроки" - эта встроенная функция работает достаточно быстро.

Ну а если уж так надо сделать более сложные условия (что бывает нужно не так уж часто) - то лучше воспользоваться механизмом СКД (именно СКД - т.к. тут и по таблицам значений (а остальные коллекции нужно будет к ней приводить) можно строить сложные условия, причём в этом случае обращения к СУБД не будет - одна беда - тонкий клиент(ы) не поддерживается). Ну и выгрузка результат в ТЗ из СКД выполняется типовым процессором вывода.

Вот такую универсальную функцию-обёртку было бы хорошо сделать и опубликовать!

Но это - сугубо моё личное мнение....
24. ImHunter 192 18.05.20 14:31 Сейчас в теме
(23) Ну... Можно много рассуждать на темы если бы да кабы.
А вот чел взял да и сделал.
26. Darklight 22 18.05.20 14:58 Сейчас в теме
(24)Ну можно много чего взять и сделать, был бы практический смысл. Я просто высказал, своё мнение, не более того
27. Sergafan10 19.05.20 10:26 Сейчас в теме
Функция ОтборВТЗПоУсловию(ТЗ, ТЗОтборов) Экспорт
	
	Построитель = Новый ПостроительЗапроса;
	Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЗ);

	Для Каждого х ИЗ ТЗОтборов Цикл
		Отбор = Построитель.Отбор.Добавить(х.НаименованиеОтбора);//Наименование колонки, по которой будет отбор
		Отбор.ВидСравнения = ВидСравнения[х.ВидСравненияОтбора];//"Больше", "Равно", и тд
		Отбор.Значение = х.ЗначениеОтбора;
		Отбор.Использование = Истина;   		
	КонецЦикла;

	Построитель.Выполнить();
	
	Возврат Построитель.Результат.Выгрузить();
	
КонецФункции
Показать
ImHunter; Vlad_2008; Darklight; +3 Ответить
28. aspirator23 420 21.05.20 09:31 Сейчас в теме
(27) см (22) У них универсальнее
29. Sergafan10 21.05.20 15:42 Сейчас в теме
(28) где? что? не поленился, поискал в БСП 3.0.1.19 (не крайняя, конечно, но и не хлам), такую функцию. Так вот, там только одно упоминание о построителе запроса, в обработке сравнения табличных документов.
31. aspirator23 420 21.05.20 15:48 Сейчас в теме
(29) вот эта функция. Типовая, но насчет БСП - это я погорячился
// Отбирает из переданной таблицы строки по заданным критериям.
//
// Параметры:
//  Источник - ТаблицаЗначений, РезультатЗапроса, ОбластьЯчеекТабличногоДокумента - таблица-источник.
//  СтруктураКритериев - Структура - названия отборов и значения, по которым нужно отобрать строки.
//  СтруктураСложныхКритериев - Структура - если свойство передано, то значение содержит вид сравнения.
//
// Возвращаемое значение:
//  РезультатЗапроса - таблица с нужными строками.
//
Функция ОтобратьСтрокиПоКритериям(Источник, СтруктураКритериев, СтруктураСложныхКритериев = Неопределено) Экспорт

	Перем ВидСравненияСложный;

	Если СтруктураСложныхКритериев = Неопределено Тогда
		СтруктураСложныхКритериев = Новый Структура;
	КонецЕсли;

	ПостроительЗапроса = Новый ПостроительЗапроса;
	ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(Источник);

	Для Каждого Критерий Из СтруктураКритериев Цикл
		НовыйОтбор = ПостроительЗапроса.Отбор.Добавить(Критерий.Ключ);

		СтруктураСложныхКритериев.Свойство(Критерий.Ключ, ВидСравненияСложный);

		Если ВидСравненияСложный = Неопределено Тогда
			НовыйОтбор.Установить(Критерий.Значение);
		Иначе
			НовыйОтбор.Использование = Истина;
			НовыйОтбор.ВидСравнения = ВидСравненияСложный;
			НовыйОтбор.Значение = Критерий.Значение;
		КонецЕсли;
	КонецЦикла;

	Возврат ПостроительЗапроса.Результат;

КонецФункции // ОтобратьСтрокиПоКритериям()
Показать
32. МихаилМ 23.05.20 21:35 Сейчас в теме
Знач ТЗ неправильно сильно
Оставьте свое сообщение

См. также

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    70996    0    Serginio    108    

Сходство Джаро - Винклера. Нечеткое сравнение строк

Универсальные функции v8 Россия Бесплатно (free)

В области информатики и статистики сходство Джаро - Винклера представляет собой меру схожести строк для измерения расстояния между двумя последовательностями символов. В публикации рассмотрены некоторые особенности алгоритма, и представлен вариант его реализации на языке 1С.

25.12.2019    5561    0    brooho    17    

Функция - Формат государственного номера автомобиля

Универсальные функции v8 Автомобили, автосервисы Россия Бесплатно (free)

Возникла необходимость в приведении к единому формату хранящихся, и вводимых вновь, автомобильных Регистрационных знаков - Гос.номер.

23.12.2019    2476    0    brooho    4    

Полезности | Дерево значений | Обычные формы |

Практика программирования Универсальные функции v8 Бесплатно (free)

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

04.12.2019    4263    0    Mellow    7    

Универсальные функции с примерами использования Промо

Универсальные функции v8 Бесплатно (free)

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

26.02.2016    39800    0    unichkin    38    

Обработка расширением на клиенте

Расширения Универсальные функции v8::УФ 1cv8.cf Бесплатно (free)

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

31.10.2019    6193    0    EvgenURNN    9    

Использование XML-схемы из макета внешней обработки

Обмен через XML Универсальные функции v8 1cv8.cf Бесплатно (free)

Простой способ использования XML-схем из макета внешней обработки.

28.10.2019    9350    0    Olesia_Matusevich    10    

Быстрое создание наполненных коллекций

Практика программирования Универсальные функции v8 1cv8.cf Бесплатно (free)

Разберем самые частые способы создания коллекции, значения которой известны заранее. И сравним скорость их выполнения.

28.10.2019    6186    0    SeiOkami    66    

Минимализмы 3 Промо

Практика программирования Универсальные функции v8 Бесплатно (free)

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    43832    0    ildarovich    45    

Преобразование XML в таблицу значений или иной объект 1С методом XSL преобразования

Универсальные функции Обмен через XML v8 1cv8.cf Бесплатно (free)

Сразу открою интригу, напрямую прочитать XML, не содержащий объект 1С, не удастся. Статья раскрывает способы привести XML к формату, который возможно прочитать средствами платформы.

24.10.2019    9166    0    kraspila    28    

Обертка функций Excel на русском. Ускорение процесса разработки.

Загрузка и выгрузка в Excel Универсальные функции v8 Бесплатно (free)

Устали переключаться с русского на английский и обратно при работе с таблицами Excel из 1С? Сборка наиболее необходимых функций и методов работы с Excel, обернутых в функции 1С на русском языке.

24.10.2019    6327    0    DmitryKotov    6    

Функция СтрШаблон с именованными маркерами

Универсальные функции v8 1cv8.cf Бесплатно (free)

Функция позволяет задавать именованные маркеры формата [Имя], в отличии от типовых нумерованных формата %n

1 стартмани

21.10.2019    3386    0    kirinalex    27    

Универсальная функция для программного выполнения СКД Промо

Инструментарий разработчика Универсальные функции v8::СКД 1cv8.cf Бесплатно (free)

Часто встречаются вопросы на форумах о программном формировании СКД. Вроде и информации много по этому поводу, но... Все как всегда :) Собственно, в описании без лишних слов выложен текст общей функции, в которую, для выполнения отчета, нужно передать (минимум 2 параметра): СКД и ТабличныйДокумент.

20.05.2015    29298    0    dj_serega    18    

Полезняшки по СКД и построителям. Просто код

Практика программирования Универсальные функции v8 v8::СКД Бесплатно (free)

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

10.10.2019    8327    0    Yashazz    45    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    25660    0    ids79    16    

Выполнение произвольного кода в фоновых заданиях Промо

Универсальные функции v8 Бесплатно (free)

Если надо быстро провести 100`000 документов...

13.01.2016    23815    4    unichkin    13    

Сохранение запроса со всеми параметрами и временными таблицами

Универсальные функции v8 v8::УФ Россия Бесплатно (free)

Функция сохранения запроса со всеми параметрами и временными таблицами в формате *.q1c для открытия в консоли запросов с диска ИТС.

13.05.2019    5540    0    Serge R    5    

Иерархия справочника Сверху Вниз. Получаем произвольное количество родителей "верхнего" уровня

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Иерархия справочника Сверху Вниз. Функция для получения произвольного количества родителей "верхнего" уровня. На примере справочника "Номенклатура".

28.03.2019    5392    0    obsfromekb    11    

Доработка проведения типовых документов в УТ 11.4, КА 2.4, ЕРП 2.4

Практика программирования Универсальные функции Разработка v8 v8::УФ ERP2 УТ11 КА2 Россия УУ Бесплатно (free)

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

22.03.2019    15741    0    ids79    16    

Распределение оплаты по товарам Промо

Практика программирования Универсальные функции v8 1cv8.cf Бесплатно (free)

Учебная задача. Оплата приходит по заказу. Требуется запросом распределить её по товарам. Практическая задача была сложнее. Упростил специально для иллюстрации. Сначала собираем в одну таблицу заказы и товары. Затем ОБЪЕДИНТЬ ВСЕ с оплатами. Потом намазываем оплату на товар.

04.08.2014    18517    0    Трактор    5    

Добавление отчетов в типовые конфигурации 1С

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

Описание различных способов добавления общих и контекстных отчетов в конфигурации 1С, построенные на базе БСП. Основные моменты и нюансы.

07.03.2019    44921    0    ids79    45    

Расширение конструктора мобильного рабочего места для варианта "клиент 1С+RDP" (для любых wi-fi терминалов). Экосистема решений Simple WMS

Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Универсальные функции Мобильная разработка Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ v8::УФ УУ Бесплатно (free)

Развитие проекта «Конструктор мобильного клиента на Android» https://infostart.ru/public/976636/ для устройств не на Андроиде (работающих в режиме RDP). В отличие от варианта Android работа на терминалах происходит в режиме 1С:Предприятие через RDP а конфигурации мобильных клиентов полностью совместимы для обоих версий. Т.е. конфигурация единая, создается один раз и ее может читать как Android -устройство, так и 1С-клиент на RDP без необходимости какой либо переделки.

05.02.2019    11490    0    informa1555    5    

Работа со строками: от простого к сложному

Практика программирования Универсальные функции v8 Бесплатно (free)

Простые примеры работы со строками, в конце более читаемый разбор сложных текстов.

14.01.2019    20260    0    Evg-Lylyk    17    

Сканируем без сканера или MXL to JPG Промо

Внешние источники данных Универсальные функции Печатные формы документов v8 1cv8.cf Бесплатно (free)

Хотите конвертировать документы в формат изображения менее чем за минуту, не имея сканера? Тогда эта статья для вас.

24.05.2012    32629    0    shakmaev    47    

Нумерация колонок субконто при выгрузке набора записей регистра бухгалтерии в таблицу значений

Универсальные функции v8 Бесплатно (free)

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

14.01.2019    5039    0    The Ded    5    

Многопоточное восстановление последовательностей

Производительность и оптимизация (HighLoad) Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    11770    0    _ASZ_    33    

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке

Универсальные функции Зарплата Управление персоналом (HRM) Зарплата v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Бесплатно (free)

В статье размещен список стандартных процедур и функций с примерами, которые могут помочь при разработке (доработке) конфигураций Зарплата и управление персоналом ред. 3.1 и Зарплата и кадры государственного учреждения 3.1. Иногда бывает довольно сложно правильно получить данные или долго, поэтому лучшим вариантом будет использование стандартных процедур. Буду очень признателен, если Вы поделитесь своим опытом и предложите свои варианты стандартных процедур которые помогают в работе. Или предложите, как дополнить имеющиеся процедуры.

14.11.2018    67977    0    GeterX    105    

Кадровые данные сотрудников в ЗУП 3.1 в отчетах

Универсальные функции Управление персоналом (HRM) Управление персоналом (HRM) v8 v8::СПР ЗУП3.x Россия Бесплатно (free)

Параметры используемые для получения данных сотрудников в ЗУП 3.1. Пригодится для разработки отчетов как напоминалка.

07.11.2018    26810    0    fromlion    21    

Добавление расшифровки в стандартные и добавленные внешние отчеты со стандартной формой отчета на СКД

Универсальные функции v8::УФ v8::СКД ERP2 УТ11 Россия Бесплатно (free)

Описан способ добавления расшифровки отчета на СКД как встроенного в систему, так и добавленного внешнего отчета.

27.09.2018    9545    0    bmk74    7    

Функция НайтиФайлы() в каталоге netshare на Linux - обход ошибки работы

Практика программирования Универсальные функции v8 Бесплатно (free)

Решение проблемы применения функции НайтиФайлы() в каталоге с netshare на Linux-сервере - не работает поиск файлов по указанной маске (шаблону)

19.09.2018    5639    0    drmaxart    1    

Простой способ программно открыть заполненную форму нового (незаписанного) документа в тонком клиенте

Универсальные функции v8 Бесплатно (free)

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

09.06.2018    10518    0    Serge R    12    

Генерация временного ряда запросом

Универсальные функции v8 v8::Запросы 1cv8.cf Бесплатно (free)

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

07.05.2018    8104    0    dim_zal    6    

Проверка заполнения полей одной строкой

Практика программирования Универсальные функции v8 1cv8.cf Бесплатно (free)

Функция для проверки заполнения полей.

02.03.2018    7189    0    aleximus    2    

Таблица значений в Таблицу HTML - функция с возможностью настройки цвета шапки, заголовков, выравнивания и размера колонок

Практика программирования Универсальные функции v8 1cv8.cf Бесплатно (free)

Если вам нужно быстро получить таблицу значений в виде строкового типа 1С в формате HTML, вам поможет эта функция, включена возможность автоматического вывода столбца пункт по порядку.

22.12.2017    23703    0    rpgshnik    22    

Пример преобразования двоичных данных в строку

Универсальные функции v8 Бесплатно (free)

Доброго всем времени суток. Хочу поделиться маленьким решением маленькой проблемы. Думаю, будет интересно новичкам. Я не раз встречал на форумах вопрос: как преобразовать двоичные данные в строку? В частности, к примеру, частенько нужно получить хэш файла MD5 в текстовом виде, но как мы знаем 1С возвращает его в виде двоичных данных.

08.12.2017    17022    0    frkbvfnjh    21    

Функция сохранения картинок из книги Excel в каталог с определением координат на листе

Загрузка и выгрузка в Excel Универсальные функции v8 Бесплатно (free)

Разбор файла *.xlsx как Web-архива, выгрузка изображений без потери качества, с определением положения изображений.

12.11.2017    10021    0    user634820_zergemoth    1    

Определяем контекст сеанса 1С программно (Тонкий/Толстый клиенты/HTTP-Сервис/Фоновое задание и т.д.)

Универсальные функции Практика программирования v8 1cv8.cf Бесплатно (free)

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

08.11.2017    21125    0    azubar    10    

Правила округления

Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Округление числовых значений по трём правилам математики

30.10.2017    10742    0    dakork    4    

#Область ВНЕШНИЕ_ВЫЗОВЫ или MVC в 1С, библиотечность и упрощение интеграции кода

Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Зачастую почти любой модуль в 1С содержит от одного до несметного множества вызовов других модулей. Как с этим бороться, чтобы было проще куда-то что-то переносить - в этом посте.

12.10.2017    17092    0    for_sale    58    

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

Универсальные функции v8 Бесплатно (free)

Иногда бывает необходимость получить "Первый понедельник месяца" или "Вторую пятницу месяца". Есть несколько способов решения вопроса. Опишу один из них.

12.09.2017    10610    0    987ww765    10    

Разность дат

Универсальные функции v8 Бесплатно (free)

Иногда требуется получить разность дат в виде типа: 5 дней 6 месяцев 4 года. Это можно сделать с помощью запроса, получив на выходе сразу 3 нужных числа, без последующих вычислений.

11.08.2017    12248    0    jun-ko    24    

Простой способ преобразовать UNICODE в строку или в структуру

Практика программирования Универсальные функции v8 Россия Бесплатно (free)

Первая функция получает Строку, которая содержит строчки вида «Ключ=Значение». Вторая функция получает Структуру.

07.07.2017    8798    0    dimasts    6    

"Распределение в запросе" или "избавляемся от перебора"

Математика и алгоритмы Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Хороший перебор - это отсутствие перебора. Рассмотрим пример замены полного перебора запросом.

16.12.2016    32171    0    alexandersh    48    

Пример работы с шаблоном Word через ole (клиент - сервер, тонкий клиент) - установка значений и заполнение таблицы

Практика программирования Универсальные функции v8 Бесплатно (free)

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

09.11.2016    11544    0    gortrex    8