Главная | Статьи | Разработки | Обратная связь | |||||
FAQ или платформа 8 для чайников.Судя по форумам, посвященным тематике 1С, у программистов впервые столкнувшихся с платформой 1С v 8 или переходящих с 7.7, часто возникают одни и те же вопросы. Здесь я решил собрать наиболее часто встречающиеся, на мой взгляд… В: Как убрать пробел в числе 12 600,00? |
||
СтрЗаменить(ПеременнаяЧисло," ",""); | ||
работать не будет. Есть два варианта решения проблемы, либо указать для замены вместо пробела Символы.НПП, либо используя функцию Формат(). |
||
СтрЗаменить(ПеременнаяЧисло,Символы.НПП,""); // 1-й вариант Формат(ПеременнаяЧисло,"ЧГ="); // 2-й вариант |
||
В: Как в запросе задать условие таким образом, что бы в результирующую
выборку попали документы только определенного вида? |
||
Запрос=Новый Запрос(" |ВЫБРАТЬ | РеализацияУслуг.Регистратор, | РеализацияУслуг.Сумма |ИЗ | РегистрНакопления.РеализацияУслуг КАК РеализацияУслуг |ГДЕ | Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг"); |
||
В: Как перенести определенные документы/справочники между идентичными
конфигурациями? В: Как перенести данные между различными конфигурациями (или из 7.7
в 8)? В: Как в запросе добавить к полю не строкового типа определенную
строку, например ВЫБРАТЬ РеализацияТоваровУслуг.Сумма + " руб."? В: Как в запросе задать условие по полю с типом строка неограниченной длины,
например, выбрать все документы с определенным комментарием? |
||
Запрос=Новый Запрос(" |ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | ВЫРАЗИТЬ(РеализацияТоваровУслуг.Комментарий КАК СТРОКА(100)) = &Комментарий"); |
||
В: Есть ли аналог функции 7.7 КаталогИБ() в v 8? |
||
КаталогИБ=НСтр(СтрокаСоединенияИнформационнойБазы(),"File"); | ||
В: Как отключить узел от распределенной информационной базы? |
||
ПланыОбмена.УстановитьГлавныйУзел(Неопределено); | ||
Или запустить конфигуратор с параметром командной строки /ResetMasterNode (для базовых версий не используется). В: Как получить имя документа (аналог метода 7.7 Вид())? |
||
ДокументСсылка.Метаданные().Имя; // пример: РеализацияТоваровУслуг ДокументСсылка.Метаданные().ПолноеИмя(); // пример: Документ.РеализацияТоваровУслуг |
||
В: Как одним запросом выбрать документы всех видов? |
||
Запрос=Новый Запрос; Текст=""; Для Каждого Документ Из Метаданные.Документы Цикл Текст=Текст+"ВЫБРАТЬ Ссылка ИЗ Документ."+Документ.Имя+" ОБЪЕДИНИТЬ "; КонецЦикла; Запрос.Текст=Лев(Текст,СтрДлина(Текст)-СтрДлина(" ОБЪЕДИНИТЬ ")); Выборка=Запрос.Выполнить().Выбрать(); |
||
В: Как прервать выполнение отчета/обработки? |
||
Пока Выборка.Следующий() Цикл ОбработкаПрерыванияПользователя(); … КонецЦикла; |
||
В: На форме имеется ТабличноеПоле с типом ДеревоЗначений и
установленным свойством Дерево. Почему не отображается ДеревоЗначений? В: Как использовать регламентные задания в файловом режиме работы
информационной базы? |
||
Процедура ПроверкаЗаданий() ВыполнитьОбработкуЗаданий(); КонецПроцедуры ПодключитьОбработчикОжидания("ПроверкаЗаданий",3); |
||
В: Как из строки с разделителями получить массив? |
||
Функция СтрокаМассив(Знач Значение,Разделитель) Если ТипЗнч(Значение)=Тип("Строка") Тогда МнСтр=СтрЗаменить(Значение,Разделитель,Символы.ПС); Массив=Новый Массив; Для н=1 По СтрЧислоСтрок(МнСтр) Цикл Массив.Добавить(СтрПолучитьСтроку(МнСтр,н)); КонецЦикла; Возврат Массив; ИначеЕсли ТипЗнч(Значение)=Тип("Массив") Тогда Строка=""; Для Каждого Элемент Из Значение Цикл Строка=Строка+?(Строка<>"",Разделитель,"")+Элемент; КонецЦикла; Возврат Строка; Иначе Возврат Неопределено; КонецЕсли; КонецФункции |
||
В: Как включить возможность внесения изменений в конфигураторе в
типовой конфигурации? В: Как установить пароль на обработку/конфигурацию? В: Почему не работает поиск документа с помощью метода
НайтиПоНомеру(<Номер документа>)? В: В 1С 8.1 при необходимости подключиться к уже запущенному
приложению для отладки (Конфигуратор > Отладка > Подключение) в доступных предметах
отладки пусто. В чем причина? В: Как организовать перебор строк динамического списка (например,
СправочникСписок или ДокументСписок)? |
||
Построитель=Новый ПостроительОтчета; Построитель.ИсточникДанных=Новый ОписаниеИсточникаДанных(ДокументСписок); Выборка=Построитель.Результат.Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Ссылка); КонецЦикла; |
||
Замечание: в выборку попадут строки в соответствии с установленным в текущий момент отбором. |
||
В: Как проверить значения свойств объектов метаданных? Например, вид
иерархии справочника или режим записи регистра, или периодичность номера документа? |
||
// Пример 1. ВидИерархии справочника Если Метаданные.Справочники[ИмяСправочника].ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда ... // Пример 2. РежимЗаписиРегистра Если Метаданные.РегистрыСведений[ИмяРегистра].РежимЗаписиРегистра = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору Тогда ... // Пример 3. Переодичность номера документа Если Метаданные.Документы[ИмяДокумента].ПериодичностьНомера = Метаданные.СвойстваОбъектов.ПериодичностьНомераДокумента.Непериодический Тогда ... |
||
В: Как реализовать в дереве значений флажок с тремя состояниями? |
||
Дерево.Колонки.Добавить("Пометка",Новый ОписаниеТипов("Число")); ЭлементыФормы.Дерево.СоздатьКолонки(); КолонкиДерева=ЭлементыФормы.Дерево.Колонки; КолонкиДерева.Пометка.ДанныеФлажка="Пометка"; КолонкиДерева.Пометка.УстановитьЭлементУправления(Тип("Флажок")); КолонкиДерева.Пометка.РежимРедактирования=РежимРедактированияКолонки.Непосредственно; КолонкиДерева.Пометка.ТриСостоянияФлажка=Истина; |
||
Во-вторых, при изменении флажка нужно устанавливать соответствующие значения в подчиненных строках и контролировать значение флажка в «строке-родителе»: |
||
Процедура ДеревоПриИзмененииФлажка(Элемент, Колонка) ТекущаяСтрока=Элемент.ТекущаяСтрока; Если ТекущаяСтрока.Пометка=2 Тогда ТекущаяСтрока.Пометка=0; КонецЕсли; УстановкаФлажков(ТекущаяСтрока,ТекущаяСтрока.Пометка); Пока ТекущаяСтрока.Родитель<>Неопределено Цикл ТекущаяСтрока.Родитель.Пометка=?(УстановленноДляВсех(ТекущаяСтрока),ТекущаяСтрока.Пометка,2); ТекущаяСтрока=ТекущаяСтрока.Родитель; КонецЦикла; КонецПроцедуры |
||
Здесь процедура УстановкаФлажков() рекурсивно устанавливает флажки в подчиненных строках: |
||
Процедура УстановкаФлажков(ТекущаяСтрока,Значение) Для Каждого Стр Из ТекущаяСтрока.Строки Цикл Стр.Пометка=Значение; УстановкаФлажков(Стр,Стр.Пометка); КонецЦикла; КонецПроцедуры |
||
А функция УстановленноДляВсех() проверяет установлено ли одинаковое значение для всех строк на текущем уровне: |
||
Функция УстановленноДляВсех(Строка) Для Каждого Стр Из Строка.Родитель.Строки Цикл Если Стр.Пометка<>Строка.Пометка Тогда Возврат Ложь; КонецЕсли; КонецЦикла; Возврат Истина; КонецФункции |
||
В: Как в форме списка реализовать сортировку по своему реквизиту? |
||
ЭлементУП=ЭлементыФормы.СправочникСписок.НастройкаПорядка.Найти("Реквизит1"); Если ЭлементУП<>Неопределено Тогда ЭлементУП.Доступность=Истина; КонецЕсли; |
||
Назад | ||