|
|
its03_metodich_podderzka_1211_htm_ |
Методика.
ПРИМЕРЫ. |
|
|
|
1 Общая схема выполнения запросов. 2 Периодические регистры сведений. 3 Предложение ВЫБРАТЬ (SELECT) в языке
запросов 1С:Предприятия 8. 4 Предложение ИЗ (FROM) в языке запросов 1С:Предприятия
8. Формы. 5 Значения ячеек и элементы управления в
табличном документе. 6 Зачем нужны модули менеджеров прикладных
объектов? 7. Как добавить новый объект и открыть его
основную форму? 8. Как открыть форму списка подчиненного
справочника с отбором по владельцу? 9. Есть форма, содержащая динамический
список с произвольным запросом. Как при открытии формы установить нужные
параметры в этом запросе? 10. Как программно запустить отчет,
передав в него значения отбора? 11. Как добавить произвольные колонки в
динамический список? 12. Как рассчитать сумму в строке
табличной части справочника или документа? 13. Как предоставить возможность быстрого
отбора по нескольким полям в списке? 14. Как с помощью команды выполнить отчет
с некоторыми параметрами? 15. Как открыть неосновную форму текущего
элемента формы списка? Прикладные объекты в форме. 16. Как при открытии формы определить, что
создается новый элемент? 17. Как программно при открытии формы
передать в нее нужные данные заполнения? 18. Где описать собственный алгоритм
заполнения реквизитов нового документа? 19. Как выполнить ввод на основании
программно? 20. Как самому вывести сообщение, чтобы
оно указывало на поле формы, в котором ошибка? 21. Как программно открыть внешнюю
обработку? 22. Типичные причины неоптимальной работы
запросов и методы оптимизации. 23. Типичные причины избыточных блокировок
и методы оптимизации. 24. Анализ типов значений. 25. Особенности использования значений
типа Дата и МоментВремени. Язык запросов. 26. Особенности использования предложения
СГРУППИРОВАТЬ ПО. 27. Содержимое полей справочника. 28. Использование предложения "ДЛЯ
ИЗМЕНЕНИЯ" в языке запросов. 29. Использование отборов в запросах с
виртуальными таблицами. 30. Использование произвольных выражений в
итогах языка запроса. 31. Использование функции ЕСТЬNULL(). 32. Использование упорядочивания во
вложенных запросах. 33. Вывод ссылочных полей. 34. Особенности связи с виртуальной
таблицей остатков. 35. Выборка из результата запроса всех
вошедших в него значений группировок. 36. Примеры запросов для работы с
иерархическими справочниками. 37. Дополнение результата запроса датами в
установленном периоде. 38. Особенности упорядочивания по
ссылочным полям. 39. Получение полей через точку от других
полей. 40. Особенности работы с виртуальной
таблицей данных графика регистра расчета. 41. Расчет итогов по полям остатка. 42. Особенность выполнения функции
ПОДСТРОКА() языка запросов. 43. Особенности использования группового
оператора вхождения. |
|
№№ |
|
|
|
1 |
1 Общая схема выполнения запросов. |
НашЗапрос = Новый Запрос; НашЗапрос.Текст
= " |
ВЫБРАТЬ Ссылка, Наименование, Родитель КАК Группа |
ИЗ Справочник.Номенклатура |
ГДЕ Ссылка В ИЕРАРХИИ (&ВыбГруппа)"; |
|
2 |
|
НашЗапрос = Новый Запрос ("ВЫБРАТЬ *
ИЗ Справочник.Номенклатура"); |
|
3 |
|
//здесь: "ВыбГруппа" - параметр
запроса, // а "ВыбраннаяГруппаТоваров" -
переменная, содержащая ссылку на группу справочника "Номенклатура". НашЗапрос.УстановитьПараметр("ВыбГруппа",
ВыбраннаяГруппаТоваров); |
|
4 |
|
РезультатЗапроса = НашЗапрос.Выполнить(); |
|
5 |
|
Выборка = РезультатЗапроса.Выбрать(); //по
умолчанию применяется прямой тип обхода //обход записей в выборке Пока Выборка.Следующий() Цикл //обращение
к полям Сообщить(Выборка.Наименование); КонецЦикла; |
|
6 |
|
ТабЗнач = РезультатЗапроса.Выгрузить();
//по умолчанию прямой тип обхода ДеревоЗнач =
РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам); |
|
7 |
|
ТД = ЭлементыФормы.ПолеТабличногоДокумента1; СводнаяТаблица =
ТД.ВстроенныеТаблицы.СводнаяТаблица1; СводнаяТаблица.ИсточникДанных =
РезультатЗапроса; //<= вот здесь
самое важное! СводнаяТаблица.ОтображатьПоля = Истина; |
|
8 |
|
|
|
9 |
|
ТабДок = ЭлементыФормы.ПолеТабличногоДокумента; НашаСводнаяТаблица =
ТабДок.ВстроенныеТаблицы.Добавить(Тип("СводнаяТаблица")); |
|
10 |
|
ТабДок =
ЭлементыФормы.ПолеТабличногоДокумента; НашаСводнаяТаблица =
ТабДок.ВстроенныеТаблицы.СводнаяТаблица1; |
|
11 |
|
Запрос = Новый Запрос (" | ВЫБРАТЬ |
Номенклатура, |
ПодразделениеКомпании, |
СуммаПродажи | ИЗ |
РегистрНакопления.ПродажиКомпании | | ИТОГИ СУММА(СуммаПродажи) ПО |
Номенклатура ИЕРАРХИЯ, |
ПодразделениеКомпании ИЕРАРХИЯ | "); РезультатЗапроса = Запрос.Выполнить(); ТабДок =
ЭлементыФормы.ПолеТабличногоДокумента1; СводТаб =
ТабДок.ВстроенныеТаблицы.СводнаяТаблица1; СводТаб.ИсточникДанных = РезультатЗапроса;
//самое важное! СводТаб.ОтображатьПоля = Истина; |
|
12 |
|
СводТаб.Строки.Добавить(СводТаб.Поля.Номенклатура); СводТаб.Колонки.Добавить(СводТаб.Поля.ПодразделениеКомпании); СводТаб.Данные.Добавить(СводТаб.Поля.СуммаПродажи); |
|
13 |
|
СводТаб.Обновление = Ложь; СводТаб.Строки.Добавить(СводТаб.Поля.ПодразделениеКомпании); СводТаб.Строки.Добавить(СводТаб.Поля.Номенклатура); СводТаб.Данные.Добавить(СводТаб.Поля.СуммаПродажи); СводТаб.Обновление = Истина; |
|
14 |
|
СтруктураДанных = СводТаб.ПолучитьЗначения(ТабДок.Область("R4C3:R4C3")); |
|
15 |
|
|
|
16 |
2 Периодические регистры сведений |
ВалютаОтбор = Новый
Структура("Валюта", ВыбВалюта); СтруктураКурсКратность =
РегистрыСведений.КурсыВалют.Получить(ВыбДата, ВалютаОтбор); Если СтруктураКурсКратность.Курс = 0 Тогда
Сообщить("Курс точно на эту дату не указан!"); Иначе
Сообщить("Курс валюты:" +
СокрЛП(СтруктураКурсКратность.Курс) + ", кратность: " +
СокрЛП(СтруктураКурсКратность.Кратность)); КонецЕсли; |
|
17 |
|
ВалютаОтбор = Новый
Структура("Валюта", ВыбВалюта); СтруктураКурсКратность =
РегистрыСведений.КурсыВалют.ПолучитьПоследнее(ВыбДата, ВалютаОтбор); Сообщить("Актуальный курс на заданную
дату: " + СтруктураКурсКратность.Курс); |
|
18 |
|
тзДанные =
РегистрыСведений.КурсыВалют.СрезПоследних(ВыбДата, ); Для Каждого Стр Из тзДанные Цикл
Сообщить("Для валюты " + Строка(Стр.Валюта) + " курс на
заданную дату: " + Строка(Стр.Курс) + ", кратность: " +
Строка(Стр.Кратность)); КонецЦикла; |
|
19 |
|
ОтборТипЦен = Новый
Структура("ТипЦен", Перечисления.ТипыЦен.Оптовая); тзДанные =
РегистрыСведений.ЦеныКомпании.СрезПоследних(ВыбДата, ОтборТипЦен); Для Каждого Стр Из тзДанные Цикл
Сообщить("Для номенклатуры " + Строка(Стр.Номенклатура) +
" оптовая цена: " + Строка(Стр.Цена)); КонецЦикла; |
|
20 |
|
|
|
21 |
|
ВЫБРАТЬ * ИЗ РегистрСведений.КурсыВалют |
|
22 |
|
ВЫБРАТЬ Валюта, Курс ИЗ
РегистрСведений.КурсыВалют.СрезПоследних(&ВыбДата, Валюта =
&ВыбВалюта); |
|
23 |
|
ВЫБРАТЬ Валюта, Курс ИЗ
РегистрСведений.КурсыВалют.СрезПоследних(&ВыбДата); |
|
24 |
|
ВЫБРАТЬ Номенклатура, Цена ИЗ
РегистрСведений.ЦеныКомпании.СрезПоследних(&ВыбДата,
ТипЦен=&ВыбТипЦен); |
|
25 |
|
|
|
26 |
3 Предложение ВЫБРАТЬ (SELECT) в языке запросов
1С:Предприятия 8 |
//обращение к таблице справочника ВЫБРАТЬ * ИЗ Справочник.Номенклатура //обращение к таблице документа ВЫБРАТЬ * ИЗ
Документ.РасходныйКассовыйОрдер //обращение к основной таблице регистра
накопления ВЫБРАТЬ * ИЗ РегистрНакопления.ПродажиКомпании //обращение к виртуальной таблице регистра
накопления ВЫБРАТЬ * ИЗ
РегистрНакопления.ПродажиКомпании.Обороты |
|
27 |
|
//выборка всех невиртуальных полей из
таблицы справочника ВЫБРАТЬ Справочник.Номенклатура.* //выборка определенных полей из таблицы
справочника ВЫБРАТЬ
Справочник.Номенклатура.Код,
Справочник.Номенклатура.Наименование,
Справочник.Номенклатура.Представление //виртуальное поле |
|
28 |
|
//обращение к таблице справочника ВЫБРАТЬ Код, Наименование, Артикул,
СтранаПроисхождения ИЗ Справочник.Номенклатура //обращение к таблице документа ВЫБРАТЬ Номер, Дата,
ПодразделениеКомпании, СуммаДокумента ИЗ Документ.РасходныйКассовыйОрдер |
|
29 |
|
//обращение к таблице справочника (выбрать
два обычных поля и одно виртуальное) ВЫБРАТЬ Код, Наименование, Представление ИЗ Справочник.Номенклатура //обращение к таблице документа (выбрать
все невиртуальные поля и два виртуальных) ВЫБРАТЬ *, Представление, МоментВремени ИЗ Документ.РасходныйКассовыйОрдер |
|
30 |
|
//обращение к свойству объекта через одну
точку ВЫБРАТЬ
Ссылка,
ЮрФизЛицоКонтрагента.ИНН,
ПодразделениеКомпании.Код ИЗ Документ.РасходныйКассовыйОрдер //обращение к свойствам объектов через
несколько точек ВЫБРАТЬ
Ссылка,
Ответственный.ОсновнойБанковскийСчет.Банк.КоррСчет ИЗ Документ.АвансовыйОтчет |
|
31 |
|
ВЫБРАТЬ
Ссылка КАК Документ,
Ответственный КАК МатериальноОтветственный ИЗ Документ.АвансовыйОтчет УПОРЯДОЧИТЬ ПО МатериальноОтветственный |
|
32 |
|
ВЫБРАТЬ
Ссылка Документ,
Ответственный МатериальноОтветственный ИЗ Документ.АвансовыйОтчет |
|
33 |
|
//получение табличной части как вложенной
таблицы результата запроса ВЫБРАТЬ Номер, Дата, Товары ИЗ Документ.АвансовыйОтчет //получение нескольких колонок табличной
части как вложенной таблицы ВЫБРАТЬ Номер, Дата, Товары.(Номенклатура,
Количество) ИЗ Документ.АвансовыйОтчет |
|
34 |
|
ВЫБРАТЬ Номер, Дата, Товары.Номенклатура,
Товары.Количество ИЗ Документ.АвансовыйОтчет |
|
35 |
|
//выборка всех полей из табличной части ВЫБРАТЬ * ИЗ
Документ.АвансовыйОтчет.Товары // выборка определенных полей из табличной
части ВЫБРАТЬ Номенклатура, Количество, Цена,
Сумма ИЗ Документ.АвансовыйОтчет.Товары //задание псевдонимов для полей табличной
части ВЫБРАТЬ Документ.АвансовыйОтчет.Товары.(Номенклатура,
Сумма КАК СуммаПоСтроке) //обращение к реквизитам документа и
реквизитам табличной части (поле Ссылка) ВЫБРАТЬ
Ссылка.Номер, Ссылка.Дата, Ссылка.Ответственный, //реквизиты документа
Номенклатура, Количество, Цена, Сумма //реквизиты табличной части ИЗ Документ.АвансовыйОтчет.Товары |
|
36 |
|
ВЫБРАТЬ РАЗЛИЧНЫЕ Ответственный ИЗ Документ.АвансовыйОтчет |
|
37 |
|
ВЫБРАТЬ ПЕРВЫЕ 10 Номер, Дата,
СуммаДокумента ИЗ Документ.АвансовыйОтчет УПОРЯДОЧИТЬ ПО СуммаДокумента УБЫВ |
|
38 |
|
//арифметические операции ВЫБРАТЬ
Номенклатура,
Количество * Цена КАК РасчСумма1,
Сумма / Количество КАК РасчСумма2 ИЗ Документ.АвансовыйОтчет.Товары //литералы типа "булево",
"число", "строка", "дата" ВЫБРАТЬ Истина, Ложь, 10.5,
"Текст", ДАТАВРЕМЯ(2003,12,25) //конкатенация строк ВЫБРАТЬ "Сотрудник " +
Ответственный.Наименование ИЗ Документ.АвансовыйОтчет //агрегатные функции ВЫБРАТЬ
ПодразделениеКомпании,
СУММА(СуммаДокумента),
МАКСИМУМ(СуммаДокумента),
МИНИМУМ(СуммаДокумента),
СРЕДНЕЕ(СуммаДокумента),
КОЛИЧЕСТВО(*) ИЗ Документ.АвансовыйОтчет СГРУППИРОВАТЬ ПО ПодразделениеКомпании //операция выбора ВЫБРАТЬ Наименование,
ВЫБОР КОГДА СтранаПроисхождения.Наименование =
"КИТАЙ" ТОГДА "Азия"
КОГДА СтранаПроисхождения.Наименование = "ТАЙВАНЬ" ТОГДА
"Азия"
КОГДА СтранаПроисхождения.Наименование = "США" ТОГДА
"Америка"
КОГДА СтранаПроисхождения.Наименование = "КАНАДА" ТОГДА
"Америка"
ИНАЧЕ "Другое"
КОНЕЦ КАК Страна ИЗ Справочник.Номенклатура //операция приведения типов ВЫБРАТЬ
Ссылка,
Номенклатура,
ВЫРАЗИТЬ(Сумма / 3 КАК Число(5,2)) КАК ТретьСуммы ИЗ Документ.АвансовыйОтчет.Товары |
|
39 |
|
|
|
40 |
4 Предложение ИЗ (FROM) в языке запросов
1С:Предприятия 8 |
ВЫБРАТЬ *, Представление ИЗ
Справочник.Номенклатура |
|
41 |
|
ВЫБРАТЬ Ссылка, Номер, Дата, Представление
ИЗ Документ.АвансовыйОтчет |
|
42 |
|
ВЫБРАТЬ Ссылка, Номер, Дата ИЗ ЖурналДокументов.СкладскиеДокументы ГДЕ Проведен = Истина |
|
43 |
|
ВЫБРАТЬ Номенклатура,
ПодразделениеКомпании, СуммаПродажи ИЗ РегистрНакопления.ПродажиКомпании ГДЕ Активность = Истина |
|
44 |
|
//обращение к табличной части документа ВЫБРАТЬ Номенклатура, Количество ИЗ Документ.АвансовыйОтчет.Товары |
|
45 |
|
ВЫБРАТЬ Ссылка.Номер, Ссылка.Дата,
Номенклатура, Количество ИЗ Документ.АвансовыйОтчет.Товары |
|
46 |
|
//обращение к виртуальной таблице регистра
накопления (вызов без параметров) ВЫБРАТЬ * ИЗ
РегистрНакопления.ПродажиКомпании.Обороты //выборка оборотов за период ВЫБРАТЬ * ИЗ
РегистрНакопления.ПродажиКомпании.Обороты(&Нач, &Кон,,) //выборка оборотов по конкретному товару ВЫБРАТЬ * ИЗ
РегистрНакопления.ПродажиКомпании.Обороты(,,,Номенклатура = &ВыбТовар) //остатки товаров на определенную дату ВЫБРАТЬ * ИЗ
РегистрНакопления.ОстаткиТоваровКомпании.Остатки(&ВыбДата,) |
|
47 |
|
ВЫБРАТЬ Продажи.Номенклатура,
Продажи.ПодразделениеКомпании, Продажи.СуммаПродажи ИЗ РегистрНакопления.ПродажиКомпании КАК
Продажи ГДЕ Активность = Истина |
|
48 |
|
ВЫБРАТЬ Товары.Номенклатура КАК Товар, Товары.Номенклатура.Артикул ИЗ (
ВЫБРАТЬ Номенклатура ИЗ Документ.ВнутреннийЗаказ.Товары
ОБЪЕДИНИТЬ
ВЫБРАТЬ Номенклатура ИЗ Документ.ЗаказПокупателя.Товары ) КАК Товары |
|
49 |
|
ВЫБРАТЬ Спр.Ссылка, ДокТовары.Номенклатура ИЗ Справочник.Номенклатура КАК Спр,
Документ.АвансовыйОтчет.Товары КАК ДокТовары |
|
50 |
|
ВЫБРАТЬ ДокТовары.Номенклатура,
Спр.Артикул, ДокТовары.Количество, ДокТовары.Сумма ИЗ Справочник.Номенклатура КАК Спр СОЕДИНЕНИЕ
Документ.АвансовыйОтчет.Товары КАК ДокТовары
ПО Спр.Ссылка = ДокТовары.Номенклатура |
|
51 |
|
ВЫБРАТЬ Спр.Наименование КАК Валюта,
Рег.Курс ИЗ Справочник.Валюты КАК Спр ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
РегистрСведений.КурсыВалют.СрезПоследних КАК Рег
ПО Спр.Ссылка = Рег.Валюта |
|
52 |
|
ВЫБРАТЬ Спр.Наименование КАК Валюта,
Рег.Курс ИЗ
РегистрСведений.КурсыВалют.СрезПоследних() КАК Рег
ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Спр
ПО Спр.Ссылка = Рег.Валюта |
|
53 |
|
|
|
54 |
|
ВЫБРАТЬ
ОстатокСумма ИЗ
РегистрНакопления.Запасы.Остатки() ГДЕ
Товар = &Товар |
|
55 |
|
ВЫБРАТЬ
ОстатокСумма ИЗ
РегистрНакопления.Запасы.Остатки(, Товар = &Товар) |
|
56 |
|
ВЫБРАТЬ
Валюта, Курс ИЗ
РегистрСведений.КурсыВалют.СрезПоследних() ГДЕ
Источник = &Источник |
|
57 |
|
ВЫБРАТЬ
Валюта, Курс ИЗ
РегистрСведений.КурсыВалют.СрезПоследних(, Источник = &Источник) |
|
58 |
|
|
|
59 |
5 Значения ячеек и элементы управления в
табличном документе |
ПолеТабДок =
ЭлементыФормы.тдПолеТабличногоДокумента; ПолеТабДок.Область("R1C2").Текст
= спрНоменклатура.Наименование; ПолеТабДок.Область("R2C2").Текст
= "Это Строка"; //указываем явно литерал строки |
|
60 |
|
//задаем нужный тип с помощью объекта
"ОписаниеТипов" МассивБулево = Новый Массив; МассивБулево.Добавить(Тип("Булево")); ОписаниеТиповБулево = Новый
ОписаниеТипов(МассивБулево); //... ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента;
ПолеТабДок.Область("R3C3").СодержитЗначение
= Истина; //указываем, что в ячейке будет значение ПолеТабДок.Область("R3C3").ТипЗначения
= ОписаниеТиповБулево; //указываем тип значения ПолеТабДок.Область("R3C3").Значение
= СпрНоменклатура.Услуга; //значение типа "Булево" из справочника |
|
61 |
|
ПолеТабДок =
ЭлементыФормы.тдПолеТабличногоДокумента; ПолеТабДок.Область("R4C3").ТипЗначения
= ОписаниеТиповДата; //указываем тип, ранее заданный для Даты ПолеТабДок.Область("R4C3").Значение
= ТекущаяДата(); //указываем форматную строку //будет выглядеть как
"[031120-2315]-", если текущая дата '20-11-2003 23:15:00') ПолеТабДок.Область("R4C3").Формат
= "ДФ=[ггММдд-ЧЧмм]-"; |
|
62 |
|
//задаем нужный тип с помощью объекта
"ОписаниеТипов" МассивБулево = Новый Массив; МассивБулево.Добавить(Тип("Булево")); ОписаниеТиповБулево = Новый
ОписаниеТипов(МассивБулево); ... ПолеТабДок =
ЭлементыФормы.тдПолеТабличногоДокумента; ПолеТабДок.Область("R5C3").СодержитЗначение
= Истина; //указываем, что в ячейке будет значение ПолеТабДок.Область("R5C3").ТипЗначения
= ОписаниеТиповБулево; //указываем ранее заданный тип ПолеТабДок.Область("R5C3").Значение
= СпрНоменклатура.Услуга; //значение типа "Булево" из справочника //а теперь указываем, что в ячейке будет
отображаться флажок ПолеТабДок.Область("R5C3").УстановитьЭлементУправления(Тип("Флажок")); |
|
63 |
|
Перем ПолеТабДок; Процедура УстановитьЭУ(тдОбл, n,
ЗначениеЯчейки=Неопределено) //устанавливает элемент управления
ЭлементыФормы.Добавить(Тип("Флажок"), n, Истина,
ПолеТабДок);
ЭлементыФормы[n].Заголовок = "флажок"+n; //можно задать
заголовок элемента управления
ЭлементыФормы[n].Значение = ?(ЗначениеЯчейки=Неопределено, Ложь,
ЗначениеЯчейки); //задаем значение ячейки
ЭлементыФормы[n].ИзменяетДанные = Истина; //устанавливаем различные
свойства элемента управления
ЭлементыФормы[n].ПрозрачныйФон = Истина;
ЭлементыФормы[n].Расположить(тдОбл); //привязываем элемент управления
к ячейке КонецПроцедуры // ... Процедура ЗаполнитьТаблДок() //процедура,
заполняющая табличный документ n = 1; СпрНоменклатура =
Справочники.Номенклатура.Выбрать(); Пока СпрНоменклатура.Следующий() Цикл
// ...
УстановитьЭУ(ПолеТабДок.Область("R" + n + "C3"),
n, СпрНоменклатура.Услуга);
// ...
n = n + 1; КонецЦикла; КонецПроцедуры ПолеТабДок =
ЭлементыФормы.тдПолеТабличногоДокумента; |
|
64 |
|
ПолеТабДок =
ЭлементыФормы.тдПолеТабличногоДокумента; ПолеТабДок.Область("R4C3").Защита
= Истина; |
|
65 |
|
|
|
66 |
6 Зачем нужны модули менеджеров прикладных
объектов? |
Функция ПолучитьСписокДебиторов() .....КонецФункции |
|
67 |
|
Дебиторы =
Справочники.Контрагенты.ПолучитьСписокДебиторов(); |
|
68 |
|
|
|
69 |
7. Как добавить новый объект и открыть его
основную форму? |
ОткрытьФорму("Справочник.Товары.ФормаОбъекта"); |
|
70 |
|
ОткрытьФорму("ОбщаяФорма.ФормаКонстант"); |
|
71 |
|
ПараметрыФормы = Новый
Структура("ЭтоГруппа", Истина); ОткрытьФорму("Справочник.Товары.ФормаГруппы",
ПараметрыФормы); |
|
72 |
|
ОткрытьФорму("ОбщаяФорма.МояОбщаяФорма"); |
|
73 |
|
ОткрытьФорму("Справочник.Товары.ФормаСписка"); ОткрытьФорму("Справочник.Товары.ФормаВыбора"); ОткрытьФорму("Справочник.Товары.ФормаВыбораГруппы"); |
|
74 |
|
ОткрытьФорму("Справочник.Товары.Форма.СписокСОстатками"); ОткрытьФорму("Справочник.Товары.Форма.ФормаУниверсальногоПодбора"); |
|
75 |
|
СсылкаНаЭлементСправочника =
Элементы.Список.ТекущаяСтрока; ПараметрыФормы = Новый
Структура("Ключ", СсылкаНаЭлементСправочника); ОткрытьФорму("Справочник.Организации.ФормаОбъекта",
ПараметрыФормы); |
|
76 |
|
СсылкаНаЭлементСправочника =
Элементы.Список.ТекущаяСтрока; ПараметрыФормы = Новый
Структура("Ключ", СсылкаНаЭлементСправочника); ОткрытьФорму("Справочник.Организации.Форма.УниверсальнаяФормаОбъекта",
ПараметрыФормы); |
|
77 |
|
ОткрытьЗначение(Элементы.Список.ТекущаяСтрока); |
|
78 |
|
ФормаОбработки =
ПолучитьФорму("Обработка.РасчетДанных.Форма.Форма2"); |
|
79 |
|
ОсновнаяФормаОбработки =
ПолучитьФорму("Обработка.РасчетДанных.Форма"); |
|
80 |
|
ПараметрыФормы = Новый
Структура("ТекущаяСтрока", Объект.Ссылка); ОткрытьФорму("Справочник.Товары.ФормаСписка",
ПараметрыФормы); |
|
81 |
|
|
|
82 |
8. Как открыть форму списка подчиненного
справочника с отбором по владельцу? |
ЗначениеОтбора = Новый
Структура("Владелец", Объект.Ссылка); ПараметрыФормы = Новый
Структура("Отбор", ЗначениеОтбора); ОткрытьФорму("Справочник.ДоговорыВзаиморасчетов.ФормаСписка",
ПараметрыФормы); |
|
83 |
|
ЗначениеОтбора = Новый
Структура("Владелец", Элементы.Список.ТекущаяСтрока); ПараметрыФормы = Новый
Структура("Отбор", ЗначениеОтбора); ОткрытьФорму("Справочник.ДоговорыВзаиморасчетов.ФормаСписка",
ПараметрыФормы); |
|
84 |
|
ЗначениеОтбора = Новый
Структура("Номер", "333"); ПараметрыВыбора = Новый
Структура("Отбор", ЗначениеОтбора); ОткрытьФорму("Документ.ПриходнаяНакладная.ФормаСписка",ПараметрыВыбора); |
|
85 |
|
ОткрытьФорму("Документ.ПриходнаяНакладная.ФормаСписка"); |
|
86 |
|
&НаСервере Процедура ПриСозданииНаСервере(Отказ,
СтандартнаяОбработка)
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый
ПолеКомпоновкиДанных("Номер");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ПравоеЗначение = "000000001"; КонецПроцедуры |
|
87 |
|
&НаКлиенте Процедура ПриходныеНакладные(Команда)
ФормаСписка = ПолучитьФорму("Документ.ПриходнаяНакладная.ФормаСписка");
ФормаСписка.ФильтрПоТовару = Элементы.Список.ТекущаяСтрока;
ФормаСписка.Открыть(); КонецПроцедуры |
|
88 |
|
ВЫБРАТЬ
ДокументПриходнаяНакладная.Номер,
ДокументПриходнаяНакладная.ДатаИЗ
Документ.ПриходнаяНакладная КАК ДокументПриходнаяНакладнаяГДЕ ДокументПриходнаяНакладная.Товары.Товар =
&Товар |
|
89 |
|
&НаКлиенте Процедура ПриОткрытии(Отказ)
Список.Параметры.УстановитьЗначениеПараметра("Товар",
ФильтрПоТовару); КонецПроцедуры |
|
90 |
|
|
|
91 |
9. Есть форма, содержащая динамический
список с произвольным запросом. Как при открытии формы установить нужные
параметры в этом запросе? |
ПараметрыФормы = Новый
Структура("НачалоПериода, КонецПериода, Товар", '20091201000000', '20091231235959',
Объект.Ссылка); ОткрытьФорму("РегистрСведений.ЦеныТоваров.Форма.ФормаСписка",
ПараметрыФормы); |
|
92 |
|
Результат =
ОткрытьФормуМодально("Обработка.ЗаполнениеДанных.Форма.ПараметрыЗаполнения"); Если Результат = КодВозвратаДиалога.ОК
Тогда
// Действия в случае ввода данных ИначеЕсли Результат =
КодВозвратаДиалога.Пропустить Тогда
// Действия в случае пропуска экрана; например, переход к следующему
шагу мастера ИначеЕсли Результат = КодВозвратаДиалога.Отмена
Тогда
// Действия в случае отказа от ввода данных Иначе
// Действия во всех остальных случаях КонецЕсли; |
|
93 |
|
|
|
94 |
10. Как программно запустить отчет,
передав в него значения отбора? |
УсловияОтбора = Новый
Структура("Товар", Элементы.Список.ТекущаяСтрока); ПараметрыФормы = Новый
Структура("Отбор, СформироватьПриОткрытии", УсловияОтбора, Истина); ОткрытьФорму("Отчет.ЦеныТоваров.ФормаОбъекта",
ПараметрыФормы); |
|
95 |
|
&НаКлиенте Процедура
ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыФормы = Новый
Структура("Отбор,КлючНазначенияИспользования,СформироватьПриОткрытии",
Новый
Структура("Товар", ПараметрКоманды),
"ОстаткиПоТовару", Истина);
ОткрытьФорму("Отчет.ОстаткиТоваровНаСкладах.Форма", ПараметрыФормы,
ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность,
ПараметрыВыполненияКоманды.Окно); КонецПроцедуры |
|
96 |
|
|
|
97 |
11. Как добавить произвольные колонки в
динамический список? |
ВЫБРАТЬ
СправочникНоменклатура.Код, СправочникНоменклатура.Наименование,
ЦеныСрезПоследних.Цена ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних КАК
ЦеныСрезПоследних
ПО ЦеныСрезПоследних.Номенклатура = СправочникНоменклатура.Ссылка |
|
98 |
|
|
|
99 |
12. Как рассчитать сумму в строке
табличной части справочника или документа? |
&НаКлиенте Процедура
МатериалыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные;
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество *
СтрокаТабличнойЧасти.Цена; КонецПроцедуры &НаКлиенте Процедура
МатериалыЦенаПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные;
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество *
СтрокаТабличнойЧасти.Цена; КонецПроцедуры |
|
100 |
|
Процедура
РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
КонецПроцедуры |
|
101 |
|
&НаКлиенте Процедура
МатериалыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти); КонецПроцедуры &НаКлиенте Процедура
МатериалыЦенаПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти); КонецПроцедуры |
|
102 |
|
|
|
103 |
13. Как предоставить возможность быстрого
отбора по нескольким полям в списке? |
&НаКлиенте Процедура Отфильтровать(Команда)
Для Каждого ЭлементОтбора Из Список.Отбор.Элементы Цикл
Если ЭлементОтбора.Представление = "Программный отбор" Тогда Список.Отбор.Элементы.Удалить(ЭлементОтбора);
КонецЕсли;
КонецЦикла;
ГруппаОтбора =
Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.Использование = Истина;
ГруппаОтбора.ТипГруппы =
ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ГруппаОтбора.Представление = "Программный отбор";
Если НЕ Производитель.Пустая() Тогда
ЭлементОтбора =
ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый
ПолеКомпоновкиДанных("Производитель");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = Производитель;
ЭлементОтбора.Представление = "Программный отбор";
КонецЕсли;
Если НЕ Поставщик.Пустая() Тогда
ЭлементОтбора =
ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Поставщик");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = Поставщик;
ЭлементОтбора.Представление = "Программный отбор";
КонецЕсли; КонецПроцедуры |
|
104 |
|
|
|
105 |
14. Как с помощью команды выполнить отчет
с некоторыми параметрами? |
&НаКлиенте Процедура
ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыФормы = Новый Структура("Отбор,КлючНазначенияИспользования,СформироватьПриОткрытии",
Новый
Структура("Товар", ПараметрКоманды),
"ОстаткиПоТовару", Истина);
ОткрытьФорму("Отчет.ОстаткиТоваровНаСкладах.Форма", ПараметрыФормы,
ПараметрыВыполненияКоманды.Источник,
ПараметрыВыполненияКоманды.Уникальность,
ПараметрыВыполненияКоманды.Окно); КонецПроцедуры |
|
106 |
|
|
|
107 |
15. Как открыть неосновную форму текущего
элемента формы списка? |
&НаКлиенте Процедура ОткрытьФормуЭлемента(Команда)
ПараметрыФормы = Новый Структура("Ключ",
Элементы.Список.ТекущаяСтрока);
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаЭлемента1",
ПараметрыФормы); КонецПроцедуры |
|
108 |
|
|
|
109 |
Прикладные объекты в форме. |
|
|
110 |
|
ПоставщикДокумента = Объект.Поставщик; |
|
111 |
|
&НаСервереБезКонтекста Функция
ПолучитьИНННаСервере(СсылкаНаПоставщика)
Возврат СсылкаНаПоставщика.ИНН; КонецФункции |
|
112 |
|
&НаКлиенте Процедура
ПересчитатьЦеныДокумента(Команда)
ПересчитатьЦеныНаСервере(); КонецПроцедуры + &НаСервере Процедура ПересчитатьЦеныНаСервере()
ОбъектДокумента = РеквизитФормыВЗначение("Объект",
Тип("ДокументОбъект.Накладная"));
ОбъектДокумента.НачислитьСкидку(10);
ЗначениеВРеквизитФормы(ОбъектДокумента, "Объект"); КонецПроцедуры |
|
113 |
|
ОткрытьФорму("Документ.ПриходнаяНакладная.ФормаОбъекта"); + &НаКлиенте Процедура ПриходнаяНакладная(Команда)
СсылкаНаДокумент = СоздатьНовыйДокумент();
ОткрытьЗначение(СсылкаНаДокумент); КонецПроцедуры &НаСервереФункция
СоздатьНовыйДокумент() НовыйДокумент
= Документы.ПриходнаяНакладная.СоздатьДокумент(); НовыйДокумент.Номер = "111"; НовыйДокумент.Дата = ТекущаяДата(); НовыйДокумент.Записать(); Возврат НовыйДокумент.Ссылка;КонецФункции |
|
114 |
16. Как при открытии формы определить, что
создается новый элемент? |
Процедура ПриСозданииНаСервере(Отказ,
СтандартнаяОбработка)
Если Параметры.Ключ.Пустая() Тогда
Сообщить("Создается новый
объект");
КонецЕсли; КонецПроцедуры |
|
115 |
|
ЭлементыОтбора = Новый
Структура("Поставщик, Склад", СсылкаНаПоставщика, СсылкаНаСклад); ПараметрыФормы = Новый
Структура("ЗначенияЗаполнения", ЭлементыОтбора); ОткрытьФорму("Документ.Накладная.ФормаОбъекта",
ПараметрыФормы); |
|
116 |
17. Как программно при открытии формы
передать в нее нужные данные заполнения? |
ЭлементыОтбора = Новый
Структура("Поставщик, Склад", СсылкаНаПоставщика, СсылкаНаСклад); ОбъектНакладной =
Документы.Накладная.СоздатьДокумент(); ОбъектНакладной.Заполнить(ЭлементыОтбора); // Действия, имитирующие интерактивный
ввод данных пользователем ОбъектНакладной.Дата =
ТекущаяДатаСеанса();
... ОбъектНакладной.Записать(); |
|
117 |
18. Где описать собственный алгоритм
заполнения реквизитов нового документа? |
Процедура
ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ДанныеЗаполнения = Неопределено Тогда
// "Простой" ввод нового объекта
ИначеЕсли ТипЗнч(ДанныеЗаполнения) =
Тип("СправочникСсылка.Поставщики") Тогда
// Новый объект вводится на основании другого объекта.
// В этом случае в данные заполнения передается ссылка на объект,
являющийся основанием.
// В данном случае обрабатывается ввод на основании элемента
справочника Поставщики.
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
// Новый объект вводится командой из отобранного списка.
// В данных заполнения будет структура, содержащая значения отбора.
Например:
// "Поставщик" - СсылкаНаПоставщика
// "Склад" - СсылкаНаСклад
КонецЕсли; КонецПроцедуры |
|
118 |
19. Как выполнить ввод на основании
программно? |
ПараметрыФормы = Новый
Структура("Основание", Объект.Ссылка); ОткрытьФорму("Документ.ПриходТовара.ФормаОбъекта",
ПараметрыФормы); |
|
119 |
|
НовыйДокумент =
Документы.РасходнаяНакладная.СоздатьДокумент(); НовыйДокумент.Заполнить(ВыбранныйКлиент); |
|
120 |
|
Если Поставщик =
Справочники.Поставщики.ПустаяСсылка() Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Необходимо заполнить поставщика!";
Сообщение.Поле = "Поставщик";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина; КонецЕсли; // Проверка остальных реквизитов // ... // Очистить массив проверяемых реквизитов,
чтобы платформа // не выполняла их автоматическую
проверку. ПроверяемыеРеквизиты.Очистить(); |
|
121 |
|
Если Поставщик =
Справочники.Поставщики.ПустаяСсылка() Тогда Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Необходимо заполнить поставщика!";
Сообщение.Поле = "Поставщик";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
// Удалить поставщика из массива проверяемых реквизитов.
ИндексПоляПоставщик =
ПроверяемыеРеквизиты.Найти("Поставщик");
Если ИндексПоляПоставщик <> Неопределено Тогда
ПроверяемыеРеквизиты.Удалить(ИндексПоляПоставщик);
КонецЕсли; КонецЕсли; |
|
122 |
|
ПроверяемыеРеквизиты.Добавить("Комментарий"); |
|
123 |
|
ПроверяемыеРеквизиты.Очистить(); |
|
124 |
20. Как самому вывести сообщение, чтобы
оно указывало на поле формы, в котором ошибка? |
Если СокрЛП(Комментарий) = ""
Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Поле = "Комментарий";
Сообщение.Текст = "Нужно написать комментарий.";
Сообщение.Сообщить(); КонецЕсли; |
|
125 |
|
|
|
126 |
21. Как программно открыть внешнюю
обработку? |
&НаКлиенте Процедура
ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
//Помещаем обработку во временном хранилище
АдресХранилища = "";
Результат = ПоместитьФайл(АдресХранилища,
"C:\ВнешняяОбработка.epf", , Ложь);
ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);
// Откроем форму подключенной внешней обработки
ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма"); КонецПроцедуры &НаСервере Функция
ПодключитьВнешнююОбработку(АдресХранилища)
Возврат ВнешниеОбработки.Подключить(АдресХранилища); КонецФункции |
|
127 |
|
|
|
128 |
22. Типичные причины неоптимальной работы
запросов и методы оптимизации |
- ВЫБРАТЬ ...ИЗ
Документ.РеализацияТоваровУслугЛЕВОЕ СОЕДИНЕНИЕ ( ВЫБРАТЬ ИЗ РегистрСведений.Лимиты ГДЕ ...
СГРУППИРОВАТЬ ПО ...) ПО ... |
|
129 |
|
+ МенеджерВТ = Новый
МенеджерВременныхТаблиц; Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц =
МенеджерВТ; // Текст пакетного запроса Запрос.Текст = " //
Заполняем временную таблицу. Запрос к регистру лимитов. |
ВЫБРАТЬ ... |
ПОМЕСТИТЬ Лимиты |
ИЗ РегистрСведений.Лимиты |
ГДЕ ... |
СГРУППИРОВАТЬ ПО ... |
ИНДЕКСИРОВАТЬ ПО ...; //
Выполняем основной запрос с использованием временной таблицы ВЫБРАТЬ ... ИЗ
Документ.РеализацияТоваровУслуг ЛЕВОЕ СОЕДИНЕНИЕ Лимиты ПО
...;" |
|
130 |
|
- Запрос.Текст = "ВЫБРАТЬ| ТоварыНаСкладахОстатки.Склад,| ТоварыНаСкладахОстатки.Номенклатура,| ТоварыНаСкладахОстатки.Качество|ИЗ| РегистрНакопления.ТоварыНаСкладах.Остатки(,Номенклатура
= &Номенклатура) КАК ТоварыНаСкладахОстатки"; |
|
131 |
|
-+ Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Склад, | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.Качество |ИЗ |
РегистрНакопления.ТоварыНаСкладах.Остатки( | , | Качество = &Качество | И Склад = &Склад) КАК
ТоварыНаСкладахОстатки"; |
|
132 |
|
+ Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Склад, | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.Качество, | ТоварыНаСкладахОстатки.КоличествоОстаток |ИЗ |
РегистрНакопления.ТоварыНаСкладах.Остатки( | , | Номенклатура = &Номенклатура | И Склад = &Склад) КАК
ТоварыНаСкладахОстатки"; |
|
133 |
|
- Запрос.Текст = "ВЫБРАТЬ | ОстаткиТоваров.Номенклатура КАК
Номенклатура, | Цены.Цена КАК
ЦенаПрошлогоМесяца |ИЗ |
РегистрНакопления.ТоварыНаСкладах.Остатки(...) КАК ОстаткиТоваров | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цена
КАК Цены | ПО Цены.Номенклатура =
ОстаткиТоваров.Номенклатура И |
Цены.Период В ( | ВЫБРАТЬ МАКСИМУМ(ЦеныПрошлогоМесяца.Период) | ИЗ РегистрСведений.Цена КАК
ЦеныПрошлогоМесяца | ГДЕ
ЦеныПрошлогоМесяца.Период < НАЧАЛОПЕРИОДА(ОстаткиТоваров.Период,
МЕСЯЦ) | И
ЦеныПрошлогоМесяца.Номенклатура = ОстаткиТоваров.Номенклатура | )
| ГДЕ ОстаткиТоваров.Склад = &Склад">; |
|
134 |
|
+ Запрос.Текст = " // Максимальные даты установки цен в
прошлом периоде для данных номенклатур
|ВЫБРАТЬ |
ОстаткиТоваров.Номенклатура КАК Номенклатура, | МАКСИМУМ(Цены.Период) КАК Период |ПОМЕСТИТЬ ДатыПоНоменклатурам |ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(...) КАК ОстаткиТоваров | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цена
КАК Цены | ПО Цены.Номенклатура =
ОстаткиТоваров.Номенклатура И |
Цены.Период < НАЧАЛОПЕРИОДА(ОстаткиТоваров.Период, МЕСЯЦ) | СГРУППИРОВАТЬ ПО
ОстаткиТоваров.Номенклатура | ГДЕ
ОстаткиТоваров.Склад = &Склад;
// Выбрать данные по цене за найденный период |ВЫБРАТЬ
| ДатыПоНоменклатурам.Номенклатура КАК Номенклатура, | Цены.Цена КАК ЦенаПрошлогоМесяца |ИЗ ДатыПоНоменклатурам | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цена
КАК Цены | ПО Цены.Номенклатура =
ОстаткиТоваров.Номенклатура И |
Цены.Период = ДатыПоНоменклатурам.Период"; |
|
135 |
|
- Запрос.Текст = "ВЫБРАТЬ|
Продажи.Регистратор.Номер,| Продажи.Регистратор.Дата,| Продажи.Контрагент,|
Продажи.Количество,| Продажи.Стоимость|ИЗ| РегистрНакопления.Продажи КАК
Продажи|ГДЕ ... |
|
136 |
|
Запрос.Текст = "ВЫБРАТЬ| ВЫБОР| КОГДА
Продажи.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг| ТОГДА
ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.РеализацияТоваровУслуг).Номер|
КОГДА Продажи.Регистратор ССЫЛКА Документ.ЗаказПокупателя| ТОГДА ВЫРАЗИТЬ(Продажи.Регистратор
КАК Документ.ЗаказПокупателя).Номер| КОНЕЦ ВЫБОРА КАК Номер,| ВЫБОР| КОГДА
Продажи.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг| ТОГДА
ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.РеализацияТоваровУслуг).Дата| КОГДА
Продажи.Регистратор ССЫЛКА Документ.ЗаказПокупателя| ТОГДА
ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.ЗаказПокупателя).Дата| КОНЕЦ ВЫБОРА
КАК Дата,| Продажи.Контрагент,| Продажи.Количество,| Продажи.Стоимость|ИЗ|
РегистрНакопления.Продажи КАК Продажи|ГДЕ| Продажи.Регистратор ССЫЛКА
Документ.РеализацияТоваровУслуг| ИЛИ Продажи.Регистратор ССЫЛКА
Документ.ЗаказыПокупателя"; |
|
137 |
|
- Запрос.Текст = "ВЫБРАТЬ |
Номенклатура |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки() |ГДЕ | Склад =
&Склад"; |
|
138 |
|
Запрос.Текст = "ВЫБРАТЬ|
Номенклатура|ИЗ| РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад =
&Склад)"; |
|
139 |
|
|
|
140 |
23. Типичные причины избыточных блокировок
и методы оптимизации |
Константы.КоличествоДокументов.Установить(Константы.КоличествоДокументов.Получить()
+ 1); |
|
141 |
|
Запрос.Текст = "ВЫБРАТЬ | СуммаОстаток, | СуммаОстатокДт, | СуммаОстатокКт
|ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&Период,
&Счет, , Организация = &Организация)"; |
|
142 |
|
|
|
143 |
24. Анализ типов значений |
ТипЗнч(ТекущаяДата()) =
Тип("Дата") |
|
144 |
|
Тип =
ТипЗнч(Константы.ОсновнойСклад.Получить()); Мд = Метаданные.НайтиПоТипу(Тип); Сообщить(Метаданные.Справочники.Индекс(Мд)
> 0); |
|
145 |
|
Тип =
ТипЗнч(Константы.ОсновнойСклад.Получить()); Сообщить(Справочники.ТипВсеСсылки().СодержитТип(Тип)); |
|
146 |
25. Особенности использования значений
типа Дата и МоментВремени |
Обороты =
РегистрыНакопления.ДенежныеСредстваКомпании.Обороты(Дата(2003, 1, 1),
КонецДня(Дата(2003, 1, 31))); |
|
147 |
|
Остатки =
РегистрыНакопления.ДенежныеСредстваКомпании.Остатки(Документ.МоментВремени()); |
|
148 |
|
Остатки =
РегистрыНакопления.ДенежныеСредстваКомпании.Остатки(Новый
МоментВрмени(Документ.Дата, Документ)); |
|
149 |
|
Функция
ДатаНеЗаполнена(ПереданноеЗначение)
Если ПереданноеЗначение = Дата('00010101') Тогда
Возврат Истина;
КонецЕсли; КонецФункции |
|
150 |
|
|
|
151 |
Язык запросов. |
|
|
152 |
26. Особенности использования предложения
СГРУППИРОВАТЬ ПО |
ВЫБРАТЬ ЗаказПокупателя.Контрагент,
ЗаказПокупателя.Контрагент.Код, ЗаказПокупателя.Контрагент.Наименование,
СУММА(ЗаказПокупателя.СуммаДокумента)
КАК СуммаДокумента ИЗ Документ.ЗаказПокупателя
КАК ЗаказПокупателяСГРУППИРОВАТЬ ПО ЗаказПокупателя.Контрагент |
|
153 |
27. Содержимое полей справочника |
ВЫБРАТЬ Номенклатура.Наименование,
Номенклатура.ЭтоГруппа, Номенклатура.Артикул, ВЫБОР КОГДА
(Номенклатура.Артикул) ЕСТЬ NULL ТОГДА
"NULL" ИНАЧЕ
"NOT NULL" КОНЕЦ
ИЗ Справочник.Номенклатура КАК
Номенклатура |
|
154 |
28. Использование предложения "ДЛЯ
ИЗМЕНЕНИЯ" в языке запросов |
ВЫБРАТЬ
Док.Дата, Док.Ссылка,
Док.ВидОперации,
Док.Организация,
Док.ОтражатьВРегламентированномУчете,
Док.ОтражатьВУправленческомУчете,
Док.ПодразделениеКомпании,
Док.Контрагент,
Док.ДоговорВзаиморасчетов,
Док.СкладКомпании,
Док.Сделка,
Док.Сделка.ВидОперации КАК ВидЗаказаПокупателя,
Док.КурсДокумента,
Док.КратностьДокумента,
Док.ВалютаДокумента,
Док.СуммаДокумента,
Док.КурсВзаиморасчетов,
Док.КратностьВзаиморасчетов,
Док.СкладКомпании.Розничный КАК СкладКомпанииРозничный,
Док.ДоговорВзаиморасчетов.ВалютаВзаиморасчетов КАК
ВалютаВзаиморасчетов,
Док.ДоговорВзаиморасчетов.ВедениеВзаиморасчетов КАК
ВедениеВзаиморасчетов,
Док.ДоговорВзаиморасчетов.КонтролироватьЧислоДнейЗадолженности
КАК КонтролироватьЧислоДнейЗадолженности,
Док.ДоговорВзаиморасчетов.ДопустимоеЧислоДнейЗадолженности
КАК ДопустимоеЧислоДнейЗадолженности,
Док.ДоговорВзаиморасчетов.КонтролироватьСуммуЗадолженности
КАК КонтролироватьСуммуЗадолженности, Док.ДоговорВзаиморасчетов.ДопустимаяСуммаЗадолженности
КАК ДопустимаяСуммаЗадолженности,
Док.ДоговорВзаиморасчетов.ПроцентПредоплаты КАК ПроцентПредоплаты,
Док.УчитыватьНДС,
Док.УчитыватьНП,
Док.СуммаВключаетНДС,
Док.СуммаВключаетНП,
Константы.ВалютаУправленческогоУчетаКомпании КАК
ВалютаУправленческогоУчета,
КурсыВалютСрезПоследних.Курс КАК КурсВалютыУпрУчета,
КурсыВалютСрезПоследних.Кратность КАК КратностьВалютыУпрУчета,
ВзаиморасчетыПоДоговору.СуммаВалОстаток КАК СуммаВалОстатокПоДоговору,
ВзаиморасчетыПоСделке.СуммаВалОстаток КАК СуммаВалОстатокПоСделке,
ПерваяСделка.ДатаПервойСделки,
СуммыЗаказов.СуммаЗаказаОборот,
СуммыЗаказов.СуммаОплатыОборот ИЗ
Документ.РеализацияТоваров Док,
Константы
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.КурсыВалют.СрезПоследних(&ДатаДокумента,)
КАК КурсыВалютСрезПоследних
ПО Константы.ВалютаУправленческогоУчетаКомпании =
КурсыВалютСрезПоследних.Валюта ЛЕВОЕ СОЕДИНЕНИЕ // Для контроля суммы
задолженности по договору // (ведение взаиморасчетов -
любое) и числа дней задолженности по договору // (ведение взаиморасчетов -
по расчетным документам)
РегистрНакопления.КонтрагентыВзаиморасчетыКомпании.Остатки(, ДоговорВзаиморасчетов =
&ДоговорВзаиморасчетов)
КАК ВзаиморасчетыПоДоговору
ПО Истина ЛЕВОЕ СОЕДИНЕНИЕ
(ВЫБРАТЬ // Выбирает даты самых ранних сделок по договорам, указанным
в т.ч.
МИНИМУМ(Сделка.Дата) КАК ДатаПервойСделки,
ДоговорВзаиморасчетов
ИЗ РегистрНакопления.КонтрагентыВзаиморасчетыКомпании.Остатки(,
ДоговорВзаиморасчетов = &ДоговорВзаиморасчетов)
ГДЕ СуммаВалОстаток > 0 // Дебиторская задолженность больше 0
И ДоговорВзаиморасчетов.ВедениеВзаиморасчетов =
&ПоРасчетнымДокументам
И ДоговорВзаиморасчетов.КонтролироватьЧислоДнейЗадолженности
СГРУППИРОВАТЬ ПО ДоговорВзаиморасчетов) КАК ПерваяСделка
ПО Истина ЛЕВОЕ СОЕДИНЕНИЕ // Для контроля суммы
задолженности по расчетному документу //(ведение взаиморасчетов -
по расчетным документам)
РегистрНакопления.КонтрагентыВзаиморасчетыКомпании.Остатки(,
ДоговорВзаиморасчетов = &ДоговорВзаиморасчетов И
Сделка = &Сделка )
КАК ВзаиморасчетыПоСделке
ПО Истина ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.СуммыЗаказов.Обороты(,,, Заказ = &Сделка) КАК
СуммыЗаказов
ПО Истина ГДЕ
Док.Ссылка = &ДокументСсылка ДЛЯ ИЗМЕНЕНИЯ
РегистрНакопления.КонтрагентыВзаиморасчетыКомпании.Остатки // Блокирующие
чтение таблицы остатков регистра для разрешения // коллизий
многопользовательской работы |
|
155 |
29. Использование отборов в запросах с
виртуальными таблицами |
ВЫБРАТЬ
ОстатокСумма ИЗ
РегистрНакопления.Запасы.Остатки() ГДЕ
Товар = &Товар |
|
156 |
|
ВЫБРАТЬ
ОстатокСумма ИЗ
РегистрНакопления.Запасы.Остатки(, Товар = &Товар) |
|
157 |
|
ВЫБРАТЬ
Валюта, Курс ИЗ
РегистрСведений.КурсыВалют.СрезПоследних() ГДЕ
Источник = &Источник |
|
158 |
|
ВЫБРАТЬ
Валюта, Курс ИЗ
РегистрСведений.КурсыВалют.СрезПоследних(, Источник = &Источник) |
|
159 |
30. Использование произвольных выражений в
итогах языка запроса |
ИТОГИ
100 * Сумма(Прибыль) / СУММА(Оборот) КАК ПроцентПрибыли |
|
160 |
|
ИТОГИ
Номенклатура КАК Номенклатура,// Правильно, т.к. поле присутствует в
списке группировок итогов
СуммаОборот КАК СуммаОборот, // Неправильно, т.к. поле отсутствует в
списке группировок итогов
Сумма(КоличествоОборот) КАК КоличествоОборот // Правильно, т.к. поле
используется в агрегатной функции ПО
Номенклатура,
Контрагент |
|
161 |
|
ВЫБРАТЬ
Номенклатура,
СуммаОборот КАК Оборот,
СуммаПрибыль КАК Прибыль, 100 * СуммаПрибыль / СуммаОборот КАК
ПроцентПрибыли ИЗ
РегистрНакопления.УчетПрибыли.Обороты ИТОГИ
СУММА(Оборот),
СУММА(Прибыль),
100 * СУММА(Прибыль) / СУММА(Оборот) КАК ПроцентПрибыли ПО
Номенклатура ИЕРАРХИЯ |
|
162 |
|
ВЫБРАТЬ ОсновнойОстатки.Счет КАК Счет,
ОсновнойОстатки.Валюта КАК Валюта,
ОсновнойОстатки.СуммаОстаток КАК СуммаОстаток,
ОсновнойОстатки.ВалютнаяСуммаОстаток КАК ВалютнаяСуммаОстаток ИЗ
РегистрБухгалтерии.Основной.Остатки КАК ОсновнойОстатки ИТОГИ
СУММА(СуммаОстаток),
ВЫБОР
КОГДА Валюта ЕСТЬ НЕ NULL
ТОГДА СУММА(ВалютнаяСуммаОстаток)
КОНЕЦ КАК ВалютнаяСуммаОстаток ПО
Счет,
Валюта |
|
163 |
|
ВЫБРАТЬ
ОсновнойОстатки.Счет КАК Счет, ОсновнойОстатки.Валюта
КАК Валюта,
ОсновнойОстатки.СуммаОстаток КАК СуммаОстаток,
ОсновнойОстатки.ВалютнаяСуммаОстаток КАК ВалютнаяСуммаОстаток ИЗ
РегистрБухгалтерии.Основной.Остатки КАК ОсновнойОстатки ИТОГИ
СУММА(СуммаОстаток),
ВЫБОР
КОГДА КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Валюта) = 1
ТОГДА СУММА(ВалютнаяСуммаОстаток)
КОНЕЦ КАК ВалютнаяСуммаОстаток ПО
Счет,
Валюта |
|
164 |
|
ВЫБРАТЬ
ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.Номенклатура.Код
КАК НоменклатураКод,
ПРЕДСТАВЛЕНИЕ(ПродажиОбороты.Номенклатура) КАК
НоменклатураПредставление,
ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиОбороты.СуммаОборот КАК СуммаОборот ИЗ
РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты ИТОГИ
НоменклатураКод + ") " + НоменклатураПредставление КАК
НоменклатураПредставление,
СУММА(КоличествоОборот),
СУММА(СуммаОборот) ПО
Номенклатура |
|
165 |
31. Использование функции ЕСТЬNULL() |
ВЫБРАТЬ
СправочникНоменклатуры.Наименование,
ЕСТЬNULL(УчетНоменклатурыОстатки.КоличествоОстаток, 0) КАК
КоличествоОстаток ИЗ
Справочник.Номенклатура КАК СправочникНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УчетНоменклатуры.Остатки КАК
УчетНоменклатурыОстатки
ПО УчетНоменклатурыОстатки.Номенклатура =
СправочникНоменклатуры.Ссылка ГДЕ
СправочникНоменклатуры.ЭтоГруппа = ЛОЖЬ |
|
166 |
|
ВЫБРАТЬ
СправочникНоменклатуры.Наименование,
ВЫБОР КОГДА УчетНоменклатурыОстатки.КоличествоОстаток ЕСТЬ NULL ТОГДА
0 ИНАЧЕ УчетНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток ИЗ
Справочник.Номенклатура КАК СправочникНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УчетНоменклатуры.Остатки КАК
УчетНоменклатурыОстатки
ПО УчетНоменклатурыОстатки.Номенклатура =
СправочникНоменклатуры.Ссылка ГДЕ
СправочникНоменклатуры.ЭтоГруппа = ЛОЖЬ |
|
167 |
32. Использование упорядочивания во
вложенных запросах |
ВЫБРАТЬ
ВложенныйЗапрос.Ссылка,
ПродажиОбороты.КоличествоОборот,
ПродажиОбороты.СуммаОборот ИЗ
(ВЫБРАТЬ ПЕРВЫЕ 5
Номенклатура.Ссылка КАК Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
УПОРЯДОЧИТЬ ПО
Номенклатура.ЗакупочнаяЦена УБЫВ) КАК ВложенныйЗапрос
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(,,,
Номенклатура В (ВЫБРАТЬ ПЕРВЫЕ 5 Номенклатура.Ссылка КАК
Ссылка ИЗ Справочник.Номенклатура
КАК Номенклатура УПОРЯДОЧИТЬ ПО
Номенклатура.ЗакупочнаяЦена УБЫВ)) КАК ПродажиОбороты
ПО ВложенныйЗапрос.Ссылка = ПродажиОбороты.Номенклатура |
|
168 |
33. Вывод ссылочных полей |
ВЫБРАТЬ ПродажиКомпанииОбороты.Номенклатура КАК
Номенклатура,
ПродажиКомпанииОбороты.ДокументПродажи.Контрагент КАК
ДокументПродажиКонтрагент,
ПродажиКомпанииОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиКомпанииОбороты.СуммаПродажиОборот КАК СуммаПродажиОборот ИЗ
РегистрНакопления.ПродажиКомпании.Обороты КАК
ПродажиКомпанииОбороты ИТОГИ СУММА(КоличествоОборот),
СУММА(СуммаПродажиОборот) ПО
ОБЩИЕ,
Номенклатура,
ДокументПродажиКонтрагент |
|
169 |
|
ВЫБРАТЬ
ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура,
ПродажиКомпанииОбороты.Номенклатура.Представление КАК
НоменклатураПредставление,
ПродажиКомпанииОбороты.ДокументПродажи.Контрагент КАК
ДокументПродажиКонтрагент,
ПродажиКомпанииОбороты.ДокументПродажи.Контрагент.Представление КАК
КонтрагентПредставление,
ПродажиКомпанииОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиКомпанииОбороты.СуммаПродажиОборот КАК СуммаПродажиОборот ИЗ
РегистрНакопления.ПродажиКомпании.Обороты КАК ПродажиКомпанииОбороты ИТОГИ СУММА(КоличествоОборот),
СУММА(СуммаПродажиОборот) ПО
ОБЩИЕ,
Номенклатура,
ДокументПродажиКонтрагент |
|
170 |
|
ВЫБРАТЬ
ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура, ПродажиКомпанииОбороты.Номенклатура.Представление
КАК НоменклатураПредставление,
ПродажиКомпанииОбороты.ДокументПродажи.Контрагент КАК
ДокументПродажиКонтрагент,
ПродажиКомпанииОбороты.ДокументПродажи.Контрагент.Представление КАК
КонтрагентПредставление,
ПродажиКомпанииОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиКомпанииОбороты.СуммаПродажиОборот КАК СуммаПродажиОборот ИЗ
РегистрНакопления.ПродажиКомпании.Обороты КАК ПродажиКомпанииОбороты ИТОГИ СУММА(КоличествоОборот),
СУММА(СуммаПродажиОборот) ПО
ОБЩИЕ,
Номенклатура,
ДокументПродажиКонтрагент |
|
171 |
|
ВЫБРАТЬ
ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура,
ПродажиКомпанииОбороты.Номенклатура.Представление КАК
НоменклатураПредставление,
ПродажиКомпанииОбороты.Номенклатура.Код КАК НоменклатураКод,
ПродажиКомпанииОбороты.ДокументПродажи.Контрагент КАК
ДокументПродажиКонтрагент,
ПродажиКомпанииОбороты.ДокументПродажи.Контрагент.Представление КАК
КонтрагентПредставление,
ПродажиКомпанииОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиКомпанииОбороты.СуммаПродажиОборот КАК СуммаПродажиОборот ИЗ
РегистрНакопления.ПродажиКомпании.Обороты КАК ПродажиКомпанииОбороты ИТОГИ СУММА(КоличествоОборот),
СУММА(СуммаПродажиОборот) ПО
ОБЩИЕ,
Номенклатура,
ДокументПродажиКонтрагент |
|
172 |
|
ВЫБРАТЬ
ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура,
ПродажиКомпанииОбороты.ДокументПродажи.Контрагент КАК
ДокументПродажиКонтрагент,
ПродажиКомпанииОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиКомпанииОбороты.СуммаПродажиОборот КАК СуммаПродажиОборот ИЗ
РегистрНакопления.ПродажиКомпании.Обороты КАК
ПродажиКомпанииОбороты ИТОГИ СУММА(КоличествоОборот),
СУММА(СуммаПродажиОборот) ПО
ОБЩИЕ,
Номенклатура,
ДокументПродажиКонтрагент |
|
173 |
|
ВЫБРАТЬ
ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура, ПродажиКомпанииОбороты.Номенклатура.Представление,
ПродажиКомпанииОбороты.ДокументПродажи.Контрагент КАК
ДокументПродажиКонтрагент,
ПродажиКомпанииОбороты.ДокументПродажи.Контрагент.Представление,
ПродажиКомпанииОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиКомпанииОбороты.СуммаПродажиОборот КАК СуммаПродажиОборот ИЗ
РегистрНакопления.ПродажиКомпании.Обороты КАК ПродажиКомпанииОбороты ИТОГИ СУММА(КоличествоОборот),
СУММА(СуммаПродажиОборот) ПО
ОБЩИЕ, Номенклатура,
ДокументПродажиКонтрагент |
|
174 |
34. Особенности связи с виртуальной
таблицей остатков |
ВЫБРАТЬ
РасходнаяНакладнаяСостав.Номенклатура,
УчетНоменклатурыОстатки.КоличествоОстаток ИЗ
Документ.РасходнаяНакладная.Состав КАК РасходнаяНакладнаяСостав
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УчетНоменклатуры.Остатки КАК
УчетНоменклатурыОстатки
ПО УчетНоменклатурыОстатки.Номенклатура =
РасходнаяНакладнаяСостав.Номенклатура ГДЕ
РасходнаяНакладнаяСостав.Ссылка = &Документ |
|
175 |
|
ВЫБРАТЬ
РасходнаяНакладнаяСостав.Номенклатура,
УчетНоменклатурыОстатки.КоличествоОстаток ИЗ
Документ.РасходнаяНакладная.Состав КАК РасходнаяНакладнаяСостав
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УчетНоменклатуры.Остатки КАК
УчетНоменклатурыОстатки
ПО УчетНоменклатурыОстатки.Номенклатура =
РасходнаяНакладнаяСостав.Номенклатура ГДЕ
РасходнаяНакладнаяСостав.Ссылка = &Документ И
(УчетНоменклатурыОстатки.КоличествоОстаток <
РасходнаяНакладнаяСостав.Количество ИЛИ
УчетНоменклатурыОстатки.КоличествоОстаток ЕСТЬ NULL) |
|
176 |
|
ВЫБРАТЬ
РасходнаяНакладнаяСостав.Номенклатура,
УчетНоменклатурыОстатки.КоличествоОстаток ИЗ
Документ.РасходнаяНакладная.Состав КАК РасходнаяНакладнаяСостав
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УчетНоменклатуры.Остатки(, Номенклатура В ( ВЫБРАТЬ
Номенклатура ИЗ
Документ.РасходнаяНакладная.Состав ГДЕ Ссылка
= &Документ)) КАК УчетНоменклатурыОстатки
ПО УчетНоменклатурыОстатки.Номенклатура =
РасходнаяНакладнаяСостав.Номенклатура ГДЕ
РасходнаяНакладнаяСостав.Ссылка = &Документ И
(УчетНоменклатурыОстатки.КоличествоОстаток <
РасходнаяНакладнаяСостав.Количество ИЛИ
УчетНоменклатурыОстатки.КоличествоОстаток ЕСТЬ NULL) |
|
177 |
|
ВЫБРАТЬ
Состав.Номенклатура,
Состав.Количество,
УчетНоменклатурыОстатки.КоличествоОстаток ИЗ
(ВЫБРАТЬ
РасходнаяНакладнаяСостав.Номенклатура КАК Номенклатура,
СУММА(РасходнаяНакладнаяСостав.Количество) КАК Количество
ИЗ
Документ.РасходнаяНакладная.Состав КАК РасходнаяНакладнаяСостав
ГДЕ РасходнаяНакладнаяСостав.Ссылка = &Документ
СГРУППИРОВАТЬ ПО РасходнаяНакладнаяСостав.Номенклатура) КАК Состав
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УчетНоменклатуры.Остатки(, Номенклатура В (
ВЫБРАТЬ
Документ.РасходнаяНакладная.Состав.Номенклатура ИЗ
Документ.РасходнаяНакладная.Состав
ГДЕ
Документ.РасходнаяНакладная.Состав.Ссылка = &Документ)
) КАК УчетНоменклатурыОстатки
ПО УчетНоменклатурыОстатки.Номенклатура = Состав.Номенклатура ГДЕ
(УчетНоменклатурыОстатки.КоличествоОстаток < Состав.Количество
ИЛИ (УчетНоменклатурыОстатки.КоличествоОстаток) ЕСТЬ NULL ) |
|
178 |
|
ВЫБРАТЬ
Состав.Номенклатура,
Состав.Номенклатура.Представление КАК Представление,
Состав.Количество,
УчетНоменклатурыОстатки.КоличествоОстаток ИЗ
(ВЫБРАТЬ
РасходнаяНакладнаяСостав.Номенклатура КАК Номенклатура,
СУММА(РасходнаяНакладнаяСостав.Количество) КАК Количество
ИЗ
Документ.РасходнаяНакладная.Состав КАК РасходнаяНакладнаяСостав
ГДЕ РасходнаяНакладнаяСостав.Ссылка = &Документ
СГРУППИРОВАТЬ ПО РасходнаяНакладнаяСостав.Номенклатура) КАК Состав
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УчетНоменклатуры.Остатки(,
Номенклатура В (
ВЫБРАТЬ
Документ.РасходнаяНакладная.Состав.Номенклатура
ИЗ Документ.РасходнаяНакладная.Состав
ГДЕ
Документ.РасходнаяНакладная.Состав.Ссылка = &Документ)
) КАК УчетНоменклатурыОстатки
ПО УчетНоменклатурыОстатки.Номенклатура = Состав.Номенклатура ГДЕ
(УчетНоменклатурыОстатки.КоличествоОстаток < Состав.Количество
ИЛИ (УчетНоменклатурыОстатки.КоличествоОстаток) ЕСТЬ NULL ) |
|
179 |
|
Результат = Запрос.Выполнить(); Если Не Результат.Пустой() Тогда
Сообщить("Обнаружены товары в недостаточном количестве:");
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Представление + ": требуется " +
Строка(Выборка.Количество) + " остаток: " +
Строка(Выборка.КоличествоОстаток));
КонецЦикла; КонецЕсли; |
|
180 |
35. Выборка из результата запроса всех вошедших
в него значений группировок |
ВЫБРАТЬ
УчетНоменклатурыОстатки.Номенклатура КАК Номенклатура,
УчетНоменклатурыОстатки.Номенклатура.Представление,
УчетНоменклатурыОстатки.Склад КАК Склад,
УчетНоменклатурыОстатки.Склад.Представление,
УчетНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток ИЗ
РегистрНакопления.УчетНоменклатуры.Остатки КАК УчетНоменклатурыОстатки
ИТОГИ СУММА(КоличествоОстаток) ПО
ОБЩИЕ,
Номенклатура,
Склад |
|
181 |
|
ВыборкаНоменклатура =
Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,
"Номенклатура"); Пока ВыборкаНоменклатура.Следующий() Цикл
ОбластьНоменклатура.Параметры.Заполнить(ВыборкаНоменклатура);
ТабДок.Вывести(ОбластьНоменклатура); |
|
182 |
|
ВыборкаСклад =
ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,
"Склад", "ВСЕ"); Пока ВыборкаСклад.Следующий() Цикл
ОбластьСклад.Параметры.Заполнить(ВыборкаСклад);
ТабДок.Присоединить(ОбластьСклад); КонецЦикла; |
|
183 |
|
ВыборкаСклад =
ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,
"Склад", "Организация");» |
|
184 |
36. Примеры запросов для работы с
иерархическими справочниками |
ВЫБРАТЬ
Номенклатура.Код, Номенклатура.Наименование
КАК Наименование,
Номенклатура.ЗакупочнаяЦена ИЗ
Справочник.Номенклатура КАК Номенклатура ГДЕ
Номенклатура.Ссылка В ИЕРАРХИИ(&Группа) |
|
185 |
|
ВЫБРАТЬ
Номенклатура.Код,
Номенклатура.Наименование КАК Наименование,
Номенклатура.ЗакупочнаяЦена ИЗ
Справочник.Номенклатура КАК Номенклатура ГДЕ
Номенклатура.Родитель = &Группа |
|
186 |
|
ВЫБРАТЬ ПЕРВЫЕ 1
Номенклатура.Ссылка ИЗ
Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Родитель = &Родитель |
|
187 |
|
Если Запрос.Выполнить().Пустой() Тогда
Сообщить("Зписей нет"); Иначе
Сообщить("Записи есть"); КонецЕсли; |
|
188 |
|
ТекущийЭлементНоменклатуры =
ЭлементНоменклатура; Запрос = Новый Запрос("ВЫБРАТЬ |
Номенклатура.Родитель, |
Номенклатура.Родитель.Родитель, |
Номенклатура.Родитель.Родитель.Родитель, |
Номенклатура.Родитель.Родитель.Родитель.Родитель, |
Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель |ИЗ |
Справочник.Номенклатура КАК Номенклатура | |ГДЕ | Номенклатура.Ссылка =
&ТекущийЭлементНоменклатуры"; Пока Истина Цикл
Запрос.УстановитьПараметр("ТекущийЭлементНоменклатуры",
ТекущийЭлементНоменклатуры);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Прервать; КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Для НомерКолонки = 0 По Результат.Колонки.Количество() - 1 Цикл
ТекущийЭлементНоменклатуры = Выборка[НомерКолонки];
Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка()
Тогда
Прервать;
Иначе
Сообщить(ТекущийЭлементНоменклатуры);
КонецЕсли;
КонецЦикла;
Если ТекущийЭлементНоменклатуры =
Справочники.Номенклатура.ПустаяСсылка() Тогда
Прервать;
КонецЕсли; КонецЦикла; |
|
189 |
|
ВЫБРАТЬ
Номенклатура.Код,
Номенклатура.Наименование КАК Наименование,
Номенклатура.ЗакупочнаяЦена ИЗ
Справочник.Номенклатура КАК Номенклатура УПОРЯДОЧИТЬ ПО Наименование
ИЕРАРХИЯ |
|
190 |
|
УПОРЯДОЧИТЬ ПО
Номенклатура.ЭтоГруппа ИЕРАРХИЯ,
Наименование |
|
191 |
|
ВЫБРАТЬ
Номенклатура.Код,
Номенклатура.Наименование КАК Наименование,
Номенклатура.ЗакупочнаяЦена ИЗ Справочник.Номенклатура КАК
Номенклатура ГДЕ
(Номенклатура.ЭтоГруппа = ЛОЖЬ) УПОРЯДОЧИТЬ ПО Наименование ИТОГИ ПО Номенклатура.Ссылка ТОЛЬКО
ИЕРАРХИЯ |
|
192 |
|
ВЫБРАТЬ
УчетНоменклатурыОбороты.Номенклатура КАК Номенклатура, УчетНоменклатурыОбороты.Номенклатура.Представление,
УчетНоменклатурыОбороты.КоличествоОборот КАК КоличествоОборот ИЗ
РегистрНакопления.УчетНоменклатуры.Обороты КАК УчетНоменклатурыОбороты
ИТОГИ СУММА(КоличествоОборот) ПО Номенклатура
ИЕРАРХИЯ |
|
193 |
|
ВЫБРАТЬ
УчетНоменклатурыОбороты.Номенклатура КАК Номенклатура,
УчетНоменклатурыОбороты.Номенклатура.Представление,
УчетНоменклатурыОбороты.КоличествоОборот КАК КоличествоОборот ИЗ РегистрНакопления.УчетНоменклатуры.Обороты
КАК УчетНоменклатурыОбороты ИТОГИ СУММА(КоличествоОборот) ПО
Номенклатура ТОЛЬКО ИЕРАРХИЯ |
|
194 |
37. Дополнение результата запроса датами в
установленном периоде |
ВЫБРАТЬ УчетНоменклатурыОбороты.Период
КАК Период,
УчетНоменклатурыОбороты.КоличествоОборот КАК КоличествоОборот ИЗ
РегистрНакопления.УчетНоменклатуры.Обороты(, , Неделя, ) КАК
УчетНоменклатурыОбороты УПОРЯДОЧИТЬ ПО
Период ИТОГИ СУММА(КоличествоОборот) ПО
Период ПЕРИОДАМИ(НЕДЕЛЯ,,) |
|
195 |
|
ВыборкаПериод =
Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Период",
"ВСЕ"); Пока ВыборкаПериод.Следующий() Цикл
ОбластьПериод.Параметры.Заполнить(ВыборкаПериод); ТабДок.Вывести(ОбластьПериод,
ВыборкаПериод.Уровень()); КонецЦикла; |
|
196 |
38. Особенности упорядочивания по
ссылочным полям |
- ВЫБРАТЬ
Номенклатура.Код,
Номенклатура.Наименование,
Номенклатура.ЗакупочнаяЦена ИЗ Справочник.Номенклатура
КАК Номенклатура ГДЕ
Номенклатура.ЭтоГруппа = ЛОЖЬ УПОРЯДОЧИТЬ ПО
Номенклатура.Представление |
|
197 |
|
+ ВЫБРАТЬ
Номенклатура.Код,
Номенклатура.Наименование,
Номенклатура.ЗакупочнаяЦена ИЗ Справочник.Номенклатура
КАК Номенклатура ГДЕ
Номенклатура.ЭтоГруппа = ЛОЖЬ УПОРЯДОЧИТЬ ПО
Номенклатура.Ссылка АВТОУПОРЯДОЧИВАНИЕ |
|
198 |
39. Получение полей через точку от других
полей |
ВЫБРАТЬ
Номенклатура.Наименование, КоличествоОборот
ИЗ
РегистрНакопления.УчетНоменклатуры.Обороты КАК УчетНоменклатурыОбороты |
|
199 |
|
ВЫБРАТЬ
СправочникНоменклатура.Наименование,
КоличествоОборот ИЗ РегистрНакопления.УчетНоменклатуры.Обороты
КАК УчетНоменклатурыОбороты
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
ПО УчетНоменклатурыОбороты.Номенклатура =
СправочникНоменклатура.Ссылка |
|
200 |
|
ВЫБРАТЬ
РасходнаяНакладная.Дата,
РасходнаяНакладная.Номер ИЗ
Документ.РасходнаяНакладная КАК РасходнаяНакладная ГДЕ
РасходнаяНакладная.Контрагент.Ссылка = &Контрагент |
|
201 |
|
ВЫБРАТЬ
УчетНоменклатуры.Регистратор.Номер, УчетНоменклатуры.Количество
ИЗ
РегистрНакопления.УчетНоменклатуры КАК УчетНоменклатуры |
|
202 |
|
ВЫБРАТЬ
ВЫБОР
КОГДА УчетНоменклатуры.Регистратор ССЫЛКА Документ.ПриходнаяНакладная
ТОГДА ПриходнаяНакладная.Номер
КОГДА УчетНоменклатуры.Регистратор ССЫЛКА Документ.РасходнаяНакладная
ТОГДА РасходнаяНакладная.Номер
КОНЕЦ,
УчетНоменклатуры.Количество ИЗ
РегистрНакопления.УчетНоменклатуры КАК УчетНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходнаяНакладная КАК ПриходнаяНакладная
ПО УчетНоменклатуры.Регистратор = ПриходнаяНакладная.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная КАК РасходнаяНакладная
ПО УчетНоменклатуры.Регистратор = РасходнаяНакладная.Ссылка |
|
203 |
|
ВЫБРАТЬ
УчетНоменклатуры.Регистратор.Номер,
УчетНоменклатуры.Количество ИЗ
РегистрНакопления.УчетНоменклатуры КАК УчетНоменклатуры ГДЕ
УчетНоменклатуры.Регистратор ССЫЛКА Документ.РасходнаяНакладная |
|
204 |
|
ВЫБРАТЬ
ВЫРАЗИТЬ(УчетНоменклатуры.Регистратор КАК
Документ.РасходнаяНакладная).Номер,
УчетНоменклатуры.Количество ИЗ
РегистрНакопления.УчетНоменклатуры КАК УчетНоменклатуры ГДЕ УчетНоменклатуры.Регистратор
ССЫЛКА Документ.РасходнаяНакладная |
|
205 |
40. Особенности работы с виртуальной
таблицей данных графика регистра расчета |
ВЫБРАТЬ ЧислоДнейПериодРегистрацииИЗ
РегистрРасчета.Зарплата.ДанныеГрафика(Организация
= &Организация) |
|
206 |
|
ВЫБРАТЬ ЧислоДнейПериодРегистрации, ЧислоЧасовПериодРегистрацииИЗ РегистрРасчета.Зарплата.ДанныеГрафика(Организация
= &Организация) |
|
207 |
|
ВЫБРАТЬ ЧислоДнейПериодРегистрации, ЧислоЧасовПериодДействияИЗ РегистрРасчета.Зарплата.ДанныеГрафика(Организация
= &Организация) |
|
208 |
41. Расчет итогов по полям остатка |
ВЫБРАТЬ
Склад КАК Склад,
Номенклатура КАК Номенклатура,
Период КАК Период,
КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, КоличествоОборот
КАК КоличествоОборот,
КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток ИЗ
РегистрНакопления.УчетНоменклатуры.ОстаткиИОбороты(, , Неделя, , ) КАК
УчетНоменклатурыОстаткиИОбороты ИТОГИ
СУММА(КоличествоНачальныйОстаток), СУММА(КоличествоОборот),
СУММА(КоличествоКонечныйОстаток) ПО
Склад,
Период,
Номенклатура |
|
209 |
|
ВЫБРАТЬ
Склад КАК Склад,
Номенклатура КАК Номенклатура,
Период КАК Период, КоличествоНачальныйОстаток
* Номенклатура.ЗакупочнаяЦена КАК КоличествоНачальныйОстаток,
КоличествоОборот * Номенклатура.ЗакупочнаяЦена КАК КоличествоОборот,
КоличествоКонечныйОстаток * Номенклатура.ЗакупочнаяЦена КАК
КоличествоКонечныйОстаток ИЗ
РегистрНакопления.УчетНоменклатуры.ОстаткиИОбороты(, , Неделя, , ) КАК
УчетНоменклатурыОстаткиИОбороты ИТОГИ
СУММА(КоличествоНачальныйОстаток), СУММА(КоличествоОборот),
СУММА(КоличествоКонечныйОстаток) ПО
Склад,
Период,
Номенклатура |
|
210 |
42. Особенность выполнения функции
ПОДСТРОКА() языка запросов |
ВЫБРАТЬ
ВЫБОР
КОГДА Вид = &ЮрАдресФизЛица
ТОГДА ПОДСТРОКА(Представление, 0, 200)
ИНАЧЕ NULL
КОНЕЦ КАК Представление,
ВЫБОР
КОГДА Вид = &ЮрАдресФизЛица
ТОГДА ПОДСТРОКА(Представление, 0, 200)
ИНАЧЕ NULL
КОНЕЦ КАК Представление1 ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация УПОРЯДОЧИТЬ ПО
Представление,
Представление1 |
|
211 |
|
ВЫБОР КОГДА Вид = &ЮрАдресФизЛица
ТОГДА ПОДСТРОКА(Представление, 0, 200)
ИНАЧЕ NULL КОНЕЦ КАК Представление, |
|
212 |
|
ВЫБРАТЬ
ВЫБОР
КОГДА Вид = &ЮрАдресФизЛица
ТОГДА ВЫРАЗИТЬ(Представление КАК Строка(200))
ИНАЧЕ NULL
КОНЕЦ КАК Представление,
ВЫБОР
КОГДА Вид = &ЮрАдресФизЛица
ТОГДА ВЫРАЗИТЬ(Представление КАК Строка(200))
ИНАЧЕ NULL
КОНЕЦ КАК Представление1 ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация УПОРЯДОЧИТЬ ПО
Представление,
Представление1 |
|
213 |
43. Особенности использования группового
оператора вхождения |
<Выражение> В (<Список
значений>) |
|
214 |
|
(<Выражение 1>, ..., <Выражение
N>) В (<Вложенный запрос>) |
|
215 |
|
(1, 2, 3) |
|
216 |
|
1, 1, 1 2, 2, 2 2, 2, 3 |
|
217 |
|
1, 1, 1 1, 2, 3 2, 2, 3 |
|
218 |
|
(<Выражение 1>, ..., <Выражение
N>) В (
ВЫБРАТЬ <Колонка 1>, ..., <Колонка N>
ИЗ <Источники>
ГДЕ <Условие> ) |
|
219 |
|
EXISTS(
SELECT 1
FROM <Источники> WHERE (<Условие>) AND <Выражение
1> = <Колонка 1> AND ... AND <Выражение N> = <Колонка N> ) |
|
220 |
|
(<Выражение 1>, ..., <Выражение
N>) В (
ВЫБРАТЬ <Колонка 1>, ..., <Колонка N>
ИЗ <Источники>
ГДЕ <Условие 1>
СГРУППИРОВАТЬ ПО <Список группировки>
ИМЕЮЩИЕ <Условие 2> ) |
|
221 |
|
EXISTS( SELECT 1 FROM <Источники> WHERE <Условие 1> GROUP BY <Список
группировки>
HAVING (<Условие 2>) AND <Выражение 1> = <Колонка 1>
AND ... AND <Выражение N> = <Колонка N> ) |
|
222 |
|
ВЫБРАТЬ Док.Номенклатура.Представление КАК
НоменклатураПредставление, Док.Номенклатура.ЕдиницаХраненияОстатков.Представление
КАК ЕдиницаХраненияОстатковПредставление, Док.ХарактеристикаНоменклатуры КАК
ХарактеристикаНоменклатуры, Док.СерияНоменклатуры КАК
СерияНоменклатуры, Док.Качество КАК Качество, СУММА(ВЫРАЗИТЬ(Док.Количество *
Док.Коэффициент / Док.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК
ЧИСЛО(15,3))) КАК ДокументКоличество, ЕСТЬNULL(МАКСИМУМ(Остатки.КоличествоОстаток),
0) КАК ОстатокКоличество ИЗ Документ.РасходныйОрдерНаТовары.Товары КАК
Док ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(,
Склад = &Склад И (Номенклатура, ХарактеристикаНоменклатуры,
Качество) В (
ВЫБРАТЬ
Док.Номенклатура, Док.ХарактеристикаНоменклатуры, Док.Качество
ИЗ
Документ.РасходныйОрдерНаТовары.Товары КАК Док
ГДЕ
Док.Ссылка = &ДокументСсылка
И НЕ Док.Номенклатура.Комплект )
И &ДокументПередачи = ДокументПередачи) КАК Остатки ПО Док.Номенклатура = Остатки.Номенклатура И Док.ХарактеристикаНоменклатуры =
Остатки.ХарактеристикаНоменклатуры И Док.Качество = Остатки.Качество И ((НЕ
Док.СерияУказываетсяПриОтпускеСоСклада И Остатки.СерияНоменклатуры =
Док.СерияНоменклатуры) ИЛИ
(Док.СерияУказываетсяПриОтпускеСоСклада И Остатки.СерияНоменклатуры =
&ПустаяСерия)) ГДЕ Док.Ссылка = &ДокументСсылка СГРУППИРОВАТЬ ПО Док.Номенклатура, Док.ХарактеристикаНоменклатуры, Док.СерияНоменклатуры, Док.Качество, &ДокументПередачи ИМЕЮЩИЕ ЕСТЬNULL(МАКСИМУМ(Остатки.КоличествоОстаток),
0) < СУММА(ВЫРАЗИТЬ(Док.Количество * Док.Коэффициент /
Док.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК ЧИСЛО(15,3))) |
|
223 |
|
+ ВЫБРАТЬ Док.Номенклатура.Представление КАК
НоменклатураПредставление, Док.Номенклатура.ЕдиницаХраненияОстатков.Представление
КАК ЕдиницаХраненияОстатковПредставление, Док.ХарактеристикаНоменклатуры КАК
ХарактеристикаНоменклатуры, Док.СерияНоменклатуры КАК
СерияНоменклатуры, Док.Качество КАК Качество, СУММА(ВЫРАЗИТЬ(Док.Количество *
Док.Коэффициент / Док.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК
ЧИСЛО(15,3))) КАК ДокументКоличество, ЕСТЬNULL(МАКСИМУМ(Остатки.КоличествоОстаток),
0) КАК ОстатокКоличество ИЗ Документ.РасходныйОрдерНаТовары.Товары КАК
Док ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(,
(Склад, Номенклатура, Качество, ХарактеристикаНоменклатуры) В (
ВЫБРАТЬ
Док.Ссылка.Склад, Док.Номенклатура, Док.Качество,
Док.ХарактеристикаНоменклатуры
ИЗ
Документ.РасходныйОрдерНаТовары.Товары КАК Док
ГДЕ
Док.Ссылка = &ДокументСсылка
И НЕ Док.Номенклатура.Комплект )
И &ДокументПередачи = ДокументПередачи) КАК Остатки ПО Док.Ссылка.Склад = Остатки.Склад И Док.Номенклатура = Остатки.Номенклатура И Док.Качество = Остатки.Качество И Док.ХарактеристикаНоменклатуры =
Остатки.ХарактеристикаНоменклатуры И ((НЕ
Док.СерияУказываетсяПриОтпускеСоСклада И Остатки.СерияНоменклатуры =
Док.СерияНоменклатуры) ИЛИ
(Док.СерияУказываетсяПриОтпускеСоСклада И Остатки.СерияНоменклатуры =
&ПустаяСерия)) ГДЕ Док.Ссылка = &ДокументСсылка СГРУППИРОВАТЬ ПО Док.Номенклатура, Док.ХарактеристикаНоменклатуры, Док.СерияНоменклатуры, Док.Качество, &ДокументПередачи ИМЕЮЩИЕ ЕСТЬNULL(МАКСИМУМ(Остатки.КоличествоОстаток),
0) < СУММА(ВЫРАЗИТЬ(Док.Количество * Док.Коэффициент /
Док.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК ЧИСЛО(15,3))) |
|
|
Язык
запросов. |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
№№ |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
1 |
Особенности использования предложения
СГРУППИРОВАТЬ ПО. ВЫБРАТЬ ОказаниеУслуги.Мастер, ОказаниеУслуги.Клиент, ОказаниеУслуги.Склад, ОказаниеУслуги.Дата, ОказаниеУслуги.Представление, ОказаниеУслуги.Мастер.ТрудоваяДеятельность.( Должность
КАК Поле1 )
КАК Мастер1 ИЗ Документ.ОказаниеУслуги
КАК ОказаниеУслуги ВЫБРАТЬ ОказаниеУслуги.Мастер, ОказаниеУслуги.Клиент, ОказаниеУслуги.Склад, ОказаниеУслуги.Дата, ОказаниеУслуги.Представление ИЗ Документ.ОказаниеУслуги
КАК ОказаниеУслуги СГРУППИРОВАТЬ ПО ОказаниеУслуги.Мастер, ОказаниеУслуги.Клиент, ОказаниеУслуги.Склад, ОказаниеУслуги.Дата, ОказаниеУслуги.Представление |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
2 |
27. Содержимое полей справочника. ВЫБРАТЬ Номенклатура.Наименование, Номенклатура.ЭтоГруппа, Номенклатура.ВерсияДанных, Номенклатура.Родитель.Ссылка, Номенклатура.Родитель.ВидНоменклатуры.Ссылка ИЗ Справочник.Номенклатура
КАК Номенклатура ГДЕ Номенклатура.ЭтоГруппа
= ЛОЖЬ |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
3 |
Использование отборов в запросах с
виртуальными таблицами. ВЫБРАТЬ СтоимостьМатериаловОстатки.Материал.Наименование, СтоимостьМатериаловОстатки.СтоимостьОстаток ИЗ РегистрНакопления.СтоимостьМатериалов.Остатки(&Материал,
) КАК СтоимостьМатериаловОстатки |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4 |
Использование функции ЕСТЬNULL(). ВЫБРАТЬ ОстаткиМатериаловОстатки.Материал
КАК Материал, СУММА(ОстаткиМатериаловОстатки.КоличествоОстаток)
КАК КоличествоОстаток, Номенклатура.Ссылка {ВЫБРАТЬ Материал.*, КоличествоОстаток} ИЗ Справочник.Номенклатура
КАК Номенклатура ЛЕВОЕ
СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки КАК
ОстаткиМатериаловОстатки ПО
ОстаткиМатериаловОстатки.Материал = Номенклатура.Ссылка ГДЕ ОстаткиМатериаловОстатки.Материал
<> &ЕстьNull И
Номенклатура.ЭтоГруппа = ЛОЖЬ {ГДЕ ОстаткиМатериаловОстатки.КоличествоОстаток} СГРУППИРОВАТЬ ПО ОстаткиМатериаловОстатки.Материал, Номенклатура.Ссылка |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
5 |
Вывод ссылочных полей. ВЫБРАТЬ ОстаткиМатериаловОстаткиИОбороты.Материал
КАК Материал1, ОстаткиМатериаловОстаткиИОбороты.Склад
КАК Склад1, ОстаткиМатериаловОстаткиИОбороты.Период, ОстаткиМатериаловОстаткиИОбороты.КоличествоПриход
КАК КоличествоПриход1, ОстаткиМатериаловОстаткиИОбороты.КоличествоРасход
КАК КоличествоРасход1, ОстаткиМатериаловОстаткиИОбороты.КоличествоОборот
КАК КоличествоОборот1, ОстаткиМатериаловОстаткиИОбороты.Материал.Представление
КАК МатериалПредставление1, ОстаткиМатериаловОстаткиИОбороты.Склад.Представление
КАК СкладПредставление1 ИЗ РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты(,
, День, Движения, ) КАК ОстаткиМатериаловОстаткиИОбороты |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
6 |
Особенности связи с виртуальной таблицей
остатков. ВЫБРАТЬ ОказаниеУслуги.ПереченьНоменклатуры.( Номенклатура, Количество ), ОстаткиМатериаловОстатки.Материал.Наименование, ОстаткиМатериаловОстатки.КоличествоОстаток ИЗ Документ.ОказаниеУслуги
КАК ОказаниеУслуги ЛЕВОЕ
СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки КАК
ОстаткиМатериаловОстатки ПО
ОказаниеУслуги.ПереченьНоменклатуры.Количество >=
ОстаткиМатериаловОстатки.КоличествоОстаток |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
7 |
Примеры запросов для работы с
иерархическими справочниками. ВЫБРАТЬ Номенклатура.Ссылка, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ
Номенклатура.ЭтоГруппа) КАК ЭтоГруппа, Номенклатура.Представление ИЗ Справочник.Номенклатура
КАК Номенклатура СГРУППИРОВАТЬ ПО Номенклатура.Представление, Номенклатура.Ссылка |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
8 |
Дополнение результата запроса датами в
установленном периоде. ВЫБРАТЬ ОстаткиМатериаловОбороты.Период, СУММА(ОстаткиМатериаловОбороты.КоличествоОборот)
КАК КоличествоОборот, ОстаткиМатериаловОбороты.Материал.Ссылка ИЗ РегистрНакопления.ОстаткиМатериалов.Обороты(,
, День, ) КАК ОстаткиМатериаловОбороты СГРУППИРОВАТЬ ПО ОстаткиМатериаловОбороты.Период, ОстаткиМатериаловОбороты.Материал.Ссылка |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
9 |
Особенности упорядочивания по ссылочным
полям. ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование, Номенклатура.Ссылка
КАК Ссылка ИЗ Справочник.Номенклатура
КАК Номенклатура ГДЕ Номенклатура.ЭтоГруппа
= ЛОЖЬ УПОРЯДОЧИТЬ ПО Ссылка |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
10 |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||