Документы 1С

Содержание

Запросы

  • Как получить данные из табличной части документов?
  • Как получить данные из табличной части документов и представить их в иерархическом виде?
  • Как подсчитать количество одинаковых элементов в выбираемых данных?
  • Как применять условия для отбора по значениям полей, вычисленных как результат агрегатной функции?
  • Как ограничить выборку из виртуальной таблицы?
  • Как просуммировать данные по одинаковым значениям одного из полей выборки?
  • Как получить только те записи, в которых значение определенного поля превышает указанное значение?
  • Как обратиться к подчиненным полям в запросе?
  • Как объединить результаты нескольких запросов?
  • Как выбрать данные из двух таблиц, удовлетворяющие определенному условию?
  • Как дополнить данные одной таблицы данными, выбранными из другой таблицы по определенному условию?
  • Как объединить данные из двух таблиц по определенному условию?
  • Как вывести некоторое значение вместо NULL в запросе?
  • Как вместе с данными некоторой таблицы получить общие итоги из этой же таблицы?
  • Как получить иерархические итоги по группе справочника?
  • Как по состоянию на заданную дату по регистру «ОстаткиНаСкладе» найти последний документ «ПоступлениеТоваровУслуг», по которому приходила номенклатура?
  • Как подсчитать количество записей с одинаковым значением некоторого поля?
  • Как в итоговых записях вывести количество различных записей?
  • Как узнать количество записей в результате запроса?
  • Как проверить достаточность остатков товаров на складах, указанных в документе?
  • Как в запросе осуществить отбор по значению перечисления?
  • Как получить курсы валют на две интересующие даты?
  • Как одним запросом получить таблицу расхождений курсов взаиморасчетов всех выписанных документов «ЗаказПокупателя» с официальным курсом?
  • Как написать запрос таким образом, чтобы на определенном уровне иерархии запроса считались одни итоговые функции, а на другом уровне другие?
  • Как получить перечень документов, приведших данные подчиненного периодического регистра сведений к определенному состоянию
  • Как установить параметры запроса, если текст запроса заранее не известен?
  • Анализ данных

  • Как получить данные о товарах продаваемых вместе?
  • Как порекомендовать сопутствующие товары?
  • Как посмотреть, что будет покупаться в дальнейшем?

Как получить данные из табличной части документов?

ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары

Как получить данные из табличной части документов и представить их в иерархическом виде?

ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ИТОГИ ПО Номенклатура ТОЛЬКО ИЕРАРХИЯ

Как подсчитать количество одинаковых элементов в выбираемых данных?

ВЫБРАТЬ РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары СГРУППИРОВАТЬ ПО РеализацияТоваровУслугТовары.Номенклатура

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

ВЫБРАТЬ РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары СГРУППИРОВАТЬ ПО РеализацияТоваровУслугТовары.Номенклатура ИМЕЮЩИЕ СУММА(РеализацияТоваровУслугТовары.Количество) > 10

Как ограничить выборку из виртуальной таблицы?

ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК ПродажиОбороты

Как просуммировать данные по одинаковым значениям одного из полей выборки?

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

Как получить только те записи, в которых значение определенного поля превышает указанное значение?

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

Как обратиться к подчиненным полям в запросе?

ВЫБРАТЬ ПродажиОбороты.ДоговорКонтрагента.Владелец, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК ПродажиОбороты // Этим запросом посчитаем обороты за период по контрагентам ВЫБРАТЬ ПродажиОбороты.ДоговорКонтрагента.Владелец, СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот, СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот ИЗ РегистрНакопления.Продажи.Обороты((&ДатаНач, &ДатаКон) КАК ПродажиОбороты СГРУППИРОВАТЬ ПО ПродажиОбороты.ДоговорКонтрагента.Владелец

Как объединить результаты нескольких запросов?

// Одним запросом получим номенклатуру из всех табличных частей документа Реализация товаров, услуг: ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ОБЪЕДИНИТЬ ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугВозвратнаяТара.Номенклатура ИЗ Документ.РеализацияТоваровУслуг.ВозвратнаяТара КАК РеализацияТоваровУслугВозвратнаяТара ОБЪЕДИНИТЬ ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугУслуги.Номенклатура ИЗ Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги

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

ВЫБРАТЬ ЗаказыПокупателейОстатки.Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ЗаказаноПокупателями, ЗаказыПоставщикамОстатки.КоличествоОстаток КАК ЗаказаноПоставщикам ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаОтч) КАК ЗаказыПокупателейОстатки ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаОтч) КАК ЗаказыПоставщикамОстатки ПО ЗаказыПокупателейОстатки.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура

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

ВЫБРАТЬ ЗаказыПокупателейОстатки.Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ЗаказаноПокупателями, ЗаказыПоставщикамОстатки.КоличествоОстаток КАК ЗаказаноПоставщикам ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаОтч) КАК ЗаказыПокупателейОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаОтч) КАК ЗаказыПоставщикамОстатки ПО ЗаказыПокупателейОстатки.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура

Как объединить данные из двух таблиц по определенному условию?

// Получим список номенклатуры с количеством, заказанным покупателям и поставщикам // через полное соединение по условию: ВЫБРАТЬ ВЫБОР КОГДА (ЗаказыПокупателейОстатки.Номенклатура) ЕСТЬ NULL ТОГДА ЗаказыПоставщикамОстатки.Номенклатура ИНАЧЕ ЗаказыПокупателейОстатки.Номенклатура КОНЕЦ КАК Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ЗаказаноПокупателями, ЗаказыПоставщикамОстатки.КоличествоОстаток КАК ЗаказаноПоставщикам ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаОтч) КАК ЗаказыПокупателейОстатки ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаОтч) КАК ЗаказыПоставщикамОстатки ПО ЗаказыПокупателейОстатки.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура // То же самое, но по другому ВЫБРАТЬ ВложенныйЗапрос.Номенклатура, СУММА(ВложенныйЗапрос.ЗаказаноПокупателями) КАК ЗаказаноПокупателями, СУММА(ВложенныйЗапрос.ЗаказаноПоставщикам) КАК ЗаказаноПоставщикам ИЗ (ВЫБРАТЬ ЗаказыПокупателейОстатки.Номенклатура КАК Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток КАК ЗаказаноПокупателями, 0 КАК ЗаказаноПоставщикам ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаОтч, ) КАК ЗаказыПокупателейОстатки ОБЪЕДИНИТЬ ВЫБРАТЬ ЗаказыПоставщикамОстатки.Номенклатура, 0, ЗаказыПоставщикамОстатки.КоличествоОстаток ИЗ РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаОтч, ) КАК ЗаказыПоставщикамОстатки ) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Номенклатура

Как вывести некоторое значение вместо NULL в запросе?

ВЫБРАТЬ ЕСТЬNULL(Справочник.Номенклатура.Артикул, «—«) КАК Артикул, Справочник.Номенклатура.Представление КАК Номенклатура

Как вместе с данными некоторой таблицы получить общие итоги из этой же таблицы?

ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.СуммаОборот КАК СуммаПродаж, ПродажиОбороты.СуммаОборот / СовокупныеОбороты.СуммаОборот * 100 КАК ПроцентнаяДоля ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК ПродажиОбороты ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон) КАК СовокупныеОбороты ПО ИСТИНА УПОРЯДОЧИТЬ ПО ПроцентнаяДоля УБЫВ

Как получить иерархические итоги по группе справочника?

ВЫБРАТЬ ТоварыГруппы.Ссылка КАК Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток ИЗ (ВЫБРАТЬ Номенклатура.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Родитель В ИЕРАРХИИ(&Группа) И (Номенклатура.ЭтоГруппа = ЛОЖЬ) ) КАК ТоварыГруппы ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&МоментПолучения, Номенклатура В ИЕРАРХИИ (&Группа)) КАК ТоварыНаСкладахОстатки ПО ТоварыГруппы.Ссылка = ТоварыНаСкладахОстатки.Номенклатура ИТОГИ СУММА(КоличествоОстаток) ПО Номенклатура ТОЛЬКО ИЕРАРХИЯ

Как по состоянию на заданную дату по регистру «ОстаткиНаСкладе» найти последний документ «ПоступлениеТоваровУслуг», по которому приходила номенклатура?

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

Как подсчитать количество записей с одинаковым значением некоторого поля?

ВЫБРАТЬ Контрагенты.ОсновнойМенеджерПокупателя, КОЛИЧЕСТВО(Контрагенты.Ссылка) КАК КоличествоЗакрепленных ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ (Контрагенты.ЭтоГруппа = ЛОЖЬ) И (Контрагенты.ОсновнойМенеджерПокупателя <> &НеЗаполненМенеджер) СГРУППИРОВАТЬ ПО Контрагенты.ОсновнойМенеджерПокупателя УПОРЯДОЧИТЬ ПО КоличествоЗакрепленных УБЫВ

Как в итоговых записях вывести количество различных записей?

ВЫБРАТЬ Контрагенты.ОсновнойМенеджерПокупателя.Представление КАК ОсновнойМенеджерПокупателя, Контрагенты.Представление, 1 КАК КоличествоЗакрепленных ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ (Контрагенты.ЭтоГруппа = ЛОЖЬ) УПОРЯДОЧИТЬ ПО КоличествоЗакрепленных УБЫВ ИТОГИ КОЛИЧЕСТВО(КоличествоЗакрепленных) ПО ОсновнойМенеджерПокупателя

Как узнать количество записей в результате запроса?

Результат = Запрос.Выполнить(); КолЗаписей = Результат.Выбрать().Количество();

Как проверить достаточность остатков товаров на складах, указанных в документе?

ВЫБРАТЬ ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.Размещение КАК Склад, ВложенныйЗапрос.КоличествоСписываемое, ТоварыНаСкладахОстатки.КоличествоОстаток ИЗ (ВЫБРАТЬ ВнутреннийЗаказТовары.Номенклатура КАК Номенклатура, ВнутреннийЗаказТовары.Размещение КАК Размещение, СУММА(ВнутреннийЗаказТовары.Количество *ВнутреннийЗаказТовары.Коэффициент) КАК КоличествоСписываемое ИЗ Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары ГДЕ ВнутреннийЗаказТовары.Ссылка = &Ссылка СГРУППИРОВАТЬ ПО ВнутреннийЗаказТовары.Номенклатура, ВнутреннийЗаказТовары.Размещение ) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&МоментВремениДокумента, Склад В (ВЫБРАТЬ РАЗЛИЧНЫЕ ВЫРАЗИТЬ(ВнутреннийЗаказТоварыДляОтбора.Размещение КАК Справочник.Склады) ИЗ Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТоварыДляОтбора ГДЕ ВнутреннийЗаказТоварыДляОтбора.Ссылка = &Ссылка И НЕ ВЫРАЗИТЬ(ВнутреннийЗаказТоварыДляОтбора.Размещение КАК Справочник.Склады) ЕСТЬ NULL ) И Номенклатура В (ВЫБРАТЬ РАЗЛИЧНЫЕ ВнутреннийЗаказТоварыДляОтбора.Номенклатура ИЗ Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТоварыДляОтбора ГДЕ ВнутреннийЗаказТоварыДляОтбора.Ссылка = &Ссылка)) КАК ТоварыНаСкладахОстатки ПО ВложенныйЗапрос.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура И ВложенныйЗапрос.Размещение = ТоварыНаСкладахОстатки.Склад

Как в запросе осуществить отбор по значению перечисления?

Запрос.Текст = «ВЫБРАТЬ | ВоинскийУчетСрезПоследних.Физлицо |ИЗ | РегистрСведений.ВоинскийУчет.СрезПоследних(&ДатаОтчета) КАК ВоинскийУчетСрезПоследних |ГДЕ | ВоинскийУчетСрезПоследних.ОтношениеКВоинскомуУчету = &Состоит» Запрос.УстановитьПараметр(«ДатаОтчета», ДатаОтчета); Запрос.УстановитьПараметр(«Состоит», Перечисления.ОтношениеКВоинскомуУчету.Состоит);

Как получить курсы валют на две интересующие даты?

ВЫБРАТЬ ВалютыСрезПоследних.Валюта, ВалютыСрезПоследних.Курс, &ПерваяДата Как Дата ИЗ РегистрСведений.Валюты.СрезПоследних(&ПерваяДата, ) КАК ВалютыСрезПоследних ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВалютыСрезПоследних.Валюта, ВалютыСрезПоследних.Курс, &ВтораяДата ИЗ РегистрСведений.Валюты.СрезПоследних(&ВтораяДата, ) КАК ВалютыСрезПоследних

Как одним запросом получить таблицу расхождений курсов взаиморасчетов всех выписанных документов «ЗаказПокупателя» с официальным курсом?

ВЫБРАТЬ ВложенныйЗапрос.Ссылка КАК Документ, ВложенныйЗапрос.ДоговорКонтрагентаВалютаВзаиморасчетов КАК ВалютаДоговора, ВложенныйЗапрос.КурсВзаиморасчетов, ВЫБОР КОГДА КурсыВалют.Курс ЕСТЬ NULL ТОГДА 0 ИНАЧЕ КурсыВалют.Курс КОНЕЦ КАК КурсОфициальный, ВЫБОР КОГДА КурсыВалют.Курс ЕСТЬ NULL ТОГДА ВложенныйЗапрос.КурсВзаиморасчетов ИНАЧЕ ВложенныйЗапрос.КурсВзаиморасчетов — КурсыВалют.Курс КОНЕЦ КАК Превышение ИЗ (ВЫБРАТЬ ЗаказПокупателя.Ссылка КАК Ссылка, МАКСИМУМ(КурсыВалют.Период) КАК Период, ЗаказПокупателя.КурсВзаиморасчетов КАК КурсВзаиморасчетов, ЗаказПокупателя.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК ДоговорКонтрагентаВалютаВзаиморасчетов ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют ПО ЗаказПокупателя.ДоговорКонтрагента.ВалютаВзаиморасчетов = КурсыВалют.Валюта И ЗаказПокупателя.Дата >= КурсыВалют.Период СГРУППИРОВАТЬ ПО ЗаказПокупателя.КурсВзаиморасчетов, ЗаказПокупателя.ДоговорКонтрагента.ВалютаВзаиморасчетов, ЗаказПокупателя.Ссылка ) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют ПО ВложенныйЗапрос.ДоговорКонтрагентаВалютаВзаиморасчетов = КурсыВалют.Валюта И ВложенныйЗапрос.Период = КурсыВалют.Период

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

ВЫБРАТЬ ОстаткиТоваровКомпанииОстатки.Номенклатура КАК Номенклатура, ОстаткиТоваровКомпанииОстатки.Номенклатура.Представление, ОстаткиТоваровКомпанииОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ОстаткиТоваровКомпанииОстатки.ХарактеристикаНоменклатуры.Представление, ОстаткиТоваровКомпанииОстатки.КоличествоОстаток КАК КоличествоОстаток, NULL как Заказ, 0 КАК Резерв ИЗ РегистрНакопления.ОстаткиТоваровКомпании.Остатки КАК ОстаткиТоваровКомпанииОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗаказыПокупателейОстатки.Номенклатура, ЗаказыПокупателейОстатки.Номенклатура.Представление, ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры, ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры.Представление, 0, ЗаказыПокупателейОстатки.ЗаказПокупателя, ЗаказыПокупателейОстатки.КоличествоОстаток ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки ИТОГИ СУММА(КоличествоОстаток), СУММА(Резерв) ПО Номенклатура, ХарактеристикаНоменклатуры

Как получить перечень документов, приведших данные подчиненного периодического регистра сведений к определенному состоянию?

ВЫБРАТЬ КандидатыНаРаботу.ФизЛицо КАК ФизЛицо, КандидатыНаРаботу.Регистратор КАК Документ, КандидатыНаРаботу.Статус КАК Статус ИЗ РегистрСведений.КандидатыНаРаботу.СрезПоследних(&ДатаОтчета, ) КАК КандидатыНаРаботуСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КандидатыНаРаботу КАК КандидатыНаРаботу ПО КандидатыНаРаботуСрезПоследних.ФизЛицо = КандидатыНаРаботу.ФизЛицо ГДЕ КандидатыНаРаботуСрезПоследних.Статус = &Отложен И КандидатыНаРаботу.Период <= &ДатаОтчета УПОРЯДОЧИТЬ ПО КандидатыНаРаботу.ФизЛицо.Наименование, Документ ИТОГИ МАКСИМУМ(Статус) ПО ФизЛицо АВТОУПОРЯДОЧИВАНИЕ

Как установить параметры запроса, если текст запроса заранее не известен?

Запрос = Новый Запрос(» |ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&ГруппаНоменклатуры)»); // Получить описание параметров запроса. ПараметрыЗапроса = Запрос.НайтиПараметры(); Для Каждого ПараметрЗапроса Из ПараметрыЗапроса Цикл ЗаданноеЗначение = Неопределено; // Открыть диалог ввода значения данного параметра. Если ВвестиЗначение(ЗаданноеЗначение, «Задайте значение параметра » + ПараметрЗапроса.Имя, ПараметрЗапроса.ТипЗначения) Тогда Запрос.УстановитьПараметр(ПараметрЗапроса.Имя, ЗаданноеЗначение); Иначе Возврат; КонецЕсли; КонецЦикла; РезультатЗапроса = Запрос.Выполнить();

Анализ данных

Как получить данные о товарах продаваемых вместе?

Анализ = Новый АнализДанных; // Выбранный тип анализа как раз и указывает на то, что ищем // «совместно продаваемые» товары. Анализ.ТипАнализа = Тип(«АнализДанныхПоискАссоциаций»); Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | ПродажиКомпанииОбороты.Регистратор Как ДокументПродажи, | ПродажиКомпанииОбороты.Номенклатура |ИЗ | РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты |УПОРЯДОЧИТЬ ПО | ДокументПродажи»; Запрос.УстановитьПараметр(«НачПериода», НачПериода); Запрос.УстановитьПараметр(«КонПериода», КонПериода); // Получить продажи за указанный период. // Выбрана периодичность по Регистратору, т.к. необходимо получить // данные о совместных продажах в рамках одной покупки. Анализ.ИсточникДанных = Запрос.Выполнить(); // Выполнить анализ в соответствии с указанным источником. РезультатАнализа = Анализ.Выполнить(); // Для вывода результата анализа воспользуемся построителем // отчета анализа данных. Построитель = Новый ПостроительОтчетаАнализаДанных(); Построитель.Макет = Неопределено; Построитель.ТипАнализа = Тип(«АнализДанныхПоискАссоциаций»); ТабДок = Новый ТабличныйДокумент; Построитель.Вывести(РезультатАнализа, ТабДок); ТабДок.Показать();

Как порекомендовать сопутствующие товары?

Анализ = Новый АнализДанных; // Найти ассоциации. Анализ.ТипАнализа = Тип(«АнализДанныхПоискАссоциаций»); Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | ПродажиКомпанииОбороты.Регистратор КАК ДокументПродажи, | ПродажиКомпанииОбороты.Номенклатура |ИЗ | РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты |УПОРЯДОЧИТЬ ПО | ДокументПродажи»; // Ассоциации ищем подокументно, это определяется поведением // объекта «АнализДанных» «по умолчанию» при выборе // периодичности виртуальной таблицы Регистратор Запрос.УстановитьПараметр(«НачПериода», НачПериода); Запрос.УстановитьПараметр(«КонПериода», КонПериода); Анализ.ИсточникДанных = Запрос.Выполнить(); РезультатАнализа = Анализ.Выполнить(); // Исходя из полученного анализа создать прогноз. МодельПрогноза = РезультатАнализа.СоздатьМодельПрогноза(); // ТЗ- таблица значений, содержащая данные о том, // какие номенклатурные позиции вошли в «текущую» покупку. МодельПрогноза.ИсточникДанных = ТЗ; // ТП — элемент управления «Табличное поле» связанный через // свойство «Данные» с реквизитом формы «ТП» (тип ТаблицаЗначений) ТП = МодельПрогноза.Выполнить(); ЭлементыФормы.ТП.СоздатьКолонки();

Как посмотреть, что будет покупаться в дальнейшем?

ТабДок = Новый ТабличныйДокумент; Анализ = Новый АнализДанных; // Нужно спрогнозировать цепочку событий, поэтому выбираем // тип анализа «Поиск последовательностей». Анализ.ТипАнализа = Тип(«АнализДанныхПоискПоследовательностей»); Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | ПродажиКомпанииОбороты.ДоговорВзаиморасчетовПокупателя.Владелец КАК Контрагент, | ПродажиКомпанииОбороты.Номенклатура, | ПродажиКомпанииОбороты.Период |ИЗ | РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты»; Запрос.УстановитьПараметр(«НачПериода», НачПериода); Запрос.УстановитьПараметр(«КонПериода», КонПериода); Анализ.ИсточникДанных = Запрос.Выполнить(); Колонка = Анализ.НастройкаКолонок.Найти(«Период»); // Указать, что колонка «Период» имеет тип «Время», // что «позволит понять» хронологию событий Колонка.ТипКолонки = ТипКолонкиАнализаДанныхПоискПоследовательностей.Время; РезультатАнализа = Анализ.Выполнить(); МодельПрогноза = РезультатАнализа.СоздатьМодельПрогноза(); // ТЗ- таблица значений, содержащая исходные данные для прогноза // например, какой контрагент, какой товар закупил (исходя из чего // попытаемся узнать, что они еще закупят). МодельПрогноза.ИсточникДанных = ТЗ; // ТП — элемент управления «Табличное поле» связанный через // свойство «Данные» с реквизитом формы «ТП» //(тип ТаблицаЗначений) ТП = МодельПрогноза.Выполнить(); ЭлементыФормы.ТП.СоздатьКолонки(); // Построитель — реквизит формы, имеющий тип // ПостроительОтчетаАнализаДанных. Ряд табличных полей // в диалоге могут быть связаны со свойствами — коллекциями // данного объекта Построитель.ТипАнализа = Тип(«АнализДанныхПоискПоследовательностей»); Построитель.Вывести(РезультатАнализа, ТабДок); ТабДок.Показать();

Программная запись/проведение/отмена проведения документа осуществляется при помощи методаЗаписать(<РежимЗаписи>, <РежимПроведения>) ДокументаОбъекта.

В параметр РежимЗаписи передается одно из значений системного перечисления РежимЗаписиДокумента :

  • Запись (Write)
  • ОтменаПроведения (UndoPosting)
  • Проведение (Posting)

Переданное значение и определяет какое действие производить с выбранным документом. Также при помощи параметра РежимПроведения можно указать оперативное или неоперативное проведение мы используем.

Пример №1. Программная запись документа

СсылкаНаДокумент = Документы.АвансовыйОтчет.НайтиПоНомеру(«00000000001»); Если НЕ СсылкаНаДокумент = Неопределено Тогда ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект(); ДокументОбъект.Дата = ТекущаяДата(); ДокументОбъект.Записать(РежимЗаписиДокумента.Запись); КонецЕсли;

Пример №2 Программное проведение документа

Запрос = Новый Запрос; Запрос.УстановитьПараметр(«НачалоПериода», НачалоМесяца(ТекущаяДата())); Запрос.УстановитьПараметр(«КонецПериода» , КонецМесяца(ТекущаяДата())); Запрос.Текст = «ВЫБРАТЬ | ВозвратТоваровОтПокупателя.Ссылка |ИЗ | Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя |ГДЕ | ВозвратТоваровОтПокупателя.Дата МЕЖДУ &НачалоПериода И &КонецПериода»; Результат = Запрос.Выполнить().Выгрузить(); Для Каждого ЭлементРезультата из Результат Цикл ДокументОбъект = ЭлементРезультата.Ссылка.ПолучитьОбъект(); ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); КонецЦикла;

Пример №3 Программная отмена проведения документа

Запрос = Новый Запрос; Запрос.УстановитьПараметр(«НачалоПериода», НачалоМесяца(ТекущаяДата())); Запрос.УстановитьПараметр(«КонецПериода» , КонецМесяца(ТекущаяДата())); Запрос.УстановитьПараметр(«Счет90» , ПланыСчетов.Хозрасчетный.НайтиПоКоду(«90»)); Запрос.Текст = «ВЫБРАТЬ РАЗЛИЧНЫЕ | ХозрасчетныйОбороты.Регистратор |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Счет В ИЕРАРХИИ (&Счет90), , , , ) КАК ХозрасчетныйОбороты»; Результат = Запрос.Выполнить().Выгрузить(); Для Каждого ЭлементРезультата из Результат Цикл ДокументОбъект = ЭлементРезультата.Регистратор.ПолучитьОбъект(); ДокументОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения); КонецЦикла;

Документы — это прикладные объекты конфигурации. Они позволяют хранить в прикладном решении информацию о совершенных хозяйственных операциях или о событиях, произошедших в «жизни» предприятия вообще. Это могут быть, например, приходные накладные, приказы о приеме на работу, счета, платежные поручения и т. д.

Структура документа

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

Система автоматически поддерживает режим, при котором уникальность номеров и автоматическая нумерация могут выполняться в пределах определенного периода (день, месяц, квартал, год). Например, если периодичность установлена год, то с нового года система опять начнет нумерацию указанных документов с 1.

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

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

Кроме этого, каждый документ может содержать некоторый набор информации, которая одинакова по своей структуре, но различна по количеству, для разных документов. Например, для документа Поступление товаров и услуг это может быть информация о товарах, поступивших на предприятие (наименование, количество, и т. д.), серийных номерах и возвратной таре. Для хранения подобных данных служат табличные части документа:

Проведение документа

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

Например, документ Поступление товаров и услуг при своем проведении может вносить изменения в состояние расчетов с поставщиками, в учет остатков товаров, в состояние заказов покупателей и другие учетные данные:

Для документа Коммерческое предложение контрагенту напротив, проведение может быть запрещено, потому что этот документ никак не влияет на состояние учета:

Конструктор движений

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

Формы документа

Для того чтобы пользователь мог просматривать и изменять данные, содержащиеся в документах, система поддерживает несколько форм представления документа. Система может автоматически генерировать все нужные формы документа. Наряду с этим разработчик имеет возможность создать собственные формы, которые система будет использовать вместо форм по умолчанию:

Форма списка

Для просмотра документов одного вида используется форма списка. Она позволяет выполнять навигацию по списку документов, задавать временной интервал отображаемых документов, добавлять, помечать на удаление и удалять документы. Форма списка позволяет выполнять сортировку и отбор отображаемой информации по нескольким критериям:

Форма документа

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

Форма выбора

Кроме этих двух форм для документа поддерживается форма выбора конкретных документов из списка. Она, обычно, содержит минимальный набор информации, необходимой для выбора того или иного документа и может использоваться, например, при создании документа Поступление товаров и услуг, в котором должен быть указан заказ поставщику, на основании которого формируется поступление товаров.

Макеты документа

Документу могут быть сопоставлены несколько макетов, содержащих данные, необходимые для обеспечения работы документа:

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

Файл:

1с 8.3 создать документ программно
1с открыть форму документа по ссылке
1с проведение документа
1с выбрать все документы запросом
1с документы выбрать отбор
1с 8.2 запрос выбрать документы за период
1с выборка документов
1с получить документ по ссылке

Выборка, перебор документов | ВДГБ. Код 1C v 8.х. // Выборка документов за весь Выбрать все движения регистра по датам · Искать вопрос · Выборка из результата запроса всех вошедших в него значений группировок 13 апр 2011 Как выбрать ОПРЕДЕЛЕННЫЙ документ за период Запрос = Новый Запрос; Запрос.УстановитьПараметр(«НачДата»,НачДата); . 8.2 8.3 8.4 «; Конфигурирование, программирование в «1С — Предприятие 8″ » 26 авг 2012 Форум 1С программирование, форум: общие вопросы программирования (Dev), Необходимо выбрать документы двух видов в том порядке как она идут в базе. а как в 8,2 причем с помощью конструктора не могу понять. или имеется ввиду 2 разных запроса выгрузить в 2 разных тз или 27 сен 2011 JediAlex Опытный в 1С Выбрать(); Пока Выборка.Следующий() Цикл . а вот процедура с текстом запроса для выбора документов:. 9 июн 2010 Как одним запросом выбрать документы всех видов? Используя метаданные и возможность объединения запросов: Код 1C v 8.х. Необходимо выбрать документы за период по ответственному // В каждом документе и провести документ Запрос = Новый Запрос; Запрос.Текст = Разместил: E_Migachev Версии: | 8.x | Дата: 20.01.2010 Прочитано: 19080. 0. 17 июн 2011 Запрос = Новый Запрос; Текст = «»; Для Каждого Документ Из Метаданные.Документы Цикл Текст = Текст + «ВЫБРАТЬ Ссылка ИЗ /// в 1с 8.3, 8.2 &НаСервере Процедура Запрос.Текст = «ВЫБРАТЬ 23 апр 2012 Вы здесь: Home / Запросы в 1С / Как в запросе 1C получить последний времени и используем конструкцию «ВЫБРАТЬ ПЕРВЫЕ 1»:. 25 фев 2009 Книга «Профессиональная разработка в системе 1С:Предприятие 8» (+DVD-ROM). Издание 2 Re: Выбрать все документы за период. 28.08.2016 08:

Пример требования к аппаратному обеспечению, Приказ № 959, Ms access руководство разработчика, Документальные филльмы, Список недокументированных смайлов.

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

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

Также через контекстное меню при нажатии правой кнопкой мыши на любом документе (или сочетанием клавиш Ctrl + F) можно вызвать «Расширенный поиск» – простой отбор по значению в любой из колонок, поиск можно осуществить по точному совпадению с поисковой фразой, по началу строки или по любой части строки. Так же через контекстное меню можно произвести отбор по дате документа с помощью функции «Установить период…». Функции можно применять последовательно, например, ограничить временным периодом список с результатами расширенного поиска.

Однако базовых возможностей поиска оказывается недостаточно, когда документов очень много и из них нужно найти определенные. Например, оставить в списке только непроведенные документы, или найти документ сразу по нескольким условиям. Расширенный функционал отбора и сортировки находится в меню «Еще…», кнопка «Настроить список…»

Обратимся к вкладке «Отбор». Справа в столбце расположены все реквизиты документов, по которым их можно отфильтровать. Структура реквизитов иерархическая – можно осуществлять отбор по основному реквизиту (например по Контрагенту), либо по подчиненному (например, по ИНН контрагента, либо по характеристике юр./физ. лицо). Также можно создавать сложные отборы – то есть сразу по нескольким реквизитам документов 1С. Так, в примере ниже, в списке счетов мы осуществляем отбор по сумме счета (не менее 10 000 руб.) и статусу оплаты (не оплачен).

На следующей вкладке расположено окно сортировки – здесь можно задать тонкую настройку сортировки списка документов по любым реквизитам, в том числе сложные варианты сортировки по нескольким реквизитам.

Далее, когда вам потребуется сбросить настройки поиска, сортировки и отбора документов 1С, вы можете вернуться к стандартным настройкам списка. Для этого в окне настройки списка нажмите на кнопку «Еще…», затем – «Установить стандартные настройки».

Помимо этого, вы можете организовать реквизиты в списке любым удобным образом, или даже добавить для отображения новые. Для этого через меню «Еще…» откройте окно «Изменить форму…»

Например, реквизит «Комментарии» стандартно находится с крайней правой части окна списка и комментария может быть не видно без дополнительной прокрутки. В примере мы изменим местоположение реквизита комментарий, чтобы он отображался правее. Для этого реквизит нужно «поднять».

Помимо этого, вы можете добавить новые реквизиты для отображения. Так, для примера мы добавим в отображение новый реквизит – телефон контрагента.

Пройдите курсы 1С и Вам больше не понадобятся советы и руководства!

Расписание курсов 1C

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *