for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Вопросы по 1С
  

Некоторые феньки
piva
Автор

Сообщений: 18541
Откуда: Курган
Дата: 23.09.08 19:16:53
Ну вот и некоторые феньки которые я использую в своей повседневной (теперь) работе
Не в счет кто это использует но не хочет публиковать на FoxClub

В частости - имеем как правила в работе таблицу значений которую в отладке показываем через
Сообщить или Макеты - есть гораздо более простой способ
  
  Процедура ПросмотрТЗВФорме(ТЗ) Экспорт  
  	Перем Форма;  
  	Форма=ПолучитьОбщуюФорму("ФормаПросмотра");  
  	Форма.ЭлементыФормы.ТабличноеПоле.Значение=ТЗ;  
  	Форма.ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();  
  	Форма.Открыть();  
  КонецПроцедуры
Далее в коде
ТЗ1=Новый ТаблицаЗначений;  
  ТЗ1.Колонки.Добавить(..)  
  ..ю.  
  Строка=ТЗ1.Добавить()  
  Строка....= ....  
  
Где-то надо посмотреть что получилось
Для этого строим Общую форму в которую запихиваем "ТабличноеПоле" с типом данных "Таблицазначений" у и имя соответственно "ТабличноеПоле"
Далее в коде можем пользовать
  
  ПросмотрТЗВФорме(ТЗ1)

Так же можем показать эту таблицу значений в отчете

Процедура ПросмотрТЗВОтчете(ТЗ) Экспорт  
  	Перем Построитель, ТипИсточника;  
  	ТипИсточника=Новый ОписаниеИсточникаДанных(ТЗ);  
  	Построитель=Новый ПостроительОтчета;  
  	Построитель.ОбрабатыватьПрерываниеПользователя=Истина;  
  	Построитель.ИсточникДанных=ТипИсточника;  
  	Построитель.Вывести();  
  КонецПроцедуры

Как с нашим ТЗ1
ПросмотрТЗВОтчете(ТЗ1)
Тока подрудитесь указывать ширину колонок (в фокселях :lough при добавлении колонок в Таблицу значений (см мануал)

ЗЫ - прододжение следует


------------------
Часто бывает так, что есть над чем задуматься, а нечем.




Исправлено: piva, 23.09.08 19:22
Ratings: 0 negative/0 positive

Re: Некоторые феньки
medstrax

Сообщений: 4474
Дата: 24.09.08 09:28:41
Скромные 5 копеек, может кому пригодится.
В глобальном контексте существует реквизит ГлавныйИнтерфейс, который содержит коллекцию элементоа управления интерфейсами, определенными в конфигураторе. У каждого из элементов управления есть булевые свойства - Видимость и Переключаемый, которые отвечают соответственно за отображение интерфейса и возможность его отключения. Фишка в том, что присвоить этим свойствам нужное значение фиг получится, т.е. если, к примеру, в данный момент <Интерфейс>.Видимость = Истина, то после выполнения кода "<Интерфейс>.Видимость = Ложь"
значение свойства Видимость не изменится(!). Хз, баг это или фича, но чтобы изменить свойство на противоположное, надо присвоить ему _это_же_ значение, т.е. в данном примере выполнить
"<Интерфейс>.Видимость = Истина"
Ratings: 0 negative/0 positive

Re: Некоторые феньки
Foxtrot

Сообщений: 3401
Откуда: Куда:
Дата: 24.09.08 12:06:28
из доки про Интерфейс.Переключаемый
Цитата:
Исользование: Только чтение


------------------
P.S. будете проходить мимо, не стесняйтесь, проходите
Ratings: 0 negative/0 positive

Re: Некоторые феньки
oleg_km

Сообщений: 487
Откуда: СПб
Дата: 24.09.08 20:02:24
medstrax
Скромные 5 копеек, может кому пригодится.
Хз, баг это или фича, но чтобы изменить свойство на противоположное, надо присвоить ему _это_же_ значение, т.е. в данном примере выполнить
"<Интерфейс>.Видимость = Истина"

Тоже можно сделать функцией УстановитьИнтерфейс.
Мы отказались от встроенных интерфейсов. Больно муторно для каждой роли заново все дерево рисовать с незначительными изменениями. Сделали через общий справочник пунктов меню с доступом ролей к отдельным его пунктам.
Ratings: 0 negative/0 positive

Re: Некоторые феньки
medstrax

Сообщений: 4474
Дата: 25.09.08 07:14:59
Foxtrot
из доки про Интерфейс.Переключаемый
Цитата:
Исользование: Только чтение
Не знаю где ты нашел такую доку - вот цитата из синтакс-помощника
ЭлементУправленияИнтерфейсом (InterfaceControlItem)
Переключаемый (Switchable)
Использование:
Чтение и запись
Ratings: 0 negative/0 positive

Re: Некоторые феньки
medstrax

Сообщений: 4474
Дата: 25.09.08 07:22:00
oleg_km
medstrax
Скромные 5 копеек, может кому пригодится.
Хз, баг это или фича, но чтобы изменить свойство на противоположное, надо присвоить ему _это_же_ значение, т.е. в данном примере выполнить
"<Интерфейс>.Видимость = Истина"

Тоже можно сделать функцией УстановитьИнтерфейс.
Мы отказались от встроенных интерфейсов. Больно муторно для каждой роли заново все дерево рисовать с незначительными изменениями. Сделали через общий справочник пунктов меню с доступом ролей к отдельным его пунктам.
1) Ткни меня носом в функцию УстановитьИнтерфейс, плиз. В моей 1С-ке (вер 8.1.12.98) упоминания о ней я не нашел
2) Зачем для каждой роли рисовать отдельный интерфейс? Сделал какой-то базовый, потом его копируешь и добавляешь/убираешь нужные менюшки.



Исправлено: medstrax, 25.09.08 07:22
Ratings: 0 negative/0 positive

Re: Некоторые феньки
Foxtrot

Сообщений: 3401
Откуда: Куда:
Дата: 25.09.08 13:40:59
Цитата:
Не знаю где ты нашел такую доку
67-й релиз
Цитата:
Зачем для каждой роли рисовать отдельный интерфейс? Сделал какой-то базовый, потом его копируешь и добавляешь/убираешь нужные менюшки.
верной дорогой идете, товарищи

------------------
P.S. будете проходить мимо, не стесняйтесь, проходите
Ratings: 0 negative/0 positive

Re: Некоторые феньки
oleg_km

Сообщений: 487
Откуда: СПб
Дата: 25.09.08 23:36:26
medstrax
1) Ткни меня носом в функцию УстановитьИнтерфейс, плиз. В моей 1С-ке (вер 8.1.12.98) упоминания о ней я не нашел
2) Зачем для каждой роли рисовать отдельный интерфейс? Сделал какой-то базовый, потом его копируешь и добавляешь/убираешь нужные менюшки.

1) Обманул - ПереключитьИнтерфейс
2) копируй - не копируй, а все равно: 20 ролей - 20 интерфейсов. Нужно изменить какой-нибудь общий для многих пункт меню - нужно ковыряться по всем.
Ratings: 0 negative/0 positive

Re: Некоторые феньки
medstrax

Сообщений: 4474
Дата: 26.09.08 06:01:59
Угу, есть такая буква, действительно ПереключитьИнтерфейс. Только этой функой нельзя отключить
интерфейсы, у которых Переключаемый = Ложь. Поэтому лучше пробежать в цикле все интерфейсы, установить в нужные значения Видимость и Переключаемый, а потом выполнить ПереключитьИнтерфейс без параметров.
Ratings: 0 negative/0 positive

Re: Некоторые феньки
medstrax

Сообщений: 4474
Дата: 26.09.08 06:32:17
Еще один небольшой трюк. В документации упоминается о невозможности отработать нестандартную
расшифровку для табличного документа, не связанного с элементом формы ПолеТабличногоДокумента.
Ограничение неудобное, бывает из одного отчета нужно сформировать несколько табличных документов, по которым необходима нестандартная расшифровка. Лепить все эти док-ты на форму - некрасиво. Хотя в общем случае это ограничение справедливо, на практике его можно обойти. Решение: создаем в конфиге свой справочник (или документ, или еще что-то для чего отрабатывает стандартная расшифровка). При формировании табличного документа подсовываем в параметры расшифровки ячеек объекты из этого справочника. В модуле формы справочника в процедуре ПередОткрытием устанавливаем Отказ = Истина и прописываем логику отработки нестандартной расшифровки. В общем все, хотя есть еще куча нюансов, например куда засунуть
"настоящие" параметры расшифровки, как (в случае вывода нескольких табличных док-тов) определять какой из них выбран для расшифровки и пр. Но это все решаемо



Исправлено: medstrax, 26.09.08 06:34
Ratings: 0 negative/0 positive

Re: Некоторые феньки
medstrax

Сообщений: 4474
Дата: 26.09.08 06:44:07
И еще. Столкнулся буквально на днях. Если в регистре накопления меняешь точность ресурсов (в моем случаев я поменял с 3 знаков после запятой на 2) - потом появляются левые остатки. Т.е. остатки, к-рые не являются рез-том каких-либо движений. Получается рассогласование таблицы оборотов и таблицы итогов. Весьма неприятная вещь. Лечится пересчетом итогов из конфигуратора + перепроведением всех регистраторов.
Ratings: 0 negative/0 positive

Re: Некоторые феньки
piva
Автор

Сообщений: 18541
Откуда: Курган
Дата: 26.09.08 07:30:40
Расшифруй, что значит "настандатрная расшифровка"
Ну лепил я вируальные колонки или это не то ?


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive

Re: Некоторые феньки
medstrax

Сообщений: 4474
Дата: 26.09.08 07:46:56
Нестандартная расшифровка - отличается от стандартной тем, что ее логика программируется произвольно, а не отрабатывается системой. Поясню на примере: ты формируешь реестр скажем расходных накладных, т.е. в табличном документе выводится n-ое количество строчек, в каждой из которых в первую ячейку мы кладем ссылку на документ, во вторую ячейку сумму док-та и т.д.
При стандартной расшифровке при двойном клике по первой ячейке в каждой строчке - откроется форма этого документа. А если мы хотим увидеть, к примеру, при двойном клике отчет по движениям этого док-та - тут уже нужно ловить событие ОбработкаРасшифровки и в своей процедуре
отрабатывать логику этого отчета. Вся фишка в том, что если табличный документ не связан с формой, у него нет события ОбработкаРасшифровки и приходится извращаться, о чем я и писал выше
Ratings: 0 negative/0 positive

Re: Некоторые феньки
piva
Автор

Сообщений: 18541
Откуда: Курган
Дата: 26.09.08 08:37:39
Понятно, но если нет стандартной расшифровки то и обработку свою писать надо - это и ежу понятно


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive

Re: Некоторые феньки
piva
Автор

Сообщений: 18541
Откуда: Курган
Дата: 29.09.08 04:48:14
Продолжим

Часто в 1С-ке надо перекидывть инфу из выборок, таблиц значений в другую таблицу по каким-то условиям - но меня достало делать обезьянью работу т.е. переписывать все имена колонок типа
  
  Для каждого строка из ТЗСтроки цикл  
      НоваяСтрока=ТЗ2.Добавить();  
      НоваяСтрока.Номенклатура=Строка.Номеклатура;  
      НоваяСтрока.Количество=Строка.Количество;  
      ....  
  КонецЦикла;
Бред какой-то я был в шоке - пришлось написать свою процедуру переброса строк с одинаковыми именами колонок
  
  Процедура ПерегрузитьСтроки(Откуда,Куда,знач ТЗ)  
  	Перем _,__;	  
  	Для каждого _ из ТЗ.Колонки Цикл  
  		__=_.Имя;  
  		Попытка  
  			Куда[__]=Откуда[__];  
  		Исключение  
  		КонецПопытки;  
  	КонецЦикла;  
  КонецПроцедуры
Тогда приведенный код сокращается
  
  Для каждого строка из ТЗСтроки цикл  
      НоваяСтрока=ТЗ2.Добавить();  
      ПерегрузитьСтроки(Строка,НоваяСтрока,ТЗ2);  
  КонецЦикла;

И еще нужно было селать на одну динную портянку ТаблицыЗначений несколько подитогов - фоксе - без проблем - натравил запрос - на портянку и всех делов - в 1с-ке же приходится корячится как во времена FoxBase

Мало того что кучу подтитогов пришлось записать в стрктуру - значения которой есть таблицызначений - потому что иначе значения структуры изменять нельзя, так пришлось еще писать свой сумматор
  
  Процедура ПриплюсоватьЗначения(Откуда,Куда,знач ТЗ)  
  	Перем _,__;	  
  	Для каждого _ из ТЗ.Колонки Цикл  
  		__=_.Имя;  
  		Попытка  
  			Если ТипЗнч(Откуда[__])=Тип("Число") Тогда  
  				Если ТипЗнч(Куда[__])=Тип("Число") Тогда  
  				Иначе  
  					Куда[__]=0;  
  				КонецЕсли;  
  				Куда[__]=Куда[__]+Откуда[__];  
  			КонецЕсли;  
  		Исключение  
  		КонецПопытки;  
  	КонецЦикла;  
  КонецПроцедуры
Тогда код получался компактнее
  
  // СборкаТЗ - это структура с ТаблицамиЗначений  
  Процедура ЗаписатьАгента(Строка,СборкаТЗ)  
  	Перем Найдено;  
  	Найдено=СборкаТЗ.Агенты.Найти(Строка.Торговый,"Торговый");  
  	Если Найдено=Неопределено Тогда  
  		Найдено=СборкаТЗ.Агенты.Добавить();  
  		ПерегрузитьСтроки(Строка,Найдено,СборкаТЗ.Агенты);  
  	Иначе		  
  		ПриплюсоватьЗначения(Строка,Найдено,СборкаТЗ.Агенты);  
  	КонецЕсли;  
  КонецПроцедуры


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive

Re: Некоторые феньки
oleg_km

Сообщений: 487
Откуда: СПб
Дата: 30.09.08 23:25:03
piva
Продолжим
  
  Для каждого строка из ТЗСтроки цикл  
      НоваяСтрока=ТЗ2.Добавить();  
      НоваяСтрока.Номенклатура=Строка.Номеклатура;  
      НоваяСтрока.Количество=Строка.Количество;  
      ....  
  КонецЦикла;

ЗаполнитьЗначенияСвойств(<Приемник>, <Источник>, <Список свойств>, <Исключая свойства>
Ratings: 0 negative/0 positive

Re: Некоторые феньки
medstrax

Сообщений: 4474
Дата: 01.10.08 10:00:25
Фигово. Если речь идет просто о копировании целиком каких-то колонок из одной ТЗ в другую, то, в принципе, способ неплох. А если в табличке-приемнике уже есть какие-то строки и надо просто добавить по каким то критериям строки из таблицы-источника, то способ Пивы наверное оптимальный.
Ratings: 0 negative/0 positive

Re: Некоторые феньки
medstrax

Сообщений: 4474
Дата: 02.10.08 06:27:56
Опа, туплю, функа ЗаполнитьЗначенияСвойств не работает для таблиц значений в целом, а для строк
таблицы значений решение очень удачное
Ratings: 0 negative/0 positive

Re: Некоторые феньки
oleg_km

Сообщений: 487
Откуда: СПб
Дата: 02.10.08 22:50:17
medstrax
Опа, туплю, функа ЗаполнитьЗначенияСвойств не работает для таблиц значений в целом, а для строк
таблицы значений решение очень удачное

Вобщем-то о строках речь и шла
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 5 (Гостей: 5)

18.08.2019 08:13:27 exec: 0.23
Mem: 1.408 Mb

© 2000-2019 Fox Club 
Яндекс.Метрика