Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 10:48

ЭлементыФормы.ПолеТабличногоДокумента

Автор nenoob, 20 фев 2012, 09:55

0 Пользователей и 6 гостей просматривают эту тему.

nenoob

Я на счет запросов.
Если я делаю запрос, допустим по абонентам, получаю их количество, возможно ли с помощью вложенного запроса, сразу сделать 2 выборки, к примеру первая будет абоненты с договорами, вторая, абоненты без договоров, и собственно сам основной запрос как общее количество этих самых абонентов.
Т.е. я понимаю так. при создании 1 вложенного запроса, устанавливаю параметр НаличиеДоговора=истина и соответственно во 2 НаличиеДоговора=ЛОЖЬ ?

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

Dethmontt

ВЫБОР Рег.КакаяТоТвояХрень Как ХРЕНЬ1, Истина КАК ЕстьДоговор Из Регистр.ЧегоТоТам Как РЕГ
Где ЕлкиПалки = ИСТИНА
ОБЪЕДЕНИТЬ ВСЕ
ВЫБОР реп.ЕщеКакаяТоХрень КАК Хрень2, Ложь КАК ЕстьДоговор Из регистр.Блин КАК Реп
Где ЧтоТОТам = Ложь
//Вот тебе доп колонка по которой проверишь у кого есть договор у кого нет
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

nenoob

Всем спасибо за участие, но вчера форум не работал, как то сам дошел :)

nenoob

С подсказками то оно веселей получается :)

Уважаемые прошу помощи в организации цикла.

Первый запрос:
ЗапросНасПункты=Новый Запрос;
ЗапросНасПункты.Текст="ВЫБРАТЬ
                      | Дома.Родитель.Родитель.Ссылка КАК НаселенныйПункт
                      |ИЗ
                      | Справочник.Дома КАК Дома
                      |ГДЕ
                      | Дома.ПометкаУдаления = ЛОЖЬ
                      | И (НЕ Дома.Родитель.Родитель.Ссылка = Неопределено)
                      |
                      |СГРУППИРОВАТЬ ПО
                      | Дома.Родитель.Родитель.Ссылка
                      |
                      |УПОРЯДОЧИТЬ ПО
                      | НаселенныйПункт
                      |АВТОУПОРЯДОЧИВАНИЕ";
ТабНасПункты = ЗапросНасПункты.Выполнить().Выгрузить();

Дает мне все населенные пункты.

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

ТаблВывода=ЗапросСтатистика.Выполнить().Выгрузить();


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

Т.е. Для Каждого Строка Из ТабНасПункты Цикл
Дом=Строка.НаселенныйПункт;
, не пойму как правильно написать, хотя очевидно что надо по первой строке результата первого запроса произвести второй запрос, сохранить его в таблице, затем выполнить по второй строке и добавить его ниже первого результата и т.д.

Dethmontt

У "СправочникСчетчики" - кто владелец?
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

nenoob

Тут вроде разобрался.

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

nenoob

или может очистить существующую от данных ?

sergejK74

Кнопочка Спасибо - слева!

cska-fanat-kz

...либо ковырять перенос данных.

Есть обработка "Перенос в идентичную конфигурацию". Там вроде есть выбор что именно переносить...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

nenoob

Возникло 2 вопроса:

Первый: Где находится "Очистить от существующих"? Не вижу такой функции ...

Второй: Где взять такую обработку, по переносу данных?

Мне не суть важно каким способом, лишь бы было :)

Теги:
Рейтинг@Mail.ru

Поиск