Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Заготовки для 1C:FAQ > Вопросы-ответы№4 |
Автор: Director 24.09.05, 05:33 |
Subj |
Автор: Jureth 03.10.05, 02:35 |
Интерфейсы, стили Как задать различные стили 1С:Предприятия для различных категорий пользователей? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ОсновнойИнтерфейс = ПользователиИнформационнойБазы.ТекущийПользователь().ОсновнойИнтерфейс.Имя; Если ОсновнойИнтерфейс = "ИнтерфейсКассира" Тогда ГлавныйСтиль = БиблиотекаСтилей.СтильКассира; ИначеЕсли ОсновнойИнтерфейс = "Планирование" Тогда ГлавныйСтиль = БиблиотекаСтилей.СтильПланирования; Иначе ГлавныйСтиль = БиблиотекаСтилей.Основной; КонецЕсли; |
Автор: Jureth 03.10.05, 02:37 |
Есть список имен интерфейсов с пометками. Как сделать помеченные интерфейсы видимыми? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> СтрокаИменИнтерфейсов = ""; Для Каждого ИмяИнтерфейса из СписокИнтерфесов Цикл Если ИмяИнтерфейса.Пометка Тогда СтрокаИменИнтерфейсов = СтрокаИменИнтерфейсов + ИмяИнтерфейса + ","; КонецЕсли; КонецЦикла; ГлавныйИнтерфейс.ПереключитьИнтерфейс(СтрокаИменИнтерфейсов); |
Автор: Jureth 03.10.05, 02:39 |
Как из формы обработки отключить глобальный обработчик ожиданий? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Процедура ПриНачалеРаботыСистемы() ПодключитьОбработчикОжидания("ПроверкаОпроса", 60); КонецПроцедуры Процедура ОтказОтОпроса() Экспорт ОтключитьОбработчикОжидания("ПроверкаОпроса"); КонецПроцедуры ОтказОтОпроса(); |
Автор: Jureth 03.10.05, 02:41 |
Запросы, отчеты Как получить данные из табличной части документов? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |
Автор: Jureth 03.10.05, 02:54 |
Как получить данные из табличной части документов и представить их в иерархическом виде? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ИТОГИ ПО Номенклатура ТОЛЬКО ИЕРАРХИЯ |
Автор: Jureth 03.10.05, 02:55 |
Как подсчитать количество одинаковых элементов в выбираемых данных? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары СГРУППИРОВАТЬ ПО РеализацияТоваровУслугТовары.Номенклатура |
Автор: Jureth 03.10.05, 02:56 |
Как применять условия для отбора по значениям полей, вычисленных как результат агрегатной функции? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары СГРУППИРОВАТЬ ПО РеализацияТоваровУслугТовары.Номенклатура ИМЕЮЩИЕ СУММА(РеализацияТоваровУслугТовары.Количество) > 10 |
Автор: Jureth 03.10.05, 02:57 |
Как ограничить выборку из виртуальной таблицы? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК ПродажиОбороты |
Автор: Jureth 03.10.05, 02:58 |
Как просуммировать данные по одинаковым значениям одного из полей выборки? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ ПродажиОбороты.Подразделение КАК Подразделение, ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот ИЗ РегистрНакопления.Продажи.Обороты((&ДатаНач, &ДатаКон) КАК ПродажиОбороты ИТОГИ СУММА(СтоимостьОборот) ПО Подразделение |
Автор: Jureth 03.10.05, 03:00 |
Как получить только те записи, в которых значение определенного поля превышает указанное значение? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ ПродажиОбороты.Подразделение КАК Подразделение, ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, , Подразделение = &Подразделение) КАК ПродажиОбороты ГДЕ ПродажиОбороты.КоличествоОборот > &Порог |
Автор: Jureth 03.10.05, 03:01 |
Как обратиться к подчиненным полям в запросе? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ ПродажиОбороты.ДоговорКонтрагента.Владелец, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК ПродажиОбороты ВЫБРАТЬ ПродажиОбороты.ДоговорКонтрагента.Владелец, СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот, СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот ИЗ РегистрНакопления.Продажи.Обороты((&ДатаНач, &ДатаКон) КАК ПродажиОбороты СГРУППИРОВАТЬ ПО ПродажиОбороты.ДоговорКонтрагента.Владелец |
Автор: Jureth 03.10.05, 03:04 |
Как объединить результаты нескольких запросов? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ОБЪЕДИНИТЬ ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугВозвратнаяТара.Номенклатура ИЗ Документ.РеализацияТоваровУслуг.ВозвратнаяТара КАК РеализацияТоваровУслугВозвратнаяТара ОБЪЕДИНИТЬ ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугУслуги.Номенклатура ИЗ Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги |
Автор: Jureth 03.10.05, 03:06 |
Как выбрать данные из двух таблиц, удовлетворяющие определенному условию? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ ЗаказыПокупателейОстатки.Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ЗаказаноПокупателями, ЗаказыПоставщикамОстатки.КоличествоОстаток КАК ЗаказаноПоставщикам ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаОтч) КАК ЗаказыПокупателейОстатки ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаОтч) КАК ЗаказыПоставщикамОстатки ПО ЗаказыПокупателейОстатки.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура |
Автор: Jureth 03.10.05, 03:07 |
Как дополнить данные одной таблицы данными, выбранными из другой таблицы по определенному условию? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ ЗаказыПокупателейОстатки.Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ЗаказаноПокупателями, ЗаказыПоставщикамОстатки.КоличествоОстаток КАК ЗаказаноПоставщикам ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаОтч) КАК ЗаказыПокупателейОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаОтч) КАК ЗаказыПоставщикамОстатки ПО ЗаказыПокупателейОстатки.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура |
Автор: Jureth 03.10.05, 03:10 |
Как объединить данные из двух таблиц по определенному условию? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ ВЫБОР КОГДА (ЗаказыПокупателейОстатки.Номенклатура) ЕСТЬ NULL ТОГДА ЗаказыПоставщикамОстатки.Номенклатура ИНАЧЕ ЗаказыПокупателейОстатки.Номенклатура КОНЕЦ КАК Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ЗаказаноПокупателями, ЗаказыПоставщикамОстатки.КоличествоОстаток КАК ЗаказаноПоставщикам ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаОтч) КАК ЗаказыПокупателейОстатки ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаОтч) КАК ЗаказыПоставщикамОстатки ПО ЗаказыПокупателейОстатки.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура ВЫБРАТЬ ВложенныйЗапрос.Номенклатура, СУММА(ВложенныйЗапрос.ЗаказаноПокупателями) КАК ЗаказаноПокупателями, СУММА(ВложенныйЗапрос.ЗаказаноПоставщикам) КАК ЗаказаноПоставщикам ИЗ (ВЫБРАТЬ ЗаказыПокупателейОстатки.Номенклатура КАК Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ЗаказаноПокупателями, 0 КАК ЗаказаноПоставщикам ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаОтч, ) КАК ЗаказыПокупателейОстатки ОБЪЕДИНИТЬ ВЫБРАТЬ ЗаказыПоставщикамОстатки.Номенклатура, 0, ЗаказыПоставщикамОстатки.КоличествоОстаток ИЗ РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаОтч, ) КАК ЗаказыПоставщикамОстатки ) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Номенклатура |
Автор: Jureth 03.10.05, 03:11 |
Как вывести некоторое значение вместо NULL в запросе? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ ЕСТЬNULL(Справочник.Номенклатура.Артикул, "---") КАК Артикул, Справочник.Номенклатура.Представление КАК Номенклатура |
Автор: Jureth 03.10.05, 03:13 |
Как вместе с данными некоторой таблицы получить общие итоги из этой же таблицы? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.СуммаОборот КАК СуммаПродаж, ПродажиОбороты.СуммаОборот / СовокупныеОбороты.СуммаОборот * 100 КАК ПроцентнаяДоля ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК ПродажиОбороты ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК СовокупныеОбороты ПО ИСТИНА УПОРЯДОЧИТЬ ПО ПроцентнаяДоля УБЫВ |
Автор: Jureth 03.10.05, 03:15 |
Как получить иерархические итоги по группе справочника? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ ТоварыГруппы.Ссылка КАК Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток ИЗ (ВЫБРАТЬ Номенклатура.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Родитель В ИЕРАРХИИ(&Группа) И (Номенклатура.ЭтоГруппа = ЛОЖЬ) ) КАК ТоварыГруппы ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&МоментПолучения, Номенклатура В ИЕРАРХИИ (&Группа)) КАК ТоварыНаСкладахОстатки ПО ТоварыГруппы.Ссылка = ТоварыНаСкладахОстатки.Номенклатура ИТОГИ СУММА(КоличествоОстаток) ПО Номенклатура ТОЛЬКО ИЕРАРХИЯ |
Автор: Jureth 03.10.05, 03:21 |
Как по состоянию на заданную дату по регистру "ОстаткиНаСкладе" найти последний документ "ПоступлениеТоваровУслуг", по которому приходила номенклатура? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ ВложенныйЗапрос.Номенклатура, МАКСИМУМ(ТоварыНаСкладах.Регистратор) КАК Регистратор ИЗ (ВЫБРАТЬ ТоварыНаСкладах.Номенклатура КАК Номенклатура, МАКСИМУМ(ТоварыНаСкладах.Период) КАК Период ИЗ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах ГДЕ ТоварыНаСкладах.Период <= &ДатаОтчета И (ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг) СГРУППИРОВАТЬ ПО ТоварыНаСкладах.Номенклатура ) КАК ВложенныйЗапрос ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах ПО ВложенныйЗапрос.Номенклатура = ТоварыНаСкладах.Номенклатура И ВложенныйЗапрос.Период = ТоварыНаСкладах.Период ГДЕ (ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг) СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Номенклатура |
Автор: Jureth 03.10.05, 03:33 |
Как подсчитать количество записей с одинаковым значением некоторого поля? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ Контрагенты.ОсновнойМенеджерПокупателя, КОЛИЧЕСТВО(Контрагенты.Ссылка) КАК КоличествоЗакрепленных ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ (Контрагенты.ЭтоГруппа = ЛОЖЬ) И (Контрагенты.ОсновнойМенеджерПокупателя <> &НеЗаполненМенеджер) СГРУППИРОВАТЬ ПО Контрагенты.ОсновнойМенеджерПокупателя УПОРЯДОЧИТЬ ПО КоличествоЗакрепленных УБЫВ |
Автор: Jureth 03.10.05, 03:35 |
Как в итоговых записях вывести количество различных записей? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ Контрагенты.ОсновнойМенеджерПокупателя.Представление КАК ОсновнойМенеджерПокупателя, Контрагенты.Представление, 1 КАК КоличествоЗакрепленных ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ (Контрагенты.ЭтоГруппа = ЛОЖЬ) УПОРЯДОЧИТЬ ПО КоличествоЗакрепленных УБЫВ ИТОГИ КОЛИЧЕСТВО(КоличествоЗакрепленных) ПО ОсновнойМенеджерПокупателя |
Автор: Jureth 03.10.05, 03:35 |
Как узнать количество записей в результате запроса? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Результат = Запрос.Выполнить(); КолЗаписей = Результат.Выбрать().Количество(); |
Автор: Jureth 03.10.05, 03:43 |
Как проверить достаточность остатков товаров на складах, указанных в документе? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.Размещение КАК Склад, ВложенныйЗапрос.КоличествоСписываемое, ТоварыНаСкладахОстатки.КоличествоОстаток ИЗ (ВЫБРАТЬ ВнутреннийЗаказТовары.Номенклатура КАК Номенклатура, ВнутреннийЗаказТовары.Размещение КАК Размещение, СУММА(ВнутреннийЗаказТовары.Количество *ВнутреннийЗаказТовары.Коэффициент) КАК КоличествоСписываемое ИЗ Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары ГДЕ ВнутреннийЗаказТовары.Ссылка = &Ссылка СГРУППИРОВАТЬ ПО ВнутреннийЗаказТовары.Номенклатура, ВнутреннийЗаказТовары.Размещение ) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&МоментВремениДокумента, Склад В (ВЫБРАТЬ РАЗЛИЧНЫЕ ВЫРАЗИТЬ(ВнутреннийЗаказТоварыДляОтбора.Размещение КАК Справочник.Склады) ИЗ Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТоварыДляОтбора ГДЕ ВнутреннийЗаказТоварыДляОтбора.Ссылка = &Ссылка И НЕ ВЫРАЗИТЬ(ВнутреннийЗаказТоварыДляОтбора.Размещение КАК Справочник.Склады) ЕСТЬ NULL) И Номенклатура В (ВЫБРАТЬ РАЗЛИЧНЫЕ ВнутреннийЗаказТоварыДляОтбора.Номенклатура ИЗ Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТоварыДляОтбора ГДЕ ВнутреннийЗаказТоварыДляОтбора.Ссылка = &Ссылка)) КАК ТоварыНаСкладахОстатки ПО ВложенныйЗапрос.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура И ВложенныйЗапрос.Размещение = ТоварыНаСкладахОстатки.Склад |
Автор: Jureth 03.10.05, 03:44 |
Как в запросе осуществить отбор по значению перечисления? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Запрос.Текст = "ВЫБРАТЬ | ВоинскийУчетСрезПоследних.Физлицо |ИЗ | РегистрСведений.ВоинскийУчет.СрезПоследних(&ДатаОтчета) КАК ВоинскийУчетСрезПоследних |ГДЕ | ВоинскийУчетСрезПоследних.ОтношениеКВоинскомуУчету = &Состоит" Запрос.УстановитьПараметр("ДатаОтчета", ДатаОтчета); Запрос.УстановитьПараметр("Состоит", Перечисления.ОтношениеКВоинскомуУчету.Состоит); |
Автор: Jureth 03.10.05, 03:46 |
Как получить курсы валют на две интересующие даты? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ ВалютыСрезПоследних.Валюта, ВалютыСрезПоследних.Курс, &ПерваяДата Как Дата ИЗ РегистрСведений.Валюты.СрезПоследних(&ПерваяДата, ) КАК ВалютыСрезПоследних ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВалютыСрезПоследних.Валюта, ВалютыСрезПоследних.Курс, &ВтораяДата ИЗ РегистрСведений.Валюты.СрезПоследних(&ВтораяДата, ) КАК ВалютыСрезПоследних |
Автор: Jureth 03.10.05, 03:49 |
Как одним запросом получить таблицу расхождений курсов взаиморасчетов всех выписанных документов "ЗаказПокупателя" с официальным курсом? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ ВложенныйЗапрос.Ссылка КАК Документ, ВложенныйЗапрос.ДоговорКонтрагентаВалютаВзаиморасчетов КАК ВалютаДоговора, ВложенныйЗапрос.КурсВзаиморасчетов, ВЫБОР КОГДА КурсыВалют.Курс ЕСТЬ NULL ТОГДА 0 ИНАЧЕ КурсыВалют.Курс КОНЕЦ КАК КурсОфициальный, ВЫБОР КОГДА КурсыВалют.Курс ЕСТЬ NULL ТОГДА ВложенныйЗапрос.КурсВзаиморасчетов ИНАЧЕ ВложенныйЗапрос.КурсВзаиморасчетов - КурсыВалют.Курс КОНЕЦ КАК Превышение ИЗ (ВЫБРАТЬ ЗаказПокупателя.Ссылка КАК Ссылка, МАКСИМУМ(КурсыВалют.Период) КАК Период, ЗаказПокупателя.КурсВзаиморасчетов КАК КурсВзаиморасчетов, ЗаказПокупателя.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК ДоговорКонтрагентаВалютаВзаиморасчетов ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют ПО ЗаказПокупателя.ДоговорКонтрагента.ВалютаВзаиморасчетов = КурсыВалют.Валюта И ЗаказПокупателя.Дата >= КурсыВалют.Период СГРУППИРОВАТЬ ПО ЗаказПокупателя.КурсВзаиморасчетов, ЗаказПокупателя.ДоговорКонтрагента.ВалютаВзаиморасчетов, ЗаказПокупателя.Ссылка ) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют ПО ВложенныйЗапрос.ДоговорКонтрагентаВалютаВзаиморасчетов = КурсыВалют.Валюта И ВложенныйЗапрос.Период = КурсыВалют.Период |
Автор: Jureth 03.10.05, 03:52 |
Как написать запрос таким образом, чтобы на определенном уровне иерархии запроса считались одни итоговые функции, а на другом уровне другие? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ ОстаткиТоваровКомпанииОстатки.Номенклатура КАК Номенклатура, ОстаткиТоваровКомпанииОстатки.Номенклатура.Представление, ОстаткиТоваровКомпанииОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ОстаткиТоваровКомпанииОстатки.ХарактеристикаНоменклатуры.Представление, ОстаткиТоваровКомпанииОстатки.КоличествоОстаток КАК КоличествоОстаток, NULL как Заказ, 0 КАК Резерв ИЗ РегистрНакопления.ОстаткиТоваровКомпании.Остатки КАК ОстаткиТоваровКомпанииОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗаказыПокупателейОстатки.Номенклатура, ЗаказыПокупателейОстатки.Номенклатура.Представление, ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры, ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры.Представление, 0, ЗаказыПокупателейОстатки.ЗаказПокупателя, ЗаказыПокупателейОстатки.КоличествоОстаток ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки ИТОГИ СУММА(КоличествоОстаток), СУММА(Резерв) ПО Номенклатура, ХарактеристикаНоменклатуры |
Автор: Jureth 03.10.05, 03:54 |
Как получить перечень документов, приведших данные подчиненного периодического регистра сведений к определенному состоянию? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ВЫБРАТЬ КандидатыНаРаботу.ФизЛицо КАК ФизЛицо, КандидатыНаРаботу.Регистратор КАК Документ, КандидатыНаРаботу.Статус КАК Статус ИЗ РегистрСведений.КандидатыНаРаботу.СрезПоследних(&ДатаОтчета, ) КАК КандидатыНаРаботуСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КандидатыНаРаботу КАК КандидатыНаРаботу ПО КандидатыНаРаботуСрезПоследних.ФизЛицо = КандидатыНаРаботу.ФизЛицо ГДЕ КандидатыНаРаботуСрезПоследних.Статус = &Отложен И КандидатыНаРаботу.Период <= &ДатаОтчета УПОРЯДОЧИТЬ ПО КандидатыНаРаботу.ФизЛицо.Наименование, Документ ИТОГИ МАКСИМУМ(Статус) ПО ФизЛицо АВТОУПОРЯДОЧИВАНИЕ |
Автор: Jureth 03.10.05, 03:56 |
Как установить параметры запроса, если текст запроса заранее не известен? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Запрос = Новый Запрос(" |ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&ГруппаНоменклатуры)"); // Получить описание параметров запроса. ПараметрыЗапроса = Запрос.НайтиПараметры(); Для Каждого ПараметрЗапроса Из ПараметрыЗапроса Цикл ЗаданноеЗначение = Неопределено; // Открыть диалог ввода значения данного параметра. Если ВвестиЗначение(ЗаданноеЗначение, "Задайте значение параметра " + ПараметрЗапроса.Имя, ПараметрЗапроса.ТипЗначения) Тогда Запрос.УстановитьПараметр(ПараметрЗапроса.Имя, ЗаданноеЗначение); Иначе Возврат; КонецЕсли; КонецЦикла; РезультатЗапроса = Запрос.Выполнить(); |
Автор: Jureth 03.10.05, 03:59 |
Анализ данных Как получить данные о товарах продаваемых вместе? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Анализ = Новый АнализДанных; // Выбранный тип анализа как раз и указывает на то, что ищем // "совместно продаваемые" товары. Анализ.ТипАнализа = Тип("АнализДанныхПоискАссоциаций"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажиКомпанииОбороты.Регистратор Как ДокументПродажи, | ПродажиКомпанииОбороты.Номенклатура |ИЗ | РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты |УПОРЯДОЧИТЬ ПО | ДокументПродажи"; Запрос.УстановитьПараметр("НачПериода", НачПериода); Запрос.УстановитьПараметр("КонПериода", КонПериода); // Получить продажи за указанный период. // Выбрана периодичность по Регистратору, т.к. необходимо получить // данные о совместных продажах в рамках одной покупки. Анализ.ИсточникДанных = Запрос.Выполнить(); // Выполнить анализ в соответствии с указанным источником. РезультатАнализа = Анализ.Выполнить(); // Для вывода результата анализа воспользуемся построителем // отчета анализа данных. Построитель = Новый ПостроительОтчетаАнализаДанных(); Построитель.Макет = Неопределено; Построитель.ТипАнализа = Тип("АнализДанныхПоискАссоциаций"); ТабДок = Новый ТабличныйДокумент; Построитель.Вывести(РезультатАнализа, ТабДок); ТабДок.Показать(); |
Автор: Jureth 03.10.05, 04:02 |
Как порекомендовать сопутствующие товары? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Анализ = Новый АнализДанных; // Найти ассоциации. Анализ.ТипАнализа = Тип("АнализДанныхПоискАссоциаций"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажиКомпанииОбороты.Регистратор КАК ДокументПродажи, | ПродажиКомпанииОбороты.Номенклатура |ИЗ | РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты |УПОРЯДОЧИТЬ ПО | ДокументПродажи"; // Ассоциации ищем подокументно, это определяется поведением // объекта "АнализДанных" "по умолчанию" при выборе // периодичности виртуальной таблицы Регистратор Запрос.УстановитьПараметр("НачПериода", НачПериода); Запрос.УстановитьПараметр("КонПериода", КонПериода); Анализ.ИсточникДанных = Запрос.Выполнить(); РезультатАнализа = Анализ.Выполнить(); // Исходя из полученного анализа создать прогноз. МодельПрогноза = РезультатАнализа.СоздатьМодельПрогноза(); // ТЗ- таблица значений, содержащая данные о том, // какие номенклатурные позиции вошли в "текущую" покупку. МодельПрогноза.ИсточникДанных = ТЗ; // ТП - элемент управления "Табличное поле" связанный через // свойство "Данные" с реквизитом формы "ТП" (тип ТаблицаЗначений) ТП = МодельПрогноза.Выполнить(); ЭлементыФормы.ТП.СоздатьКолонки(); |
Автор: Jureth 03.10.05, 04:04 |
Как посмотреть, что будет покупаться в дальнейшем? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ТабДок = Новый ТабличныйДокумент; Анализ = Новый АнализДанных; // Нужно спрогнозировать цепочку событий, поэтому выбираем // тип анализа "Поиск последовательностей". Анализ.ТипАнализа = Тип("АнализДанныхПоискПоследовательностей"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажиКомпанииОбороты.ДоговорВзаиморасчетовПокупателя.Владелец КАК Контрагент, | ПродажиКомпанииОбороты.Номенклатура, | ПродажиКомпанииОбороты.Период |ИЗ | РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты"; Запрос.УстановитьПараметр("НачПериода", НачПериода); Запрос.УстановитьПараметр("КонПериода", КонПериода); Анализ.ИсточникДанных = Запрос.Выполнить(); Колонка = Анализ.НастройкаКолонок.Найти("Период"); // Указать, что колонка "Период" имеет тип "Время", // что "позволит понять" хронологию событий Колонка.ТипКолонки = ТипКолонкиАнализаДанныхПоискПоследовательностей.Время; РезультатАнализа = Анализ.Выполнить(); МодельПрогноза = РезультатАнализа.СоздатьМодельПрогноза(); // ТЗ- таблица значений, содержащая исходные данные для прогноза // например, какой контрагент, какой товар закупил (исходя из чего // попытаемся узнать, что они еще закупят). МодельПрогноза.ИсточникДанных = ТЗ; // ТП - элемент управления "Табличное поле" связанный через // свойство "Данные" с реквизитом формы "ТП" //(тип ТаблицаЗначений) ТП = МодельПрогноза.Выполнить(); ЭлементыФормы.ТП.СоздатьКолонки(); // Построитель - реквизит формы, имеющий тип // ПостроительОтчетаАнализаДанных. Ряд табличных полей / / в диалоге могут быть связаны со свойствами-коллекциями // данного объекта Построитель.ТипАнализа = Тип("АнализДанныхПоискПоследовательностей"); Построитель.Вывести(РезультатАнализа, ТабДок); ТабДок.Показать(); |
Автор: Jureth 03.10.05, 04:07 |
Представление результатов отчетов Как вывести результат запроса в табличный документ? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОстаткиТоваровКомпанииОстатки.СкладКомпании КАК СкладКомпанииСсылка, | ОстаткиТоваровКомпанииОстатки.Номенклатура КАК НоменклатураСсылка, | СУММА(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток) КАК Остаток, | ОстаткиТоваровКомпанииОстатки.Номенклатура.Представление КАК Номенклатура, | ОстаткиТоваровКомпанииОстатки.СкладКомпании.Представление КАК Склад |ИЗ | РегистрНакопления.ОстаткиТоваровКомпании.Остатки(&Момент) КАК ОстаткиТоваровКомпанииОстатки |СГРУППИРОВАТЬ ПО | ОстаткиТоваровКомпанииОстатки.СкладКомпанииСсылка, | ОстаткиТоваровКомпанииОстатки.НоменклатураСсылка |ИТОГИ СУММА(Остаток) ПО | Общие, | Склад"; Запрос.УстановитьПараметр("Момент", Неопределено); Результат = Запрос.Выполнить(); // Получить поле табличного документа, в которое будем выводить результат. ТабДок = ЭлементыФормы.ПолеТабличногоДокумента; // Очистить данные в табличном документе // (возможно данные уже выводились ранее). ТабДок.Очистить(); Макет = ПолучитьМакет("Макет"); // Получить именованные области из макета. ОбластьОбщийИтог = Макет.ПолучитьОбласть("ОбщийИтог"); ОбластьСклад = Макет.ПолучитьОбласть("Склад"); ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура"); // Получить выборку по первой итоговой группировке (первый уровень). ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); // Запись общего итога всегда одна, поэтому можно обойтись без организации цикла. ВыборкаОбщийИтог.Следующий(); // Произвести запись данных из полей выборки в именованные // области с совпадающими именами. ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог); // Включить область с заполненными параметрами в табличный документ. ТабДок.Вывести(ОбластьОбщийИтог); // "От" записи первого уровня получить подчиненную выборку // записей второго уровня (по итоговой группировке "Склад"). ВыборкаПоСкладу = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоСкладу.Следующий() Цикл ОбластьСклад.Параметры.Заполнить(ВыборкаПоСкладу); ТабДок.Вывести(ОбластьСклад); // Получить подчиненную выборку, содержащую детальные записи. ВыборкаПоНоменклатуре = ВыборкаПоСкладу.Выбрать(); Пока ВыборкаПоНоменклатуре.Следующий() Цикл ОбластьНоменклатура.Параметры.Заполнить(ВыборкаПоНоменклатуре); ТабДок.Вывести(ОбластьНоменклатура); КонецЦикла; КонецЦикла; |
Автор: Jureth 03.10.05, 04:09 |
Как вывести данные в табличный документ с возможностью сворачивания и разворачивания данных по группировкам? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> // Перед выводом данных в табличный документ используется метод: ТабДок.НачатьАвтогруппировкуСтрок(); // Выести область с указанием уровня. ТабДок.Вывести(ОбластьОбщийИтог, ВыборкаОбщийИтог.Уровень()); // В конце работы с табличным документом необходимо выполнить // следующий метод: ТабДок.ЗакончитьАвтогруппировкуСтрок(); |
Автор: Jureth 03.10.05, 04:10 |
Как при выводе данных в табличный документ свернуть все выводимые группировки? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> УровеньГруппировки = 1; //содержит индекс, с нуля ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.ПоказатьУровеньГруппировокСтрок(УровеньГруппировки); |
Автор: Jureth 03.10.05, 04:10 |
Как при выводе данных в табличный документ произвольно определить состав свернутых и развернутых группировок? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ТабДок.Вывести(ОбластьНоменклатура, ВыборкаПоНоменклатуре.Уровень(), , Ложь); |
Автор: Jureth 03.10.05, 04:11 |
Как выгрузить результат запроса с показом иерархии? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура, | ПродажиКомпанииОбороты.КоличествоОборот КАК КоличествоОборот |ИЗ | РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, , ) КАК ПродажиКомпанииОбороты |ИТОГИ СУММА(КоличествоОборот) ПО | Номенклатура ИЕРАРХИЯ"; Запрос.УстановитьПараметр("НачПериода", НачПериода); Запрос.УстановитьПараметр("КонПериода", КонПериода); Результат = Запрос.Выполнить(); // Осуществить выгрузку с сохранением иерархии. ЭлементыФормы.ТП.Значение = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам); ЭлементыФормы.ТП.СоздатьКолонки(); |
Автор: Jureth 03.10.05, 04:13 |
Где и как можно увидеть макет, автоматически генерируемый построителем отчета? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ПостроительОтчета.Макет = Неопределено; ПостроительОтчета.Макет.Показать() |
Автор: Jureth 03.10.05, 04:14 |
Как из построителя отчета передать данные в сводную таблицу? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ЭлементыФормы.ДокументРезультат.ВстроенныеТаблицы.СводнаяТаблица.ИсточникДанных = ПостроительОтчетаОтчет; ЭлементыФормы.ДокументРезультат.ВстроенныеТаблицы.СводнаяТаблица.ОтображатьПоля = Истина; |
Автор: Jureth 03.10.05, 04:18 |
Отчет формируется построителем отчета. Как убрать одну из колонок, поместив ее данные в расшифровку другой? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Процедура АлфавитныйПереченьКандидатовСРасшифровкой() ПостроительОтчета = Новый ПостроительОтчета; ПостроительОтчета.Текст ="ВЫБРАТЬ | РегистрацияСобеседованияКандидата.ФизЛицо КАК Кандидат, | РегистрацияСобеседованияКандидата.РезультатСобеседования КАК Результат, | РегистрацияСобеседованияКандидата.Ссылка |ИЗ | Документ.РегистрацияСобеседованияКандидата КАК РегистрацияСобеседованияКандидата |УПОРЯДОЧИТЬ ПО | РегистрацияСобеседованияКандидата.ФизЛицо.Наименование"; ПостроительОтчета.Выполнить(); Макет = ПостроительОтчета.Макет; // Очистить области, связанные с ссылкой. ТекущаяОбласть = Неопределено; Пока Истина Цикл ТекущаяОбласть = Макет.НайтиТекст("Ссылка", ТекущаяОбласть, Макет.Область()); Если ТекущаяОбласть = Неопределено Тогда Прервать; Иначе ТекущаяОбласть.Очистить(Истина, Истина, Истина); КонецЕсли; КонецЦикла; // Заполнить параметр расшифровки для областей, где параметр = "Результат". ТекущаяОбласть = Неопределено; Пока Истина Цикл ТекущаяОбласть = Макет.НайтиТекст("Результат", ТекущаяОбласть, Макет.Область()); Если ТекущаяОбласть = Неопределено Тогда Прервать; Иначе Если ТекущаяОбласть.Параметр = "Результат" Тогда ТекущаяОбласть.ПараметрРасшифровки = "Ссылка"; КонецЕсли; КонецЕсли; КонецЦикла; ПостроительОтчета.Макет = Макет; ПостроительОтчета.Вывести(); КонецПроцедуры |
Автор: Jureth 03.10.05, 04:20 |
Как сохранить настройки построителя отчета до следующего открытия формы отчета? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> СохранитьЗначение("НастройкаПостроителяДляОтчетаПродажи" + Метаданные().Имя, ПостроительОтчета.ПолучитьНастройки()); // До установки настроек они ранее должны были быть заполнены // по тексту запроса. ПостроительОтчета.ЗаполнитьНастройки(); // Установить настройки построителя отчета. Настройка = ВосстановитьЗначение("НастройкаПостроителяДляОтчетаПродажи" + Метаданные().Имя); Если Настройка <> Неопределено Тогда ПостроительОтчета.УстановитьНастройки(Настройка); КонецЕсли; |
Автор: Jureth 03.10.05, 04:23 |
Как организовать показ примечаний в формируемом табличном документе? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Процедура Отчет(ДатаНач, ДатаКон) Экспорт Запрос = Новый Запрос; // Сбор данных. Запрос.Текст = "ВЫБРАТЬ | Событие.Ответственный КАК Ответственный, | Событие.Дата, | Событие.ВидСобытия, | Событие.Контрагент, | Событие.СодержаниеСобытия, | Событие.ОписаниеСобытия |ИЗ | Документ.Событие КАК Событие |ГДЕ | Событие.Дата МЕЖДУ &ДатаНач И &ДатаКон И (Событие.Проведен) И Событие.СостояниеСобытия = &Завершено |УПОРЯДОЧИТЬ ПО | Ответственный"; Запрос.УстановитьПараметр("ДатаКон", ДатаКон); Запрос.УстановитьПараметр("ДатаНач", ДатаНач); Запрос.УстановитьПараметр("Завершено", Перечисления.СостоянияСобытий.Завершено); Результат = Запрос.Выполнить(); // Сформировать табличный документ. Макет = ПолучитьМакет("Отчет"); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали"); ТабДок = Новый ТабличныйДокумент; ОбластьЗаголовок.Параметры.ДатаНач = ДатаНач; ОбластьЗаголовок.Параметры.ДатаКон = ДатаКон; ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы); ВыборкаДетали = Результат.Выбрать(); Пока ВыборкаДетали.Следующий() Цикл ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали); ОбластьДетальныхЗаписей.Область("Описание").Примечание.Текст = ВыборкаДетали.СодержаниеСобытия; ТабДок.Вывести(ОбластьДетальныхЗаписей); КонецЦикла; ТабДок.Показать(); КонецПроцедуры |