:: Вопросы по 1С
Некоторые феньки
piva

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

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

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

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

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

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


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




Исправлено 1 раз(а). Последнее : piva, 23.09.08 19:22
Ratings: 0 negative/0 positive
Re: Некоторые феньки
medstrax
Забанен

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

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
из доки про Интерфейс.Переключаемый
Цитата:
Исользование: Только чтение


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Некоторые феньки
oleg_km
Автор

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

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

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

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

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



Исправлено 1 раз(а). Последнее : medstrax, 25.09.08 07:22
Ratings: 0 negative/0 positive
Re: Некоторые феньки
Foxtrot

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

------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Некоторые феньки
oleg_km
Автор

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

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

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

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



Исправлено 2 раз(а). Последнее : medstrax, 26.09.08 06:34
Ratings: 0 negative/0 positive
Re: Некоторые феньки
medstrax
Забанен

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

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


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Некоторые феньки
medstrax
Забанен

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

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


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

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Продолжим

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

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

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


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Некоторые феньки
oleg_km
Автор

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

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

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

Сообщений: 5964
Дата регистрации: 23.03.2007
Опа, туплю, функа ЗаполнитьЗначенияСвойств не работает для таблиц значений в целом, а для строк
таблицы значений решение очень удачное
Ratings: 0 negative/0 positive
Re: Некоторые феньки
oleg_km
Автор

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

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


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

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

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