FAQ или платформа 8 для чайников :)

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

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

Судя по форумам, посвященным тематике 1С, у программистов впервые столкнувшихся с платформой 1С v 8 или переходящих с 7.7, часто возникают одни и те же вопросы. Здесь я решил собрать наиболее часто встречающиеся, на мой взгляд…
В: Как убрать пробел в числе 12 600,00?
О: Важно понимать, что здесь используется не символ пробела, а так называемый, «неразрывный пробел», поэтому такая, к примеру, конструкция:
СтрЗаменить(ПеременнаяЧисло," ","");

работать не будет. Есть два варианта решения проблемы, либо указать для замены вместо пробела Символы.НПП, либо используя функцию Формат().
СтрЗаменить(ПеременнаяЧисло,Символы.НПП,"");	// 1-й вариант
Формат(ПеременнаяЧисло,"ЧГ=");		// 2-й вариант


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


В: Как перенести определенные документы/справочники между идентичными конфигурациями?
О: Это можно сделать с помощью типовой обработки ВыгрузкаЗагрузкаДанныхXML.epf, поставляемой на дисках ИТС.

В: Как перенести данные между различными конфигурациями (или из 7.7 в 8)?
О: Оптимальным вариантом, на мой взгляд, является использование типовой конфигурации «Конвертация данных», которая поставляется на дисках ИТС, там же находятся несколько статей с описанием использования этой конфигурации.

В: Как в запросе добавить к полю не строкового типа определенную строку, например ВЫБРАТЬ РеализацияТоваровУслуг.Сумма + " руб."?
О: Никак. В запросе преобразование типов невозможно. Некоторых вводит в заблуждение конструкция языка запросов ВЫРАЗИТЬ, но она только приводит значение составного типа к одному из составляющих это значение типов и, ни в коем случае не преобразует тип, поэтому в данной ситуации не применима.

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


В: Есть ли аналог функции 7.7 КаталогИБ() в v 8?
О: Нет, так как такая функция не имела бы смысла для клиент-серверного режима работы. Тем не менее, для файлового режима работы можно получить каталог информационной базы с помощью следующей конструкции:
КаталогИБ = НСтр(СтрокаСоединенияИнформационнойБазы(),"File");


В: Как отключить узел от распределенной информационной базы?
О: С помощью следующей конструкции:
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

Или запустить конфигуратор с параметром командной строки /ResetMasterNode (для базовых версий не используется).

В: Как получить имя документа (аналог метода 7.7 Вид())?
О: С помощью метаданных. Например:
ДокументСсылка.Метаданные().Имя;	                // пример: РеализацияТоваровУслуг
ДокументСсылка.Метаданные().ПолноеИмя();	// пример: Документ.РеализацияТоваровУслуг


В: Как одним запросом выбрать документы всех видов?
О: Используя метаданные и возможность объединения запросов:
Запрос=Новый Запрос;
Текст="";
Для Каждого Документ Из Метаданные.Документы Цикл
	Текст=Текст+"ВЫБРАТЬ Ссылка ИЗ Документ."+Документ.Имя+" ОБЪЕДИНИТЬ ";
КонецЦикла;
Запрос.Текст=Лев(Текст,СтрДлина(Текст)-СтрДлина(" ОБЪЕДИНИТЬ "));
Выборка=Запрос.Выполнить().Выбрать();


В: Как прервать выполнение отчета/обработки?
О: С помощью оператора ОбработкаПрерыванияПользователя(), рекомендуется использовать внутри циклов. При нажатии пользователем комбинации клавиш Ctrl+Break, происходит прерывание выполнения и выдается соответствующее сообщение. Например:
Пока Выборка.Следующий() Цикл
	ОбработкаПрерыванияПользователя();
	…
КонецЦикла;


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

В: Как использовать регламентные задания в файловом режиме работы информационной базы?
О: В отличие от клиент-серверного, в файловом режиме, ответственность за реализацию автоматического запуска регламентных заданий возлагается на разработчика. Что бы реализовать автозапуск заданий, нужен ОбработчикОжидания периодически проверяющий «просроченные» задания и запускающий их. Настоятельно рекомендуется использовать для этого отдельный сеанс. Пример:
Процедура ПроверкаЗаданий()
	ВыполнитьОбработкуЗаданий();
КонецПроцедуры
ПодключитьОбработчикОжидания("ПроверкаЗаданий",3);


В: Как из строки с разделителями получить массив?
О: В качестве примера, приведу свой вариант функции, которая работает «в обоих направлениях», т.е. при передаче строки с разделителями – формирует массив, а при передаче массива – формирует из него строку с разделителями.
Функция СтрокаМассив(Знач Значение,Разделитель)
	Если ТипЗнч(Значение)=Тип("Строка") Тогда
		МнСтр=СтрЗаменить(Значение,Разделитель,Символы.ПС);
		Массив=Новый Массив;
		Для н=1 По СтрЧислоСтрок(МнСтр) Цикл
			Массив.Добавить(СтрПолучитьСтроку(МнСтр,н));
		КонецЦикла;
		Возврат Массив;
	ИначеЕсли ТипЗнч(Значение)=Тип("Массив") Тогда
		Строка="";
		Для Каждого Элемент Из Значение Цикл
			Строка=Строка+?(Строка<>"",Разделитель,"")+Элемент;
		КонецЦикла;
		Возврат Строка;
	Иначе
		Возврат Неопределено;	
	КонецЕсли;
КонецФункции
В: Как включить возможность внесения изменений в конфигураторе в типовой конфигурации?
О: Так как типовые конфигурации находятся на поддержке (что позволяет в автоматическом режиме производить обновление), то по умолчанию, возможность внесения изменений в конфигурацию выключена. Чтобы включить эту возможность необходимо в конфигураторе выбрать пункт меню «Конфигурация > Поддержка > Настройка поддержки» и в открывшемся окне нажать кнопку «Включить возможность изменений».

В: Как установить пароль на обработку/конфигурацию?
О: В 1С v 8 пароли можно устанавливать только на модули объектов. Что бы установить пароль необходимо открыть модуль объекта и выбрать пункт меню «Текст > Установить пароль». Так же существует возможность поставки конфигурации без исходных текстов модулей объектов (настраивается «Конфигурация > Поставка конфигурации > Настройка поставки»). Хочется заметить, что на данный момент, ни один из этих способов не является надежной защитой от просмотра исходного текста модуля.

В: Почему не работает поиск документа с помощью метода НайтиПоНомеру(<Номер документа>)?
О: Необходимо помнить, что в случае, если для данного вида документов в конфигураторе задана периодическая нумерация, кроме номера документа обязательно нужно указывать дату интервала вторым параметром. Иначе будет осуществляться поиск документа с пустой датой, что очевидно не приведет к желаемому результату.

В: В 1С 8.1 при необходимости подключиться к уже запущенному приложению для отладки (Конфигуратор > Отладка > Подключение) в доступных предметах отладки пусто. В чем причина?
О: Дело в том, что для приложения, которое собираемся отлаживать, нужно явным образом разрешить отладку. Меню Сервис > Параметры > закладка Системные > флаг «Отладка разрешена».

В: Как организовать перебор строк динамического списка (например, СправочникСписок или ДокументСписок)?
О: Это можно сделать с помощью построителя отчетов, например:
Построитель=Новый ПостроительОтчета;
Построитель.ИсточникДанных=Новый ОписаниеИсточникаДанных(ДокументСписок);
Выборка=Построитель.Результат.Выбрать();
Пока Выборка.Следующий() Цикл
	Сообщить(Выборка.Ссылка);
КонецЦикла;

Замечание: в выборку попадут строки в соответствии с установленным в текущий момент отбором.

В: Как проверить значения свойств объектов метаданных? Например, вид иерархии справочника или режим записи регистра, или периодичность номера документа?
О: Все эти свойства являются перечислимыми свойствами объектов метаданных. Получить значения такого типа, можно так же через метаданные. Примеры:
// Пример 1. ВидИерархии справочника
Если Метаданные.Справочники[ИмяСправочника].ВидИерархии=Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда ...
// Пример 2. РежимЗаписиРегистра
Если Метаданные.РегистрыСведений[ИмяРегистра].РежимЗаписиРегистра=Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору Тогда ...
// Пример 3. Переодичность номера документа
Если Метаданные.Документы[ИмяДокумента].ПериодичностьНомера=Метаданные.СвойстваОбъектов.ПериодичностьНомераДокумента.Непериодический Тогда ...
В: Как реализовать в дереве значений флажок с тремя состояниями?
О: Рассмотрим более подробно постановку задачи. На форме имеется табличное поле, источником данных для которого является дерево значений. В одной из колонок расположен элемент управления «Флажок». Необходимо что бы он мог принимать три состояния «Включен», «Выключен» и «Неопределено». При этом состояние «Неопределено» или так называемый «серый флажок», т.е. выбранный частично, устанавливается в том случае, если не у всех подчиненных строк состояние флажка одинаковое. Так же если строка имеет подчиненные строки, то при изменении её флажка, соответствующим образом должны изменяться флажки и всех подчиненных строк.
Во-первых, добавим нашу колонку с флажком в дерево значений:
Дерево.Колонки.Добавить("Пометка",Новый ОписаниеТипов("Число"));
ЭлементыФормы.Дерево.СоздатьКолонки();
КолонкиДерева=ЭлементыФормы.Дерево.Колонки;
КолонкиДерева.Пометка.ДанныеФлажка="Пометка";
КолонкиДерева.Пометка.УстановитьЭлементУправления(Тип("Флажок"));
КолонкиДерева.Пометка.РежимРедактирования=РежимРедактированияКолонки.Непосредственно;
КолонкиДерева.Пометка.ТриСостоянияФлажка=Истина;

Во-вторых, при изменении флажка нужно устанавливать соответствующие значения в подчиненных строках и контролировать значение флажка в «строке-родителе»:
Процедура ДеревоПриИзмененииФлажка(Элемент, Колонка)
	ТекущаяСтрока=Элемент.ТекущаяСтрока;
	Если ТекущаяСтрока.Пометка=2 Тогда
		ТекущаяСтрока.Пометка=0;	
	КонецЕсли;
	УстановкаФлажков(ТекущаяСтрока,ТекущаяСтрока.Пометка);	
	Пока ТекущаяСтрока.Родитель<>Неопределено Цикл 
		ТекущаяСтрока.Родитель.Пометка=?(УстановленноДляВсех(ТекущаяСтрока),ТекущаяСтрока.Пометка,2);
		ТекущаяСтрока=ТекущаяСтрока.Родитель;
	КонецЦикла;
КонецПроцедуры

Здесь процедура УстановкаФлажков() рекурсивно устанавливает флажки в подчиненных строках:
Процедура УстановкаФлажков(ТекущаяСтрока,Значение)
	Для Каждого Стр Из ТекущаяСтрока.Строки Цикл
		Стр.Пометка=Значение;
		УстановкаФлажков(Стр,Стр.Пометка);
	КонецЦикла;
КонецПроцедуры

А функция УстановленноДляВсех() проверяет установлено ли одинаковое значение для всех строк на текущем уровне:
Функция УстановленноДляВсех(Строка)
	Для Каждого Стр Из Строка.Родитель.Строки Цикл
		Если Стр.Пометка<>Строка.Пометка Тогда
			Возврат Ложь;	
		КонецЕсли;
	КонецЦикла;
	Возврат Истина;
КонецФункции
В: Как в форме списка реализовать сортировку по своему реквизиту?
О: Если реквизит примитивного типа, то достаточно установить для свойства реквизита «Индексировать» значение «Индексировать» или «Индексировать с доп. упорядочиванием» (не доступно для реквизитов типа ХранилищеЗначения). Если же реквизит ссылочного типа, то необходимо явно разрешить для него доступность сортировки. Например:
ЭлементУП=ЭлементыФормы.СправочникСписок.НастройкаПорядка.Найти("Реквизит1");
Если ЭлементУП<>Неопределено Тогда
	ЭлементУП.Доступность=Истина;	
КонецЕсли;   
В: Можно ли в запросе, в качестве источника данных, использовать таблицу значений?
О: Да. Это можно сделать с помощью временных таблиц:
// Сначала помещаем ТЗ во временную таблицу
Запрос=Новый Запрос;
Запрос.МенеджерВременныхТаблиц=Новый МенеджерВременныхТаблиц;
Запрос.Текст="ВЫБРАТЬ * ПОМЕСТИТЬ ТЗ ИЗ &ТЗ КАК ТЗ";
Запрос.УстановитьПараметр("ТЗ",ТЗ);
Запрос.Выполнить();
// Теперь ТЗ можно использовать в запросе:
Запрос.Текст="
|ВЫБРАТЬ
|	ТЗ.Номенклатура,
|	Остатки.КоличествоОстаток
|ИЗ
|	ТЗ
|ЛЕВОЕ СОЕДИНЕНИЕ
|	РегистрНакопления.ТоварыНаСкладах.Остатки() КАК Остатки
|ПО
|	ТЗ.Номенклатура=Остатки.Номенклатура";
Выборка=Запрос.Выполнить().Выбрать();

В: При использовании в запросе таблицы значений, возникает ошибка: «Тип не может быть выбран в запросе». Почему?
О: Дело в том, что колонки таблицы значений, передаваемой в запрос в качестве источника данных, должны быть явно ТИПИЗИРОВАНЫ. Т.е. если мы используем таблицу значений, так же в свою очередь выгруженную из результата запроса или из табличной части документа например – то такой проблемы не возникает, т.к. в таком случае колонки будут типизированными. А если мы сами создаем таблицу значений, то нужно явно указать тип для каждой колонки:
ТЗ=Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));

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

Комментарии
Избранное Подписка Сортировка: Древо
1. coder1cv8 3465 21.01.08 13:07 Сейчас в теме
P.S. Пока немножко, но работа идет :)
P.P.S. Ну и хотелось бы по мере возможностей не повторять "Простые примеры разработки" :)
2. Alex_IT 138 22.01.08 22:42 Сейчас в теме
Еще часто встречается вопрос (крик): "Невозможно внести изменения в конфигураторе!!!" :)
4. coder1cv8 3465 23.01.08 10:07 Сейчас в теме
(2) Спасибо! Добавлено.
Как я сам мог забыть о таком актуальном вопросе... ))
3. CheBurator 23.01.08 00:57 Сейчас в теме
А еще добивает невозможность открыть одну конфигурацию в другом релизе ядра, причем ядро - новее реализации...
5. coder1cv8 3465 30.01.08 14:38 Сейчас в теме
Обновлено.
Товарищи, активнее поддерживаем блог на плаву. Ставим плюсики! :)
6. Maxis 30.01.08 16:07 Сейчас в теме
Если на форму списка документов добавить табличное поле, то как вывести в него содержимое табличной части документа (и, соответственно, менять при переходе по строкам)?
7. coder1cv8 3465 30.01.08 17:26 Сейчас в теме
(6) Посмотри как у меня это реализованно вот здесь: http://infostart.ru/projects/1104/
Всё достаточно просто...
8. O-Planet 6995 06.02.08 14:31 Сейчас в теме
На форме лежит таблица списка справочника. Помню, помучался с документацией, прежде чем понял, как сопоставить выбранную строку с конкретным элементом справочника.

Еще ситуевина, отличающая 8 от 7. Имеется отсортированная по полю таблица или список. Хочу просматривать ее (его) с середины, начиная с некоторого значения...
9. poppy 3357 06.02.08 23:07 Сейчас в теме
(8)
> Еще ситуевина, отличающая 8 от 7. Имеется отсортированная по
> полю таблица или список. Хочу просматривать ее (его) с середины,
>начиная с некоторого значения...

Что мешает использоват цикл "Для <Имяпеременной> = <Выражение 1> По <Выражение 2> Цикл"?
10. coder1cv8 3465 07.02.08 09:42 Сейчас в теме
(9) Не знаю как в 7.7 (я с ней не сталкивался практически), а в восьмерке я именно так бы и сделал :)
11. tango 485 13.02.08 15:04 Сейчас в теме
В: Как в запросе добавить к полю не строкового типа определенную строку, например ВЫБРАТЬ РеализацияТоваровУслуг.Сумма + " руб."?
О: Никак.
????? вау?
12. coder1cv8 3465 13.02.08 15:19 Сейчас в теме
(11) Эм... Это недоверие что-ли? :)
Могу удивить вас ещё больше "ВЫБРАТЬ ПРЕДСТАВЛЕНИЕ(Ссылка)+""какая-то строка""" тоже нельзя...
13. tango 485 13.02.08 15:34 Сейчас в теме
Это удивление. Вау - это я так удивляюсь обычно. Вот, например, в понедельник, смотрю - уже начало одиннадцатого (вечера), значит, пора уходить с милонги. Вау!? - говорю. Вау... - говоритона. Это значит: блин, как быстро летит время, пора уходить... Да, пора, - грустно соглашается она.
14. tango 485 13.02.08 15:39 Сейчас в теме
все 1с Как в 1С в конструкторе запросов сделать составную переменную, включающую символьную строку? ФИОюзера 18.янв Переменная запроса как выражение (сумма) переменных: полей нужных таблиц и и параметра, задается на вкладке справа - параметр равен нужной символьной строке, первый знак перед параметром &.
15. coder1cv8 3465 13.02.08 16:06 Сейчас в теме
(14) чё-то я ничё не понял... )
16. tango 485 13.02.08 16:15 Сейчас в теме
Милонга - это:
1) вид аргентинского танго
2) место, где это танцуют
3) тусовка там же
пс: в понедельник милонга в Джигсо, на смоленке (садовое кольцо у ст.арбата)
17. tango 485 13.02.08 16:24 Сейчас в теме
Или Вы не поняли, что для сабжа надо просто прибавить к полю в селекте параметр, в котором устанавливается строка?
Но здесь усматривается некая коллизия с Вашим ником.
18. coder1cv8 3465 13.02.08 16:32 Сейчас в теме
(17) И что будет? Это позволит прибавить строку?...
19. coder1cv8 3465 13.02.08 16:39 Сейчас в теме
+(18) А! Я понял! Вы решили, что если конструктор запроса не ругается на неверный параметр, то можно записывать себя в мегаспецы и учить меня жизни... :) Вынужден вас разочаровать, попробуйте выполнить такой запрос...
20. tango 485 13.02.08 18:46 Сейчас в теме
не попробую.
18 января это сделал юзер и остался доволен результатом (14 - это фрагмент ексельной таблички заявок 1снику).
И Бога ради! учить кого бы то ни было чему либо... это очень, очень дорого
21. coder1cv8 3465 13.02.08 19:03 Сейчас в теме
(20) Я не понимаю, мы на разных языках говорим?... Да, в запросе есть конкатенация строк, можно сложить строку "Иванов" и строку "18 янв", к примеру... Я же здесь говорю о том что в запросе нет преобразования типов и поле с типом число (или дата, или ссылка) никогда не соединить со строкой...
22. tango 485 13.02.08 19:19 Сейчас в теме
ок. спросил юзера, он к строке добавлял строку
23. coder1cv8 3465 13.02.08 19:30 Сейчас в теме
(22) Ну ясен пень! К чему заводить этот спор было?...
24. O-Planet 6995 15.02.08 20:49 Сейчас в теме
coder1cv8 poppy
Не вьехали вы... В таблице - 3 столбца: товары, характеристики и цены. Отсортировано по товарам. На форме - поле из справочника номенклатуры. По кнопке Сформировать выводим записи по всем характеристикам+ценам одного выбранного товара. Строк в таблице n-сот тысяч...

На 7.7:

Код
НомСтр=0;
Таб.НайтиЗначение(ВыбТовар,НомСтр,"Номенклатура");
Пока НомСтр<=Таб.КоличествоСтрок() Цикл
  Таб.ПолучитьСтрокуПоНомеру(НомСтр);
  Если Таб.Номенклатура<>ВыбТовар Тогда
    Прервать;
  КонецЕсли;
  Сообщить( ... );
  НомСтр=НомСтр+1;
КонецЦикла;
Показать полностью


Когда с 7.7 перепрыгиваешь на 8.0, то не сразу вьезжаешь, что тут такой алгоритм не сработает: напрямую номер строки по значению поля найти нельзя. Надо сперва искать строку, содержащую это значение, а потом получать ее индекс в таблице.
25. poppy 3357 02.03.08 03:22 Сейчас в теме
(24) O-Planet
Ты опять привел неудачный пример.
Твой код можно переписать на восьмерку без изменений:
Код
   НомСтр = Таб.Индекс(Таб.Найти(ВыбТовар,"Номенклатура"));
   Пока НомСтр<Таб.Количество() Цикл
      Строка = Таб.Получить(НомСтр);
      Если Строка.Номенклатура<>ВыбТовар Тогда
         Прервать;
      КонецЕсли;
      Сообщить(Строка.Характеристика);
      НомСтр=НомСтр+1;
   КонецЦикла;
Показать полностью


Можно написать заново:
Код
   Отбор = Новый Структура("Номенклатура", ВыбТовар);
   МассивСтрок = Таб.НайтиСтроки(Отбор);
   Для ии = 0 По МассивСтрок.Количество()-1 Цикл
      Сообщить(МассивСтрок[ии].Характеристика);
   КонецЦикла;
Показать полностью

И с номерами строк не нужно заморачиваться, и сортировать по номенклатуре необязательно.
Nikitoska; +1 Ответить
26. coder1cv8 3465 18.03.08 15:06 Сейчас в теме
Добавил пару вопросов. Не совсем уже для "чайников" :) Скорее из того что вызывало затруднения у меня...
27. coder1cv8 3465 25.03.08 12:14 Сейчас в теме
28. delete009 5 30.04.08 14:59 Сейчас в теме
спасибо мне это пригодилось
29. MariP 16 08.05.08 09:22 Сейчас в теме
Думаю такой вопрос тоже часто возникает:
Возможен ли вход без использования паролей?
По аналогии с 7-кой, когда удаляешь папку юзер и все...

30. coder1cv8 3465 08.05.08 09:34 Сейчас в теме
(29) Возможен ) Но вопросы безопасности не относятся к данной статье. На эту тему есть хоть и старая, но всё ещё актуальная статья вот здесь: http://www.mista.ru/v8/security/
31. NewNick 27.05.08 10:44 Сейчас в теме
Функция ВЗапросеИзЧислаСтроку(ИмяПоля,ДлинаЦел,ДлинаДробь,ЛидирующийСимвол="")
Запрос = Новый Запрос("ВЫБРАТЬ ВЫРАЗИТЬ(0.5 КАК ЧИСЛО (15,0)) КАК Проверка");
РЗ = Запрос.Выполнить().Выбрать();
РЗ.Следующий();
ЗапросОкругляетПоАрифметическимПравилам = Рз.Проверка = 1;

Ткст = "ВЫБОР КОГДА "+ИмяПоля+"<0 Тогда ""-"" ИНАЧЕ """" КОНЕЦ " + Символы.ПС;
ИмяПоляАбс = " ВЫБОР КОГДА "+ИмяПоля+"<0 ТОГДА -"+ИмяПоля+" ИНАЧЕ "+ИмяПоля+" КОНЕЦ ";
Парам = Pow(10,ДлинаЦел-1);
Для Бегим = 1 По ДлинаЦел+ДлинаДробь цикл
Ткст = Ткст + ?(Бегим = ДлинаЦел+1,"+"".""+","+");
Ткст = Ткст + " ВЫБОР " + Символы.ПС +
?(Бегим<ДлинаЦел," КОГДА " + ИмяПоляАбс + " < " +Формат(Парам,"ЧРД=.; ЧГ=")+" ТОГДА """+ЛидирующийСимвол+""" " + Символы.ПС,"");
Для Цифирка = 0 По 9 Цикл
Ткст = Ткст + " КОГДА "+ИмяПоляАбс+"-"+Формат(Парам*10,"ЧРД=.; ЧГ=")+"*ВЫРАЗИТЬ(("+ИмяПоляАбс+?(ЗапросОкругляетПоАрифметическимПравилам,"-"+Формат(Парам*5,"ЧРД=.; ЧГ="),"")+")/"+Формат(Парам*10,"ЧРД=.; ЧГ=")+" КАК ЧИСЛО(15, 0))"+" >= "+Формат((9-Цифирка)*Парам,"ЧН=0; ЧРД=.; ЧГ=")+" ТОГДА """+Формат(9-Цифирка,"ЧН=0; ЧРД=.; ЧГ=")+""" " + Символы.ПС;
КонецЦикла;
Ткст = Ткст + " ИНАЧЕ ""0"""+Символы.ПС+" Конец " + Символы.ПС;
Парам = Парам/10;
КонецЦикла;

Возврат Ткст;
КонецФункции

Запрос = Новый Запрос(" ВЫБРАТЬ ""Полученная строка : ""+"+ВЗапросеИзЧислаСтроку(ИмяПоля2,ДлинаЦел2,ДлинаДробь2)+" КАК Стр ");
РЗ = Запрос.Выполнить().Выбрать();
пока РЗ.Следующий() цикл
Сообщить(РЗ.СТр);
конеццикла;
32. NewNick 27.05.08 10:45 Сейчас в теме
Для чайников добавьте плиз - сделать можно все ;)
33. NewNick 27.05.08 11:02 Сейчас в теме
Функция ТекстЗапросаИзСтрокиВЧисло(ИмяПоля, ДлинаСтроки, СимволРазделитель=".")
текст = "";
текст2 = "";
Для позиция = 1 по ДлинаСтроки цикл
текст = "("+?(текст="","",текст+ Символы.ПС + " *ВЫБОР КОГДА ПОДСТРОКА("+имяПоля+","+позиция+",1)="""+СимволРазделитель+""" ТОГДА 1 ИНАЧЕ 10 КОНЕЦ +")+Символы.ПС+"ВЫБОР ";
Для цифирка = 0 по 9 цикл
текст = текст + Символы.ПС + " КОГДА ПОДСТРОКА("+имяПоля+","+позиция+",1)="""+цифирка+""" ТОГДА "+цифирка;
КонецЦикла;
текст = текст + Символы.ПС + " ИНАЧЕ 0 КОНЕЦ)";
текст2 = текст2 + Символы.ПС + " КОГДА ПОДСТРОКА("+имяПоля+","+позиция+",1)="""+СимволРазделитель+""" ТОГДА "+формат(pow(10,ДлинаСтроки-позиция),"ЧГ=");
КонецЦикла;
возврат текст + Символы.ПС + "/ ВЫБОР " + текст2+Символы.ПС + " ИНАЧЕ 1 КОНЕЦ " + СИмволы.ПС +" * ВЫБОР КОГДА "+ИмяПоля+" ПОДОБНО ""%-%"" ТОГДА -1 ИНАЧЕ 1 КОНЕЦ";
КонецФункции
34. NewNick 27.05.08 11:06 Сейчас в теме
Есть два варианта решения проблемы, либо указать для замены вместо пробела Символы.НПП, либо используя функцию Формат().
СтрЗаменить(ПеременнаяЧисло,Символы.НПП,""); // 1-й вариант
Формат(ПеременнаяЧисло,"ЧГ="); // 2-й вариант


XmlСтрока однако самый быстрый ;)
35. coder1cv8 3465 27.05.08 12:42 Сейчас в теме
(31,33) Я бы не стал, конечно, столько кода писать вместо одной строки при выводе, но мало ли... Одинэсники разные бывают ) Такой способ имеет место быть, да и обсуждался уже давно на той же мисте...
(34) Отличный вариант. Приму на заметку.
36. NewNick 27.05.08 12:51 Сейчас в теме
код мой. накидал просто так - ниразу не использовал )) а чем еще заняться когда отдыхаешь от работы за кружечкой водки )). "одна строка при выводе" это отчеты аля 7.7. впрочем для скд этот код уже неактуален, оно и само справляется. просто непонравилась безапеляционность что этого сделать нельзя.
37. Sol 54 27.05.08 17:27 Сейчас в теме
Must have. Всё известно, но это действительно то, с чем сталкиваешься после семерки. Спрашивают постоянно.

Осветил наиболее актуальные проблемы, твою статью надо в FAQ - http://v8.1c.ru/predpriyatie/typical_problems_App.htm ;)
38. coder1cv8 3465 15.09.08 16:26 Сейчас в теме
Добавил пару вопросов по временными таблицам.
39. liliabd08 20.05.09 09:30 Сейчас в теме
Огромное спасибо с документом списком!!!
40. anig99 2711 18.09.09 14:39 Сейчас в теме
Неразрывный пробел можно получить зажав alt и набрав 255...
41. rasswet 82 26.11.09 15:33 Сейчас в теме
спасибо, познавательно!
42. KurchataQ 08.12.09 09:33 Сейчас в теме
Было бы здорово если FAQ написан был бы в файле формата .chm
43. Збянтэжаны Саўка 23.06.10 18:01 Сейчас в теме
Очень хорошо, жаль что так мало!
Кодер, плиз, не жмись, наскреби еще инфы для новичков, у тебя ведь еще много есть чего нам рассказать...
ведь у тебя это так хорошо получается!
44. d0dger 81 07.07.10 15:01 Сейчас в теме
Как из строки с разделителями получить массив

Вопрос Advanced как наиболее производительно получить из результата запроса строку с разделителями.
Имеется ввиду результат более 100 000 элементов...
46. dardroze 26.12.11 13:59 Сейчас в теме
Спасибо за FAQ. Почерпнул для себя полезного
47. BalVlad 15.02.12 15:11 Сейчас в теме
Спасибо за FAQ. Хотелось бы узнать, а продолжение - развитие темы не планируется?
Оставьте свое сообщение

См. также

Программная работа с настройками СКД

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

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    5771    ids79    26       

​​​​​​​CorelDRAW Graphics Suite 2019 Промо

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

[СКД] Программное создание схемы компоновки данных

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

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    7615    John_d    21       

30 задач. Странных и не очень

Статья Программист Стажер Нет файла v8 Бесплатно (free) Практика программирования

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    9447    YPermitin    72       

Готовые переносы данных из различных конфигураций 1C Промо

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

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

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

5500 рублей

Агрегатные функции СКД, о которых мало кто знает

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

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

05.09.2019    25119    ids79    50       

Голосование за доклады на INFOSTART MEETUP Kazan - до 25 февраля. Промо

Выбирайте и голосуйте за самые интересные доклады! Лучшие из лучших попадут в окончательную программу казанского митапа. Оставить свой голос можно до 25 февраля 2020 года.

Три костыля. Сказ про фокусы в коде

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

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    16247    YPermitin    78       

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

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

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

17.08.2019    18472    ids79    16       

INFOSTART MEETUP Kazan. 13 марта 2020 г. Промо

Инфостарт продолжает путешествие по России. Следующая остановка - Казань. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Ждем всех: докладчиков и участников! Стоимость участия - 5 500 рублей. Цена действительна до 30.01.2020

5 500

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

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

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    34098    ids79    36       

Фоновое выполнение кода в 1С - это просто

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

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

02.08.2019    18592    avalakh    21       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 рублей

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

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

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    27732    ids79    10       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Инструментарий разработчика Практика программирования

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    19885    ids79    27       

Регистры сведений. За кулисами

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

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    15020    YPermitin    12       

Подборка программ для взаимодействия с ЕГАИС Промо

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

"Меньше копипаста!", или как Вася универсальную процедуру писал

Статья Программист Стажер Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    12181    SeiOkami    49       

Создание отчетов с помощью СКД - основные понятия и элементы

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

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    32119    ids79    17       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

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

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

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

11.06.2019    17038    dmurk    144       

Регистры накопления. Структура хранения в базе данных

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

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

16.05.2019    27547    YPermitin    30       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Выполнение внешней обработки в фоновом задании

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

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    17449    Eret1k    23       

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

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

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

25.04.2019    9386    m-rv    2       

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

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

6500 рублей

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

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

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

16.04.2019    12528    m-rv    16       

О расширениях замолвите слово...

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

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    23632    ellavs    125       

Сдача регламентированной отчетности из программ 1С Промо

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

от 1500 руб.

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Статья Программист Стажер Нет файла v8 Windows Бесплатно (free) Практика программирования Разработка

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    18693    ellavs    83       

Трюки с внешними источниками данных

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

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    20588    YPermitin    53