#0
by ETurdymuratov
Есть отчет сделанный в СКД. Такого вида: Все работает нормально. Поле "Оплачено" заполняется при проведении соответствующего документа, поле "Остаток" отражает разницу между полями "К оплате" и "Оплачено" поле "Остаток" переходящий с предыдущего периода. Вопрос такой, как можно сделать "Оплачено" редактируемым и при изменении данного поля чтобы автоматически пересчитывался остаток на каждую дату(поле "Остаток") и затем в итогах?
#4
by kittystark
это можно сделать для отчета СКД свою форму, на форме свой таб.док. Результат 1. в модуле объекта в ПриКомпоновкеРезультата смотришь что за поле выводится и если это поле "Оплачено" снимаешь защиту для ячейки 2. в модуле формы Результату цепляешь обработчик ПриИзмененииСодержимогоОбласти - в нем смотришь что где было поменяно, и дальше алгоритм расчета
#6
by ETurdymuratov
Почти интегрировал механизм у себя в отчет, 1. в модуле объекта в ПриКомпоновкеРезультата смотришь что за поле выводится и если это поле "Оплачено" снимаешь защиту для ячейки - Алилуя теперь редактируется!!! 2. в модуле формы Результату цепляешь обработчик ПриИзмененииСодержимогоОбласти - в нем смотришь что где было поменяно, и дальше алгоритм расчета выдает ошибку: {Отчет.ВзаиморасчетыСПоставщиками.Форма.ФормаОтчета.Форма}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища) Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки); по причине: Недопустимое значение параметра (параметр номер '1') проверил через отладчик функцию ПолучитьИзВременногоХранилища параметр ДанныеРасшифровки оказалось пустая строка. В самом примере все ок, туда передается адрес Это как то связано с тем что пример сделан на упр формах а мой отчет на толстом клиенте?
#9
by ETurdymuratov
Д Да, там есть поле(редактируемое пользователем) от которого должны перерасчитываться остатки на дату и по итогам.
#11
by kittystark
трюк с Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки); думаю нафиг не нужен возьми в модуле объекта объяви экспортную переменную ДанныеРасшифровкиГлоб, в ПриКомпоновкеРезультата после того, как у тебя ПроцессорВывода выведет весь отчет запомни ДанныеРасшифровкиГлоб = ДанныеРасшифровки а дальше с помощью этого определяешь что за поле соответствует ячейке табдока
#12
by aleks_default
А еще интереснее будет когда ползователь залезет в настройки и поменяет группировки.
#13
by kittystark
на первых порах можно отрубить стандартную форму настроек, подсунуть свою - чтоб не повадно было чего-то менять а так да - на написание почти универсального алгоритма, учитывающего различные комбинации вложенности группировок как по строкам, так и по столбцам, с использованием массивов-структур-массивов-структур, заданием расчетных формул, влияющих и зависимых полей - у меня ушло НЕ МЕНЕЕ ПОЛУГОДА пусть ТС решает что нужнее
#14
by aleks_default
И... Твое резюме. Стоит ли желание буха увидеть в отчете "чтобы автоматически пересчитывался остаток" полугода рабочего времени?
#15
by kittystark
в моем случае это была целая подсистема планирования продаж, я и не жалею - куча народа реально пользуется а если жестко зафиксировать структуру настроек, отрубив стандартную форму, то в его случае можно наваять гораздо быстрее
#16
by ETurdymuratov
Да скорее всего отрублю возможность пользователям менять структуру отчета. В принципе это и не нужно пользователям.
#17
by ETurdymuratov
Объявил в модуле отчета переменную, тут же вставил функцию ПолучитьПолеПоРасшифровкеОбластиСКД. Параметр областьТабличногоПоля у меня называется СуммаРасход(я так понимаю это наименование той самой редактируемой ячейки в макете?), затем из модуля формы обращаюсь к этой функции. Но при проверке ругается: Переменная не определена (СуммаРасход) ЗначенияРасшифровки = ПолучитьПолеПоРасшифровкеОбластиСКД(<<?>>СуммаРасход);
#18
by kittystark
не-е-е... так не пойдет, макеты тут ни причем у тебя есть табличный документ, в СКД он обычно носит имя Результат, так вот ОбластьСКД в данном случае подразумевает под собой область этого табдока Результат, т.е. по-сути одну ячейку, ячейку и передавай в моих отчетах редактируемых "видов" ячеек было несколько, поэтому для начала приходилось определять чего отредактировал пользователь (количество,себестоимость,цену и т.д), а потом уже брать само значение примеры вызовов 1) из модуля объекта в ПриКомпоновкеРезультата(ДокументРезультат, ...) ... Поле = ПолучитьПолеПоРасшифровкеОбластиСКД(ДокументРезультат.Область(индСтр, индКол)); ... вернет тебе только название самого поля но не его значение 2) из модуля формы ... ... чтобы написать код функции ПолучитьЗначениеПоРасшифровкеОбластиСКД - в поменяй возврат ЭлементРасшифровкиДанныхПоля[0].Поле; на возврат ЭлементРасшифровкиДанныхПоля[0].Значение; и будет тебе счастье в качестве параметра вызова этих функций можно использовать конструкцию ЭлементыФормы.Результат.ТекущаяОбласть
#19
by ETurdymuratov
Спасибо за подробные ответы! Получилось достать содержимое ячейки. Но у автора той статьи в функция ПолучитьВсеЗначенияРасшифровки возвращает структуру Название ячейки и содержимое ячейки, затем в функция ЗаписатьПланСервер и дальше пересчет итогов...
#21
by kittystark
да без разницы, главное чтобы сам помнил и ориентировался что у тебя в коде возвращается лично мне проще написать две почти похожие функции, а спустя пол года, мельком взглянув, по названию понять что же возвращается функцией
#22
by ETurdymuratov
А если у меня нет группировок, как правильно переделать процедуру ПересчетИтоговВТаблице(...)? А то ругается {Отчет.ВзаиморасчетыСПоставщиками.Форма.ФормаОтчета.Форма}: Значение не является значением объектного типа (Родитель) если ЗначенияГруппировок[массивГруппировок[номерГруппировки]] = ЗначенияГруппировок[массивГруппировок[номерГруппировки]].Родитель Тогда Возврат; КонецЕсли;
#23
by ETurdymuratov
...при изменении данного поля чтобы автоматически пересчитывался остаток на каждую дату(поле "Остаток") и затем в итогах?
#24
by kittystark
что там за код в я не смотрел, и честно говоря нет ни времени ни желания у тебя есть значение до редактирования - можно запоминать то что в ТекущейОбласти в обработчике ПриАктивизации для табдока у тебя есть новое значение после ввода пользователем в ПриИзмененииСодержимогоОбласти, считаешь разность между ними, а дальше в цикле все ячейки остатка на последующие даты увеличиваешь на эту дельту, в т.ч. и итог вот как-то так
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- СКД: СКД. Понимает ли СКД ссылки на МенеджерВременныхТаблиц?
- СКД: как в СКД значеняи параметров по умолчанию заполнять?
- СКД: Диаграмма в СКД
- СКД: СКД. Как задать устанавливать параметры вложенных схем СКД?
- СКД: Объединение в СКД
- СКД: СКД - можно ди получить промежуточные итоги по колонкам
- СКД: СКД: Программное обращение к полям группировки СКД
- СКД: СКД. Как переоределить действие кнопки "Сформировать" отчета, созданного в СКД?
В этой группе 1С
- Как отобразить картинку из файла на управляемой форме
- Ошибка "неверные параметры valuetype" при загрузке банковской выписки
- Мобильная платформа 1с
- Где взять 1с 8.3 сервер 32
- Оплата определенного вида времени в ЗУП 2.5
- КД. перенос номенклатуры из комплексной 7.7 в Розницу
- На сервере 1С:Предприятия не найдена лицензия
- СКД как сделать итог ресурса - количество различных на уровне поступления и сумму на уровнях выше
- Как программно установить курсор на редактирование в ячейке ТЧ?
- Хранилище 1С и автообновление. Платформа 8.2.19.130
- Не записывается объект через COM-соединение
- пкс найти по коду в приемнике 1с 8 кд 2.1
- Запрос к MS SQL как использовать список значений в фильтре?
- v7: FTP + 1C 7.7
- 1С Розница 2.0: Подарки неправильно печатаются в чек
- ERP списание брака на расходы
- Шрифт календаря в 8.3.7
- Запрет на редактирование настроек панелей разделов, навигации, действий
- УФ.8.3. Окно нового документа открывается на заднем фоне. Как победить?
- Регистр сведений независимый как узнать что запись удаляется?