|
помогите с условием | ☑ | ||
---|---|---|---|---|
0
dvrk
01.11.21
✎
06:42
|
привет, запросом получаю количество дней просрочки, если >3, то получаю объект контрагент, создаю набор записей значения свойств объектов и создаю там запись с этим контрагентом свойство цвет значение нужный цвет
если >30 то набор с другим цветом, если меньше 3, то набор с пустым значением цвет, как условие написать, что если там есть КонкретныйЦвет, то ничего не делать с ним и вообще подскажите как по-другому правильнее всё это сделать, а то как то коряво делаю Желтый=Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Желтый"); Для каждого Контр из Результат цикл Если Контр.Просрочено > 3 и Контр.Просрочено < 30 и ЗначениеЗаполнено(Контр.Контрагент) Тогда СсылкаКОнтр = Контр.КОнтрагент.ПолучитьОбъект(); видсвойства = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Цвет"); Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); Запись.Прочитать(); Запись.Объект = Контр.Контрагент; Запись.Свойство = ВидСвойства; Запись.Значение = Желтый; Запись.Записать(); СсылкаКонтр.Записать(); как то так |
|||
1
dvrk
01.11.21
✎
06:57
|
Вообще задача такая
получать запросом кол-во дней просрочки контрагентов и разукрашивать их, если больше 3 и меньше 30 дней то 1 цвет, если больше 30 другой цвет, но есть ещё в списке контрагенты, которых красят руками в третий цвет и мне как то нужно условие прописать, что контрагентов с третьим цветом трогать нельзя |
|||
2
RomaH
naïve
01.11.21
✎
06:59
|
запрос-то где?
|
|||
3
Бишбармак
01.11.21
✎
06:59
|
Невидно структуру регистра, но...
Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); Запись.Объект = Контр.Контрагент; Запись.ВидСвойства = ВидСвойства; Запись.Прочитать(); Если Запись.Выбран() Тогда Если Запись.Значение = Желтый Тогда Продолжить; Иначе Запись.Объект = Контр.Контрагент; Запись.Свойство = ВидСвойства; Запись.Значение = Желтый; Запись.Записать(Истина); КонецЕсли; КонецЕсли; Как-то так. |
|||
4
RomaH
naïve
01.11.21
✎
07:02
|
а блокировка? вдруг кто у спеет между Прочитать и Записать записать?
|
|||
5
dvrk
01.11.21
✎
07:03
|
(4) никто этот регистр не трогает
|
|||
6
dvrk
01.11.21
✎
07:04
|
(3) это имеется ввиду если запись.значение = ЦветКоторыйНельзяТрогать Тогда Продолжить, да?
|
|||
7
RomaH
naïve
01.11.21
✎
07:04
|
(5) вы путаетесь в показаниях
"но есть ещё в списке контрагенты, которых красят руками в третий цвет" |
|||
8
dvrk
01.11.21
✎
07:05
|
(7) это делаю я
|
|||
9
dvrk
01.11.21
✎
07:05
|
(7) вот хочу это всё автоматизировать...
|
|||
10
Бишбармак
01.11.21
✎
07:30
|
(6)Да.
|
|||
11
Ryzeman
01.11.21
✎
07:53
|
(0) зачем получаешь объект и записываешь его? У контрагента что-то меняется?
>СсылкаКОнтр = Контр.КОнтрагент.ПолучитьОбъект(); >... >СсылкаКонтр.Записать(); Зависит от данных и от структуры базы, но скорее всего, самым правильным было бы все условия сразу в запросе указать, а результат просто обходить и записывать в регистр, так можно минимизировать количество обращений к базе данных. ПВХ можно параметрами вставлять, для условий использовать ВЫБОР. отсутствующие записи в регистре обрабатывать через ЕСТЬNULL (если привязываешь в запросе регистр к справочнику контрагентов или другой таблице) |
|||
12
dvrk
01.11.21
✎
08:08
|
(11) я хз если контрагента не перезаписать то цвет не меняется в списке
|
|||
13
dvrk
01.11.21
✎
11:35
|
некоторых не красит, хотя условие выполняется.......
|
|||
14
Kassern
01.11.21
✎
11:41
|
(0) конфа какая? Если есть возможность, то используйте условное оформление. Цвет лучше на лету получать, тогда не придется каждый раз писать в базу при изменении цвета, а если не менять, то данные у вас будут не актуальные по цветам.
|
|||
15
dvrk
01.11.21
✎
12:12
|
(14) я обработку делаю, которая запросом получает контрагентов с просрочкой и в зависимости от кол-ва дней красит
|
|||
16
Kassern
01.11.21
✎
12:15
|
(15) будете эту обработку каждый раз запускать, как только оплата пришла по клиенту, или изменился просрок?
|
|||
17
dvrk
01.11.21
✎
12:19
|
(16) ну хотел раз в сутки
|
|||
18
Kassern
01.11.21
✎
12:20
|
(17) еще раз повторю, какая конфа? Речь про динамические списки идет?
|
|||
19
dvrk
01.11.21
✎
12:22
|
(18) ут 10
|
|||
20
dvrk
01.11.21
✎
12:47
|
(18) да и если делать это в форме списка, то там запрос долго отрабатывает, долго будет форма открываться)
|
|||
21
dvrk
01.11.21
✎
12:54
|
(18) сейчас в копии сунул запрос и условие на условноеоформление - уже 10 минут висит открытие формы списка
|
|||
22
dvrk
01.11.21
✎
13:04
|
(18) как тогда можно по-другому сделать, если мне нужно получать каждый раз кол-во дней просрочки?
|
|||
23
Ryzeman
01.11.21
✎
13:10
|
Напиши свою задачу, что (где - в форме списка, отчете?) ты хочешь получить и какой запрос для этого используешь. Если ЗначенияСвойствОбъектов это аналог современного регистра ДополнительныеСведения, то твоё решение в принципе понятно, сделать можно как написали в (3) - обходить всю выборку и по условию переписывать различные значения, либо сразу все данные получать запросом и по выборке сразу же писать в регистр.
По-другому это делается, например, если в регистр писать данные о количестве просроченных дней, которые и нужно считать раз в сутки, а условным оформлением уже разукрашивать исходя из этой цифры. Работать должно очень быстро. Если ты на лету считаешь просроченные платежи по всем контрагентам, то конечно это будет тормозить... |
|||
24
dvrk
01.11.21
✎
13:13
|
(23) мне нужно разукрасить строки на форме списка, запрос сюда вставить?
|
|||
25
dvrk
01.11.21
✎
13:16
|
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВложенныйЗапрос.РасчетныйДокумент.Проект КАК Проект, | ВложенныйЗапрос.ДоговорКонтрагента.Владелец КАК Контрагент, | ВложенныйЗапрос.ДоговорКонтрагента КАК ДоговорКонтрагента, | ВложенныйЗапрос.РасчетныйДокумент КАК РасчетныйДокумент, | ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот, | ВЫБОР | КОГДА &ДатаОтчета > ВложенныйЗапрос.ДатаОплаты | ТОГДА ВложенныйЗапрос.СуммаОстатокВВалютеВзаиморасчетов | ИНАЧЕ 0 | КОНЕЦ КАК Просрочено, | ВложенныйЗапрос.СуммаОстатокВВалютеВзаиморасчетов КАК Неоплачено, | ВложенныйЗапрос.ДатаОплаты КАК ДатаОплаты, | ВЫБОР | КОГДА &ДатаОтчета > ВложенныйЗапрос.ДатаОплаты | ТОГДА РАЗНОСТЬДАТ(ВложенныйЗапрос.ДатаОплаты, &ДатаОтчета, ДЕНЬ) | ИНАЧЕ 0 | КОНЕЦ КАК ПросроченоНа, | ВложенныйЗапрос.ДоговорКонтрагента.Владелец.ОсновнойМенеджерПокупателя |{ВЫБРАТЬ | Проект.*, | Контрагент.*, | ДоговорКонтрагента.*, | РасчетныйДокумент.*} |ИЗ | (ВЫБРАТЬ | Остатки.ДоговорКонтрагента КАК ДоговорКонтрагента, | ОсновнаяТаблицаРегистра.Период КАК РасчетнаяДата, | ОсновнаяТаблицаРегистра.Регистратор КАК РасчетныйДокумент, | ВЫБОР | КОГДА СУММА(ТаблицаПоследующихПриходов.СуммаВзаиморасчетов * ВЫБОР | КОГДА ТаблицаПоследующихПриходов.ВидДвижения = &ВидДвиженияПриход | И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов > 0 | И ТаблицаПоследующихПриходов.Регистратор <> ОсновнаяТаблицаРегистра.Регистратор | ТОГДА 1 | КОГДА ТаблицаПоследующихПриходов.ВидДвижения <> &ВидДвиженияПриход | И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов < 0 | И ТаблицаПоследующихПриходов.Регистратор <> ОсновнаяТаблицаРегистра.Регистратор | ТОГДА -1 | ИНАЧЕ 0 | КОНЕЦ) > Остатки.СуммаВзаиморасчетовОстаток | ТОГДА 0 | ИНАЧЕ ВЫБОР | КОГДА СУММА(ТаблицаПоследующихПриходов.СуммаВзаиморасчетов * ВЫБОР | КОГДА ТаблицаПоследующихПриходов.ВидДвижения = &ВидДвиженияПриход | И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов > 0 | ТОГДА 1 | КОГДА ТаблицаПоследующихПриходов.ВидДвижения <> &ВидДвиженияПриход | И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов < 0 | ТОГДА -1 | ИНАЧЕ 0 | КОНЕЦ) > Остатки.СуммаВзаиморасчетовОстаток | ТОГДА СУММА(ВЫБОР | КОГДА ОсновнаяТаблицаРегистра.Регистратор = ТаблицаПоследующихПриходов.Регистратор | ТОГДА Остатки.СуммаВзаиморасчетовОстаток | ИНАЧЕ 0 | КОНЕЦ) - СУММА(ТаблицаПоследующихПриходов.СуммаВзаиморасчетов * ВЫБОР | КОГДА ТаблицаПоследующихПриходов.ВидДвижения = &ВидДвиженияПриход | И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов > 0 | И ОсновнаяТаблицаРегистра.Регистратор <> ТаблицаПоследующихПриходов.Регистратор | ТОГДА 1 | КОГДА ТаблицаПоследующихПриходов.ВидДвижения <> &ВидДвиженияПриход | И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов < 0 | И ОсновнаяТаблицаРегистра.Регистратор <> ТаблицаПоследующихПриходов.Регистратор | ТОГДА -1 | ИНАЧЕ 0 | КОНЕЦ) | ИНАЧЕ СУММА(ОсновнаяТаблицаРегистра.СуммаВзаиморасчетов * ВЫБОР | КОГДА ОсновнаяТаблицаРегистра.ВидДвижения = &ВидДвиженияПриход | И ОсновнаяТаблицаРегистра.СуммаВзаиморасчетов > 0 | И ОсновнаяТаблицаРегистра.Регистратор = ТаблицаПоследующихПриходов.Регистратор | ТОГДА 1 | КОГДА ОсновнаяТаблицаРегистра.ВидДвижения <> &ВидДвиженияПриход | И ОсновнаяТаблицаРегистра.СуммаВзаиморасчетов < 0 | И ОсновнаяТаблицаРегистра.Регистратор = ТаблицаПоследующихПриходов.Регистратор | ТОГДА -1 | ИНАЧЕ 0 | КОНЕЦ) | КОНЕЦ | КОНЕЦ КАК СуммаОстатокВВалютеВзаиморасчетов, | ВЫБОР | КОГДА ОсновнаяТаблицаРегистра.Период <= КОНЕЦПЕРИОДА(ОсновнаяТаблицаРегистра.ДоговорКонтрагента.ДатаОкончания, ДЕНЬ) // | И КОНЕЦПЕРИОДА(ОсновнаяТаблицаРегистра.ДоговорКонтрагента.ДатаОкончания, ДЕНЬ) <= &ДатаОтчета | ИЛИ ОсновнаяТаблицаРегистра.ДоговорКонтрагента.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА ДОБАВИТЬКДАТЕ(ОсновнаяТаблицаРегистра.Период, ДЕНЬ, ОсновнаяТаблицаРегистра.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности) | ИНАЧЕ ОсновнаяТаблицаРегистра.Период | КОНЕЦ КАК ДатаОплаты | ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ДатаОтчетаГраница, {(ДоговорКонтрагента.Владелец).* КАК ДоговорКонтрагентаВладелец, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (Сделка).* КАК Сделка}) КАК Остатки | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента КАК ДоговорКонтрагента, | ВзаиморасчетыСКонтрагентами.Сделка КАК Сделка, | ВзаиморасчетыСКонтрагентами.Период КАК Период, | ВзаиморасчетыСКонтрагентами.Регистратор КАК Регистратор, | ВзаиморасчетыСКонтрагентами.ВидДвижения КАК ВидДвижения, | СУММА(ВЫБОР | КОГДА ЗапросПоПродажам.СтоимостьОборот > 0 | ТОГДА ВЫБОР | КОГДА ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов > ЗапросПоПродажам.СтоимостьОборот | ТОГДА ЗапросПоПродажам.СтоимостьОборот | ИНАЧЕ ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов | КОНЕЦ | ИНАЧЕ ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов | КОНЕЦ) КАК СуммаВзаиморасчетов | ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот, | ПродажиОбороты.ДокументПродажи КАК ДокументПродажи | ИЗ | РегистрНакопления.Продажи.Обороты(, &ДатаОтчетаГраница, Регистратор, ) КАК ПродажиОбороты | | СГРУППИРОВАТЬ ПО | ПродажиОбороты.ДокументПродажи) КАК ЗапросПоПродажам | ПО ВзаиморасчетыСКонтрагентами.Регистратор = ЗапросПоПродажам.ДокументПродажи | ГДЕ | (ВзаиморасчетыСКонтрагентами.ВидДвижения = &ВидДвиженияПриход | И ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов > 0 | ИЛИ ВзаиморасчетыСКонтрагентами.ВидДвижения <> &ВидДвиженияПриход | И ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов < 0) | И (НЕ ЗапросПоПродажам.СтоимостьОборот = 0) | | СГРУППИРОВАТЬ ПО | ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента, | ВзаиморасчетыСКонтрагентами.Сделка, | ВзаиморасчетыСКонтрагентами.Период, | ВзаиморасчетыСКонтрагентами.Регистратор, | ВзаиморасчетыСКонтрагентами.ВидДвижения) КАК ОсновнаяТаблицаРегистра | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента КАК ДоговорКонтрагента, | ВзаиморасчетыСКонтрагентами.Сделка КАК Сделка, | ВзаиморасчетыСКонтрагентами.Период КАК Период, | ВзаиморасчетыСКонтрагентами.Регистратор КАК Регистратор, | ВзаиморасчетыСКонтрагентами.ВидДвижения КАК ВидДвижения, | СУММА(ВЫБОР | КОГДА ЗапросПоПродажам.СтоимостьОборот > 0 | ТОГДА ВЫБОР | КОГДА ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов > ЗапросПоПродажам.СтоимостьОборот | ТОГДА ЗапросПоПродажам.СтоимостьОборот | ИНАЧЕ ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов | КОНЕЦ | ИНАЧЕ ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов | КОНЕЦ) КАК СуммаВзаиморасчетов | ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот, | ПродажиОбороты.ДокументПродажи КАК ДокументПродажи | ИЗ | РегистрНакопления.Продажи.Обороты(, &ДатаОтчетаГраница, Регистратор, ) КАК ПродажиОбороты | | СГРУППИРОВАТЬ ПО | ПродажиОбороты.ДокументПродажи) КАК ЗапросПоПродажам | ПО ВзаиморасчетыСКонтрагентами.Регистратор = ЗапросПоПродажам.ДокументПродажи | ГДЕ | (ВзаиморасчетыСКонтрагентами.ВидДвижения = &ВидДвиженияПриход | И ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов > 0 | ИЛИ ВзаиморасчетыСКонтрагентами.ВидДвижения <> &ВидДвиженияПриход | И ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов < 0) | И (НЕ ЗапросПоПродажам.СтоимостьОборот = 0) | | СГРУППИРОВАТЬ ПО | ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента, | ВзаиморасчетыСКонтрагентами.Сделка, | ВзаиморасчетыСКонтрагентами.Период, | ВзаиморасчетыСКонтрагентами.Регистратор, | ВзаиморасчетыСКонтрагентами.ВидДвижения) КАК ТаблицаПоследующихПриходов | ПО (ТаблицаПоследующихПриходов.ДоговорКонтрагента = ОсновнаяТаблицаРегистра.ДоговорКонтрагента) | И (ТаблицаПоследующихПриходов.Сделка = ОсновнаяТаблицаРегистра.Сделка) | И (ТаблицаПоследующихПриходов.Период > ОсновнаяТаблицаРегистра.Период | ИЛИ ТаблицаПоследующихПриходов.Период = ОсновнаяТаблицаРегистра.Период | И ТаблицаПоследующихПриходов.Регистратор >= ОсновнаяТаблицаРегистра.Регистратор) | И (ТаблицаПоследующихПриходов.Период <= &ДатаОтчета) | ПО Остатки.ДоговорКонтрагента = ОсновнаяТаблицаРегистра.ДоговорКонтрагента | И Остатки.Сделка = ОсновнаяТаблицаРегистра.Сделка | И (ОсновнаяТаблицаРегистра.Период <= &ДатаОтчета) | ГДЕ | Остатки.СуммаВзаиморасчетовОстаток > 0 | И (Остатки.ДоговорКонтрагента.ВидДоговора = &СПокупателем | ИЛИ Остатки.ДоговорКонтрагента.ВидДоговора = &СКоммисионером) | | СГРУППИРОВАТЬ ПО | Остатки.ДоговорКонтрагента, | ОсновнаяТаблицаРегистра.Период, | ОсновнаяТаблицаРегистра.Регистратор, | Остатки.СуммаВзаиморасчетовОстаток, | ВЫБОР | КОГДА ОсновнаяТаблицаРегистра.Период <= КОНЕЦПЕРИОДА(ОсновнаяТаблицаРегистра.ДоговорКонтрагента.ДатаОкончания, ДЕНЬ) // | И КОНЕЦПЕРИОДА(ОсновнаяТаблицаРегистра.ДоговорКонтрагента.ДатаОкончания, ДЕНЬ) <= &ДатаОтчета | ИЛИ ОсновнаяТаблицаРегистра.ДоговорКонтрагента.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА ДОБАВИТЬКДАТЕ(ОсновнаяТаблицаРегистра.Период, ДЕНЬ, ОсновнаяТаблицаРегистра.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности) | ИНАЧЕ ОсновнаяТаблицаРегистра.Период | КОНЕЦ) КАК ВложенныйЗапрос | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(, &ДатаОтчета, , ) КАК ПродажиОбороты | ПО ВложенныйЗапрос.РасчетныйДокумент = ПродажиОбороты.ДокументПродажи |ГДЕ | ВложенныйЗапрос.СуммаОстатокВВалютеВзаиморасчетов > 0 |{ГДЕ | ВложенныйЗапрос.РасчетныйДокумент.Проект.* КАК Проект, | ВложенныйЗапрос.ДоговорКонтрагента.Владелец.* КАК Контрагент, | ВложенныйЗапрос.РасчетныйДокумент.*, | ВложенныйЗапрос.СуммаОстатокВВалютеВзаиморасчетов, | ВложенныйЗапрос.ДоговорКонтрагента.Владелец.ОсновнойМенеджерПокупателя КАК ОсновнойМенеджерПокупателя} | |УПОРЯДОЧИТЬ ПО | Проект, | ВложенныйЗапрос.РасчетныйДокумент.Дата |{УПОРЯДОЧИТЬ ПО | Проект.*, | Контрагент.*, | ДатаОплаты} |ИТОГИ | СУММА(СтоимостьОборот), | СУММА(Просрочено), | СУММА(Неоплачено), | МИНИМУМ(ДатаОплаты), | СРЕДНЕЕ(ПросроченоНа) |ПО | ОБЩИЕ, | Проект ИЕРАРХИЯ, | Контрагент, | ДоговорКонтрагента, | РасчетныйДокумент |{ИТОГИ ПО | Проект.*, | Контрагент.*, | ДоговорКонтрагента.*, | РасчетныйДокумент.*} |АВТОУПОРЯДОЧИВАНИЕ"; |
|||
26
dvrk
01.11.21
✎
13:17
|
Запрос.УстановитьПараметр("ДатаОтчетаГраница", КонецДня(ТекущаяДата()));
Запрос.УстановитьПараметр("ВидДвиженияПриход", ВидДвиженияНакопления.Приход); Запрос.УстановитьПараметр("СПокупателем",Перечисления.ВидыДоговоровКонтрагентов.СПокупателем); запрос.УстановитьПараметр("СКоммисионером",Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером); запрос.УстановитьПараметр("ДатаОтчета", ТекущаяДата()); |
|||
27
dvrk
01.11.21
✎
13:47
|
Результат = ЗАпрос.Выполнить().Выгрузить();
Фиолетовый = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("розовый"); ЖелтыйССиним=Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Желтый"); ВасильковыйСЧерным=Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("НейтральноФиолетовоКрасный"); Для каждого Контр из Результат цикл Если Контр.ПросроченоНа > 3 и Контр.ПросроченоНа < 30 и ЗначениеЗаполнено(Контр.Контрагент) Тогда СсылкаКОнтр = Контр.КОнтрагент.ПолучитьОбъект(); видсвойства = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Цвет в подборе"); Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); Запись.Объект = Контр.Контрагент; Запись.Свойство = ВидСвойства; Запись.Прочитать(); Если Запись.Выбран() Тогда Если Запись.Значение = Фиолетовый Тогда Продолжить; иначе Запись.Объект = Контр.Контрагент; запись.Свойство = видсвойства; Запись.Значение = ЖелтыйССиним; Запись.Записать(); СсылкаКонтр.Записать(); КонецЕсли; КонецЕсли; ИначеЕсли Контр.ПросроченоНа > 30 и ЗначениеЗаполнено(Контр.Контрагент) Тогда СсылкаКОнтр = Контр.КОнтрагент.ПолучитьОбъект(); ВидСвойства = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Цвет в подборе"); Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); Запись.Объект = Контр.Контрагент; Запись.Свойство = ВидСвойства; запись.Прочитать(); если запись.Значение = фиолетовый тогда Продолжить; иначе Запись.Объект = Контр.Контрагент; Запись.Свойство = ВидСвойства; Запись.Значение = ВасильковыйСЧерным; Запись.Записать(); СсылкаКонтр.Записать(); КонецЕсли; ИначеЕсли Контр.ПросроченоНа < 3 и ЗначениеЗаполнено(КОнтр.КОнтрагент) Тогда ПустойЦвет = Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка(); СсылкаКОнтр = КОнтр.Контрагент.ПолучитьОбъект(); ВидСвойства = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Цвет в подборе"); Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); Запись.Объект = Контр.Контрагент; Запись.Свойство = ВидСвойства; запись.Прочитать(); если запись.значение = фиолетовый тогда Продолжить; иначе запись.Объект = контр.Контрагент; запись.Свойство = видсвойства; Запись.Значение = ПустойЦвет; Запись.Записать(); СсылкаКонтр.Записать(); КонецЕсли; КонецЕсли; КонецЦикла; |
|||
28
dvrk
01.11.21
✎
13:47
|
не обращайте внимания на имена переменных)
|
|||
29
Ryzeman
01.11.21
✎
13:49
|
(25), (0) если вчера контрагент нам был должен оплату просроченную на 100 дней, а сегодня закрыл долги, то запрос этого не покажет, а цвет его не поменяется ни при каком раскладе (разве что у тебя ещё подписка на событие при записи контрагента ещё как-то по-другому цвет рассчитывает и записывает).
В рамках уже существующего решения привязывай к справочнику контрагентов, опционально - рассчитывай цвет в самом запросе и записывай регистр. Насчёт (13) это уже отдельно разбирайсе почему у тебя данные не берутся или не пишутся, но записывать справочник отдельно не нужно. |
|||
30
Ryzeman
01.11.21
✎
13:52
|
(27) Что произойдёт если просрочено на ровно 3 или 30 дней?
|
|||
31
dvvrk
01.11.21
✎
15:02
|
(30) ну понятно, я могу написать больше или равно, я забыл пароль от акка..
|
|||
32
dvvrk
01.11.21
✎
15:03
|
(29) я понимаю что будет погрешность в день, всё ок
нужно решить как то без создания справочников реквизитов и т д |
|||
33
dvvrk
01.11.21
✎
15:06
|
регистров*
|
|||
34
dvrk
02.11.21
✎
08:04
|
а как отработает мой код, если уже есть запись, которая содержит контр.контрагент ?
|
|||
35
dvrk
02.11.21
✎
08:59
|
я же не увижу что он ругается, он просто пропустит запись если уже есть?
|
|||
36
dvrk
03.11.21
✎
06:32
|
Ещё просьба, подскажите с реализацией, как можно сделать: запросом получить Контрагент - ДниЗадолженности ---- Создать в регистре запись Контрагент - ДниЗадолженности ----- Сделать условие в списке контрагентов если ДниЗадолженности >= 3 И ДниЗадолженности <= 30 Тогда блабла.цвет = красный иначеесли ДниЗадолженности > 30 тогда блабла.цвет = синий иначе не раскрашивать
|
|||
37
dvrk
03.11.21
✎
10:34
|
хелп...
|
|||
38
Kassern
03.11.21
✎
10:47
|
(36) новые вопросы надо создавать в новой теме. За вас никто запрос писать не будет. Покажите ваши попытки решить задачу и какая у вас возникает ошибка при реализации. Если же вопрос к подходу, то вам выше уже все написали, как работать с расцветкой списка.
"запросом получить Контрагент - ДниЗадолженности" - Обращаетесь к регистру взаиморасчетов и получаете дни задолженности, можете посмотреть в типовых отчетах как это реализовано. "Создать в регистре запись Контрагент - ДниЗадолженности" - Вы не умеете создавать новую запись в регистры? Тогда вам нужно изучать основы работы в 1с "Сделать условие в списке контрагентов..." А тут в чем проблема вы же расписали само условие? Получили дни задолженности, а далее ваше условие. |
|||
39
dvrk
03.11.21
✎
10:50
|
(38) не создать новую запись в регистре, там уже имеется запись
|
|||
40
dvrk
03.11.21
✎
10:51
|
(38) я спрашиваю как отработает
Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); Запись.Объект = Контр.Контрагент; Запись.Свойство = ВидСвойства; запись.Прочитать(); если запись.Значение = фиолетовый тогда Продолжить; иначе Запись.Объект = Контр.Контрагент; Запись.Свойство = ВидСвойства; Запись.Значение = ВасильковыйСЧерным; Запись.Записать(); если уже есть запись котрагент - свойство - значениесвойства |
|||
41
dvrk
03.11.21
✎
10:52
|
(38) я запросом и так получаю контрагент - кол-во дней просрочки, условие тоже написал, в отладчике смотрю условие выполняется, захожу в предприятие и цвет не изменился, а у кого то меняется
|
|||
42
Kassern
03.11.21
✎
10:57
|
(40) Если вы используете СоздатьМенеджерЗаписи, тогда вам нужно полностью заполнить измерения и ресурсы. Если с такими измерения уже есть строчка, то она перезапишется в вашем случае.
Если вы используете СоздатьНаборЗаписей, тогда вам нужно с помощью отбора по измерениям получить нужную запись, далее прочитать этот набор, обратиться к нужной строчке из набора и переопределить ресурсы. Учтите, что вы не сможете изменить измерения, по которым делали отбор. |
|||
43
dvrk
03.11.21
✎
11:10
|
(42) то есть у меня норм всё? перезаписывается? Измерения Объект и Свойство, Ресурс Значение
|
|||
44
Михаил Козлов
03.11.21
✎
11:15
|
Чтобы не тормозило при открытии формы, можно завести переменную (кэш), куда пихать "строки", для которых число дней просрочки уже получено запросом.
Правда вопрос, когда и как нужно менять кэш остается открытым. |
|||
45
dvrk
03.11.21
✎
11:19
|
(44) число дней меняется каждый день
|
|||
46
dvrk
03.11.21
✎
11:19
|
(45) ну я имею ввиду может просто +1 на некст день быть, может заплатить и будет 0
|
|||
47
dvrk
03.11.21
✎
11:31
|
я просто понять не могу, я получаю запросом контрагента и задолженность его(дни), какие то красятся по условие, а какие то, которые по этому же условию в отладчике проходят - нет
|
|||
48
Kassern
03.11.21
✎
11:31
|
(43) прочитайте еще раз внимательно (42). У вас используется первый вариант озвученный мной, зачем вы делаете "запись.Прочитать();"? Зачем дважды дублируете Запись.Объект = р.Контрагент; Запись.Свойство = ВидСвойства; ? Вам всего лишь нужно полностью заполнить менеджер записи и записать. В случае, если уже была строка с такими измерениями, то она перезапишется.
|
|||
49
Kassern
03.11.21
✎
11:32
|
(47) отладкой пользоваться умеете?
|
|||
50
dvrk
03.11.21
✎
11:40
|
(49) да я же говорю я в отладчике смотрю условие выполняется и цвет в отладчике нужный стоит, а в предприятии нет
|
|||
51
dvrk
03.11.21
✎
12:08
|
ещё у меня вопрос, я получаю дни задолженности так: https://ibb.co/Q9YV5dR
это всё 1 контрагент, как мне получать просто большее значение из всех? например если на скрине, то получить 264 |
|||
52
dvrk
10.11.21
✎
12:26
|
всё работает, но забыл учесть что есть допустимое кол-во дней просрочки, как в условие их добавить..?
|
|||
53
Ёпрст
10.11.21
✎
12:46
|
(1) а зачем для задаци разукрашивания что-то писать куда -то в РС ?
Нахрена ? |
|||
54
dvrk
10.11.21
✎
12:53
|
(53) потому что нельзя это делать в форме документа, только внешней обработкой
|
|||
55
dvrk
10.11.21
✎
12:55
|
(53) есть свойство цвет в списке и его значение - цвет Объект - цвет - значение цвета, вот для этого
|
|||
56
dvrk
10.11.21
✎
12:57
|
а как мне получать именно ОСНОВНОЙ ДОГОВОР, а не все подряд?
|
|||
57
dvrk
10.11.21
✎
13:12
|
чёт я не вижу ни РСа ОсновныеДоговоры, ни реквизита никакого основнойдоговор...
|
|||
58
Ёпрст
10.11.21
✎
14:22
|
(54) Чего нельзя делать ?
|
|||
59
Ёпрст
10.11.21
✎
14:22
|
Еще раз, зачем для разукрашивания чего-дибо писать что-то в РС ???
|
|||
60
dvrk
10.11.21
✎
14:26
|
и другой вопрос
если у меня иногда в значении может попадаться NULL, я это значение вычитаю, чтобы не было ошибки, я могу в запросе написать выбор когда ЗНАЧЕНИЕ = нулл тогда ЗНАЧЕНИ = 1 иначе ЗНАЧЕНИЕ конец норм? |
|||
61
dvrk
10.11.21
✎
14:30
|
хотя нет, написал так и всё равно NULL, а мне нужно вычитать этот НУЛЛ, как можно сделать чтобы нул был нулём?
|
|||
62
Ёпрст
10.11.21
✎
14:31
|
(0) ЕстьNULL(,)
|
|||
63
dvrk
10.11.21
✎
14:32
|
(62) не понял
|
|||
64
Ёпрст
10.11.21
✎
14:32
|
*(62)--->(60)
Но один хрен, РС там не нужен. |
|||
65
dvrk
10.11.21
✎
14:33
|
(64) ВЫБОР
КОГДА ПродажиОбороты.ДокументПродажи.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности = NULL ТОГДА ПродажиОбороты.ДокументПродажи.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности = 1 ИНАЧЕ ПродажиОбороты.ДокументПродажи.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности КОНЕЦ что здесь поменять? ну как РС не нужен, если у меня список красится записями РСа |
|||
66
Ёпрст
10.11.21
✎
14:33
|
(63) возвращает второе значение, если первый операнд = null
|
|||
67
Kassern
10.11.21
✎
14:33
|
(63) ЕстьNULL(Таблица.ВашРеквизитНаПроверкуНул,ЗначениеЕслиВсеЖеНул)
|
|||
68
Ёпрст
10.11.21
✎
14:33
|
(65) Зачем для покраски списка нужен РС ?
|
|||
69
Kassern
10.11.21
✎
14:34
|
(67) Например ЕстьNull(Таблица.Количество,0) Выдаст либо количество, либо 0, если значение было Null
|
|||
70
Dmitrii
гуру
10.11.21
✎
14:34
|
(60) >> в запросе написать выбор когда ЗНАЧЕНИЕ = нулл тогда ЗНАЧЕНИ = 1 иначе ЗНАЧЕНИЕ конец.
Для этого есть специальная функция языка запросов ЕСТЬNULL(<Значение>, 1). Если <Значение> NULL, вернёт второе значение (в данном случае - 1). Если делать через оператор ВЫБОР, то нельзя сравнивать с NULL. Надо использовать оператор ЕСТЬ NULL.
|
|||
71
dvrk
10.11.21
✎
14:35
|
(68) затем, что всю жизнь здесь список красится так, а условноеоформление мне делать не разрешили
|
|||
72
Kassern
10.11.21
✎
14:35
|
(68) видимо ТС пытается тяжелый запрос выполнять регламентно, чтобы при обновлении списка каждый раз его не делать, а по результату запроса красить строки. Результат решил хранить в РС
|
|||
73
dvrk
10.11.21
✎
14:41
|
(69) это наверное в условии писать нужно, а я в самом поле делаю, наверное (70) подойдёт, пробую
|
|||
74
Ёпрст
10.11.21
✎
14:42
|
(71) пора что-то менять в консерватории
|
|||
75
dvrk
10.11.21
✎
14:43
|
(74) так мне не разрешили....
|
|||
76
Dmitrii
гуру
10.11.21
✎
14:43
|
(68) >> Зачем для покраски списка нужен РС?
Для ускорения. Если на форме списка каждый раз рассчитывать сроки задолженности (или что он там пытается рассчитать), то работать такой список будет ну оооооочееееееееень меееееееееееедлеееееееннооооооо. Гораздо проще предварительно посчитать нужные данные и куда-нибудь их записать (например, в РС), а потом просто оттуда их брать. Другой вопрос, что проще помещать в РС не цвета, а сами сроки задолженности. А раскрашивать список условным оформлением. Причем можно самому пользователю отдать на откуп вопросы выбора цветов и пусть он хоть на каждый день выберет свой оттенок. Одному пользователю надо две градации - выделить цветом только тех, у кого задолженность больше Х дней. А другому нужен целый светофор - меньше дня, от дня до трёх, от трёх до пяти, от пяти до десяти и т.д. |
|||
77
Ёпрст
10.11.21
✎
14:43
|
И как это он всю жизнь красится, если ты еще этот огород только городишь ?
|
|||
78
dvrk
10.11.21
✎
14:44
|
(77) руками запись в рс.
|
|||
79
Dmitrii
гуру
10.11.21
✎
14:44
|
(73) Ты дурачок?
Абсолютно идентично
|
|||
80
dvrk
10.11.21
✎
14:45
|
(79) я думал 1ая конструкция для вкладки "Условия" в конструкторе запросов... сори
|
|||
81
MyNick
10.11.21
✎
14:49
|
(68) "Зачем для покраски списка нужен РС ?"
Ну как же зачем. Ведь дублирование данных и рассинхрон с реальными данными - это всё для чувства настоящего геморроя. Начинается "поддержка" этого регистра. Поиск багов. Задания по синхроницации. И т.п. Патаму шта до условного оформления еще погоны одинэсника не набрали достаточное количество звезд. |
|||
82
Dmitrii
гуру
10.11.21
✎
14:50
|
(80) В условиях ГДЕ лучше вообще не использовать ни ЕСТЬNULL ни ВЫБОР КОГДА ЕСТЬ NULL ТОГДА КОНЕЦ.
В условиях лучше написать что-то типа этого.
|
|||
83
MyNick
10.11.21
✎
14:53
|
(72) Кажется, если в базе порядок и последовательность, то дернуть дату > 3 дней по документу задолженности должен выполняться мгновенно. Даже на больших базах.
А если у ТС в базе бардачелло и вместо наведения порядка желают воткнуть хромоногую колесницу, которая по этому бардак-полю будет ездить - их конечно право. Но решение с точки зрения архитектуры идиотское. |
|||
84
MyNick
10.11.21
✎
14:55
|
Я еще не удивлюсь, если у него там этот регистр будут бабки из бухгалтерии руками заполнять. После прокрыживания контрагентов в эксель файле.
|
|||
85
Dmitrii
гуру
10.11.21
✎
14:58
|
(81) Интересно как ты себе представляешь раскраску форму списка справочника контрагентов на лету, где несколько тысяч элементов, у каждого контрагента по несколько договоров и есть задолженность по различным документам.
Пока расчет всего этого счастья для условного оформления будет выполняться на лету, пользователи будут успевать весь кофе в офисе выпить. (83) >> если в базе порядок и последовательность. А это уже зависит от конкретного бизнес-процесса. Если отгрузками занимается один человек (например, отдел продаж), а разнесением оплат - другой (например, бухгалтерия или казначейство), то постоянное изменение данных о сроках оплат - обычная рабочая ситуация, а вовсе не бардак. И да - придётся париться с синхронизацией и постоянной актуализацией данных о сроках. |
|||
86
MyNick
10.11.21
✎
15:02
|
(85) я представляю себе требование красить список на несколько тысяч контрагентов идиотским требованием и извращенной задачей.
Автор бы погрузился в аналитику немного и начал с вопроса - а зачем вообще красить. Кому это надо Для чего Какие решения будут приниматься на основании этой информации И т.д. Красить строки - вообще моветон. В типовых списках нигде ничего не красится. И не нужно этого делать. |
|||
87
dvrk
10.11.21
✎
15:02
|
(86) чтобы видели менеджеры сразу контрагент платит или нет и сколько
|
|||
88
MyNick
10.11.21
✎
15:03
|
Как минимум - это должен быть не динамический список.
А наверняка отчет на СКД, который разделит контриков по группам - в количестве дней задолженности. |
|||
89
dvrk
10.11.21
✎
15:03
|
(82) ВЫБОР
КОГДА ПродажиОбороты.ДокументПродажи.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ПродажиОбороты.ДокументПродажи.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности КОНЕЦ всё равно нул в результате |
|||
90
MyNick
10.11.21
✎
15:04
|
(88) Зачем им это видеть в списке на несколько тысяч контрагентов?
Там же в типовых есть механизм, ограничивающий отгрузку неплательщикам - чем он не устраивает? |
|||
91
Dmitrii
гуру
10.11.21
✎
15:04
|
(86) В целом я с тобой согласен. Меня самого бесят конфигурации, где массово применяется раскрашивание.
Но боюсь, что в данном конкретном случае решает не разработчик, а заказчик. Мало того, заказчик ещё и решает - как именно это должно делаться - через РС, хранящий цвета. |
|||
92
Dmitrii
гуру
10.11.21
✎
15:05
|
(89) Не звизди.
Либо в тексте запроса что-то накосячил, либо не туда смотришь. Чудес не бывает. А ты сейчас пытаешься заявить о свершении чуда Господня на отдельно взятом сервере. |
|||
93
dvrk
10.11.21
✎
15:06
|
(90) я не спорю, всё это есть, но у меня не вышло убедить начальство
|
|||
94
dvrk
10.11.21
✎
15:07
|
(92) да я больше ничего не писал, обработку запускаю и выдаёт ошибку Преобразование значения к типу Число не может быть выполнено
Если (Контр.ПросроченоНа - Контр.ДниОтсрочки) >= 5 и (Контр.ПросроченоНа - Контр.ДниОтсрочки) <= 30 и ЗначениеЗаполнено(Контр.Контрагент) Тогда |
|||
95
MyNick
10.11.21
✎
15:08
|
Я просто не понимаю, ну вот один контр синий, другой зеленый, третий фиолетовый.
Манагер оформляет заказ. Смотрит на этот ЛГБТ флаг в списке (начальство сказало пырить в цвета), и .... принимает решение оформить заказ "в качестве исключения", "в последний раз вот этому контрику, точно в последний", патаму што у менеджера премия зависит от количества заказов ))) |
|||
96
dvrk
10.11.21
✎
15:08
|
(95) это уже не моя проблема
|
|||
97
Dmitrii
гуру
10.11.21
✎
15:09
|
(94) И как этот текст связан с куском текста запроса из (89)?
|
|||
98
MyNick
10.11.21
✎
15:09
|
(96) если фикс, то количество велосипедов это твоя прямая проблема. Ну разве что если валить оттуда не собрался в ближайшее время.
|
|||
99
dvrk
10.11.21
✎
15:10
|
(97) ну вот поле, которое я в 89 пишу это Контр.ДниОтсрочки
|
|||
100
Dmitrii
гуру
10.11.21
✎
15:10
|
(94)+(97) Либо приводи весь код (и запрос и работа с результатами запроса), либо перестань задавать глупые вопросы.
|
|||
101
MyNick
10.11.21
✎
15:10
|
+(96) ты просто не разобрался с требованиями бизнеса. Что конкретно хочет заказчик и как он представляет себе процесс работы с "новым функционалом", насколько это будет эффективно, и какие решения еще можно предложить.
|
|||
102
Dmitrii
гуру
10.11.21
✎
15:11
|
(99) Тебе заказчик запрещает отладчиком пользоваться?
Ты результат запроса можешь посмотреть? |
|||
103
dvrk
10.11.21
✎
15:11
|
(102) я же сказал что в результате запроса НУЛЛ у этого поля
|
|||
104
Dmitrii
гуру
10.11.21
✎
15:12
|
(101) Боюсь, на данном этапе спорить бессмысленно. Автор этот этап уже про*рал.
|
|||
105
Dmitrii
гуру
10.11.21
✎
15:15
|
(103) Еще раз. Этого не может быть, если код из (89) - это именно это поле.
Либо ты не туда смотришь, либо сюда написал не тот код. В поле запроса, полученном из (89) NULL не может быть. Будет всегда либо 0, либо ПродажиОбороты.ДокументПродажи.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности. Другой вопрос, что может быть в ПродажиОбороты.ДокументПродажи.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности у тебя не NULL и не число, а что-то другое (строка, ссылка, булево, ....). |
|||
106
dvrk
10.11.21
✎
15:17
|
(105) сейчас покажу
|
|||
107
dvrk
10.11.21
✎
15:25
|
(105) блин, не успею уже, только когда домой приеду, ну в общем ДопустимоеЧислоДнейЗадолженности это реквизит справочника договорыконтрагентов и он Число, на выходе он почему то NULL, а не ноль
|
|||
108
Kassern
10.11.21
✎
15:27
|
(107) потому что вы не представляете как соединяются таблицы. Если бы у вас было преставления, вы бы не удивлялись null значениям в итоговой таблице...
|
|||
109
Dmitrii
гуру
10.11.21
✎
15:32
|
(108) По логике даже в результате соединения таблиц код из (89) не вернул бы ему NULL.
Автор либо накосячил в тексте запроса, либо смотрит не то поле, либо обрабатывает результат запроса как-то не так, как рассказывает. А может тупо не обновил конфигурацию БД и работает со старым кодом. Отсюда всё равно не видно. А целиком код он не показывает. |
|||
110
Kassern
10.11.21
✎
15:35
|
(109) да дело не в этом куске кода, где он обходит уже нул, а сам факт возникновения нула.
|
|||
111
dvvrk
10.11.21
✎
23:17
|
(110) вот я и не понимаю почему NULL, если это поле - реквизит справочника и тип его Число 10 0
|
|||
112
dvrk
11.11.21
✎
06:39
|
походу нулл изза галочки общие итоги
хз са не ставил ее |
|||
113
dvrk
11.11.21
✎
06:40
|
хотя почему общий итог чисел равен нулл???
|
|||
114
Kassern
11.11.21
✎
09:14
|
(113) " |ИТОГИ
| СУММА(СтоимостьОборот), | СУММА(Просрочено), | СУММА(Неоплачено), | МИНИМУМ(ДатаОплаты), | СРЕДНЕЕ(ПросроченоНа) |ПО | ОБЩИЕ, | Проект ИЕРАРХИЯ, | Контрагент, | ДоговорКонтрагента, | РасчетныйДокумент" О чем это говорит? Как работают итоги в курсе? |
|||
115
Kassern
11.11.21
✎
09:16
|
(113) Дам подсказку. Попробуйте вот такой кусок кода выполнить:
Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ | РеализацияТоваровУслугТовары.Ссылка КАК Ссылка, | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, | РеализацияТоваровУслугТовары.Количество КАК Количество, | РеализацияТоваровУслугТовары.Ссылка.Партнер КАК Партнер |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка.Дата >= &Дата |ИТОГИ | СУММА(Количество) |ПО | ОБЩИЕ, | Номенклатура, | Ссылка"; Запрос.УстановитьПараметр("Дата",НужнаяДата); Выборка=Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка.Следующий() Цикл КонецЦикла; Что будет в значениях группированных полей, как вы думаете?) |
|||
116
Kassern
11.11.21
✎
09:17
|
почитайте хотя бы это https://helpme1c.ru/yazyk-zaprosov-1s-8-3-dlya-nachinayushhix-programmistov-itogi
|
|||
117
dvrk
17.11.21
✎
08:02
|
(116) спасибо
А ещё вопрос, вот допустим я получаю запросом контрагентов, разукрашиваю их создавая запись в регистре, а как для всех остальных, которые в запрос не попали, создать запись? |
|||
118
dvrk
17.11.21
✎
08:03
|
ну т.е. нужно для всех контрагентов, которых нет в запросе, создать запись в регистре с белым цветом или пустым
|
|||
119
dvrk
17.11.21
✎
08:06
|
или мне проще все записи перед началом обработки делать с пустым цветом, а потом разукрашивать обработкой которые нужно?
|
|||
120
dvrk
17.11.21
✎
08:07
|
ой т.е. делать записи ВСЕХ контрагентов из базы с белым цветом, а потом обработкой нужных разукрасить?
|
|||
121
dvrk
17.11.21
✎
08:17
|
подскажите..
|
|||
122
Мимохожий Однако
17.11.21
✎
09:01
|
ОФФ: Как раскрашивать цветами, если менеджер дальтоник?
|
|||
123
dvrk
18.11.21
✎
08:07
|
чо никто не подскажет?
Дано: Список контрагентов запросом полученных и РС, который перезапишет записи по этим контрагентам, как перезаписать записи контрагентами, которых нет в результате запроса? |
|||
124
dubolom
18.11.21
✎
08:21
|
(123) По какому принципу перезаписывать? Вместо данного контрагента из запроса - какого ставить?
|
|||
125
Ryzeman
18.11.21
✎
08:30
|
(123) Ты не можешь перезаписывать и обрабатывать то, что нигде не получаешь.
Я тебе ещё на первой странице писал, что если хочешь выбрать и перезаписать весь справочник, то надо в запросе выбирать его весь, а свои расчётные данные соединять при помощи ЛЕВОЕ СОЕДИНЕНИЕ. То, что не привяжется обрабатывать через ЕСТЬNULL. Если же в твоей логике перезаписывать и создавать новые записи не обязательно, то можно обрабатывать незаполненные значения во время как "разукрашиваешь" и в коде прописать отсутствующее значение как "белое". |
|||
126
dvrk
18.11.21
✎
08:37
|
(125) вот я и спрашиваю, про отсутствующее значение, то есть запись в РСе есть, пример Контрагент1 - ЦветСписка - Красный
таким он стал в результате прошлого запуска обработки, сегодня контрагент заплатил, обработка отработала, разукрасила всех, кого нужно, но КОнтрагент1 остался красным, его в результате запроса нет, как мне белым его сделать этой же обработкой ? |
|||
127
Ryzeman
18.11.21
✎
09:04
|
(126) Я прекрасно понял твою проблему. Перечитай что я писал (29) и (125). Я написал тебе сразу что у тебя не работает, почему и как это исправить. За тебя твою работу никто никогда выполнять не будет, а направление что искать и куда копать тебе дано. Если не знаешь как писать запросы - почитай статьи\посмотри курсы. Если не знаешь, что такое ЛЕВОЕ СОЕДИНЕНИЕ - изучай соединения. Если ты в принципе не понимаешь что написано в (125), садись учить 1с с начала. Что такое справочники, как хранятся данные, как писать запросы, какие есть типы соединения и т.д.
|
|||
128
dvrk
18.11.21
✎
09:18
|
(127) хорошо, спасибо
|
|||
129
dvrk
18.11.21
✎
09:24
|
(127) ещё вопрос есть, а если я перед окрашиванием буду удалять все записи из РСа?
|
|||
130
Ryzeman
18.11.21
✎
09:57
|
(129) Если под окрашиванием ты имеешь ввиду выполнения твоего расчёта и записи - можно и так, целиком логику своего решения ты нигде не писал. Если ты сможешь потом отсутствующие записи в регистре обработать как белые или какой тебе цвет нужен.
|
|||
131
VladZ
18.11.21
✎
10:15
|
Дичь какая-то. Зачем в регистр писать? Сразу нельзя раскрасить?
|
|||
132
dvrk
18.11.21
✎
10:16
|
(130) я имею ввиду перед всем окрашиванием, я буду получать все записи с окрашиванием - очищать их и после уже моё окрашивание будет отрабатывать
|
|||
133
dvrk
18.11.21
✎
10:16
|
(131) нельзя условное оформление
|
|||
134
dvrk
18.11.21
✎
10:19
|
(130) у меня красятся в 2 цвета все, примерно так я подумал сделать: перед окрашиванием, я получаю запросом все записи с этими цветами, очищаю их и после этого выполняю свою обработку, т.е. старые затираются и в цвете будут только те, которые в обработке раскрасились
|
|||
135
dvrk
18.11.21
✎
10:23
|
просто я сразу не подумал что будет с теми, кто в результат запроса не попадёт, в (130) решает мою проблему же?
|
|||
136
dvrk
23.12.21
✎
08:48
|
делаю заново, запутался
|
|||
137
dvrk
23.12.21
✎
08:48
|
Запрос1 = Новый Запрос;
запрос1.Текст = "ВЫБРАТЬ | Контрагенты.Ссылка КАК Ссылка |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | Контрагенты.ПометкаУдаления = ЛОЖЬ"; Результат1 = Запрос1.Выполнить().Выгрузить(); ВидСвойства = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Цвет в подборе"); Для Каждого ВсеКонтр из Результат1 Цикл СсылкаКОнтр = ВсеКонтр.Ссылка.ПолучитьОбъект(); Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); Запись.Объект = ВсеКонтр.Ссылка; Запись.Свойство = ВидСвойства; запись.Прочитать(); Запись.Объект = ВсеКонтр.Ссылка; Запись.Свойство = ВидСвойства; Запись.Значение = Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка(); Запись.Записать(); КонецЦикла; я этим делаю всех контрагентов без цвета? |
|||
138
dvrk
23.12.21
✎
08:54
|
?????
|
|||
139
Kassern
23.12.21
✎
09:20
|
(138) зачем вы так делаете "запись.Прочитать();"? Если учитесь, то создайте в тестовой базе регистр сведений и попробуйте варианты записи через СоздатьМенеджерЗаписи(); СоздатьНаборЗаписей() СоздатьКлючЗаписи(). Почитайте СП, посмотрите примеры как данные методы работают. Может тогда вы не будете дважды заполнять менеджер записи
|
|||
140
dvrk
23.12.21
✎
09:32
|
(139) ну я видимо не совсем понимаю где я дважды что-то делаю
|
|||
141
Kassern
23.12.21
✎
09:36
|
(140) Вот это зачем?
Запись.Объект = ВсеКонтр.Ссылка; Запись.Свойство = ВидСвойства; запись.Прочитать(); Запись.Объект = ВсеКонтр.Ссылка; Запись.Свойство = ВидСвойства; |
|||
142
Kassern
23.12.21
✎
09:38
|
(140) Если бы вы создавали набор, тогда да, можно было установить отбор по измерениям, а далее прочитать() чтобы этот набор заполнить по отбору. Объясните мне, зачем вы для менеджера записи используете метод Прочитать()?
|
|||
143
dvrk
23.12.21
✎
09:43
|
(142) не знаю, по аналогии с заполнением делал
Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); если запись.Значение = фиолетовый тогда Продолжить; иначе Запись.Объект = СсылкаКОнтр2; Запись.Свойство = ВидСвойства; Запись.Значение = Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка(); Запись.Записать(); КонецЕсли; а так? |
|||
144
Kassern
23.12.21
✎
09:50
|
Вот вам пример из СП:
Курс = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи(); Курс.Валюта = ВыбВалюта; Курс.Период = ТекущаяДата(); Курс.Прочитать(); Если Не Курс.Выбран() Тогда Курс.Период = ТекущаяДата(); Курс.Валюта = ВыбВалюта; Курс.Курс = 41.35; Курс.Кратность = 1; КонецЕсли; Если ВвестиЧисло(Курс.Курс, "Введите курс на сегодня",15,5) Тогда Курс.Записать(); КонецЕсли; Здесь Используется 2 метода в связке Прочитать() и Выбран(), чтобы проверить есть ли такая запись или нет. У вас же никакого условия нет, вы тупо создали менеджер 1 раз его заполнили, потом зачем то прочитали и еще раз заново заполнили. |
|||
145
Kassern
23.12.21
✎
09:52
|
(143) "не знаю, по аналогии с заполнением делал" поэтому вам и посоветовал разобраться в вопросе, открыть СП и в тестовой базе попробовать разные варианты записи
|
|||
146
Мимохожий Однако
23.12.21
✎
09:58
|
(143) если запись.Значение = фиолетовый тогда
Продолжить; Это ошибка, т.к. запись еще не отобрана и не прочитана |
|||
147
dvrk
23.12.21
✎
10:03
|
(146) Для Каждого ВсеКонтр из Результат1 Цикл
СсылкаКОнтр2= ВсеКонтр.Ссылка.ПолучитьОбъект(); СсылкаКОнтр = ВсеКонтр.Ссылка.ПолучитьОбъект(); видсвойства = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Цвет в подборе"); Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); Запись.Объект = ВсеКонтр.ссылка; Запись.Свойство = ВидСвойства; Запись.Прочитать(); Если Запись.Выбран() Тогда Если Запись.Значение = Фиолетовый Тогда Продолжить; иначе Запись.Объект = ВсеКонтр.ссылка; запись.Свойство = ВидСвойства; Запись.Значение = ПустойЦвет; Запись.Записать(); КонецЕсли; КонецЕсли; КонецЦикла; |
|||
148
dvrk
23.12.21
✎
10:13
|
ёмаё не то
|
|||
149
Kassern
23.12.21
✎
10:17
|
(148) сделайте проще, создайте запрос к регистру с проверкой на цвет. Далее уже просто создавайте, или нет менеджер записи с нужными полями без прочитать() и выбран()
|
|||
150
Ryzeman
23.12.21
✎
10:18
|
Запрос1 = Новый Запрос;
запрос1.Текст = "ВЫБРАТЬ | Контрагенты.Ссылка КАК Объект, | &ПВХЦвет КАК Свойство, | ВЫБОР | КОГДА ДанныеДляРасчета.ПросроченоНа ЕСТЬ NULL ИЛИ ДанныеДляРасчета.ПросроченоНа = 0 Тогда &Белый | КОГДА ДанныеДляРасчета.ПросроченоНа > 0 И ДанныеДляРасчета.ПросроченоНа <= 3 Тогда &Желтый | КОГДА ДанныеДляРасчета.ПросроченоНа > 3 Тогда &Фиолетовый | КОНЕЦ КАК Значение |ИЗ | Справочник.Контрагенты КАК Контрагенты | ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДляРасчета КАК ДанныеДляРасчета | ПО Контрагенты.Ссылка = ДанныеДляРасчета.Контрагент |ГДЕ | Контрагенты.ПометкаУдаления = ЛОЖЬ"; Запрос1.УстановитьПараметр("Белый", ЦветБелый); Запрос1.УстановитьПараметр("Желтый", ЦветЖелтый); Запрос1.УстановитьПараметр("Фиолетовый", ЦветФиолетовый); Запрос1.УстановитьПараметр("ПВХЦвет", ВидСвойства ); Набор = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); Набор.Загрузить(Запрос1.Выполнить().Выгрузить()); Набор.Записать(Истина); Первый запрос кидаешь во временную таблицу ДанныеДляРасчета, затем выполняешь это. Цвета, пороговые значения и обработка null\пустых - сам переделывай. |
|||
151
Kassern
23.12.21
✎
10:20
|
(150) набором удобно, когда надо сразу множество строк в регистре изменить, а если всего 1 то можно менеджеров заполнить.
|
|||
152
Ryzeman
23.12.21
✎
10:21
|
(150)+ Тьфу ты, забыл Набор.Отбор.Свойство.Установить(ВидСвойства);
перед записью. |
|||
153
Ryzeman
23.12.21
✎
10:22
|
(151) тут не в наборе\менеджере проблема. В задаче совокупно. Человек уже 2 месяца мучается... Я ХЗ, за два месяца уже в принципе можно не то, что выучить язык запросов, а разговаривать на нём.
|
|||
154
Kassern
23.12.21
✎
10:26
|
(153) не хочет народ учиться и вникать...
|
|||
155
dvrk
23.12.21
✎
10:26
|
(153) не, я сделал и случайно удалил обработку)
|
|||
156
Kassern
23.12.21
✎
10:27
|
(155) ну раз САМИ сделали, что мешало заново обработку написать?
|
|||
157
dvrk
23.12.21
✎
10:28
|
(156) ну вот раскраску я сделал, а как у всех контрагентов перед раскраской делал белый цвет - не помню
|
|||
158
osa1C
23.12.21
✎
11:34
|
вот это сила... мундира... ветка уже недели две на плаву... неужели нельзя было что-то сделать за это время?
|
|||
159
dvrk
23.12.21
✎
11:49
|
(158) ну вообще то ветка не на плаву и я написал спустя месяц после того как получилось сделать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |