Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Установка заголовка колонки МНЧ. (число прочтений - 16439 )
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Установка заголовка колонки МНЧ.
30. Сентября 2007 :: 20:51
Печать  
Не устанавливается заголовок колонки многострочной части документа.

глФормекс = СоздатьОбъект("РасширениеФормы");
глФормекс.УстановитьФорму(Форма);
Атр = глФормекс.ПолучитьАтрибут(39); // 39 - индекс нужного мне атрибута многострочной части
Атр.Заголовок = "111"                             // !!! Ничего не происходит. Заголовок не меняется.
  
Наверх
 
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #1 - 30. Сентября 2007 :: 20:52
Печать  
Подскажите, плз, что делать?
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Установка заголовка колонки МНЧ.
Ответ #2 - 01. Октября 2007 :: 07:03
Печать  
rassik писал(а) 30. Сентября 2007 :: 20:52:
Подскажите, плз, что делать?

Зачем такие сложности?
Форма.ТвойРеквизит.Заголовок("Новый заголовок")
  
Наверх
ICQ  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #3 - 01. Октября 2007 :: 11:00
Печать  
Делов в том, что нужно, когда у колонки нет идентификатора.
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Установка заголовка колонки МНЧ.
Ответ #4 - 01. Октября 2007 :: 11:12
Печать  
rassik писал(а) 01. Октября 2007 :: 11:00:
Делов в том, что нужно, когда у колонки нет идентификатора.

Ну сделай ей идентификатор "_39"
Все равно же руками колонку добавляешь, динамически добавлять пока нельзя.
  
Наверх
ICQ  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #5 - 01. Октября 2007 :: 12:48
Печать  
Фишка вот в чем.

Для колонок, имеющих идентификатор, формула пересчитывется для всех строк документа.
Для колонок не имеющих идентификатора, только для видимых на экране строк.

Тут недавно ввел док в 8000 строк. И всплыла такая проблемка. Не понятно, почему в 1С-ке так сделано.
Вот теперь обхожу эту проблемку.

  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Установка заголовка колонки МНЧ.
Ответ #6 - 01. Октября 2007 :: 19:07
Печать  
Оба... Эхо Мисты... Улыбка
Насколько для тебя это критично? Сможешь подождать пару дней? Или надо "вчера"?
  

FormEx developer
Наверх
www  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #7 - 01. Октября 2007 :: 19:22
Печать  
Точно. Улыбка
Спрашивал там об этом. Улыбка
Ответы ты видел. Улыбка

Понятно, что надо "вчера", но подожду конечно, если нужно время.

А как собираешься решать эту проблемку?
На мой взгляд круто было бы отключить обновление формул для всех строк МНЧ.
Если это конечно возможно.
И еще, можно ли программно изменять выравнивание в ячейке МНЧ?

Спасибо заранее. Улыбка
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Установка заголовка колонки МНЧ.
Ответ #8 - 01. Октября 2007 :: 19:43
Печать  
rassik писал(а) 01. Октября 2007 :: 19:22:
Точно. Улыбка
Спрашивал там об этом. Улыбка
Ответы ты видел. Улыбка

Понятно, что надо "вчера", но подожду конечно, если нужно время.

А как собираешься решать эту проблемку?
На мой взгляд круто было бы отключить обновление формул для всех строк МНЧ.
Если это конечно возможно.
И еще, можно ли программно изменять выравнивание в ячейке МНЧ?

Спасибо заранее. Улыбка

Я лично пока планирую только доработать атрибут "Заголовок", чтобы с колонками табличной части нормально работал.
Остальное потребует слишком глубокого копания. Сейчас на это, к сожалению, нет времени.
  

FormEx developer
Наверх
www  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #9 - 01. Октября 2007 :: 19:51
Печать  
Ок.

Но хочется еще и выравнивание. Причем сильно хочется. Улыбка:)Улыбка:)
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Установка заголовка колонки МНЧ.
Ответ #10 - 02. Октября 2007 :: 05:19
Печать  
Цитата:
Я лично пока планирую только доработать атрибут "Заголовок", чтобы с колонками табличной части нормально работал.

Добавлю небольшую "Хотелку"... Улыбка

1.Исправление: "Не устанавливается заголовок колонки многострочной части документа";

2.Исправление: "Для колонок, имеющих идентификатор, формула пересчитывется для всех строк документа.
Для колонок не имеющих идентификатора, только для видимых на экране строк. "

3.Добавление "Процедура, позволяющая выбирать режим обновления колонки (ВсеСтроки/ТолькоВидимые/НеОбновлять) + Процедура, вызывающая обновление колонки вручную, желательно предусмотреть возможность указания номера строки, чтобы можно было этим рулить вручную/по кнопке/по таймеру)

4.Добавление "Програмное управление выравниванием в ячейке МНЧ"

Пункт 3 был бы ОЧЕНЬ полезен, я думаю, очень многие меня поддержат Улыбка особенно, если его можно было бы использовать также и в журналах документов Улыбка
  
Наверх
 
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #11 - 02. Октября 2007 :: 05:57
Печать  
Полностью поддерживаю Slider!!!
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Установка заголовка колонки МНЧ.
Ответ #12 - 02. Октября 2007 :: 06:29
Печать  
Мужики, извините, но это я сейчас реализовывать не буду. Последнее время и так только Артур занимается компонентой. У меня сейчас совсем другие приоритеты Печаль
  

FormEx developer
Наверх
www  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #13 - 02. Октября 2007 :: 07:12
Печать  
Хоть на заголовки можно надеяться?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Установка заголовка колонки МНЧ.
Ответ #14 - 02. Октября 2007 :: 07:26
Печать  
rassik писал(а) 02. Октября 2007 :: 07:12:
Хоть на заголовки можно надеяться?

На заголовки можно.
  

FormEx developer
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Установка заголовка колонки МНЧ.
Ответ #15 - 02. Октября 2007 :: 08:59
Печать  
Выложено обновление. Скачиваем и проверяем.
  

FormEx developer
Наверх
www  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #16 - 02. Октября 2007 :: 14:49
Печать  
Урря! Улыбка
  
Наверх
 
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #17 - 02. Октября 2007 :: 14:58
Печать  
Качнул.
!!!! 1С падает

Функция глАтрибутПоФормуле(Форма, Формула, НАтр = "") экспорт
     глФормекс = СоздатьОбъект("РасширениеФормы");
     глФормекс.УстановитьФорму(Форма);
     Для Н = 0 по глФормекс.КоличествоАтрибутов() - 1 Цикл
           Рек = глФормекс.ПолучитьАтрибут(Н);
           Если Рек.Формула = Формула Тогда
                 НАтр = Н;
                 Возврат Рек;
           КонецЕсли;
     КонецЦикла;
     глФормекс = 0;
     Возврат 0;
КонецФункции // глАтрибутМНЧПоФормуле()

Вызываю в процедуру глоб модуля для установки видимости колонок из процедуры "ПриОткрытии" формы документа.

Код такой:

Рек = глАтрибутПоФормуле(Конт.Форма, Формула);
Рек.Заголовок = "111";           !!!!! - тут 1С падает

  
Наверх
 
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #18 - 02. Октября 2007 :: 15:00
Печать  
Что тут не так?
  
Наверх
 
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #19 - 02. Октября 2007 :: 15:13
Печать  
Предыдущая функция размещена в глоб модуле.

Эта тестовая процедура  размещена в модуле формы и работает

Процедура УстАтр()
      НомерАтрибута = 0;
      глАтрибутПоФормуле(Форма, "ЗначениеКН(1)", НомерАтрибута);  // тут получаем номер атрибута
      Атр = СоздятьОбъект("АтрибутФормы");
      Атр.УстановитьАтрибут(Форма, НомерАтрибута);
      Атр.Заголовок = "111"; // !!!! ТУТ ВСЕ РАБОТАЕТ
КонецПроцедуры
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Установка заголовка колонки МНЧ.
Ответ #20 - 02. Октября 2007 :: 15:30
Печать  
Цитата:
Предыдущая функция размещена в глоб модуле.

Она возвращает ссылку на атрибут. И все работает нормально.
Я попробовал.
Цитата:
Процедура УстАтр()
     НомерАтрибута = 0;
     глАтрибутПоФормуле(Форма, "ЗначениеКН(1)", НомерАтрибута);  // тут получаем номер атрибута
     Атр = СоздятьОбъект("АтрибутФормы");
     Атр.УстановитьАтрибут(Форма, НомерАтрибута);
     Атр.Заголовок = "111"; // !!!! ТУТ ВСЕ РАБОТАЕТ
КонецПроцедуры

А тут она возвращает номер атрибута.
Ты слегка запутался по-моему.
  
Наверх
ICQ  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #21 - 02. Октября 2007 :: 16:01
Печать  
По-моему все правильно.
1. Создаю объект АтрибутФормы
2. Вызываю метод УстановитьАтрибут(Форма, НомерАтрибута)
3. И дальше работаю с эти созданным объектом.
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Установка заголовка колонки МНЧ.
Ответ #22 - 02. Октября 2007 :: 16:09
Печать  
rassik писал(а) 02. Октября 2007 :: 16:01:
По-моему все правильно.
1. Создаю объект АтрибутФормы
2. Вызываю метод УстановитьАтрибут(Форма, НомерАтрибута)
3. И дальше работаю с эти созданным объектом.

Вот как тестировал я.
В глобальнике твоя функция без изменений. Хотя третий параметр здесь лишний.
Код
Выбрать все
Функция глАтрибутПоФормуле(Форма, Формула, НАтр = "") экспорт
     глФормекс = СоздатьОбъект("РасширениеФормы");
     глФормекс.УстановитьФорму(Форма);
     Для Н = 0 по глФормекс.КоличествоАтрибутов() - 1 Цикл
	     Рек = глФормекс.ПолучитьАтрибут(Н);
	     Если Рек.Формула = Формула Тогда
		     НАтр = Н;
		     Возврат Рек;
	     КонецЕсли;
     КонецЦикла;
     глФормекс = 0;
     Возврат 0;
КонецФункции // глАтрибутМНЧПоФормуле()
 



На форме документа в табличной части колонка без идентификатора и заголовка с формулой Проба()
Открываю документ.
Код
Выбрать все
Процедура ПослеСозданияФормы()
Формула="Проба()";
Рек = глАтрибутПоФормуле(Форма, Формула);
Рек.Заголовок = "111";	 //    !!!!! - тут 1С падает
КонецПроцедуры
 


Все работает.
  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Установка заголовка колонки МНЧ.
Ответ #23 - 02. Октября 2007 :: 16:17
Печать  
Может ты в теле модуля формы вызываешь изменение заголовка?
Тогда, конечно упадет, т.к. этого атрибута еще не существует.
Хэндлу еще нема Очень довольный
  
Наверх
ICQ  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #24 - 02. Октября 2007 :: 16:31
Печать  
1. глАтрибутПоФормуле находится в глоб модуле
2. вызывается в процедуре ПриОткрытии формы документа для управления видивостью и заголовками колонок

вроде хэндл формы и колонок должен быть
сейчас попробую прописать вызов глАтрибутПоФормуле в ПослеСозданияФормы
  
Наверх
 
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #25 - 02. Октября 2007 :: 16:42
Печать  
Перенес вызов в ПослеСозданияФормы - все заработало.
Не пойму в чем разница?
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Установка заголовка колонки МНЧ.
Ответ #26 - 02. Октября 2007 :: 16:49
Печать  
rassik писал(а) 02. Октября 2007 :: 16:42:
Перенес вызов в ПослеСозданияФормы - все заработало.
Не пойму в чем разница?

Формы еще физически нет, а ты пытаешься изменить заголовок у атрибута.
В ПослеСозданияФормы окно уже физически существует.
АЛьФ тебе понятней объяснит. Улыбка
  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Установка заголовка колонки МНЧ.
Ответ #27 - 02. Октября 2007 :: 16:54
Печать  
Можешь в ПослеОткрытия() перенести, но ПослеСозданияФормы() во многих случаях предпочтительней, т.к. позволяет избежать мельтешения при сложных перестроениях формы.
  
Наверх
ICQ  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #28 - 02. Октября 2007 :: 17:07
Печать  
rassik писал(а) 02. Октября 2007 :: 14:58:
Качнул.
!!!! 1С падает

Функция глАтрибутПоФормуле(Форма, Формула, НАтр = "") экспорт
     глФормекс = СоздатьОбъект("РасширениеФормы");
     глФормекс.УстановитьФорму(Форма);
     Для Н = 0 по глФормекс.КоличествоАтрибутов() - 1 Цикл
           Рек = глФормекс.ПолучитьАтрибут(Н);
           Если Рек.Формула = Формула Тогда
                 НАтр = Н;
                 Возврат Рек;
           КонецЕсли;
     КонецЦикла;
     глФормекс = 0;
     Возврат 0;
КонецФункции // глАтрибутМНЧПоФормуле()

Вызываю в процедуру глоб модуля для установки видимости колонок из процедуры "ПриОткрытии" формы документа.

Код такой:

Рек = глАтрибутПоФормуле(Конт.Форма, Формула);
Рек.Заголовок = "111";           !!!!! - тут 1С падает



Дело в том, что у меня в перед Рек.Заголовок = "111" есть еще Рек.Видимость = 1, т.е код выглядит так

Рек.Видимость = 1
Рек.Заголовок = "111"

так вот Рек.Видимость = 1 - // ВСЕ НОРМАЛЬНО!
Почему?



  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Установка заголовка колонки МНЧ.
Ответ #29 - 02. Октября 2007 :: 17:14
Печать  
Цитата:
Почему?

Наверно, потому что пытаешься перерисовать еще не нарисованый реквизит.
Придет АЛьФ и расскажет правильными словами Улыбка
  
Наверх
ICQ  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #30 - 02. Октября 2007 :: 17:17
Печать  
Улыбка
Ждем АЛЬФа.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Установка заголовка колонки МНЧ.
Ответ #31 - 02. Октября 2007 :: 19:13
Печать  
А я в кино был. Вот!
Проверил. Действительно падает.
Завтра буду править.
Я там еще неудачно исходники Артура залил, поэтому все равно надо будет завтра все досконально сверить и собрать новую сборку.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Установка заголовка колонки МНЧ.
Ответ #32 - 02. Октября 2007 :: 19:16
Печать  
Цитата:
Проверил. Действительно падает.

Не падает. (только спать не посылай Улыбка)
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Установка заголовка колонки МНЧ.
Ответ #33 - 02. Октября 2007 :: 19:30
Печать  
vip писал(а) 02. Октября 2007 :: 19:16:
Цитата:
Проверил. Действительно падает.

Не падает. (только спать не посылай Улыбка)

А вот и падает!
В документе в ПриОткрытии поместил такой код:
Код
Выбрать все
	ФормаРасш = СоздатьОбъект("РасширениеФормы");
	Для инд = 0 По ФормаРасш.КоличествоАтрибутов() - 1 Цикл
		Атр = ФормаРасш.ПолучитьАтрибут(инд);
		Сообщить(""+инд+" : """+Атр.Заголовок+"""");
		Атр.Заголовок = "Реквизит №"+инд;
	КонецЦикла;
 


И в аут...
Проблема в том, что в этот момент метод pDoc->ExistWindow() возвращает, что окно уже создано (фактически формы еще нет, как мы давно знаем). А вот при попытке получить многострочную часть возвращается NULL, на который я не поставил проверку. Отсюда и падение.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Установка заголовка колонки МНЧ.
Ответ #34 - 02. Октября 2007 :: 19:53
Печать  
Цитата:
vip писал(а) 02. Октября 2007 :: 19:16:
Цитата:
Проверил. Действительно падает.

Не падает. (только спать не посылай Улыбка)

А вот и падает!
В документе в ПриОткрытии поместил такой код:
Код
Выбрать все
	ФормаРасш = СоздатьОбъект("РасширениеФормы");
	Для инд = 0 По ФормаРасш.КоличествоАтрибутов() - 1 Цикл
		Атр = ФормаРасш.ПолучитьАтрибут(инд);
		Сообщить(""+инд+" : """+Атр.Заголовок+"""");
		Атр.Заголовок = "Реквизит №"+инд;
	КонецЦикла;
 


И в аут...
Проблема в том, что в этот момент метод pDoc->ExistWindow() возвращает, что окно уже создано (фактически формы еще нет, как мы давно знаем). А вот при попытке получить многострочную часть возвращается NULL, на который я не поставил проверку. Отсюда и падение.

Да это понятно. Даже если поставишь проверку, заголовок не изменится. Просто падения не будет.
Все равно надо в доке указать, что сработает после физического создания формы.
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Установка заголовка колонки МНЧ.
Ответ #35 - 02. Октября 2007 :: 20:02
Печать  
vip писал(а) 02. Октября 2007 :: 19:53:
Да это понятно. Даже если поставишь проверку, заголовок не изменится. Просто падения не будет.
Все равно надо в доке указать, что сработает после физического создания формы.

Угу. Все точно.
  

FormEx developer
Наверх
www  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #36 - 03. Октября 2007 :: 07:10
Печать  
Еще один баг.

Есть такая прцедура глоб. модуля.

Код
Выбрать все
Функция глКНОтобразитьКолонки(ИдФормы, Конт) экспорт
		Атр = СоздатьОбъект("АтрибутФормы");
	ИдРек 		= "ЗначениеКН";
	ТблНастр 	= глКНПолучитьНастройки(ИдФормы);
		ТблНастр.ВыбратьСтроки();
	Пока ТблНастр.ПолучитьСтроку() = 1 Цикл
			В		  = ТблНастр.ВидИтога;
		Формула  = "ЗначениеКН(" + Строка(ТблНастр.НомерСтроки) + ")";
		НАтр	    = 0;

		глАтрибутПоФормуле(Конт.Форма, Формула, НАтр); // !!!!! Здесь сбивается ТблНастр.НомерСтроки
																		 //  т.е. после первого вызова
																		 // ТблНастр.НомерСтроки  становится равным 6
																		// хоя по идее не должен измениться
		Если НАтр <> 0 Тогда
			Атр.УстановитьАтрибут(Конт.Форма, НАтр);
			Атр.Видимость	= глНЕ(ПустоеЗначение(ТблНастр.ВидИтога));
			Атр.Заголовок	= глКНЗаголовок(ТблНастр);
		КонецЕсли;
	КонецЦикла;
 



ТблНастр - таблица (ТЗ) с настройками параметров колонок МНЧ
каждая строка - параметры соотв колонки МНЧ
Идем по таблице, получаем параметры и устанавливаем их для соотв. колонки

Так вот обойти всю ТблНастр не удается, т.к. сбивается ТблНастр.НомерСтроки после первого вызова глАтрибутПоФормуле.

Перепробовал разные варианты процедуры. Помогает только цикл с получением строки через ПолучитьСтрокуПоНомеру, послу вызова глАтрибутПоФормуле, всеравно сбивается НомерСтроки, но я перед вызовом Атр.Видимость и т.д еще раз вызываю ПолучитьСтрокуПоНомеру, чтобы вернуться на нужную строку.

Так пока работает, но боюсь, что это не стабильное решение.
  
Наверх
 
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Установка заголовка колонки МНЧ.
Ответ #37 - 03. Октября 2007 :: 07:50
Печать  
А не пробовал сделать так?
Код
Выбрать все
Функция глКНОтобразитьКолонки(ИдФормы, Конт) экспорт
     Перем ТблНастр;
     ..... 

  
Наверх
ICQ  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #38 - 03. Октября 2007 :: 08:01
Печать  
Что это даст?
  
Наверх
 
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #39 - 03. Октября 2007 :: 08:03
Печать  
Без вызова глАтрибутПоФормуле обход работает нормально.
  
Наверх
 
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #40 - 03. Октября 2007 :: 08:04
Печать  
ИМХО счетчик не должен сбиваться от вызова функции.
Это вообще очень плохо, т.к. в следующий раз может сбиться еще, что-нибудь более важное.
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Установка заголовка колонки МНЧ.
Ответ #41 - 03. Октября 2007 :: 08:21
Печать  
rassik писал(а) 03. Октября 2007 :: 08:04:
ИМХО счетчик не должен сбиваться от вызова функции.
Это вообще очень плохо, т.к. в следующий раз может сбиться еще, что-нибудь более важное.

Ничего не понял. Ты код приводи попроще, в котором суть проблемы видна.
Я вот вчера так и не понял, что возвращает у тебя глАтрибутПоФормуле - в одном вызове атрибут, в другом номер атрибута.
Дай примитивный код, в котором четко видна проблема.
  
Наверх
ICQ  
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Установка заголовка колонки МНЧ.
Ответ #42 - 03. Октября 2007 :: 08:22
Печать  
1. Очень сильно подозреваю, что глКНОтобразитьКолонки() у тебя вызывается лишний раз (даже не по твоей вине), поставь Сообщить( ЧтоНибудь ) в её начало, посмотри, сколько вызовов.

2. Что это даст? Действительно, если глКНПолучитьНастройки(ИдФормы) возвращает ссылку на некую общую таблу, то "Перем" здесь не поможет, и при двойном вызове может произойти бяка.

Попробуй так:
Код
Выбрать все
Функция глКНОтобразитьКолонки(ИдФормы, Конт) экспорт
   Перем ТблНастр;
   Сообщить( "-------" );
   ТблНастр = СоздатьОбъект( "ТаблицаЗначений" );
   глКНПолучитьНастройки(ИдФормы).Выгрузить( ТблНастр );
   .....  


ЗЫ: Используй для форматирования кода кнопку [ # ]
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Установка заголовка колонки МНЧ.
Ответ #43 - 03. Октября 2007 :: 08:27
Печать  
rassik писал(а) 03. Октября 2007 :: 08:04:
ИМХО счетчик не должен сбиваться от вызова функции.
Это вообще очень плохо, т.к. в следующий раз может сбиться еще, что-нибудь более важное.

Не должен. Плохо.
Поэтому рекомендую пройтись пошагово отладчиком и посмотреть на какой именно строке кода изменяется позиционирование в ТЗ.
  

FormEx developer
Наверх
www  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #44 - 03. Октября 2007 :: 08:56
Печать  
Процедуры достаточно простые. если нужны комменты - пишите.

Коды процедур:

Код
Выбрать все
Функция глАтрибутПоФормуле(Форма, Формула, НАтр = "") экспорт
	глФормекс = СоздатьОбъект("РасширениеФормы");
	глФормекс.УстановитьФорму(Форма);
	Для Н = 0 по глФормекс.КоличествоАтрибутов() - 1 Цикл
		Рек = глФормекс.ПолучитьАтрибут(Н);
		Если СокрЛП(Рек.Формула) = Формула Тогда
			НАтр = Н;
			глФормекс = 0;
			Возврат Рек;
		КонецЕсли;
	КонецЦикла;
	глФормекс = 0;
	Возврат 0;
КонецФункции // глАтрибутМНЧПоФормуле()

Функция глКНОтобразитьКолонки(ИдФормы, Конт) экспорт
		ИдРек 		= "ЗначениеКН";
		ТблНастр 	= глКНПолучитьНастройки(ИдФормы);
		ТблНастр.ВыбратьСтроки();
	Пока ТблНастр.ПолучитьСтроку() = 1 Цикл
		    В 		= ТблНастр.ВидИтога;
		    Формула = "ЗначениеКН(" + Строка(ТблНастр.НомерСтроки) + ")";
		    НАтр	= 0;
		    глАтрибутПоФормуле(Конт.Форма, Формула, НАтр);	    // !!!!!! - ЗДЕСЬ СБОЙ
		    Если НАтр <> 0 Тогда
				 Атр.УстановитьАтрибут(Конт.Форма, НАтр);
				 Атр.Видимость	= глНЕ(ПустоеЗначение(ТблНастр.ВидИтога));
				 Атр.Заголовок	= глКНЗаголовок(ТблНастр);
		    КонецЕсли;
		 КонецЦикла;
КонецФункции // глКНОтобразитьКолонки()
 

  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Установка заголовка колонки МНЧ.
Ответ #45 - 03. Октября 2007 :: 09:00
Печать  
Отладчиком проходился?
  

FormEx developer
Наверх
www  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #46 - 03. Октября 2007 :: 09:03
Печать  
Как получается сбой.

1. глКНОтобразитьКолонки вызывается из открытой формы документа по нажатию кнопки.
2. В цикле по ТблНастр
            1-й вызов ПолучитьСтроку:   НомерСтроки = 1     Все нормально и дальше все нормально
            2-й вызов ПолучитьСтроку:   НомерСтроки = 2     Пока все нормально, но далее после вызова 
                                                                                             глАтрибутПоФормуле НомерСтроки становится равным 4

Функция глАтрибутПоФормуле возвращает атрибут формы, в НАтр дополнительно возвращает номер атрибута.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Установка заголовка колонки МНЧ.
Ответ #47 - 03. Октября 2007 :: 09:08
Печать  
Еще раз: пройдись отладчиком по каждой строке кода и засеки где именно изменяется строка. Или выложи простенькую конфигу, на которой можно отследить этот глюк.
Более чем уверен, что FormEx тут ни при чем и проблема в самом коде.
  

FormEx developer
Наверх
www  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #48 - 03. Октября 2007 :: 09:09
Печать  
Причем такая фишка

Номер строки после 2-го вызова ПолучитьСтроку становится равным количеству колонок с формулами на форме.
В примере - количеству колонок с формулами ЗначениеКН(1) ЗначениеКН(2) ЗначениеКН(3) ... и т.д.

Пробовал на справочнике "Номенклатура" - там 6(шесть) таких колонок, НомерСтроки устанавливается в 6.
На документе "Работа с прайсом" - там 4 колонки, НомерСтроки устанавливается в 4.

Такие дела.
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Установка заголовка колонки МНЧ.
Ответ #49 - 03. Октября 2007 :: 09:09
Печать  
Цитата:
Еще раз: пройдись отладчиком по каждой строке кода и засеки где именно изменяется строка. Или выложи простенькую конфигу, на которой можно отследить этот глюк.
Более чем уверен, что FormEx тут ни при чем и проблема в самом коде.

+1
  
Наверх
ICQ  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #50 - 03. Октября 2007 :: 09:10
Печать  
Ок сейчас пройдусь построчно.
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Установка заголовка колонки МНЧ.
Ответ #51 - 03. Октября 2007 :: 09:10
Печать  
Выложи маленькую тестовую конфу. Очень сложно отследить ошибку по рассказу на словах.
С одним документом.
  
Наверх
ICQ  
IP записан
 
rassik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 35
Зарегистрирован: 30. Сентября 2007
Re: Установка заголовка колонки МНЧ.
Ответ #52 - 03. Октября 2007 :: 09:24
Печать  
Разобрался.

Дело тут вот в чем.
С ТблНастр работает еще и другая функция конфигурации, возвращаяющая значение в соотв колонку.
Эта фунция перепозиционирует текущую строку ТблНастр.

Сразу не выявил, т.к. функция вызывается в формуле колонки.

Сорри, мой косяк.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Установка заголовка колонки МНЧ.
Ответ #53 - 03. Октября 2007 :: 09:25
Печать  
Цитата:
выложи простенькую конфигу, на которой можно отследить этот глюк.

+100 Улыбка
Из личного, довольно большого опыта Улыбка в плане тестирования.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать