Подскажите пожалуйста!
1с8.3 CRM 2.0
Есть отчет, который выдает необходимых клиентов по заданным критериям.
Нужно написать обработку, которая меняла бы в найденных компаниях требуемый реквизит.
Получается комбинация запроса из отчета и группового изменения реквизитов ( стандартная обработка, далее "ГИР") Отчет написан и работает.
Но вот перевести его в обработку не получается. ( опыта нет и знаний)
Отчет делал сам, поэтому выглядит он неоптимизированно, но нужные функции выполняет.
Залез в ГИР , ничего не понял. Итак собственно сам код и вопрос:
Это код отчета. Он находит компании, с которыми давно не было событий и выводит их.
В параметрах задаю начало периода и состояние события, чтобы не учитывались запланированные события. Конец периода - начало дня, но почему то приходится самостоятельно править дату, но сейчас не об этом.
Вот что в обработке:
Естественно не работает)
подскажите как лучше изменить реквизит ОсновнойМенеджер у избранных запросом/отчетом клиентов...
Добавлять в ГИР вручную или методом подбора долго, быть может есть возможность в код стандартной обработки жестко прописать ссылки на клиентов ?
1с8.3 CRM 2.0
Есть отчет, который выдает необходимых клиентов по заданным критериям.
Нужно написать обработку, которая меняла бы в найденных компаниях требуемый реквизит.
Получается комбинация запроса из отчета и группового изменения реквизитов ( стандартная обработка, далее "ГИР") Отчет написан и работает.
Но вот перевести его в обработку не получается. ( опыта нет и знаний)
Отчет делал сам, поэтому выглядит он неоптимизированно, но нужные функции выполняет.
Залез в ГИР , ничего не понял. Итак собственно сам код и вопрос:
Это код отчета. Он находит компании, с которыми давно не было событий и выводит их.
ВЫБРАТЬ РАЗЛИЧНЫЕ
CRM_Событие.Ссылка,
МАКСИМУМ(CRM_Событие.Дата) КАК Дата,
CRM_Событие.Ответственный,
CRM_Событие.Партнер,
CRM_Событие.СостояниеСобытия,
CRM_Событие.ДатаСоздания,
Партнеры.ОсновнойМенеджер,
CRM_Событие.ПометкаУдаления
ПОМЕСТИТЬ времтб
ИЗ
Документ.CRM_Событие КАК CRM_Событие
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры
ПО CRM_Событие.Партнер = Партнеры.Ссылка
И CRM_Событие.ОрганизаторGApi = Партнеры.Ссылка
ГДЕ
CRM_Событие.Дата <= &НачалоПериода
И CRM_Событие.СостояниеСобытия = &СостояниеСобытия
СГРУППИРОВАТЬ ПО
CRM_Событие.Ответственный,
CRM_Событие.Партнер,
CRM_Событие.Ссылка,
CRM_Событие.СостояниеСобытия,
CRM_Событие.ДатаСоздания,
Партнеры.ОсновнойМенеджер
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
времтб.Дата,
времтб.Ответственный,
времтб.Партнер
ИЗ
времтб КАК времтб
ПоказатьВ параметрах задаю начало периода и состояние события, чтобы не учитывались запланированные события. Конец периода - начало дня, но почему то приходится самостоятельно править дату, но сейчас не об этом.
Вот что в обработке:
&НаКлиенте
Процедура ОтвязатьЗабытых (Команда)
СделатьНаСервере;
КонецПроцедуры
&НаСервере
Процедура СделатьНаСервере ()
Запрос = Новый Запрос;
Запрос.Текст =
// "ВСТАВКА ИЗ ОТЧЕТА"
Запрос.УстановитьПараметр("НачалоПериода", 13.06.2018 0:00:00); // тут явно ошибка, не понимаю как задать параметры.
Запрос.УстановитьПараметр("Дата", Дата); // тоже скорее всего ошибка.
Запрос.УстановитьПараметр("СостояниеСобытия", Справочник.CRM_СостоянияСобытий.Завершено);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Партнеры.Выбрать();
///////////////
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Объект = выборка.ПолучитьОбъект();
Объект.ОсновнойМенеджер = Справочники.Пользователи.НайтиПоНаименованию(ОбщаяБаза); // так я назвал пользователя и хочу повесить на него клиентов
Объект.Записать();
КонецЦикла;
Сообщить("Готово");
КонецПроцедуры
ПоказатьЕстественно не работает)
подскажите как лучше изменить реквизит ОсновнойМенеджер у избранных запросом/отчетом клиентов...
Добавлять в ГИР вручную или методом подбора долго, быть может есть возможность в код стандартной обработки жестко прописать ссылки на клиентов ?
По теме из базы знаний
- Групповое изменение реквизитов договоров
- Как добавить опцию "Изменить выделенные" в списках для своей конфигурации (групповое изменение справочников и документов)
- Групповая обработка реквизитов + консоль запросов
- Встраиваем консоль запросов для отбора в стандартные обработки 1С
- Групповое изменение реквизитов с помощью... искусственного интеллекта
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Объект = ВыборкаДетальныеЗаписи.ПолучитьОбъект();
Объект.ОсновнойМенеджер = Справочники.Пользователи.НайтиПоНаименованию(ОбщаяБаза);
Объект.Записать();
КонецЦикла;
&НачалоПериода можно не делать параметром, а сразу в запросе поставить конкретное значение.
- взять дату время в кавычки
-
Запрос.УстановитьПараметр("НачалоПериода", 13.06.2018 0:00:00);
- взять дату время в кавычки
Запрос.УстановитьПараметр("Дата", Дата);
-
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
(4)
Не выполняется. что-то еще не так?
&НаКлиенте
Процедура ОтвязатьЗабытых(Команда)
СделатьНаСервере();
КонецПроцедуры
&НаСервере
Процедура СделатьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| CRM_Событие.Ссылка,
| МАКСИМУМ(CRM_Событие.Дата) КАК Дата,
| CRM_Событие.Ответственный,
| CRM_Событие.Партнер,
| CRM_Событие.СостояниеСобытия,
| CRM_Событие.ДатаСоздания,
| Партнеры.ОсновнойМенеджер,
| CRM_Событие.ПометкаУдаления
|ПОМЕСТИТЬ времтб
|ИЗ
| Документ.CRM_Событие КАК CRM_Событие
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры
| ПО CRM_Событие.Партнер = Партнеры.Ссылка
| И CRM_Событие.ОрганизаторGApi = Партнеры.Ссылка
|ГДЕ
| CRM_Событие.Дата <= &НачалоПериода
| И CRM_Событие.СостояниеСобытия = &СостояниеСобытия
| И CRM_Событие.ПометкаУдаления = ЛОЖЬ
|
|СГРУППИРОВАТЬ ПО
| CRM_Событие.Ответственный,
| CRM_Событие.Партнер,
| CRM_Событие.Ссылка,
| CRM_Событие.СостояниеСобытия,
| CRM_Событие.ДатаСоздания,
| Партнеры.ОсновнойМенеджер,
| CRM_Событие.ПометкаУдаления
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| времтб.Дата,
| времтб.Ответственный,
| времтб.Партнер
|ИЗ
| времтб КАК времтб";
Запрос.УстановитьПараметр("Дата", '20180213000000');
Запрос.УстановитьПараметр("НачалоПериода", ТекущаяДата());
Запрос.УстановитьПараметр("СостояниеСобытия", Справочники.CRM_СостоянияСобытий.Завершено);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Справочники.Партнеры.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Объект = ВыборкаДетальныеЗаписи.ПолучитьОбъект();
Объект.ОсновнойМенеджер = Справочники.Пользователи.НайтиПоНаименованию("ОбщаяБаза");
Объект.Записать();
КонецЦикла;
Сообщить("Готово");
КонецПроцедуры
ПоказатьНе выполняется. что-то еще не так?
(6)
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Объект = ВыборкаДетальныеЗаписи.Партнер.ПолучитьОбъект();
Объект.ОсновнойМенеджер = Справочники.Пользователи.НайтиПоНаименованию("ОбщаяБаза");
Объект.Записать();
КонецЦикла;
Показать
(7)
Доработал код, вот так сейчас выглядит.
Доработал код, вот так сейчас выглядит.
&НаКлиенте
Процедура ОтвязатьЗабытых(Команда)
СделатьНаСервере();
КонецПроцедуры
&НаСервере
Процедура СделатьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| CRM_Событие.Ссылка,
| МАКСИМУМ(CRM_Событие.Дата) КАК Дата,
| CRM_Событие.Ответственный,
| CRM_Событие.Партнер,
| CRM_Событие.СостояниеСобытия,
| CRM_Событие.ДатаСоздания,
| Партнеры.ОсновнойМенеджер,
| CRM_Событие.ПометкаУдаления
|ПОМЕСТИТЬ времтб
|ИЗ
| Документ.CRM_Событие КАК CRM_Событие
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры
| ПО CRM_Событие.Партнер = Партнеры.Ссылка
| И CRM_Событие.ОрганизаторGApi = Партнеры.Ссылка
|ГДЕ
| CRM_Событие.Дата <= &НачалоПериода
| И CRM_Событие.СостояниеСобытия = &СостояниеСобытия
| И CRM_Событие.ПометкаУдаления = ЛОЖЬ
|
|СГРУППИРОВАТЬ ПО
| CRM_Событие.Ответственный,
| CRM_Событие.Партнер,
| CRM_Событие.Ссылка,
| CRM_Событие.СостояниеСобытия,
| CRM_Событие.ДатаСоздания,
| Партнеры.ОсновнойМенеджер,
| CRM_Событие.ПометкаУдаления
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| времтб.Дата,
| времтб.Ответственный,
| времтб.Партнер
|ИЗ
| времтб КАК времтб";
Запрос.УстановитьПараметр("Дата", '20180213000000');
Запрос.УстановитьПараметр("НачалоПериода", ТекущаяДата());
Запрос.УстановитьПараметр("СостояниеСобытия", Справочники.CRM_СостоянияСобытий.Завершено);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Справочники.Партнеры.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Объект = ВыборкаДетальныеЗаписи.Партнер.ПолучитьОбъект();
Объект.ОсновнойМенеджер = Справочники.Пользователи.НайтиПоНаименованию("ОбщаяБаза");
Объект.Записать();
КонецЦикла;
Сообщить("Готово");
КонецПроцедуры
Показать
(14)Нужно поставить точку останова,и посмотреть результат запроса,
ну или если не умеешь то допиши после
Результат = Запрос.Выполнить();
Сообщить(Результат.Выгрузить().Количество());
если сообщение выдаст 0,значит у тебя запрос выдает пустой результат,соответственно ничего он менять не будет,судя по коду.
ну или если не умеешь то допиши после
Результат = Запрос.Выполнить();
Сообщить(Результат.Выгрузить().Количество());
если сообщение выдаст 0,значит у тебя запрос выдает пустой результат,соответственно ничего он менять не будет,судя по коду.
(19)Значит у тебя есть документы где не заполнен "Партнер",либо заполняй их в документах,либо измени код на
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если НЕ ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Партнер) Тогда
Продолжить;
КонецЕсли;
Объект = ВыборкаДетальныеЗаписи.Партнер.ПолучитьОбъект();
Объект.ОсновнойМенеджер = Справочники.Пользователи.НайтиПоНаименованию("ОбщаяБаза");
Объект.Записать();
КонецЦикла;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если НЕ ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Партнер) Тогда
Продолжить;
КонецЕсли;
Объект = ВыборкаДетальныеЗаписи.Партнер.ПолучитьОбъект();
Объект.ОсновнойМенеджер = Справочники.Пользователи.НайтиПоНаименованию("ОбщаяБаза");
Объект.Записать();
КонецЦикла;
(23) переименуй с объекта на партнера например
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если НЕ ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Партнер) Тогда
Продолжить;
КонецЕсли;
Партнер = ВыборкаДетальныеЗаписи.Партнер.ПолучитьОбъект();
Партнер.ОсновнойМенеджер = Справочники.Пользователи.НайтиПоНаименованию("ОбщаяБаза");
Партнер.Записать();
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот