|
Заполнение данных ТЧ | ☑ | ||
---|---|---|---|---|
0
Вадим_1c
10.01.24
✎
11:47
|
Нумератор = 0;
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПередачаТоваров.ВидОперации КАК ВидОперации, | ПередачаТоваров.Ссылка КАК Ссылка, | ПередачаТоваровТовары.Цена КАК Цена, | ПередачаТоваровТовары.Номенклатура КАК Номенклатура |ИЗ | Документ.ПередачаТоваров.Товары КАК ПередачаТоваровТовары | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПередачаТоваров КАК ПередачаТоваров | ПО ПередачаТоваровТовары.Ссылка = ПередачаТоваров.Ссылка |ГДЕ | ПередачаТоваров.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПередачаТоваров.БезвозмезднаяПередача) | И ПередачаТоваров.Товары.Цена = 1 | И ПередачаТоваров.ПометкаУдаления = ЛОЖЬ"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ДокументОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); Для каждого Строка Из ДокументОбъект.Товары Цикл Запрос2 = Новый Запрос; Запрос2.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних |ГДЕ | ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура"; Запрос2.УстановитьПараметр("Номенклатура", ВыборкаДетальныеЗаписи.Номенклатура); РезультатЗапроса2 = Запрос2.Выполнить(); ВыборкаДетальныеЗаписи2 = РезультатЗапроса2.Выбрать(); Нумератор = Нумератор + 1; Пока ВыборкаДетальныеЗаписи2.Следующий() Цикл Строка.Цена = ВыборкаДетальныеЗаписи2.Цена; ПолеВывода = ПолеВывода + "" + Нумератор + ") " + Строка.Цена + Символы.ПС; КонецЦикла; КонецЦикла; ДокументОбъект.Записать(); КонецЦикла; Сообщить("Заполнение завершено"); Суть в том, что заполняется Цена в ТЧ Товары, но если в ТЧ больше одной строки, то при заполнении все цены во всех, условно трех строчках заполняются по последней. Как сделать, чтобы задействовалась только одна строчка и не всегда первая, а по порядку? |
|||
1
АгентБезопасной Нацио
10.01.24
✎
11:49
|
(0) "Миста - лучший отладчик"©?
|
|||
2
Tarlich
10.01.24
✎
11:52
|
а в один запрос соединить .... ну или использовать Ценобразование.ПолучитьЦенуНоменклатуры(ВыборкаДетальныеЗаписи.Номенклатура)
РегистрСведений.ЦеныНоменклатуры - не задан тип цены если у вас 40 типов цен ? |
|||
3
Волшебник
10.01.24
✎
11:53
|
ого, запрос во вложенном цикле! да ещё СрезПоследних без параметров...
ЧатГПТ опять нахуячил кода, которого не понимает |
|||
4
Вадим_1c
10.01.24
✎
11:54
|
(3) это не гпт
|
|||
5
Волшебник
10.01.24
✎
11:57
|
(4) Ну тогда всё ещё хуже, чем мы думали...
|
|||
6
Beduin
10.01.24
✎
12:00
|
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ | ПередачаТоваров.Ссылка.ВидОперации КАК ВидОперации, | ПередачаТоваров.Ссылка КАК Ссылка, | ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаРегистра, | ПередачаТоваровТовары.Цена КАК Цена, | ПередачаТоваровТовары.Номенклатура КАК Номенклатура |ИЗ | Документ.ПередачаТоваров.Товары КАК ПередачаТоваровТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних | ПО ПередачаТоваровТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура |ГДЕ | ПередачаТоваров.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПередачаТоваров.БезвозмезднаяПередача) | И ПередачаТоваровТовары.Цена = 1 | И ПередачаТоваров.Ссылка.ПометкаУдаления = ЛОЖЬ"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ДокументОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); Для каждого Строка Из ДокументОбъект.Товары Цикл Если Строка.Цена <> 1 Тогда Продолжить КонецЕсли; Строка.Цена = ВыборкаДетальныеЗаписи.ЦенаРегистра; ПолеВывода = ПолеВывода + "" + Нумератор + ") " + Строка.Цена + Символы.ПС; КонецЦикла; ДокументОбъект.Записать(); КонецЦикла; |
|||
7
mkalimulin
10.01.24
✎
12:01
|
(0) Суть в том, что вы выбираете все строчки из всех документов по заданному вами критерию, а потом для каждой строчки вы выбираете... все строчки из документа, к которому относится эта строчка.
Исправьте первый запрос и дальше уже вам будет легче избегать ошибок |
|||
8
Tarlich
10.01.24
✎
12:04
|
(0) вам необходимо во всех сроках в документе ПередачаТоваров которые не помеченные на уд и имеют нужный вид оперрации где у товара цена = 1 поменять цену на необходимую ?
|
|||
9
Вадим_1c
10.01.24
✎
12:10
|
(8) да
|
|||
10
Tarlich
10.01.24
✎
12:12
|
выб = Документы.ПередачаТоваров.Выбрать()
Пока выб.следующий цикл Если выб.пометкаУдаления тогда продолжить; конецЕсли; Если выб.ВидОперации <> Перечисление.ВидыОперацийПередачаТоваров.БезвозмезднаяПередача тогда продолжить; Надозаписать = ложь; док = Выб.ПолучитьОбъект() для каждого стр из док.товары цикл Если стр.цена = 1 тогда стр.Цена = ПолучитьЖелаемуюЦену(стр.Гоменклатура); Надозаписать = истина; КонецЕсли; КонецЦикла; Если надозаписать тогда Док.Записать(РежимЗаписиДокумента.Проведение); надозаписать = ложь; КонецЕсли; способ дедовский но рабочий !!! Е Конеццикла; Конеццикла ; |
|||
11
Tarlich
10.01.24
✎
12:14
|
не много ошибся - но надеюсь суть понятна
|
|||
12
Волшебник
10.01.24
✎
12:36
|
(10) Где лесенка?
|
|||
13
Вадим_1c
10.01.24
✎
12:50
|
(6) Ругается на соединение, что-то со связями.
И вот прерывание если не 1, а если там три строчки и везде 1, тогда условие не работает и заполняется по последнему |
|||
14
Tarlich
10.01.24
✎
13:04
|
(12)
Процедура ОбработаемКакНадо() выб = Документы.ПередачаТоваров.Выбрать(с, по); Пока выб.следующий() цикл Если выб.пометкаУдаления тогда продолжить; конецЕсли; Если выб.ВидОперации <> Перечисления.ВидыОперацийПередачаТоваров.БезвозмезднаяПередача тогда продолжить; КонецЕсли; НадоЗаписать = ложь; док = Выб.ПолучитьОбъект(); для каждого стр из док.товары цикл Если стр.цена = 1 тогда стр.Цена = ПолучитьЖелаемуюЦену(стр.Номенклатура); НадоЗаписать = истина; КонецЕсли; КонецЦикла; Если НадоЗаписать тогда Док.Записать(РежимЗаписиДокумента.Запись); //если надо, то проводим: РежимЗаписиДокумента.Проведение КонецЕсли; КонецЦикла; КонецПроцедуры Функция ПолучитьЖелаемуюЦену(товар) ТипЦены = справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("НашаЦена"); Возврат Ценообразование.ПолучитьЦенуНоменклатуры(товар,ТипЦены,текущаяДата()); КонецФункции |
|||
15
Tarlich
10.01.24
✎
13:01
|
(12) ну я же naïve -))
|
|||
16
Волшебник
10.01.24
✎
13:13
|
(15) Будьте внимательнее. Не ведите себя как бот.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |