|
Остаток по регистру в форме списка документа | ☑ | ||
---|---|---|---|---|
0
Tolia_2016
08.10.16
✎
11:26
|
Всем хороших выходных!
Если очень хочется, можно все таки добавить в форму списка колонку Остаток и в ПриВыводеСтроки высчитывать и прописывать в неё остаток по регистру? Я знаю, что можно сделать реквизит шапки документа и при записи в него и вписывать, но мне так не подходит (( А высчитывать на лету - тормозень же будет! Есть какие либо решения еще? И чем быстрее будет, запросом или прямым обращением к регистру? База файловая, пользователь будет один. Спасибо. |
|||
1
Злопчинский
08.10.16
✎
11:33
|
Нувбабахешь туда допустим остаток по складу, а по Ом внезапно образуется ещё склад
|
|||
2
Tolia_2016
08.10.16
✎
11:43
|
Ну и что? В документе может быть только один склад.
А в запросе по фильтру: ДанныеСтроки.Ссылка.Склад... |
|||
3
Tolia_2016
08.10.16
✎
11:45
|
Если бы обработчик подписки на событие разрешал обход программной записи документа...
И кстати, почему так мало предустановленных событий? А мне вот ПослеЗаписи надо, а нету! |
|||
4
Lexey_
08.10.16
✎
11:50
|
(0) "И чем быстрее будет, запросом или прямым обращением к регистру?", и чем же, по-твоему, одно от другого отличается?
|
|||
5
Tolia_2016
08.10.16
✎
11:51
|
хз
|
|||
6
mistеr
08.10.16
✎
11:55
|
(0) >База файловая, пользователь будет один.
При таких условиях можешь делать. Тормозить будет, но приемлемо. Только не в ПриВыводеСтроки, а в ПриПолученииДанных. |
|||
7
Tolia_2016
08.10.16
✎
11:56
|
Просто есть дата запрета редактирования документов, отслеживается в т.ч. и подпиской на событие, и если делать через реквизит шапки документа, заретные доки будут выдавать ошибку!
|
|||
8
Tolia_2016
08.10.16
✎
12:00
|
(6) Спасибо, но не знаю.. Засада со всех сторон. Предустановленного события ПослеЗаписи нету, что бы держать актуальным реквизит шапки тот(иначе бы просто достаточно было открывать форму запретного дока только на чтение и всё), а расчет на лету - тормоза (
Напрашивается вывод - удалить к оленям колонку Остаток! |
|||
9
mistеr
08.10.16
✎
12:03
|
(8) >удалить к оленям колонку Остаток!
Самое правильное решение. Тем более, если остаток привязывается к ДОКУМЕНТУ, значит где-то в дизайне косяк. |
|||
10
Tolia_2016
08.10.16
✎
12:05
|
(9) Он и не привязывается! Если только через реквизит шапки для бытсрого показа в списке!
Есть заказ покупателя, ну удобно же сразу видеть сколько из него уже выбрано, правильно? Чем какие то дополнительные кнопки тыкать - показать остаток... А если у заказа сделать реквизит остаток - его надо отгрузками-основаниями будет актуализировать! А подписки на событие ПослеЗаписи нету! После того как отгрузка проведется! Что мне писать в реквизит? |
|||
11
Tolia_2016
08.10.16
✎
12:07
|
+10 В самой отгрузке писать:
заказ = получитьобъект заказ.остаток = ... заказ. записать() ? Это ж совсем бред. |
|||
12
Tolia_2016
08.10.16
✎
12:08
|
А если отгрузку удалят?
|
|||
13
Tolia_2016
08.10.16
✎
12:09
|
Там гулинька наплакала предустановленных событий, может кто скажет которая как "ПриЗаписи", когда документ уже двинул регистры, срабатывает? И на удаление реагирует
|
|||
14
mistеr
08.10.16
✎
12:10
|
(10) Да делай уже колонку, разрешаю.
|
|||
15
mistеr
08.10.16
✎
12:12
|
(11) Это ты еще не подумал, что делать, если прошлые документы по заказу поменяли.
|
|||
16
Tolia_2016
08.10.16
✎
12:16
|
Да, остается только ПриПолученииДанных ((
|
|||
17
Tolia_2016
08.10.16
✎
12:21
|
Запрос хоть правильный написал?
ВЫБРАТЬ Остатки.СуммаОстаток КАК Остаток ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки( , ЗаказПокупателя = &ЗаказПокупателя И Валюта = &Валюта) КАК Остатки |
|||
18
Tolia_2016
08.10.16
✎
12:22
|
Потом через
Возврат Результат.Выполнить().Выгрузить()[0].Остаток |
|||
19
Злопчинский
08.10.16
✎
12:24
|
(10) все тупо и плохо
Документ - для фиксации действия, внёс, записал и провёл, причём это все желательеэно делать по одной кнопке из типа заказа или некоего арм, А подготовку к выписке документа, осмотр состояния остатков, осмотр состояния заказа, коавряние в носу, чай с бухами и продпвагами - это все ПРОЦЕСС подготовки к мгновенному действию - вот здесь и отражай все что надо А то начинают из тривиального документа городить многоплановый отчет-арм |
|||
20
Tolia_2016
08.10.16
✎
12:25
|
(19) :(
|
|||
21
RomanYS
08.10.16
✎
12:26
|
(17) нет конечно
ЗаказПокупателя В (&ЗаказыПокупателей) Результат запроса кешировать в соответствие, а оттуда Остаток = ТвоеСоответствие[ТекЗаказ]; |
|||
22
Tolia_2016
08.10.16
✎
12:28
|
(21) эээ... а можно плиз по подробнее?
Результат запроса кешировать в соответствие - это как? |
|||
23
Lexey_
08.10.16
✎
12:30
|
(22) Соответствие.Вставить(Заказ, Остаток);
|
|||
24
Tolia_2016
08.10.16
✎
12:32
|
Запрос
ЗаказПокупателя В (&ЗаказыПокупателей) Запрос.Выполнить А дальше? Соответствие.Вставить(ДанныеСтроки.Ссылка.Закза, Запрос.Остаток) Так что ли? |
|||
25
RomanYS
08.10.16
✎
12:32
|
(22)
Соответствие.Вставить(Выборка.Заказ, Выборка.Остаток); |
|||
26
Tolia_2016
08.10.16
✎
12:33
|
А, понял. Спасибо!!
|
|||
27
RomanYS
08.10.16
✎
12:34
|
(24)
ДанныеСтроки.Ссылка.Закза??? У тебя что список не заказов? Такая конструкция сама по себе тормоз, пока не уберешь дальше даже смысла оптимизировать нет |
|||
28
Tolia_2016
08.10.16
✎
12:42
|
(27) Да нет, я образно написал.
СписокПриПолученииДанных(Элемент, ОформленияСтрок) Для Каждого Стр Из ОформленияСтрок Цикл Стр.Ячейки.ОстатокПоЗаказу.Текст = Соответствие.Получить(Стр.ДанныеСтроки.Ссылка) |
|||
29
RomanYS
08.10.16
✎
12:45
|
(28) так нормально
|
|||
30
Tolia_2016
08.10.16
✎
13:01
|
Долго думал почему В (&ЗаказыПокупателей) и где брать собственно &ЗаказыПокупателей.
Вот что получилось: МассивЗаказов = Новый Массив; Для Каждого Стр Из ОформленияСтрок Цикл МассивЗаказов (Стр.ДанныеСтроки.Ссылка); КонецЦикла; Соответствие = Новый Соответствие; Запрос = Новый Запрос; Запрос.Текст = ВЫБРАТЬ ЗаказПокупателяОстатки.ЗаказПокупателя КАК ЗаказПокупателя, ЗаказПокупателяОстатки.СуммаОстаток КАК Остаток ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки( , ЗаказПокупателя В (&МассивЗаказов) И Валюта = &Валюта) КАК ЗаказПокупателяОстатки Запрос.УстановитьПараметр("МассивЗаказов", МассивЗаказов); Запрос.УстановитьПараметр("Валюта", Стр.ДанныеСтроки.Ссылка.Валюта); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Соответствие.Вставить(Результат.ЗаказПокупателя, Результат.Остаток); КонецЦикла; Для Каждого Стр Из ОформленияСтрок Цикл Стр.Ячейки.НеоплаченныйОстаток.Значение = Соответствие.Получить(Стр.ДанныеСтроки.Ссылка); КонецЦикла; |
|||
31
Tolia_2016
08.10.16
✎
13:01
|
Работает.
|
|||
32
RomanYS
08.10.16
✎
16:47
|
(30) единственно что смущает это
Стр.ДанныеСтроки.Ссылка.Валюта Как по оптимальности (скорей всего есть Стр.ДанныеСтроки.Валюта), так и ещё по смыслу: зачем вообще валюта и почему берешь её из последней строки? |
|||
33
Tolia_2016
08.10.16
✎
17:02
|
(32) Да, ошибочка, хоть и работало, не заметил сразу.
Уже исправил, именно Стр.ДанныеСтроки.Валюта! В смысле из последней, из текущей? Я вообще что то ПриПолученииДанных не очень понимаю, в смысле как вызывается. Ставил в начало Сообщить("!"), ну сообщает три раза(три документа в списке). Кликание по докам и прочие дрыганья по списку не добавляет сообщений, но при этом закрыть табло не дает... Просто пытался отбор сделать по этой колонке, типа: ДокументСписок.Отбор.ДокументСсылка.ВидСравнения = ВидСравнения.ВСписке; ДокументСписок.Отбор.ДокументСсылка.Использование = Истина; ДокументСписок.Отбор.ДокументСсылка.Значение = СписокОтбора; Где СписокОтбора = список значений, содержащий ТОЛЬКО документы с не нулевыми остатками. ДокументСсылка - реквизит шапки, содержащий ссылку на самого себя. Как то странно работает, то не работает, а потом вообще, видимо, зацикливаться стал - кулер на i5-ом взлетал от процесса 1cv8. |
|||
34
RomanYS
08.10.16
✎
17:43
|
(33) ПриПолученииДанных вызывается для порции отображаемых (условно: попадающих на экран с небольшим запасом вверх/вниз). Почему у тебя 3 раза на 3 строки - непонятно.
По идее должно вызываться при сроллинге/обновлении/изменениях. Отборы там ставить не стоит - получишь рекурсивный циклический вызов. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |