Как я понял, собирая опыт по выводу остатков, "ПриПолученииДанных" предпочтитетельней. Осложняет, что довольно сложно проверитью
Codeby Academy
Практика и мастерство
От основ до продвинутого — программы для практиков Codeby.
К курсу →
Может, не совсем в тему. Что-то подобное делал в 7ке. В форме списка справочника завел поле, показывающее картинку, дочка мне разрисовала несколько состояний годности товара в нужном размере (в пикселях),На днях получил заказ: в журнале документов (счет на оплату покупателю) в виде специальных значков отображать, стадии отгрузки по данному счету ( не отгружен, отгружен частично, полностью отгружен).
тормозов не наблюдал. Впрочем, за 8ку не скажу, не знаком <_<
Да будь ты проще - сделай быстро и легко. Микросекунды сервера не дороже твоих часов.
И только когда, хотя бы заметишь замедление (а это сомнительно) наводи лоск.
Я вот не понял насчет запроса. Для извлечения поля из документа формируешь красивый Запрос?
Опять же, трудов положил сколько..
А что, так неправильно?:
И только когда, хотя бы заметишь замедление (а это сомнительно) наводи лоск.
Я вот не понял насчет запроса. Для извлечения поля из документа формируешь красивый Запрос?
Опять же, трудов положил сколько..
А что, так неправильно?:
Код:
Процедура ДокументСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
ОформлениеСтроки.Ячейки.Пиктограмма.ОтображатьКартинку = Истина;
ОформлениеСтроки.Ячейки.Пиктограмма.Картинка = НомерКартинки(ДанныеСтроки.Ссылка.СтадияГотовности);
"ПриВыводеСтроки" вызывается каждый раз при появлении в форме списка строки тбличной части. Т.е. ваш запрос будет работать постоянно, не зависимо картинка уже выведена или нет. Следовательно, постоянные запросы к БД - напряг и тормоза. Используйте метод "ПриПолученииДАнных" он вызывается только для новых строк, которые еще НЕ ОТОБРАЖАЛИСЬ. Первый параметр - коллекция оформления строк. выполните запрос 1 раз, и обходите коллекцию в цикле. Таким образом вы выполните запрос минимальное количество раз.
Да собственно запрос простенький, к одному регистру, параметизированный. Выполняется в миг.
Кстати в отладчике посидел и для себя выявил, что ПриВыводеСтроки запускается при открыти списка, его обновлени и "развертывании" формы списка на весь экран, так что ( может конечно чтото и не понял) но думаю, что оставлю, как есть.
Как мне кажется, если сделать через "ПриПолученииДанных", то в случае, когда меняется статус конкретного ( уже выведенного) счета, пользователь не увидит изменений. Правда времени проверить пока нет, на днях проверю обязательно.
Вопрос то поднял чтобы через год работы мне клиент не звонил и не говорил: "а вот Вы мне тут делали-делали, а теперь работать невозможно".
На счет СтадииГотовности не очень понял. Я так понимаю, это реквизит? У меня к сожалению его нет).Если да, то придется "прикручивать" обработчики изменения состояния у счета на оплату, в момент проведения отгрузки... А мне за это не платили).
Както не ясно, хочется подробнотей
.
Кстати в отладчике посидел и для себя выявил, что ПриВыводеСтроки запускается при открыти списка, его обновлени и "развертывании" формы списка на весь экран, так что ( может конечно чтото и не понял) но думаю, что оставлю, как есть.
Как мне кажется, если сделать через "ПриПолученииДанных", то в случае, когда меняется статус конкретного ( уже выведенного) счета, пользователь не увидит изменений. Правда времени проверить пока нет, на днях проверю обязательно.
Вопрос то поднял чтобы через год работы мне клиент не звонил и не говорил: "а вот Вы мне тут делали-делали, а теперь работать невозможно".
ОформлениеСтроки.Ячейки.Пиктограмма.Картинка = НомерКартинки(ДанныеСтроки.Ссылка.СтадияГотовности);
На счет СтадииГотовности не очень понял. Я так понимаю, это реквизит? У меня к сожалению его нет).Если да, то придется "прикручивать" обработчики изменения состояния у счета на оплату, в момент проведения отгрузки... А мне за это не платили).
Както не ясно, хочется подробнотей
... А мне за это не платили).
Както не ясно, хочется подробнотей.
Мы с детьми смотрим по Дискавери "выживальщика" Les Stroud-а. Так он любит приговаривать при мелких проблемах (то ягуар в кустах зарычит, то вода в пустыне кончится): "Мне за это слишком мало платят".
Разумеется в выражении "ОформлениеСтроки.Ячейки.Пиктограмма.Картинка = НомерКартинки(ДанныеСтроки.Ссылка.СтадияГотовности);"На счет СтадииГотовности не очень понял. Я так понимаю, это реквизит?
придуманы мною название реквизита "СтадияГотовности" и функция НомерКартинки(). Интересно, а ты как придумал иначе, если не реквизитом?
И последнее. Неплохо бы договорится по терминологии. Это вызвало у меня непонимание коллег. Если бы я писал слово "Запрос", то я бы имел в виду, что у меня есть в программе строка "Запрос = Новый Запрос;"
А если я говорю о строке в программе "Абв = ДанныеСтроки.Ссылка.СтадияГотовности;", то я назову это "Обращение", "Извлечение", "Выражение". Может еще кто что придумает, но Запросом - ни за что. И неважно, как 1С внутри и к кому обращается. Мне важно четкое понимание действий и мыслей программиста.
Интересно, а ты как придумал иначе, если не реквизитом?
Вставил три картинки в "Общие картинки" с префиксами, и в зависимости от результатов запроса вывожу их.
По поводу запроса : делаю запрос к регистру накопления по конкретному счету, смотрю, есть ли остатки в этом регистре накопления по номенклатуре из счета, ну а дальше дело техники, разве это принципиально?
Я понимаю так, что обращение к регистру - достаточно длительная операция (относительно конечно). Поэтому, я бы искал более скоростной путь. Завел бы в реквизит в документе, менял бы его при совершении действия над счетом, от него отражал бы картинку.
Вот это был бы реальная экономия шустрости, вместо милисекунд разницы "ПриВыводе" "ПриПолучении".
Вот это был бы реальная экономия шустрости, вместо милисекунд разницы "ПриВыводе" "ПриПолучении".
Дело в том, что после выписки счета он фактически и не меняется. "Отгружен" счет или нет определяется на момент проведения расходной накладной. Я размышлял над подобным решением ( сделать реквизит в счете), но меня смущает вот чем: Не потребуется ли мне в дальнейшем восстанавливать последовательность документов и точку актуальности?
Дело в том, что после выписки счета он фактически и не меняется. "Отгружен" счет или нет определяется на момент проведения расходной накладной. Я размышлял над подобным решением ( сделать реквизит в счете), но меня смущает вот чем: Не потребуется ли мне в дальнейшем восстанавливать последовательность документов и точку актуальности?
А ты его не перепроводи - и последовательность с ТА целы, и функция сыта.
А как сохранить проведенный документ без его перепроведения? (В этой конфе счет делает движение по регистру накопления, помоему "доставка" - отражение затрат на доставку товара).
А значение реквизита влияет на движения документа?
Нельзя его записывать без перепроведения? хотя не стоит наверное...
Нельзя его записывать без перепроведения? хотя не стоит наверное...
Да просто, записал, программно. На самом счете Ок не нажимать. Я так полагаю:
- Всю механику сделать в Расходной. Она ПриЗаписи (При проведении) залазит в Счет (есть ссылка на него).
- Меняет реквизит Статус и записывает документ, не проводит.
Есть замечания:
- может не полностью отгружен - сверять итоговые суммы
- Расходную могут отменить, значит надо ПриОтмене что-то делать
- Статусов заранее предусмотреть побольше "Оплачен", "Передан на отгрузку", "Отменен" ...
- Всю механику сделать в Расходной. Она ПриЗаписи (При проведении) залазит в Счет (есть ссылка на него).
- Меняет реквизит Статус и записывает документ, не проводит.
Есть замечания:
- может не полностью отгружен - сверять итоговые суммы
- Расходную могут отменить, значит надо ПриОтмене что-то делать
- Статусов заранее предусмотреть побольше "Оплачен", "Передан на отгрузку", "Отменен" ...
Идея понятна, спасибо.
На счет перепроведения - на самом деле ошибся, каюсь.
Донесу до клиента, если согласен будет заплатить денежку дополнительно - сделаем статусы у счета, нет - так нет).
На счет перепроведения - на самом деле ошибся, каюсь.
Донесу до клиента, если согласен будет заплатить денежку дополнительно - сделаем статусы у счета, нет - так нет).
Ещё по теме
4
Поделиться: