1С 8.2 ПриВыводеСтроки и ПриПолученииДанных #746806


#0 by MrCrowley1988
Добрый день, уважаемые. 1С 8.2, конфигурация Розница. Документ Заказы поставщикам, ТЧ "Товары". Стоит задача автоматического просчета заказа по товару (количественного). В ТЧ "Товары", помимо "не нужных для данной задачи", есть колонки: Добавил в форму документа галочку "Автомат". В процедуре ТоварыПриВыводеСтроки, помимо основного кода, прописал: Все отлично, все считает как нужно, НО: если количество строк больше, чем отображается на экране, нужно проматывать ТЧ, что-юы процедура просчитала колонку "Количество" для всех строч ТЧ. ВОПРОС: Можно ли как-то данный код адаптировать под процудуру ТоварыПриПолученииДанных(Элемент, ОформленияСтрок)? Там нету параметра "ДанныеСтроки". Пробовал в ТоварыПриПолученииДанных: Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл                                  Если ЭлементыФормы.Автомат.Значение = Истина тогда Ругается на ДанныеСтроки.Количество = 0; Может можно как-то "прогнать" все строки ТЧ, что-бы через ТоварыПриВыводеСтроки просчитывались все строки, а не только видимые. В общем, помогите пожалуйста, кто чем может.
#1 by DTXqueque
При открытии документа пробежаться по ТЧ и подсчитать. Туда же направить обработчик изменения данных.
#2 by butterbean
ОформлениеСтроки.ДанныеСтроки
#3 by D_E_S_131
ИМХО нужно значение "Автомат" в данных хранить, а не "галочкой в списке" и результат рассчитывать по данным в ТЧ, а не по оформлениям строк.
#4 by MrCrowley1988
, попробывал в ТоварыПриПолученииДанных(Элемент, ОформленияСтрок): Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл                                  Если ЭлементыФормы.Автомат.Значение = Истина тогда РЕЗУЛЬТАТ: Строки в колонке с реквизитом "Количество" становятся пустыми.
#5 by MrCrowley1988
Извеняюсь, пост был ответом на , а не
#6 by butterbean
это потому, что менять данные строки в момент их получения в корне не верно, при выводе строки тоже фигня, меняй концепцию
#7 by MrCrowley1988
, "ПриВыводеСтроки" концепция меня полностью удовлетворяет. Заполняется ТЧ, ставиться начальная и конечная дата периода, за который расчитываются (запросом) продажи, конечный остаток. Потом ставится галочка Автомат. 1С сам расчитывает поле-реквизит "Количество" (которое рекомендуеся заказать). Галочка "Автомат" снимается, и пользователь уже сам может "подредактировать" автоматический заказ (то-есть, предложенное программой количество заказываемого товара.
#8 by D_E_S_131
Что тебе мешает сохранить значение "Автомат" в ТЧ? Или просто народ тут по троллить хочешь?
#9 by butterbean
при твоем способе тч будет перерассчитываться при каждом открытии этой формы документа, а это пп.. мягко говоря не правильно. 1. галочку заменить на кнопочку, которую назвать "Рассчитать количество" 2. при нажатии на эту кнопку перерасчитывать продажи и остатки. Если они должны быть фиксированными, то их нужно хранить в тч документа, хотя это бред в данном случае
#10 by MrCrowley1988
, проблема совсем не в том! У меня все считает так, как мне нужно, все правильно. И продажи, и конечный остаток  - все я сделал запросами. Проблема в строке: ДанныеСтроки.Количество В процедуре ПриВыводеСтроки она работает, все считает так, как мне нужно, но при большом количестве строк нужно проматывать ТЧ, удерживая галочку Автомат включеной. Мне же нужно, что-бы пользователь нажал Автомат, колонка "Количество" расчиталась, и пользователь, сняв галочку Автомат, приступил к редактирыванию заказа.
#11 by DTXqueque
Уже предлагали работать с ТЧ, а не с элементом формы?
#12 by dmpl
Что мешает использовать просто Товары.* в обработчике нажатия кнопки?
#13 by gornovrom
А если не в данные строки записывать, а в саму ячейку? ОформлениеСтроки.Ячейки[ИмяЯчейки].Значение = <Значение>. И потом обрабатывать изменение этой ячкейки.
#14 by Mirnin
правильно говорит. > проблема совсем не в том! Очень даже в том. Процедура ПриВыводе вызывается при обновлении формы, неотрисованные строки рассчитываться не будут. К тому же, по твоей концепции, даже если не учитывать необходимость прокрутки ТЧ, пользователю нужно ставить и убирать галочку. Хотя быстрее и проще по нажатию кнопки пробегать все строки таблицы.
#15 by D_E_S_131
"проблема совсем не в том!" — да я уже понял, что проблема в том, что месье извращенец.
#16 by MrCrowley1988
в саму ячейку нельзя, т.к. это реквизит, и его пользователь возможно будет изменять, а  потом нужно распечатать (а в макете прописан именно реквизит). С удовольствием, но как? Как мне по нажатию кнопки обратиться (считать значения) к ячейкам Продажи и Конечный остаток? По идее, только через ОформлениеСтроки?
#17 by MrCrowley1988
, спасибо за комплимент.
#18 by MrCrowley1988
, Для Каждого стр из ЭлементыФормы.Товары цикл а дальше?
#19 by dmpl
Для Каждого стр Из [Товары]|[ЭлементыФормы.Товары] Цикл в зависимости от извращения.
#20 by MrCrowley1988
, как мне обратиться к колонкам Продажи и Конечный Остаток? Это простые ячейки с текстом.
#21 by mistеr
Все, расчетные данные, которые нужны пользователю, должны храниться в реквизитах ТЧ. При этом их можно не разрешать редактировать пользователю. В общем, не выделывайтся, а делай заполнение так же, как в типовых, по кнопке "Заполнить...".
#22 by mistеr
Добавь реквизиты в ТЧ, либо считай все в запросах, либо во временной ТЗ.
#23 by MrCrowley1988
, смотрите. Данные Продажи и Конечный остаток - не постоянные. Пользователь устанавливает период (есть два поля для выбора начальной и конечной даты), и в них отображаются (ячейка.оформлениестроки.установитьтекст) продажи за этот период, и конечный остаток состоянием на конечную дату. Смысл делать отдельные реквизиты и засорять БД? Я и так все считываю запросами (и продажи, и конечный остаток). Мне всего лишь нужно загнать разницу Продажи и Конечный остаток (она у меня считается, все в этом плане нормально!) в реквизит "Количество". Неужели это так сложно сделать? Просто через ТоварыПриПолученииДанных для каждой строки установить значение реквизита "Количество"? Просто через ДанныеСтроки у меня не получается, может можно как-то по другому?
#24 by DTXqueque
Так поржать.. А как у тебя сейчас КонОст заполняется в строках?
#25 by MrCrowley1988
Если ЭлементыФормы.Товары.Колонки.КонОстаток.Видимость Тогда
#26 by DTXqueque
Это в какой процедуре?
#27 by MrCrowley1988
Вот мой действующий вариант, который работает, но нужно проматывать строки.             |    ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток
#28 by MrCrowley1988
, нижний кусочек кода: Если ЭлементыФормы.Автомат.Значение = Истина тогда мне нужно адаптировать под процедуру и все, я от всех отстану :-)
#29 by DTXqueque
Оправдания ожидались.. Ты понимаешь, что для каждой отрисовки строки у тебя выполняется запрос?
#30 by MrCrowley1988
, да. У меня есть оправдание - это все делал не я! Но теперь нужно исходить из того, что у меня есть.
#31 by D_E_S_131
Тебе, по хорошему, можно было бы сделать обработку. В ней ввести исходные данные, получить расчетные в табличную часть обработки (база не будет засоряться как раз!). После просмотра/изменения данных пользователем пусть жмут на кнопку, которая и сформирует "Заказы поставщикам". Как раз не придется менять текущий горе-функционал и вернешься к нормально-ориентированным людям.
#32 by MrCrowley1988
Всем спасибо за ответы. Сделал все добавлением необходимых реквизитов к ТЧ, и не через ПриВыводеСтроки, а кнопочкой (запросы выполняются только при нажатии на кнопку, а не при каждом выводе/перевыводе каждой строки). Еще раз, всем спасибо.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С