![]() |
![]() |
|
1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
lg2marvel 11.10.18 - 12:32 | Всем привет, делаю расшифровке в отчете.
Есть макет, вывожу его на табличное поле на форме. Для Каждого стр из тзЗапросСклады Цикл Строка.Параметры.Склад = стр.Склад; СтруктураРасшифровки = Новый Структура; СтруктураРасшифровки.Вставить("Склад",стр.Склад); СтруктураРасшифровки.Вставить("Поле",1); Строка.Параметры.РасшифровкаСклад = СтруктураРасшифровки; СтруктураРасшифровки.Вставить("Поле",2); Строка.Параметры.РасшифровкаПродажа = СтруктураРасшифровки; ............................................................................. Таб.Вывести(Строка); Процедура ТабличныйДокументОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если Расшифровка.Поле = 1 Тогда ОткрытьЗначение(Расшифровка.Склад); ИначеЕсли Расшифровка.Поле = 2 Тогда Сообщить("Продажа"); КонецЕсли; КонецПроцедуры Все бы ничего, но отрабатывает только СтруктураРасшифровки.Поле = 2, куда бы я не нажимал. Но у меня возникает вопрос, есть же Элемент, куда попадает ячейка табличного поля. Но получить я могу только его координаты (Ячейка.Имя). Может можно как-то узнать параметра ячейки по которой я клацаю? | ||
lg2marvel 1 - 11.10.18 - 12:34 | (0) ячейка в смысле Элемент - 1-й параметр процедуры расшифровки | ||
lg2marvel 2 - 11.10.18 - 12:41 | Как я понял для стандртного обработчика расшифровки все равно как я обозвал параметр расшифровки? Или можно как-то обратиться к нему? | ||
lg2marvel 3 - 11.10.18 - 12:41 | {ВнешнийОтчет.ФинРезультат.Форма.ФормаОтчета.Форма(1507)}: Поле объекта не обнаружено (ПараметрРасшифровки) Сообщить(Элемент.ПараметрРасшифровки); | ||
lg2marvel 4 - 11.10.18 - 12:44 | Синтаксический помощник скуп до жути | ||
1Сергей 5 - 11.10.18 - 12:49 | |||
1Сергей 6 - 11.10.18 - 12:51 | |||
lg2marvel 7 - 11.10.18 - 12:55 | (6)
Для Каждого стр из тзЗапросСклады Цикл Строка.Параметры.Склад = стр.Склад; СтруктураРасшифровки = Новый Структура; СтруктураРасшифровки.Вставить("Склад",стр.Склад); СтруктураРасшифровки.Вставить("Поле",1); Строка.Параметры.РасшифровкаСклад = СтруктураРасшифровки; Если не вписать имя параметра в свойствах ячейки - не будет работать и расшифровка (разве что только указать конкретно область расшифроки) | ||
1Сергей 8 - 11.10.18 - 12:58 | (7) ну, так там вписан какой параметр? РасшифровкаСклад? В каком месте не можешь до расшифровки достучаться?
Как партизан на допросе | ||
lg2marvel 9 - 11.10.18 - 13:02 | В ячейке Склад - параметр расшифровки РасшифрокаСклад, дальше ячейка Продажа - РасшифровкаПродажа.
В процедуре ОбработкаРасшифровки я хочу в зависимости от того на какой ячейке вызвана обработка расшифровки отбработать результат и вывести. На пример при нажатии на Склад - я просто выведу форму справочника Склад, а при нажатии на продажи - будет запрос к регистру продажи с группировкой по регистратору Вот в этой ОбработкаРасшифровки я не могу получить на какую ячейку я нажал. | ||
lg2marvel 10 - 11.10.18 - 13:05 | (8) Да там вписан параметр РасшифровкаСклад Рекламное место пустует | ||
Индиго 11 - 11.10.18 - 13:05 | (9)А в свойствах ячеек ты прописал имена расшифровок и назначил "для ячейки" а не "для строки"? | ||
lg2marvel 12 - 11.10.18 - 13:08 | (11) Да, использование расшифровки - ячейка | ||
lg2marvel 13 - 11.10.18 - 13:11 | При заполнении табличного документа делаю следующее:
СтруктураРасшифровки = Новый Структура; СтруктураРасшифровки.Вставить("Склад",стр.Склад); СтруктураРасшифровки.Вставить("Поле",1); Строка.Параметры.РасшифровкаСклад = СтруктураРасшифровки; СтруктураРасшифровки.Поле = 2; Строка.Параметры.РасшифровкаПродажа = СтруктураРасшифровки; Чтоб передать в параметре СтруктураРасшифровки.Поле номер ячейки по которой я нажал. И потом обрабатываю в обработчике расшифровки: Процедура ТабличныйДокументОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если Расшифровка.Поле = 1 Тогда ОткрытьЗначение(Расшифровка.Склад); ИначеЕсли Расшифровка.Поле = 2 Тогда Сообщить("Продажа"); КонецЕсли; В итоге получется куда бы я не нажимал мне выходит сообщение "продажа" | ||
1Сергей 14 - 11.10.18 - 13:19 | (13) смотри ячейки слева от нужной. где-то стоит "для строки" | ||
1Сергей 15 - 11.10.18 - 13:21 | (13) и это... ты же Таб.Вывести(Строка) делаешь внутри цикла, между тем, как меняешь значения расшифровки? | ||
lg2marvel 16 - 11.10.18 - 13:24 | (14) Для всей табилцы сделал Использование расшифровки ячейка.
(15) Да, внутри цикла: Для Каждого стр из тзЗапросСклады Цикл  //Выводим а ТЧ результат запроса Склады Строка.Параметры.Склад = стр.Склад; СтруктураРасшифровки = Новый Структура; //РРРРРРРРРРРРасшифровка мать её СтруктураРасшифровки.Вставить("Склад",стр.Склад); СтруктураРасшифровки.Вставить("Поле",1); Строка.Параметры.РасшифровкаСклад = СтруктураРасшифровки; СтруктураРасшифровки.Поле = 2; Строка.Параметры.РасшифровкаПродажа = СтруктураРасшифровки; ПараметрыОтбора.Вставить("Склад", стр.Склад); тзПродажиПоСкладу = тзПродажи.Скопировать(ПараметрыОтбора); ПродажаВРозницу = 0; ПродажаОПТ = 0; Для Каждого стрТЗ ИЗ тзПродажиПоСкладу Цикл Если ЗначениеЗаполнено(стрТЗ.СуммаОборот) И (стрТЗ.ВидОперации=Перечисления.ВидыОперацийПродажа.ПродажаВРозницу) Тогда ИтогоПродажа = ИтогоПродажа + стрТЗ.СуммаБезНДС; ПродажаВРозницу = ПродажаВРозницу + стрТЗ.СуммаБезНДС; ИначеЕсли ЗначениеЗаполнено(стрТЗ.СуммаОборот) И (стрТЗ.ВидОперации=Перечисления.ВидыОперацийПродажа.Продажа) Тогда ПродажаОПТ = ПродажаОПТ + стрТЗ.СуммаБезНДС; ИтогоПродажаОПТ = ИтогоПродажаОПТ + стрТЗ.СуммаБезНДС; ИначеЕсли ЗначениеЗаполнено(стрТЗ.СуммаОборот) И (стрТЗ.ВидОперации=Перечисления.ВидыОперацийПродажа.ВозвратПоКассе) Тогда ПродажаВРозницу = ПродажаВРозницу - МодульЧисла(стрТЗ.СуммаОборот); ИтогоПродажа = ИтогоПродажа - МодульЧисла(стрТЗ.СуммаОборот); КонецЕсли; КонецЦикла; стрВозвраты = тзВозвраты.НайтиСтроки(ПараметрыОтбора); НакоплениеВовзратов = 0; Для Каждого стрТЗ из стрВозвраты Цикл НакоплениеВовзратов = стрТЗ.СуммаБезНДС; КонецЦикла; ПродажаОПТ = ПродажаОПТ + НакоплениеВовзратов; ИтогоПродажаОПТ = ИтогоПродажаОПТ + НакоплениеВовзратов; Строка.Параметры.Продажа = ПродажаВРозницу; Строка.Параметры.ПродажаОПТ = ПродажаОПТ; Таб.Вывести(Строка); КонецЦикла; | ||
lg2marvel 17 - 11.10.18 - 13:24 | |||
1Сергей 18 - 11.10.18 - 13:26 | (16) и что ты хочешь? у тебя на момент вывода Поле всегда будет 2 | ||
1Сергей 19 - 11.10.18 - 13:27 | делай разные параметры расшифровки для разных ячеек.
И заполняй их отдельно | ||
lg2marvel 20 - 11.10.18 - 13:33 | (19) Так они же разные!
СтруктураРасшифровки.Вставить("Поле",1); Строка.Параметры.РасшифровкаСклад = СтруктураРасшифровки; СтруктураРасшифровки.Поле = 2; Строка.Параметры.РасшифровкаПродажа = СтруктураРасшифровки; И на макете РасшифровкаПродажа и РасшифровкаСклад для соответствующих ячеек | ||
Cool_Profi 21 - 11.10.18 - 13:34 | |||
lg2marvel 22 - 11.10.18 - 13:36 | Да блин! Реально работает! | ||
lg2marvel 23 - 11.10.18 - 13:36 | СтруктураРасшифровки = Новый Структура; //РРРРРРРРРРРРасшифровка мать её СтруктураРасшифровки.Вставить("Склад",стр.Склад); СтруктураРасшифровки.Вставить("Поле",1); Строка.Параметры.РасшифровкаСклад = СтруктураРасшифровки; СтруктураРасшифровки = Новый Структура; СтруктураРасшифровки.Вставить("Склад",стр.Склад); СтруктураРасшифровки.Вставить("Поле",2); Строка.Параметры.РасшифровкаПродажа = СтруктураРасшифровки; | ||
Cool_Profi 24 - 11.10.18 - 13:36 | |||
lg2marvel 25 - 11.10.18 - 13:37 | Э то не поддается никакой логике! | ||
Cool_Profi 26 - 11.10.18 - 13:38 | (25) Это абсолютно нормальная логика для программиста. А не для бухгалтера. | ||
lg2marvel 27 - 11.10.18 - 13:38 | И да, я понял почему :-(, тупанул, при выводе строки данные в структуре были Поле = 2.Хоть куда ты их не присваивай | ||
lg2marvel 28 - 11.10.18 - 13:39 | need more practice | ||
lg2marvel 29 - 11.10.18 - 13:39 | Спасибо всем огромное, второй день на одном месте |
|
Список тем форума |
Правила | Описание | Реклама на форуме | Волшебные решения | Поиск | Секции | Рейтинг | Книга знаний | Вики-миста (КЗ2) | Мобильная | Архив | Модераторы | Галерея | Регистрация | 18+ |