Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как определить в какой колонке и в какой строке пользователь нажал два раза?          
kosalex Подменю пользователя
сообщение 30.10.14, 13:11
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Есть отчет СКД:



Как определить в какой колонке и в какой строке пользователь нажал два раза. Мне в другой ответ нужно передать параметры отбора, а взять их из названия колонок "Груженый,Мечел" и т.п. и название груза из строки.

Вот мой код, но он не удовлетворяет моим потребностям:

СтандартнаяОбработка = Ложь;
    
    ПериодБезНомернойУчетВагонов = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение.Дата;
    
    
    ПринадлежностьВагонаБезНомернойУчет = ДанныеРасшифровки.Элементы.Получить(Расшифровка - 4).ПолучитьПоля()[0].Значение;
    СостояниеВагонаБезномернойУчет = ДанныеРасшифровки.Элементы.Получить(1).ПолучитьПоля()[0].Значение;
    РодГрузаБезНомернойУчет = ДанныеРасшифровки.Элементы.Получить(37).ПолучитьПоля()[0].Значение;
    
    ОтчетРасшифровка = Отчеты.КФЗНомернойУчетВагонов.Создать();
    
    ОтчетРасшифровка.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период",ПериодБезНомернойУчетВагонов);
    ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[1].ПравоеЗначение = ПринадлежностьВагонаБезНомернойУчет;
    ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[1].Использование = Истина;
    
    ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[2].ПравоеЗначение = СостояниеВагонаБезномернойУчет;
    ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[2].Использование = Истина;
    
    ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[3].ПравоеЗначение = РодГрузаБезНомернойУчет;
    ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[3].Использование = Истина;

    
    ФормаРасшифровки = ОтчетРасшифровка.ПолучитьФорму("ФормаОтчета");
    ФормаРасшифровки.Открыть();
    ФормаРасшифровки.СформироватьОтчет();



Не могу никак додуматься....

Упростил отчет)))



Все равно не получается "достучаться до небес" Для одной строки получается, а если для другой то уже вылетает...

kosalex Подменю пользователя
сообщение 31.10.14, 8:11
Сообщение #2

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Практически рабочий код)) Но есть одно НО, не получается получить состояние вагона...((ПОМОГИТЕ

Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) 
    СтандартнаяОбработка = Ложь;
    
    ПериодБезНомернойУчетВагонов = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение.Дата;
    
    
    ПринадлежностьВагонаБезНомернойУчет = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля()[1].Значение;

    СостояниеВагонаБезномернойУчет = ДанныеРасшифровки.Элементы[1].ПолучитьПоля()[0].Значение; //Как получить состояние ????

    РодГрузаБезНомернойУчет = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля()[0].Значение;
    ОтчетРасшифровка = Отчеты.КФЗНомернойУчетВагонов.Создать();
    
    ОтчетРасшифровка.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период",ПериодБезНомернойУчетВагонов);
    ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[1].ПравоеЗначение = ПринадлежностьВагонаБезНомернойУчет;
    ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[1].Использование = Истина;
    
    ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[2].ПравоеЗначение = СостояниеВагонаБезномернойУчет;
    ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[2].Использование = Истина;
    
    ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[3].ПравоеЗначение = РодГрузаБезНомернойУчет;
    ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы[3].Использование = Истина;

    
    ФормаРасшифровки = ОтчетРасшифровка.ПолучитьФорму("ФормаОтчета");
    ФормаРасшифровки.Открыть();
    ФормаРасшифровки.СформироватьОтчет();
    
КонецПроцедуры


Kutuzov Подменю пользователя
сообщение 03.11.14, 11:34
Сообщение #3

Оратор
Иконка группы
Группа: Местный
Сообщений: 328
Из: Одесса
Спасибо сказали: 144 раз
Рейтинг: 0

Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    .....................................
    Если ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля().Найти("СуммаВзаиморасчетовНачальныйОстаток") <> Неопределено Тогда
        Попытка    
            коефПоля = 4;
            ИмяПоля = ДанныеРасшифровки.Элементы.Получить(Расшифровка-коефПоля).ПолучитьПоля()[0].Поле;
            Если ИмяПоля = "СрокДолгазаказа" Тогда
                коефПоля = 5;
                ИмяПоля = ДанныеРасшифровки.Элементы.Получить(Расшифровка-коефПоля).ПолучитьПоля()[0].Поле;
            КонецЕсли;
            Если ИмяПоля = "Поручитель" или ИмяПоля = "Контрагент" или ИмяПоля = "ДоговорКонтрагента" или ИмяПоля = "ЗаказПокупателя" Тогда  
                ЗначениеПервойКолонки = ДанныеРасшифровки.Элементы.Получить(Расшифровка-коефПоля).ПолучитьПоля()[0].Значение;
            иначе
                Если  ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Поле="Поручитель" Тогда
                    ЗначениеПервойКолонки = ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Значение;
                ИначеЕсли  ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Поле="ДоговорКонтрагента" Тогда
                    ЗначениеПервойКолонки = ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Значение;
                ИначеЕсли  ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Поле="ЗаказПокупателя" Тогда
                    ЗначениеПервойКолонки = ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Значение;  
                ИначеЕсли  ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Поле="Контрагент" Тогда
                    ЗначениеПервойКолонки = ДанныеРасшифровки.Элементы.Получить(Расшифровка-1).ПолучитьПоля()[0].Значение;            
                ИначеЕсли ДанныеРасшифровки.Элементы.Получить(Расшифровка-2).ПолучитьПоля()[0].Поле="Контрагент" Тогда
                    ЗначениеПервойКолонки = ДанныеРасшифровки.Элементы.Получить(Расшифровка-2).ПолучитьПоля()[0].Значение;
                КонецЕсли;
            КонецЕсли;
        
.......


Буквально неделю назад делал. Для получение по текущей строке поля для условия делал просто вычитание количества колонок до нужной проверял ее название и уже при правильном результате подставлял в параметр. 32542460.gif

А родителя получал от первой колонке. Сделал такую проверку так как есть поля группировок которые выкидовали ошибку.

Если ТипЗнч(ЗначениеПервойКолонки) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда 
            знчПоиска  = ДанныеРасшифровки.Элементы.Получить(Расшифровка);
            НайденныйПоручитель = ПолучитьРодителяУровня(знчПоиска,"Поручитель");
........
Функция ПолучитьРодителяУровня(Данные, ИмяПоля)
      Родители = Данные.ПолучитьРодителей()[0];
    Попытка
        Если Родители.ПолучитьПоля().Найти(ИмяПоля)<> Неопределено Тогда
            НайденноеПоле = Родители.ПолучитьПоля()[0].значение;
        Иначе
            НайденноеПоле= ПолучитьРодителяУровня(Родители, ИмяПоля);
        КонецЕсли;
    Исключение
        НайденноеПоле= ПолучитьРодителяУровня(Родители, ИмяПоля);
    КонецПопытки;
     Возврат НайденноеПоле;
КонецФункции



Сообщение отредактировал Kutuzov - 03.11.14, 11:41


Signature
Вы станете богаче, лишь став умнее...
Чем дальше в лес, тем толще партизаны.
Нельзя недооценивать, не предсказуемость тупизны...

Спасибо сказали: kosalex,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 26.04.24, 21:24
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!