Перейти к содержимому


Объявление: Популярные вопросы новичков по 1С v8


Написано BabySG


    Любитель программирования


  • 12 206 сообщений
В: Как убрать пробел в числе 12 600,00?
О: : Важно понимать, что здесь используется не символ пробела, а так называемый, «неразрывный пробел», поэтому такая, к примеру, конструкция:

[code]СтрЗаменить(ПеременнаяЧисло," ","");[/code]


работать не будет. Есть два варианта решения проблемы, либо указать для замены вместо пробела Символы.НПП, либо используя функцию Формат().

[code]СтрЗаменить(ПеременнаяЧисло,Символы.НПП,""); // 1-й вариант
Формат(ПеременнаяЧисло,"ЧГ="); // 2-й вариант[/code]



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

[/code]

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

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

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

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

[code]Запрос=Новый Запрос("
|ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| ВЫРАЗИТЬ(РеализацияТоваровУслуг.Комментарий КАК СТРОКА(100)) = &Комментарий");
[/code]


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


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


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

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


В: Как одним запросом выбрать документы всех видов?
О: : Используя метаданные и возможность объединения запросов:

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



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

[code]Пока Выборка.Следующий() Цикл
ОбработкаПрерыванияПользователя();
//…
КонецЦикла;[/code]

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

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

[code]Процедура ПроверкаЗаданий()
ВыполнитьОбработкуЗаданий();
КонецПроцедуры
ПодключитьОбработчикОжидания("ПроверкаЗаданий",3);
[/code]


В: Как из строки с разделителями получить массив?
О: : В качестве примера, приведу свой вариант функции, которая работает «в обоих направлениях», т.е. при передаче строки с разделителями – формирует массив, а при передаче массива – формирует из него строку с разделителями.

[code]Функция СтрокаМассив(Знач Значение,Разделитель)
Если ТипЗнч(Значение)=Тип("Строка") Тогда
МнСтр=СтрЗаменить(Значение,Разделитель,Символы.ПС);
Массив=Новый Массив;
Для н=1 По СтрЧислоСтрок(МнСтр) Цикл
Массив.Добавить(СтрПолучитьСтроку(МнСтр,н));
КонецЦикла;
Возврат Массив;
ИначеЕсли ТипЗнч(Значение)=Тип("Массив") Тогда
Строка="";
Для Каждого Элемент Из Значение Цикл
Строка=Строка+?(Строка<>"",Разделитель,"")+Элемент;
КонецЦикла;
Возврат Строка;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции[/code]

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

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

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

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

В: При формировании отчетов выдает следующее - "....Использование итогов выключено"
О: Включите использование, используя следующую функцию:

Цитата

РегистрБухгалтерииМенеджер.<Имя регистра бухгалтерии> (AccountingRegisterManager.<Имя регистра бухгалтерии>)

УстановитьИспользованиеТекущихИтогов (SetPresentTotalsUsing)
Синтаксис:
УстановитьИспользованиеТекущихИтогов(<Флаг>)
Параметры:
<Флаг> (обязательный)

Тип: Булево. Значение флага использования разделителя итогов.
Возвращаемое значение:
Тип: Булево.
Описание:
Устанавливает флаг использования текущих итогов.
Возможен обмен с сервером.
Примечание:
Используется только для регистра остатков.
Влияет на наличие актуальных итогов. Если использование актуальных итогов выключено, то расчет актуальных остатков будет производиться следующим образом: сначала будут получены остатки на самые поздние хранимые итоги, а потом по движениям за оставшийся период будут получены актуальные остатки.
Позволяет увеличить параллельность при записи наборов записей данного регистра, так как не требуется обновления актуальных итогов.
Как этого могло случиться: "Например, вы запустили обработку по загрузке данных из XML или какой-нибудь обмен и прервали досрочно - почти все эти обработки обмена первым делом отключают итоги (для ускорения работы), потом грузят данные, а потом включают итоги. Но если прервать выполнение - итоги останутся выключенными." (с) Эмин :D

В: Как получить обновления?
О: Их можно получить у ближайшего партнера или в самой 1С.
Форма получение может быть самовывозом, по электронной почте, приход представителя. Как договоритесь.
Иные способы, неофициальные, получения обновлений тут не рассматриваются.
Поиск партнеров фирмы 1С
или сама 1c как получить Формы отчетности, Техническая поддержка. Текущие релизы программ фирмы "1С"

Использованы материалы Coder1Cv8 (Домашняя страница с оригиналом находиться тут)
Предложения по дополнению/изменению принимаются тут.