|
Обновление табличной части документа | ☑ | ||
---|---|---|---|---|
0
elsakovm
22.10.19
✎
10:56
|
Добрый день.
Как обновить табличную часть документа в УФ? Нужно если есть эта номенклатура в запросе то передать количество, если нету то создать новую Передаю параметр НоменклатураИЗТЧ с клиента И когда обновляю на сервере Выборка = РезультатЗапроса.Выгрузить(); Для Каждого стр Из Выборка Цикл Если стр.Номенклатура <> НоменклатураИЗТЧ Тогда НоваяСтрока = Объект.Запасы.Добавить(); НоваяСтрока.Номенклатура = стр.Номенклатура; НоваяСтрока.КоличествоУвеличения = стр.КоличествоПревышенияОстаток; НоваяСтрока.ЕдиницаИзмерения = стр.ЕдИзм; Иначе Возврат стр.КоличествоПревышенияОстаток; КонецЕсли; КонецЦикла; Создаются лишние строки |
|||
1
D_E_S_131
22.10.19
✎
11:40
|
"Создаются лишние строки" - а почему считается, что строки лишние?
|
|||
2
Fram
22.10.19
✎
11:43
|
(0) отладчик в помощь
|
|||
3
elsakovm
22.10.19
✎
11:43
|
Потому что каждый раз когда сравнивается с результатом запроса и Номенклатура не совпадает создается новая строка
|
|||
4
JeHer
22.10.19
✎
11:45
|
(3) а что там в "Выборка"?
|
|||
5
elsakovm
22.10.19
✎
11:47
|
(4)результат запроса из регистра (этими данными я пытаюсь обновить табличную часть)
|
|||
6
hhhh
22.10.19
✎
11:48
|
(4) главное НоменклатураИЗТЧ. Вот тут бредятина. Если много таких НоменклатураИЗТЧ, то для каждой создаются строки.
|
|||
7
JeHer
22.10.19
✎
11:51
|
(6) может НоменклатураИЗТЧ не в Объект.Запасы, а в другой табличной части.
|
|||
8
elsakovm
22.10.19
✎
11:54
|
(6) да, но не пойму как правильно сделать
|
|||
9
elsakovm
22.10.19
✎
11:55
|
с клиента передаю
НоменклатураИЗТЧ = ТекущаяСтрокаТЧ.Номенклатура; |
|||
10
JeHer
22.10.19
✎
12:01
|
(9) что есть в Выборке? Поясню:
- берешь 1-ю номенклатуру из ТЧ, передаешь её в функцию - делаешь какой-то запрос, получаешь таблицу - перебираешь эту таблицу, сравниваешь с НоменклатураИЗТЧ - делаешь какие-то движения по заданному условию - например, условие стр.Номенклатура <> НоменклатураИЗТЧ - создаешь новую строку, идешь дальше по таблице - опять стр.Номенклатура <> НоменклатураИЗТЧ - создаешь новую строку, идешь дальше по таблице - берешь 2-ю номенклатуру из ТЧ, передаешь её в функцию - делаешь какой-то запрос, получаешь таблицу - перебираешь эту таблицу, сравниваешь с НоменклатураИЗТЧ - делаешь какие-то движения по заданному условию - например, условие стр.Номенклатура <> НоменклатураИЗТЧ - создаешь новую строку, идешь дальше по таблице - опять стр.Номенклатура <> НоменклатураИЗТЧ - создаешь новую строку, идешь дальше по таблице - и т.д. по все ТЧ Понятно? |
|||
11
Доминошник
22.10.19
✎
12:03
|
(0) Я правильно понимаю - если в выборке 5 строк, и все они не совпадают - то будет создано 5 строк в ТЧ?
(10) Опередил :) |
|||
12
elsakovm
22.10.19
✎
12:12
|
(10) дак я думал что я так и делаю
(11) а в итоге так получается |
|||
13
hhhh
22.10.19
✎
12:15
|
(12) в чем вопрос тогда? ну так и делал. И так получилось. Всё путем, значит?
|
|||
14
elsakovm
22.10.19
✎
12:19
|
(13) нет
(10) http://skrinshoter.ru/s/221019/VcDW8PGY |
|||
15
elsakovm
22.10.19
✎
12:21
|
(10) видимо не понятно(. А где именно я не так делаю, вроде все так
|
|||
16
Мимохожий Однако
22.10.19
✎
12:23
|
(0) В отладчике НоменклатураИЗТЧ какое значение имеет?
|
|||
17
elsakovm
22.10.19
✎
12:24
|
на клиенте
Для Каждого ТекущаяСтрокаТЧ из Объект.Запасы Цикл НоменклатураИЗТЧ = ТекущаяСтрокаТЧ.Номенклатура; ТекущаяСтрокаТЧ.КоличествоУвеличения = ОбновитьКолонкуУвеличениеНаСервере(НоменклатураИЗТЧ); КонецЦикла; |
|||
18
Ёпрст
22.10.19
✎
12:25
|
(17) короче, выкинь свой код в топку, на сервере бери всю тч целиком и пихай в свой запрос, на выходе уже будешь иметь всё сразу, а не перебирать и что-то искать для каждой строки отдельно
|
|||
19
elsakovm
22.10.19
✎
12:31
|
(18) можно и так но это не поменяет сути вопроса. как правильно обновить ТЧ документа, как будет выглядеть перебор строк
|
|||
20
hhhh
22.10.19
✎
12:34
|
(19) как-то так
Если МассивНоменклатурИзТЧ.Найти(стр.Номенклатура) = Неопределено Тогда то есть в процедуру передаете весь массив номенклатур |
|||
21
elsakovm
22.10.19
✎
12:36
|
(16) там одна строчка скриншот в (14)
|
|||
22
hhhh
22.10.19
✎
12:36
|
(20)+ хотя, наверно лучше вообще выкинуть всё и переписать.
|
|||
23
hhhh
22.10.19
✎
12:37
|
(21) в итоге что получается?
|
|||
24
elsakovm
22.10.19
✎
12:38
|
(22) можно и переписать
|
|||
25
hhhh
22.10.19
✎
12:39
|
(23)+ где скрин "Создаются лишние строки" ??
|
|||
26
elsakovm
22.10.19
✎
12:44
|
||||
27
hhhh
22.10.19
✎
13:12
|
(26) сначала запрос посмотреть. Отуда Выборка
|
|||
28
Мимохожий Однако
22.10.19
✎
13:31
|
(21) В таком случае условие стр.Номенклатура <> НоменклатураИЗТЧ будет всегда истиной. Ты сравниваешь ссылку справочника со строкой таблицы значений
|
|||
29
D_E_S_131
22.10.19
✎
13:52
|
(26) Что бы найти номенклатуру, которой нет в ТЧ, надо передавать не поочередно строки из ТЧ, а сразу данные из всех строк. Выгрузить в массив и в запросе получать данные, которых нет в этом массиве.
|
|||
30
elsakovm
22.10.19
✎
14:09
|
(27)
&НаСервере Функция ОбновитьКолонкуУвеличениеНаСервере(НоменклатураИЗТЧ) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаявкиНаПеремещениеОстатки.СсылкаНаДок КАК СсылкаНаДок, | ЗаявкиНаПеремещениеОстатки.ПревышенЛимит КАК ПревышенЛимит, | ЗаявкиНаПеремещениеОстатки.КоличествоПревышенияОстаток КАК КоличествоПревышенияОстаток, | ЗаявкиНаПеремещениеОстатки.ЕдИзм КАК ЕдИзм, | ЗаявкиНаПеремещениеОстатки.Номенклатура КАК Номенклатура |ИЗ | РегистрНакопления.ЗаявкиНаПеремещение.Остатки( | , | СсылкаНаДок = &Ссылка | И ПревышенЛимит = ИСТИНА) КАК ЗаявкиНаПеремещениеОстатки"; Запрос.УстановитьПараметр("Ссылка",Объект.Ссылка); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выгрузить(); Для Каждого стр Из Выборка Цикл Если стр.Номенклатура <> НоменклатураИЗТЧ Тогда НоваяСтрока = Объект.Запасы.Добавить(); НоваяСтрока.Номенклатура = стр.Номенклатура; НоваяСтрока.КоличествоУвеличения = стр.КоличествоПревышенияОстаток; НоваяСтрока.ЕдиницаИзмерения = стр.ЕдИзм; Иначе Возврат стр.КоличествоПревышенияОстаток; КонецЕсли; КонецЦикла; КонецФункции |
|||
31
Мимохожий Однако
22.10.19
✎
14:40
|
(30) Еще раз...
Разберись с условием Если стр.Номенклатура <> НоменклатураИЗТЧ Тогда |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |