Подскажите пож-та что делает код и есть ли ошибки?

1. Dina1251 9 04.05.23 15:23 Сейчас в теме
&наКлиенте
Процедура ВыполнитьОбработку (ДатаНачала, ДатаОкончания, СписокКлиентов)

Запрос = Новый Запрос;

Запрос.УстановитьПараметр ("ДатаНачала", Датаначала);

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

Запрос.УстановитьПараметр ("СтатусНазначения", Перечисления. СтатусыНазначений. Выполнено) ;

Запрос.Текст =

"ВЫБРАТЬ

| Оборотыпоназначениямобороты.ДокНазначения КАК ДокНазначения
| ОборотыпоназначениямОбороты.Клиент КАК Клиент

| регистрнакопления.ОборотыПоНазначениям.Обороты(, ‚, ‚ ) КАК ОборотыПоназначениямобороты

| ОборотыпоназначениямОбороты.Период Между &ДатаНачала и ДатаОкончания
| И ОборотыпоназначениямОбороты.СтатусНазначения <> &СтатусНазначения";

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

Для Каждого стр Из ТЗ Цикл
Если СписокКлиентов.НайтиПоЗначению(стр.Клиент) Тогда
Докназначения = стр.Докназначения;
ДокНазначения.СтатусНазначения = Перечисления. СтатусьНазначений. Выполнено;
Докназначения. Записать();
Конецесли;
Конеццикла;


Конецпроцедуры
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user5300 1017 04.05.23 15:40 Сейчас в теме
(1)
что делает код

Отбирает документы где Статус Назначения "не выполнено" и устанавливает на "Выполнено".

Ошибки есть:
// нужно получить объект для того чтобы изменить его
Докназначения = стр.Докназначения.ПолучитьОбъект();
starik-2005; +1 Ответить
3. starik-2005 3040 04.05.23 15:53 Сейчас в теме
(1)
Докназначения = стр.Докназначения;
...
Докназначения. Записать();
Ничего не делает. Мрет на последней строке.
DesertPunk; user1826630; +2 Ответить
4. Zevzm 04.05.23 15:53 Сейчас в теме
(1) Передайте список клиентов сразу в запрос и сделайте отбор.
По возможности условия отбора перенесите в параметры виртуальной таблицы.
5. wertep 23 04.05.23 16:05 Сейчас в теме
(1) Обоже, гоните его подальше от 1С. Ужас уже в запросе.
Запрос.Текст =
"ВЫБРАТЬ
|	ОборотыПоНазначениямОбороты.ДокНазначения КАК ДокНазначения,
|	ОборотыПоНазначениямОбороты.Клиент КАК Клиент 
|ИЗ
|	РегистрНакопления.ОборотыПоНазначениям.Обороты(&ДатаНачала, &ДатаОкончания, , СтатусНазначения <> &СтатусНазначения) КАК ОборотыПоНазначениямОбороты";

Ты хотябы не в блокноте это все пиши и нажми кнопочку проверить синтаксис, у тебя сразу гора ошибок высыпится.
7. DesertPunk 04.05.23 17:20 Сейчас в теме
(5) Клиент В (&СписокКлиентов) забыл - так наряднее смотрится
8. Dina1251 9 05.05.23 15:27 Сейчас в теме
(7) а это что даст, скажите пожалуйста?
9. Zevzm 05.05.23 15:46 Сейчас в теме
10. Dina1251 9 05.05.23 15:51 Сейчас в теме
11. user1826630 05.05.23 15:54 Сейчас в теме
(10) Это разве форум для бесплатного обучения?
12. DesertPunk 05.05.23 16:20 Сейчас в теме
(10) Производительность
У тебя изначально есть три готовых параметра отбора:
Процедура ВыполнитьОбработку (ДатаНачала, ДатаОкончания, СписокКлиентов)

Но ты выгружаешь вообще все данные за период со статусом Перечисления.СтатусыНазначений.Выполнено. Сколько у тебя записей в этой таблице? Правильный ответ: "Сейчас много, а через пару еще больше". При этом тебе нужны только те записи, которые попадают в "СписокКлиентов". В случае одной таблицы и 1000 строк страшного ничего нет. Но когда столкнёшься с большими отчетами - можешь сильно нагрузить сервер. Причем, в вплоть до ухода сервака в ребут. 8-7 временных таблиц, например могут (при неправильном отборе, естественно) содержать и по 20-30 тысяч строк. Если такой отчет ещё и популярен, то 1С будет работать по графику "в 9:00 начали работать, а в 9:02 положили сервак"

Требования к коду
Все условия находятся в одном месте
(&ДатаНачала, &ДатаОкончания, , СтатусНазначения <> &СтатусНазначения) И Клиент В (&СписокКлиентов))


Нет мусора, который делает код длиннее без необходимости
Если СписокКлиентов.НайтиПоЗначению(стр.Клиент) Тогда
20. Dina1251 9 05.05.23 17:50 Сейчас в теме
(12) Спасибо огромное! Всё понятно!!!
6. puzo50 04.05.23 17:05 Сейчас в теме
&наКлиенте
Процедура ВыполнитьОбработку (ДатаНачала, ДатаОкончания, СписокКлиентов)

Запрос = Новый Запрос; 

вот тут уже всё.
lefthander; user1826630; STELEICE; +3 Ответить
13. Said-We 05.05.23 16:32 Сейчас в теме
:-)
Форум - это передача и обмен информации. Если информация понятна, новая и полезная, то это обучение. Информатика 7 класс.
Независимо от того, проводятся ли классические занятия по обучению или нет. Если есть факт передачи знаний - это обучение.

Раз информация доступна бесплатно, то это бесплатное обучение.

Вопрос только в том, что кто-то ищет информацию прежде чем вопрос задать, а кто-то спрашивает и через 5 минут сам находит ответ, а кто-то задает вопрос и не проверяет ответы и не верит ответам, а кто-то....
Это уже индивидуальная психология и она кардинально не меняется. Как человек привык себя вести, так и будет пытаться продолжать. С небольшими отклонениями с возрастом, либо стрессовыми ситуациями в жизни.
14. user1826630 05.05.23 16:39 Сейчас в теме
(13)
Как человек привык себя вести, так и будет пытаться продолжать.
Вот и пусть сначала учится, прежде чем вопрошать.
18. user1826630 05.05.23 16:53 Сейчас в теме
(14) Обожаю тебя, мой поклонник-минусовщик!
17. wertep 23 05.05.23 16:48 Сейчас в теме
(13) Обмен информацией и опытом это одно.
Но когда приходит человек с куском кода написанном в блокноте, абы как и совершенно не зная основ, то извините это уже просто наглость.
user1826630; +1 Ответить
15. Said-We 05.05.23 16:41 Сейчас в теме
(1) + к (12)
Оборотыпоназначениямобороты.ДокНазначения КАК ДокНазначения
| ОборотыпоназначениямОбороты.Клиент КАК Клиент

А один документ может делать много движений по одному клиенту?
Если может, то сколько будет движений, столько будет и записей одного и того же документа. А зачем?
16. user1826630 05.05.23 16:45 Сейчас в теме
(15) Теоретически - может. Тот же ВводОстатков. Или какой-то другой самописный документ, где Клиент в табличной части находится...
19. DesertPunk 05.05.23 17:03 Сейчас в теме
(15) Ну тут уж звнияйте барин: без внятного ТЗ - результат ХЗ. Если это регистр номенклатуру в накладных считает по сотне штук в каждом документе, то это фиаско в рамках вышеуказанного запроса. Если 1 док = 1 запись, то вполне вариант.
21. gybson 05.05.23 22:09 Сейчас в теме
Обработка дает стартмани, судя по всему.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот