Блок 3: 1С:Предприятие 8. Решение оперативных задач.

В данном разделе задаются вопросы по конкретным курсам.
(Раздел предназначен для тех, кто уже прошел обучение и возникли вопросы по тематике курса)

Блок 3: 1С:Предприятие 8. Решение оперативных задач.

Сообщение admin » 14 дек 2011, 12:57

Вопросы по тематике курса.
admin
Администратор
 
Сообщений: 241
Зарегистрирован: 14 дек 2011, 11:11

Re: Блок 3: 1С:Предприятие 8. Решение оперативных задач.

Сообщение Оля » 08 май 2015, 08:35

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

В результате выполнения запроса в выборку попадают записи, по которым услуга уже запланирована, поскольку поле "СервисМенеджер" при проведении "ПродажаТовара" по регистру "ПланированиеОказанияУслуг" не заполняется. Можно ли установить в запросе отбор только по трем измерениям "Услуга", "ДокументОснование", "Контрагент" для таблицы "СрезПоследних"? Как правильно написать текст процедуры?
Оля
 
Сообщений: 3
Зарегистрирован: 24 апр 2015, 11:21

Re: Блок 3: 1С:Предприятие 8. Решение оперативных задач.

Сообщение Оля » 08 май 2015, 13:52

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

Запрос.УстановитьПараметр("ПустаяДата", Дата(1,1,1));

Это наверное не самый оптимальный способ?
Оля
 
Сообщений: 3
Зарегистрирован: 24 апр 2015, 11:21

Re: Блок 3: 1С:Предприятие 8. Решение оперативных задач.

Сообщение admin » 12 май 2015, 00:09

Здравствуйте, Ольга! Мне не известно кто такой Владимир, но это значения не имеет :) .
Судя по указанным вами страницам, пособие у вас старое. В новом пособии запрос верный, хотя и ваш запрос рабочий.
Можно так:
Код: выделить все
ВЫБРАТЬ
ПланированиеОказанияУслугСрезПоследних.Услуга,
ПланированиеОказанияУслугСрезПоследних.Контрагент,
ПланированиеОказанияУслугСрезПоследних.ДокументОснование
ИЗ
РегистрСведений.ПланированиеОказанияУслуг.СрезПоследних КАК ПланированиеОказанияУслугСрезПоследних
СГРУППИРОВАТЬ ПО
ПланированиеОказанияУслугСрезПоследних.Услуга,
ПланированиеОказанияУслугСрезПоследних.Контрагент,
ПланированиеОказанияУслугСрезПоследних.ДокументОснование
ИМЕЮЩИЕ
Максимум(ПланированиеОказанияУслугСрезПоследних.СервисМенеджер) =
   Значение(Справочник.ФизическиеЛица.ПустаяССылка)
admin
Администратор
 
Сообщений: 241
Зарегистрирован: 14 дек 2011, 11:11

Re: Блок 3: 1С:Предприятие 8. Решение оперативных задач.

Сообщение Оля » 12 май 2015, 17:37

Простите, Сергей, описочка по Фрейду: один Путин на уме :D .
Да, действительно, пособие старое, 2011 года.
Спасибо большое за ответ.
Оля
 
Сообщений: 3
Зарегистрирован: 24 апр 2015, 11:21


Вернуться в Вопросы по курсам

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron