Построитель отчета, агрегатная функция МАССИВ

Век живи — век учись. Для меня стало неожиданным и приятным сюрпризом, что в построителе отчетов 1С, на закладке Ресурсы, помимо стандартных агрегатных функций вроде КОЛИЧЕСТВО, МАКСИМУМ и МИНИМУМ есть функция МАССИВ, которая собирает значения вместе.

При чем, в самом построителе отчета эта функция не отображается. Надо вводить вручную.

Прекрасная функция, экономит массу усилий и времени.

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

ВЫБРАТЬ
	ВложенныйЗапрос.Ссылка КАК Ссылка,
	ВложенныйЗапрос.Валюта КАК Валюта,
	ВложенныйЗапрос.ДатаКурса КАК ДатаКурса,
	КурсыВалют.Курс КАК Курс,
	КурсыВалют.Кратность КАК Кратность
ИЗ
	(ВЫБРАТЬ
		ПриобретениеТоваровУслуг.Ссылка КАК Ссылка,
		ПриобретениеТоваровУслуг.Валюта КАК Валюта,
		МАКСИМУМ(КурсыВалют.Период) КАК ДатаКурса
	ИЗ
		Документ.ПриобретениеТоваровУслуг КАК ПриобретениеТоваровУслуг
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
			ПО ПриобретениеТоваровУслуг.Валюта = КурсыВалют.Валюта
				И ПриобретениеТоваровУслуг.Дата >= КурсыВалют.Период
	
	СГРУППИРОВАТЬ ПО
		ПриобретениеТоваровУслуг.Ссылка,
		ПриобретениеТоваровУслуг.Валюта) КАК ВложенныйЗапрос
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
		ПО ВложенныйЗапрос.Валюта = КурсыВалют.Валюта
			И ВложенныйЗапрос.ДатаКурса = КурсыВалют.Период

Результат работы СКД в запросе

В модуле объекта «Отчет» добавить:

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

Exception Details: System.Web.HttpException: A potentially dangerous Request.Path value was detected from the client (:)

Ошибка:
«Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: A potentially dangerous Request.Path value was detected from the client (:).

Решение:

1. Добавить параметр в раздел system.webServer:

<security>
    <requestFiltering allowDoubleEscaping="true" />
</security>

2. Добавить параметр в раздел configuration

<system.web>
    <pages validateRequest="false" />
    <httpRuntime requestPathInvalidCharacters="" />
</system.web>


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

Источник: http://www.koderline.ru/expert/programming/article-problemy-bezopasnosti-pri-rabote-s-1s-cherez-iis/

Получить целые числа языком запросов 1С

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

ВЫБРАТЬ
0 КАК Числа
ПОМЕСТИТЬ Шаг0

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Лево.Числа * 2 + Право.Числа КАК Числа
ПОМЕСТИТЬ Шаг2
ИЗ
Шаг0 КАК Лево,
Шаг0 КАК Право
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Лево.Числа * 4 + Право.Числа КАК Числа
ПОМЕСТИТЬ Шаг4
ИЗ
Шаг2 КАК Лево,
Шаг2 КАК Право
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Лево.Числа * 8 + Право.Числа КАК Числа
ПОМЕСТИТЬ Шаг8
ИЗ
Шаг4 КАК Лево,
Шаг4 КАК Право
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Лево.Числа * 16 + Право.Числа КАК Числа
ПОМЕСТИТЬ Шаг16
ИЗ
Шаг8 КАК Лево,
Шаг8 КАК Право
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Лево.Числа * 32 + Право.Числа КАК Числа
ИЗ
Шаг16 КАК Лево,
Шаг16 КАК Право

IIS & 1C

Если веб-интерфейс у 1С не работает, не отображает элементы,  выходят ошибки  и т.п. можно попробовать отредактировать web.config на сервере IIS:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <system.webServer>
      <handlers>
         <remove name="ISAPI-dll" />
         <add name="1C Web-service Extension" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Program Files\1cv8\8.3.5.1443\bin\wsisapi.dll" resourceType="Unspecified" requireAccess="None" />
         <add name="ISAPI-dll" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Program Files\1cv8\8.3.5.1443\bin\wsisapi.dll" resourceType="File" requireAccess="Execute" allowPathInfo="true" preCondition="bitness64" />
      </handlers>
   </system.webServer>
</configuration>

Ошибка 1С после динамического обновления

Файл не обнаружен ‘v8srvr://

Ошибка вида:

err1

лечится следующим скриптом в SQL (guid надо подставить из сообщения об ошибке):

 INSERT INTO [dbo].[Config]
 ([FileName]
 ,[Creation]
 ,[Modified]
 ,[Attributes]
 ,[DataSize]
 ,[BinaryData]
 ,[PartNo])
 VALUES
 ('e0666db2-45d6-49b4-a200-061c6ba7d569.12b2c980-fd4a-4771-a29e-6be72b316bb7'
 ,CURRENT_TIMESTAMP
 ,CURRENT_TIMESTAMP
 ,0
 ,0
 ,''
 ,0)
 GO09