Публикации

БСП
Разработки

Найдено результатов: 49


Убрать итоги из готового текста запроса

Позволяет убрать итоги из текста запроса, на пример, перед передачей его в СКД
ChOP 16 2
СхемаЗапроса = новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(Запрос.Текст);
СхемаЗапроса.ПакетЗапросов.Получить(СхемаЗапроса.ПакетЗапросов.Количество()-1).ВыраженияИтогов.Очистить();
СхемаЗапроса.ПакетЗапросов.Получить(СхемаЗапроса.ПакетЗапросов.Количество()-1).КонтрольныеТочкиИтогов.Очистить();
Запрос.Текст = СхемаЗапроса.ПолучитьТекстЗапроса();

НадоСдвинутьГраницуИтогов

Определяет актуальность итогов и агрегатов. Если нет регистров, то возвращает Истина.
ОбщийМодуль.УправлениеИтогамиИАгрегатамиСлужебный
Автор: 1С
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Определяет актуальность итогов и агрегатов. Если нет регистров, то возвращает Истина.
Функция НадоСдвинутьГраницуИтогов() Экспорт
	Параметры = ПараметрыИтоговИАгрегатов();
	Возврат Параметры.ЕстьРегистрыИтогов И ДобавитьМесяц(Параметры.ДатаРасчетаИтогов, 2) < ТекущаяДатаСеанса();
КонецФункции

ЭтоНаборЗаписейПоддерживающийИтоги

Проверяет, является ли переданный объект метаданных набором записей, поддерживающим итоги.
ОбщийМодуль.ОбщегоНазначенияБТС
Автор: 1С
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Проверяет, является ли переданный объект метаданных набором записей, поддерживающим итоги.
//
// Параметры:
//  ОбъектМетаданных - проверяемый объект метаданных.
//
// Возвращаемое значение: Булево.
//
Функция ЭтоНаборЗаписейПоддерживающийИтоги(Знач ОбъектМетаданных) Экспорт
	
	Если ЭтоРегистрСведений(ОбъектМетаданных) Тогда
		
		Если ТипЗнч(ОбъектМетаданных) = Тип("Строка") Тогда
			ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ОбъектМетаданных);
		КонецЕсли;
		
		Возврат (ОбъектМетаданных.РазрешитьИтогиСрезПервых ИЛИ ОбъектМетаданных.РазрешитьИтогиСрезПоследних);
		
	ИначеЕсли ЭтоРегистрНакопления(ОбъектМетаданных) Тогда
		
		Возврат Истина;
		
	ИначеЕсли ЭтоРегистрБухгалтерии(ОбъектМетаданных) Тогда
		
		Возврат Истина;
		
	Иначе
		
		Возврат Ложь;
		
	КонецЕсли;
	
КонецФункции

УстановкаПериодаРассчитанныхИтоговОбработчикЗадания

Обработчик регламентного задания "УстановкаПериодаРассчитанныхИтогов".
ОбщийМодуль.УправлениеИтогамиИАгрегатамиСлужебный
Автор: 1С
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Обработчик регламентного задания "УстановкаПериодаРассчитанныхИтогов".
Процедура УстановкаПериодаРассчитанныхИтоговОбработчикЗадания() Экспорт
	
	ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.УстановкаПериодаРассчитанныхИтогов);
	
	РассчитатьИтоги();
	
КонецПроцедуры

ЗаписатьПараметрыИтоговИАгрегатов

Записывает значение константы "ПараметрыИтоговИАгрегатов".
ОбщийМодуль.УправлениеИтогамиИАгрегатамиСлужебный
Автор: 1С
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Записывает значение константы "ПараметрыИтоговИАгрегатов".
Процедура ЗаписатьПараметрыИтоговИАгрегатов(Параметры) Экспорт
	Константы.ПараметрыИтоговИАгрегатов.Установить(Новый ХранилищеЗначения(Параметры));
КонецПроцедуры

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

Стандартная выборка из виртуального регистра остатков и оборотов не показывает остатки на периодах, в которых нет оборотов. В СКД, то есть вне запроса проблема легко решается, а для использования внутри запроса приходится "городить огород". У многих это выливается в несколько запросов, тогда как можно обойтись и одним. Остатки здесь получаются суммированием оборотов. По тому же принципу платформа рассчитывает остатки внутри периода хранения итогов.
ВЫБРАТЬ РАЗЛИЧНЫЕ КурсыВалют.Период ПОМЕСТИТЬ Дни ИЗ РегистрСведений.КурсыВалют КАК КурсыВалют ГДЕ КурсыВалют.Период МЕЖДУ НачалоПериода И КонецПериода ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ... Читать дальше
FastCode 9 1

заполнить реквизит "СуммаДокумента "на форме документа

1 buketoff 4
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	СуммаДокумента = Товары.Итог("Сумма");
КонецПроцедуры

Как выбрать наибольшее значение из ТЗ

Как выбрать наибольшее значение из ТЗ
ИстДанных = Новый ОписаниеИсточникаДанных(ТЗ);
ИстДанных.Колонки.Кол.Итог = "Максимум(Кол)" ;
ПостроительЗапроса = Новый ПостроительЗапроса; 
ПостроительЗапроса.ИсточникДанных = ИстДанных; 
Результат = ПостроительЗапроса.Результат; // тип РезультатЗапроса     
 
ТЗРез = Результат.Выгрузить();
МаксКол = ТЗРез[0].Кол;

Оптимизация подбора кусков заданного суммарного метража методом ветвей и границ

Имеется таблица "Метраж", содержащая информацию о количестве кусков и их метраже: индекс куска, количество кусков, размер куска, общий метраж индекса. Требуется при вводе заданного метража подобрать куски, оптимально составляющие заданный метраж. Желательно использовать минимум кусков вообще и минимум разных кусков. Задача решается методом ветвей и границ. Этот метод заключается в сокращенном переборе вариантов. Сокращение достигается за счет предварительной оценки развиваемого варианта. Если оценка хуже уже полученного рекорда, развитие прекращается. В первую очередь развиваются самые перспективные варианты. Решение представляет собой две функции. В первой производится подготовка, а во второй рекурсивной функции - собственно решение:

Автор: ildarovich

FastCode 9 1
Процедура КнопкаСформироватьНажатие(Кнопка) 
    РабочаяТаблица = Метраж.Выгрузить(); 
    РабочаяТаблица.ЗаполнитьЗначения(Метраж.Итог("Имеется"), "НужноВзять"); 
    Метраж.ЗагрузитьКолонку(РабочаяТаблица.ВыгрузитьКолонку("НужноВзять"), "НужноВзять"); 
    РабочаяТаблица.ЗаполнитьЗначения(0, "НужноВзять"); 
    РабочаяТаблица.Сортировать("Коэффициент Убыв"); 
    ПодборКусков(РабочаяТаблица, РабочаяТаблица.Количество() - 1, Требуется) 
КонецПроцедуры

Процедура ПодборКусков(РабочаяТаблица, ВГраница, ЗаданнаяСумма, УжеВзяли = 0) Экспорт  
    Если ВГраница < 0 ИЛИ ЗаданнаяСумма < 0 ИЛИ УжеВзяли >= Метраж.Итог("НужноВзять") Тогда //промах  
        Возврат      
    ИначеЕсли ЗаданнаяСумма = 0 Тогда //фиксируем решение  
        Ответ = РабочаяТаблица.Скопировать( , "НомерСтроки, НужноВзять"); 
        Ответ.Сортировать("НомерСтроки"); 
        Метраж.ЗагрузитьКолонку(Ответ.ВыгрузитьКолонку("НужноВзять"), "НужноВзять")  
    КонецЕсли;  
    Курсор = РабочаяТаблица[ВГраница];  
    Для НужноВзять = 0 По Курсор.Имеется Цикл  
        Курсор.НужноВзять = НужноВзять;  
        ПодборКусков(РабочаяТаблица, ВГраница - 1, ЗаданнаяСумма - НужноВзять * Курсор.Коэффициент, УжеВзяли + НужноВзять);          
        Курсор.НужноВзять = 0 
    КонецЦикла 
КонецПроцедуры // ПодборКусков() 

Обход иерархии справочника 2

Иерархия добавим в массив
Функция ПолучитьВерхнегоРодителяНоменклатуры(мНом)
	
	ЗапросПодразделения = Новый Запрос; 
		ЗапросПодразделения.Текст = 
			"ВЫБРАТЬ
			|   Номенклатура.Ссылка КАК Ссылка
			|ИЗ
			|    Справочник.Номенклатура КАК Номенклатура
			|ГДЕ
			|    Номенклатура.Ссылка = &Ссылка
			|ИТОГИ ПО
			|    Ссылка ТОЛЬКО ИЕРАРХИЯ";
		ЗапросПодразделения.УстановитьПараметр("Ссылка",мНом);

		Выборка = ЗапросПодразделения.Выполнить().Выбрать();
		МассивРодителей = Новый Массив;
		Пока Выборка.Следующий() Цикл 
			
			Если Выборка.Ссылка.ЭтоГруппа Тогда
				МассивРодителей.Добавить(Выборка.Ссылка);
			КонецЕсли;	
		КонецЦикла;	
Возврат МассивРодителей