v7: 1С 7,7 в запросе поставить условие, все контрагенты, кроме
☑
0
aleksander1sk
26.08.15
✎
10:44
Есть запрос:
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
|Продажи = Регистр.Продажи.Товар;
|Продажи1 = Регистр.Продажи.ТочкаДоставки;
|Сумма = Регистр.Продажи.Сумма;
|ТП = Регистр.Продажи.ТП;
|Товар = Регистр.Продажи.Товар;
|дкРасходнаяНакладная = Регистр.Продажи.ТекущийДокумент.дкРасходнаяНакладная.ТекущийДокумент;
|Функция СуммаСумма = Сумма(Сумма);
|Функция Счётчик = Счётчик();
|Группировка ТП;
|Группировка дкРасходнаяНакладная упорядочить по дкРасходнаяНакладная.рПунктДоставки;
|Условие(ТП в ВыбТП);
|Условие(Товар в ВыбТовар);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Заполнение полей ТП
Таб.ВывестиСекцию("ТП");
Пока Запрос.Группировка(2) = 1 Цикл
// Заполнение полей дкРасходнаяНакладная
Таб.ВывестиСекцию("дкРасходнаяНакладная");
КонецЦикла;
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
Как написать условие, чтобы выбирались контрагенты все, кроме некоторых конкретных?
1
ДенисЧ
26.08.15
✎
10:48
Условие (НЕ(Контрагент В СписокКонтрагентов));
2
aleksander1sk
26.08.15
✎
10:50
(1) Спасибо, а как в СписокКонтрагентов добавить контрагентов со справочника, по коду например?
3
ДенисЧ
26.08.15
✎
10:50
Создать список
найти по коду
добавить .ТекущийЭлемент()
повторить
4
aleksander1sk
26.08.15
✎
11:11
(3) Спасибо, понимаю, что это уже наглость с моей стороны, но может ли кто-то написать эту часть на языке 1с:
Справочник - спКонтрагенты
5
ДенисЧ
26.08.15
✎
11:13
сз = СоздатьОбъект("СписокЗначений");
спр = СоздатьОбъект("Справочник.Контрагенты");
спр.НайтиПоКоду(12345);
сз.ДобавитьЗначение(спр.текущийЭлемент());
спр.НайтиПоКоду(23456);
сз.ДобавитьЗначение(спр.текущийЭлемент());
Сообщить("А теперь вызовем программиста, и он запилит всё это по-нормальному");
6
aleksander1sk
26.08.15
✎
11:29
(5) Огромное спасибо, я работаю сисадмином на фирме и пока только начинаю работать с программированием в 1с.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший