Заметки по SQL: Генерация ряда дат и данные из периодических регистров на каждый день

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

Разработка - Практика программирования

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

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

     Предлагаемый вариант генератора дат построен на публикации "Порождающий запрос" в которой предложен запрос формирующий числа натурального ряда в диапазоне 0 - 1 048 576. Поскольку нам такой большой диапазон не потребуется, то сократим этот запрос на один разряд до диапазона  0-65 536 чисел.   Фактически это будет чуть больше 184 лет, что для большинства вариантов использования более чем достаточно.

ВЫБРАТЬ
	0 КАК Х
ПОМЕСТИТЬ Регистр1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
	1
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	Младшие.Х + 2 * Старшие.Х КАК Х
ПОМЕСТИТЬ Регистр2
ИЗ
	Регистр1 КАК Младшие,
	Регистр1 КАК Старшие
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	Младшие.Х + 4 * Старшие.Х КАК Х
ПОМЕСТИТЬ Регистр4
ИЗ
	Регистр2 КАК Младшие,
	Регистр2 КАК Старшие
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	Младшие.Х + 16 * Старшие.Х КАК Х
ПОМЕСТИТЬ Регистр8
ИЗ
	Регистр4 КАК Младшие,
	Регистр4 КАК Старшие
ГДЕ
	Младшие.Х + 16 * Старшие.Х <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, Младшие.Х + 256 * Старшие.Х) КАК Дата
ИЗ
	Регистр8 КАК Младшие,
	Регистр8 КАК Старшие
ГДЕ
	Младшие.Х + 256 * Старшие.Х <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)

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

     Аналогичным образом можно построить запрос получающий ряд месяцев в заданном периоде.

ВЫБРАТЬ
	0 КАК Х
ПОМЕСТИТЬ Регистр1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	1
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	Младшие.Х + 2 * Старшие.Х КАК Х
ПОМЕСТИТЬ Регистр2
ИЗ
	Регистр1 КАК Младшие,
	Регистр1 КАК Старшие
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	Младшие.Х + 4 * Старшие.Х КАК Х
ПОМЕСТИТЬ Регистр4
ИЗ
	Регистр2 КАК Младшие,
	Регистр2 КАК Старшие
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&ДатаНачала, МЕСЯЦ), МЕСЯЦ, Младшие.Х + 16 * Старшие.Х) КАК ДатаСреза
ИЗ
	Регистр4 КАК Младшие,
	Регистр4 КАК Старшие
ГДЕ
	Младшие.Х + 16 * Старшие.Х <= РАЗНОСТЬДАТ(&ДатаНачала, &ДатаКонца, МЕСЯЦ)

Запрос генерирует максимально ряд из 256 месяцев

    Сравнение быстродействий запросов генераторов дат.

    Общие условия тестирования предложенного запроса и запроса "Работаем с датами в запросе": Платформа - 1С:Предприятие 8.3 (8.3.12.1595), диапазон дат в запросах 01.01.2019-01.01.2185 (60 632 дней).

1. Файловая база данных, 1с сервер, клиент и база на одной ПВМ:  вариант Работаем с датами в запросе быстрее предложенного на 20-25%.

2. База данных MS SQL, SQL сервер, 1с сервер и клиент на разных ПВМ: вариант Работаем с датами в запросе медленнее предложенного на 25-30%.

 

2. Цены на каждый день.

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

ВЫБРАТЬ
	ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
	ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
	ЦеныНоменклатуры.Характеристика КАК Характеристика,
	ЦеныНоменклатуры.Период КАК Период,
	ЦеныНоменклатуры.Цена КАК Цена
ИЗ
	РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры1
		ПО ЦеныНоменклатуры.ВидЦены = ЦеныНоменклатуры1.ВидЦены
			И ЦеныНоменклатуры.Номенклатура = ЦеныНоменклатуры1.Номенклатура
			И ЦеныНоменклатуры.Характеристика = ЦеныНоменклатуры1.Характеристика
ГДЕ
	ЦеныНоменклатуры.ВидЦены = &ВидЦены

СГРУППИРОВАТЬ ПО
	ЦеныНоменклатуры.ВидЦены,
	ЦеныНоменклатуры.Номенклатура,
	ЦеныНоменклатуры.Характеристика,
	ЦеныНоменклатуры.Цена,
	ЦеныНоменклатуры.Период

ИМЕЮЩИЕ
	МАКСИМУМ(ЦеныНоменклатуры1.Период) = ЦеныНоменклатуры.Период

УПОРЯДОЧИТЬ ПО
	Номенклатура,
	Характеристика,
	Период

Теперь добавим в этот запрос наш генератор ряда дат.

ВЫБРАТЬ
	0 КАК Х
ПОМЕСТИТЬ Регистр1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
	1
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	Младшие.Х + 2 * Старшие.Х КАК Х
ПОМЕСТИТЬ Регистр2
ИЗ
	Регистр1 КАК Младшие,
	Регистр1 КАК Старшие
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	Младшие.Х + 4 * Старшие.Х КАК Х
ПОМЕСТИТЬ Регистр4
ИЗ
	Регистр2 КАК Младшие,
	Регистр2 КАК Старшие
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	Младшие.Х + 16 * Старшие.Х КАК Х
ПОМЕСТИТЬ Регистр8
ИЗ
	Регистр4 КАК Младшие,
	Регистр4 КАК Старшие
ГДЕ
	Младшие.Х + 16 * Старшие.Х <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, Младшие.Х + 256 * Старшие.Х) КАК Дата
ПОМЕСТИТЬ РядДат
ИЗ
	Регистр8 КАК Младшие,
	Регистр8 КАК Старшие
ГДЕ
	Младшие.Х + 256 * Старшие.Х <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
	ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
	ЦеныНоменклатуры.Характеристика КАК Характеристика,
	ЦеныНоменклатуры.Период КАК Период,
	РядДат.Дата КАК Дата,
	ЦеныНоменклатуры.Цена КАК Цена
ИЗ
	РядДат КАК РядДат
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
			ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры1
			ПО ЦеныНоменклатуры.ВидЦены = ЦеныНоменклатуры1.ВидЦены
				И ЦеныНоменклатуры.Номенклатура = ЦеныНоменклатуры1.Номенклатура
				И ЦеныНоменклатуры.Характеристика = ЦеныНоменклатуры1.Характеристика
		ПО (РядДат.Дата >= ЦеныНоменклатуры1.Период)
ГДЕ
	ЦеныНоменклатуры.ВидЦены = &ВидЦены

СГРУППИРОВАТЬ ПО
	РядДат.Дата,
	ЦеныНоменклатуры.ВидЦены,
	ЦеныНоменклатуры.Номенклатура,
	ЦеныНоменклатуры.Характеристика,
	ЦеныНоменклатуры.Цена,
	ЦеныНоменклатуры.Период

ИМЕЮЩИЕ
	МАКСИМУМ(ЦеныНоменклатуры1.Период) = ЦеныНоменклатуры.Период

УПОРЯДОЧИТЬ ПО
	Номенклатура,
	Характеристика,
	Период,
	Дата

    Почему в запросе по ценам нет отбора по периоду регистра сведений?. Потому что роль этого отбора фактически играет запрос генерирующий ряд дат. Условие "РядДат.Дата >= ЦеныНоменклатуры1.Период" выполняет эту функцию, так как даты меньше "&НачалоПериода" не создаются. За счет этого запрос имеет очень хорошую скорость. К сожалению автор не имеет данных, на которых можно было бы протестировать  быстродействие этого запроса. Единственное, что могу сказать, что тесты аналогичного запроса проводились на БД Oracle 9i, база не 1с. В качестве сравнения брался запрос построенный на аналитической функции. Скорость предложенного запроса оказалась  выше на 20-25% 

    Данный запрос можно достаточно просто переделать для нахождения курсов валют на каждый день  путем замены РегистрСведений.ЦеныНоменклатуры на РегистрСведений.КурсыВалют. Таким же образом данные, любого периодического регистра сведений можно получить на каждый день.

 
3. Остатки на каждый день.

     В качестве примера получим остатки на каждый день из регистра накопления "ТоварыНаСкладах". Для начала подготовим данные. Остатки можно рассчитать как обороты по регистру накопления с начала ведения учета суммой нарастающим итогом. Естественно, что таким образом рассчитывать остатки долго и затратно, тем более, что мы собираемся работать в заданном периоде. Поэтому рассчитаем обороты, как остаток на начало периода плюс обороты в периоде. Для простоты анализа отбор сделаем по заданной номенклатуре. Поскольку остатки мы будем рассчитывать за день, то приведем поле "период" к виду: 

НАЧАЛОПЕРИОДА(ТоварыНаСкладах.Период, ДЕНЬ) КАК Период

ВЫБРАТЬ
	ВложенныйЗапрос.Номенклатура КАК Номенклатура,
	ВложенныйЗапрос.Характеристика КАК Характеристика,
	ВложенныйЗапрос.Период КАК Период,
	СУММА(ВложенныйЗапрос.Оборот) КАК Оборот
ПОМЕСТИТЬ ОборотПериод
ИЗ
	(ВЫБРАТЬ
		ТоварыНаСкладах.Номенклатура КАК Номенклатура,
		ТоварыНаСкладах.Характеристика КАК Характеристика,
		НАЧАЛОПЕРИОДА(ТоварыНаСкладах.Период, ДЕНЬ) КАК Период,
		ВЫБОР
			КОГДА ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
				ТОГДА ТоварыНаСкладах.ВНаличии
			ИНАЧЕ -ТоварыНаСкладах.ВНаличии
		КОНЕЦ КАК Оборот
	ИЗ
		РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
	ГДЕ
		ТоварыНаСкладах.Период МЕЖДУ &НачалоПериода И &КонецПериода
		И ТоварыНаСкладах.Номенклатура = &Номенклатура
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		ТоварыНаСкладахОстатки.Номенклатура,
		ТоварыНаСкладахОстатки.Характеристика,
		НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ),
		ТоварыНаСкладахОстатки.ВНаличииОстаток
	ИЗ
		РегистрНакопления.ТоварыНаСкладах.Остатки(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
	ВложенныйЗапрос.Номенклатура,
	ВложенныйЗапрос.Характеристика,
	ВложенныйЗапрос.Период
;

Далее, получаем сумму нарастающим итогом - собственно остатки по периоду день.

ВЫБРАТЬ
	ОборотПериод.Номенклатура КАК Номенклатура,
	ОборотПериод.Характеристика КАК Характеристика,
	ОборотПериод.Период КАК Период,
	СУММА(ОборотПериод1.Оборот) КАК Остаток
ПОМЕСТИТЬ ОстаткиПоПериоду
ИЗ
	ОборотПериод КАК ОборотПериод
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОборотПериод КАК ОборотПериод1
		ПО ОборотПериод.Номенклатура = ОборотПериод1.Номенклатура
			И ОборотПериод.Характеристика = ОборотПериод1.Характеристика
			И ОборотПериод.Период >= ОборотПериод1.Период

СГРУППИРОВАТЬ ПО
	ОборотПериод.Номенклатура,
	ОборотПериод.Характеристика,
	ОборотПериод.Период
;
 
 Аналог запроса остатки по периоду день на виртуальных таблицах

И наконец, на основе базового запроса публикации Заметки по SQL: Срез последних - аналог запроса, получим данные по остаткам на каждый день. Текст запроса генерирующего ряд дат ("РядДат"), можно взять из начала публикации, поэтому здесь я приводить его не буду.

ВЫБРАТЬ
	ОстаткиПоПериоду.Номенклатура КАК Номенклатура,
	ОстаткиПоПериоду.Характеристика КАК Характеристика,
	ОстаткиПоПериоду.Период КАК Период,
	ОстаткиПоПериоду.Остаток КАК Остаток,
	РядДат.Дата КАК Дата
ИЗ
	РядДат КАК РядДат
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОстаткиПоПериоду КАК ОстаткиПоПериоду1
			ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОстаткиПоПериоду КАК ОстаткиПоПериоду
			ПО (ОстаткиПоПериоду.Номенклатура = ОстаткиПоПериоду1.Номенклатура)
				И (ОстаткиПоПериоду.Характеристика = ОстаткиПоПериоду1.Характеристика)
		ПО РядДат.Дата >= ОстаткиПоПериоду1.Период

СГРУППИРОВАТЬ ПО
	ОстаткиПоПериоду.Номенклатура,
	ОстаткиПоПериоду.Период,
	ОстаткиПоПериоду.Характеристика,
	РядДат.Дата,
	ОстаткиПоПериоду.Остаток

ИМЕЮЩИЕ
	МАКСИМУМ(ОстаткиПоПериоду1.Период) = ОстаткиПоПериоду.Период

УПОРЯДОЧИТЬ ПО
	Период,
	Дата

Таким образом используя базовую конструкцию запроса из публикации Заметки по SQL: Срез последних - аналог запроса, имеющую ключевой элемент

МАКСИМУМ([РегистрСведений; РегистрОстатков].Период) = [РегистрСведений; РегистрОстатков].Период

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

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

Оставьте свое сообщение

См. также

Онлайн-курс "1С:Специалист-консультант по "1С:Зарплата и управление персоналом" 21-24 июля 2020 года Промо

Решение задач на 1С:Специалист Бухгалтерский учет Зарплата Управление персоналом (HRM) v8 v8::СПР ЗУП3.x БУ УУ Бесплатно (free)

Спрос на специалистов по внедрению "1С:Зарплата и управление персоналом 8" с каждым днем растет. Станьте одним из востребованных специалистов - пройдите обучение по актуальной редакции 1C:ЗУП 3.1.

13200 руб.

14.06.2018    11120    4    4    

Обработка кодом результата запроса в Консоли запросов 9000

Консоль запросов v8::Запросы Бесплатно (free)

Пять вариантов обработки кодом в консоли запросов 9000: простое выполнение, построчно без индикации, построчно с индикацией, простое в фоне, построчно в фоне с индикацией.

01.06.2020    1068    0    kuza2000    7    

Выявляем и оптимизируем ресурсоемкие запросы 1С:Предприятия

Производительность и оптимизация (HighLoad) Администрирование СУБД Технологический журнал Структура метаданных v8::Запросы Бесплатно (free)

Обычно предметом оптимизации являются заранее определенные ключевые операции, т.е. действия, время выполнения которых значимо для пользователей. Причиной недостаточно быстрого выполнения ключевых операций может быть неоптимальный код, неоптимальные запросы либо же проблемы параллельности. Если выясняется, что основная доля времени выполнения ключевой операции приходится на запросы, то осуществляется оптимизация этих запросов. При высоких нагрузках на сервер СУБД в оптимизации нуждаются и те запросы, которые потребляют наибольшие ресурсы. Такие запросы не обязательно связаны с ключевыми операциями и заранее неизвестны. Но их также легко выявить и определить контекст их выполнения, чтобы оптимизировать стандартными методами.

24.05.2020    5933    0    DataReducer    22    

СКД. Использование Менеджера временных таблиц в системе компоновки

Практика программирования v8 v8::Запросы v8::СКД 1cv8.cf Бесплатно (free)

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

29.04.2020    4662    0    the1    28    

3 онлайн-курса по 1С-программированию: обмен данными, расчетные задачи и бухгалтерские задачи с 12 мая по 8 июля 2020 г. Промо

Практика программирования v8 Бесплатно (free)

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

22.04.2020    4567    23    Infostart    2    

Работа с запросами в 1С СКД. Отладка СКД

Практика программирования v8::Запросы v8::СКД Россия Бесплатно (free)

В предыдущем разделе мы изучали с вами особенности работы с запросами в СКД. Для изучения (отладки) работы различных схем компоновки данных я использовал консоль компоновки данных.

15.04.2020    2689    0    ProfessionStore    3    

Работа с запросами в 1С СКД. Особенности работы запросов в СКД. Часть 3

Практика программирования v8::Запросы v8::СКД Россия Бесплатно (free)

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

13.04.2020    4422    0    ProfessionStore    4    

Работа с запросами в 1С СКД. Особенности работы запросов в СКД. Часть 2

Практика программирования v8::Запросы v8::СКД Россия Бесплатно (free)

Все примеры разобраны с помощью консолей компоновки данных, речь о которых пойдет в предпоследнем разделе статьи.

12.04.2020    3361    0    ProfessionStore    11    

Подсистема "Инструменты разработчика" v5.39 Промо

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Интегрированный набор инструментов разработчика: - консоль кода - консоль запросов - консоль построителя отчетов - консоль компоновки данных - консоль заданий - конструктор запроса - справочник алгоритмов - исследователь объектов - интерфейсная панель - настройка журнала регистрации - анализ журнала регистрации - настройка техножурнала - анализ техножурнала - подбор и обработка объектов - редактор объекта БД - редактор констант - редактор параметров сеанса - редактор изменений по плану обмена - редактор пользователей - редактор предопределенных - редактор хранилищ настроек - динамический список - поиск дублей и замена ссылок - контекстная подсказка - синтакс-помощник - поиск битых ссылок - поиск ссылок на объект - структура хранения БД - удаление объектов с контролем ссылок - и прочее

23.09.2007    482119    4340    tormozit    2678    

Работа с запросами в 1С СКД. Особенности работы запросов в СКД. Часть 1

Практика программирования v8::Запросы v8::СКД 1cv8.cf Россия Бесплатно (free)

Все примеры разобраны с помощью консолей компоновки данных, речь о которых пойдет в предпоследнем разделе статьи.

11.04.2020    3913    0    ProfessionStore    8    

Работа с запросами в 1С СКД. Язык выражений СКД и подмена запросов

Практика программирования v8::Запросы v8::СКД Россия Бесплатно (free)

Хотя эта статья называется «Работа с запросами в 1С СКД», нельзя не упомянуть про язык выражений СКД. Да – у системы компоновки данных есть свой язык! Это не язык платформы 1С, это не язык запросов. Это еще один язык, который используется 1С в СКД для обработки полученного набора (ов) данных.

11.04.2020    4563    0    ProfessionStore    23    

Работа с запросами в 1С СКД. Примеры использования расширения языка запросов СКД

Практика программирования v8::Запросы v8::СКД Россия Бесплатно (free)

Все тонкости использования расширения языка запросов 1С для СКД вы можете изучить по ссылкам, которые приведены в предыдущей статье. Здесь мы рассмотрим конкретные кейсы применения данного расширения.

10.04.2020    4417    0    ProfessionStore    4    

Как я начал администрировать сервер 1С: Предприятие 8.3 с телефона Промо

Администрирование данных 1С Мобильная разработка v8 Бесплатно (free)

Развитие инструментов управления кластером серверов 1С:Предприятие 8.3.

14.04.2017    59055    0    user700211_a.straltsou    27    

Запросы 1С СКД. Возможности и ограничения

Практика программирования v8::Запросы v8::СКД Россия Бесплатно (free)

В этом цикле статей мы рассмотрим особенности работы системы компоновки данных с запросами в 1С.

10.04.2020    5503    0    ProfessionStore    14    

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

Прочие инструменты разработчика Консоль запросов v8::УФ v8::Запросы v8::СКД Бесплатно (free)

Консоль запросов и СКД – один из наиболее часто используемых программистом инструментов. Как с его помощью можно упростить разработку, в своем докладе на конференции Infostart Event 2019 Inception рассказал Евгений Люлюк, ведущий программист компании GLT.

06.04.2020    5722    0    Evg-Lylyk    0    

Копирование числовых ячеек из 1С в Excel Промо

Загрузка и выгрузка в Excel Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

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

15.01.2019    21594    0    itriot11    23    

Нумерация строк в запросе методами платформы

Практика программирования v8::Запросы 1cv8.cf Казахстан Бесплатно (free)

Простая реализация с помощью встроенных методов. Пригодится тем, кому нужно пронумеровать запрос без СКД и переборов.

09.01.2020    7614    0    user602678_maxipunchik    26    

Налогообложение сотрудников, работающих по ГПХ (доработка 1С:Зарплата и управление персоналом КОРП, редакция 3.1)

Зарплата Практика программирования v8::СПР v8::Запросы ЗУП3.x Россия БУ ФОМС, ПФ, ФСС Бесплатно (free)

Цель этой статьи - быстро доработать ЗУП для налогообложения сотрудников, работающих по ГПХ. Эта статья решает задачи, связанные с отсутствием в ЗУП функционала по обложению налогом работников ГПХ. На вопросы ниже вы найдете ответ в статье и решите эту задачу. Как настроить ЗУП 3, чтобы по договору ГПХ начислялись страховые взносы? У нас ситуация: есть договор ГПХ с одним человеком, который носит систематический характер и надо по нему начислять взносы, но ЗУП 3 не начисляет.

26.11.2019    3465    0    Lupeykin    7    

Группировка данных в запросе (СГРУППИРОВАТЬ ПО [ГРУППИРУЮЩИМ НАБОРАМ], ИТОГИ ПО [ОБЩИЕ])

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

Для группировки данных в языке запросов 1С существуют конструкции СГРУППИРОВАТЬ ПО [ГРУППИРУЮЩИМ НАБОРАМ], ИТОГИ ПО [ОБЩИЕ]. Для новичков назначение этих конструкций не всегда очевидно, попробуем разобраться на примерах, для чего предназначена каждая из них и в чем отличие от аналогичных конструкций в языке SQL.

19.09.2019    15485    0    sertak    9    

Обмен данными. Консистентность vs Многопоточность Промо

Интеграция v8 1cv8.cf Бесплатно (free)

Рассмотрим теоретические основы обмена данными. Какие бывают обмены, какие гарантии при этом даются, зачем идти на компромиссы и что при этом может пойти не так. Есть ли идеальная схема?

03.09.2019    11332    0    m-rv    1    

Количество NULL в запросе

Практика программирования v8 v8::Запросы Россия Бесплатно (free)

При определении количества элементов в виде "NULL" в результирующей таблице запроса нам возвращается значение "0".

17.09.2019    3361    0    toxilamer    18    

Выборка дней рождения

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

Выборка позволяет создать таблицу значений из справочника (или из чего-то подобного) с днями рождения с наперед заданными условиями.

26.06.2019    3137    0    user654641_yaga_m    6    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

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

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    22797    0    dmurk    144    

Использование программных перечислений, ч.1: строковые константы Промо

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

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    35464    0    unichkin    45    

Почему вообще работает мой запрос? или Ещё раз о планах запросов

Математика и алгоритмы Практика программирования Разработка v8::Запросы Бесплатно (free)

Другие статьи на эту тему объясняют, что такое план выполнения запроса, но не рассказывают о том, как его получить. Эта заметка призвана заполнить этот пробел. Её цель - популяризировать общедоступные инструменты получения плана запроса среди разработчиков, которые ещё не начали их использовать.

10.06.2019    9034    0    DataReducer    12    

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

Практика программирования Разработка v8 v8::Запросы УПП1 Бесплатно (free)

На нескольких собеседованиях это спрашивали, решил поделиться. Обычно я использую вариант №2. Остальные варианты нашел в интернете.

05.06.2019    5466    0    wowik    26    

Нюансы преобразования запроса СКД

Практика программирования v8 v8::Запросы v8::СКД 1cv8.cf Бесплатно (free)

Описание некоторых нюансов преобразования запроса в СКД.

31.05.2019    12676    0    waol    14    

Вспомогательные инструкции в коде 1С Промо

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

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    27895    0    tormozit    100    

Групповая обработка (Управляемая консоль отчетов)

Обработка документов Инструментарий разработчика Обработка справочников v8 v8::УФ v8::Запросы 1cv8.cf 1С:Франчайзи, автоматизация бизнеса Бесплатно (free)

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

13.05.2019    8879    0    Evg-Lylyk    10    

Выгрузка документа по условию

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    15370    0    m-rv    2    

Как настроить правильную техподдержку (helpdesk, service desk на коленке)

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Документооборот и делопроизводство Монитор заказов Учет рабочего времени Управление взаимоотношениями с клиентами (СRM) Документооборот и делопроизводство Монитор заказов Учет рабочего времени v8 УУ Бесплатно (free)

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

24.04.2019    16078    0    siddy    0    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

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

20.09.2012    75390    0    tormozit    129    

Не вполне очевидные приемы в конструкторе запросов

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

Приёмы работы с конструктором запросов (4 приёма).

23.04.2019    4401    0    ignor    2    

Как прикрутить ГУИД к регистру сведений

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    19147    0    m-rv    17    

Excel vs 1С: битва с неожиданным исходом

Анализ учета Универсальные обработки Загрузка и выгрузка в Excel Финансовые Управленческие v8 1cv8.cf Россия Бесплатно (free)

Что лучше 1С или Excel? Разберемся, в казалось бы, очевидном, чтобы получить невероятное!

11.04.2019    34879    0    bolefirenko    116    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

11.07.2007    46272    0    tormozit    38    

Заметки по SQL: Запрос, получающий изменения ресурса в регистрах сведений по датам изменения за период

Практика программирования v8 v8::Запросы 1cv8.cf Россия Бесплатно (free)

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

11.04.2019    4710    0    IVC_goal    11    

Альтернативный вариант расчета возраста (лет, месяцев, дней) запросом

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

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

11.04.2019    3649    0    lex_hrabovskyi    12    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    32380    0    ids79    40    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

10.09.2017    42285    0    tormozit    74    

Отладка запроса с содержимым временных таблиц (управляемые формы)

Практика программирования v8 v8::УФ v8::Запросы 1cv8.cf Россия Бесплатно (free)

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

01.11.2018    15705    0    Evg-Lylyk    55    

Из Excel в 1С запросом

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

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

14.08.2018    19307    0    m-rv    5    

Зачем запросу план и кто его выполняет?

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

Как определить, почему запрос выполняется слишком долго? Что происходит с запросом на стороне сервера баз данных? В статье приводится объяснение, что такое план запроса и для чего он нужен. А также говорится о том, в чем разница между потоком операторов и потоком данных, как работает оптимизатор и зачем нужна статистика.

09.08.2018    22978    0    Dem1urg    45    

Тестер: частые вопросы

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    27499    0    grumagargler    26    

Повышаем эффективность разработки правил обмена

Практика программирования Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    27279    0    olegtymko    47