Имя: Пароль:
1C
1C 7.7
v7: FormEx :: Новый метод
0 АЛьФ
 
21.05.19
16:41
Не могу не поделиться.
Понадобилось к готовой печатной форме добавлять справа штрихкод. За два дня родился метод Сервис::УстановитьПоследнююЯчейкуТаблицы(Таблица, Строка, Колонка). После применения этого метода штатный метод Таблица.ПрисоединитьСекцию() присоединит секцию, начиная с ячейки с переданными координатами строки и колонки.
Вооот...

Качать, как обычно, на dorex.pro
1 Вафель
 
21.05.19
16:42
не ужто у вас до сих пор на 77?
2 АЛьФ
 
21.05.19
16:50
2(1) Восьмерка сырая еще.
3 HawkEye
 
21.05.19
16:59
(0) это вместо области?
4 Кодер
 
21.05.19
17:07
Спасибо!
5 sdaf
 
21.05.19
17:13
(0) Алексей вопрос в тему, печать ШК не работает через formex, ошибок не выдает но и ШК не выводит, читал что вроде используете zint , надо ли регистрировать все dll для zint или все уже есть в formex? (пробывал регистрировать - все равно не показывает ШК)
6 sdaf
 
21.05.19
17:26
упс, уточнение, щас проверил вот так
глСервис.НарисоватьШтрихкод(Объект, 72, "4660038340835");
работает, это EAN-13.

а вот мне надо ITF-14
глСервис.НарисоватьШтрихкод(Объект, 89, "14660038340832");
не работает
7 sdaf
 
21.05.19
17:33
пишет  "error: Input too long (C0B)" хотя длина верная, 14символов
8 АЛьФ
 
21.05.19
19:48
2(3) Да, чтобы не формировать все ручками через области, а пользоваться более простым присоединением секций.
2(5) Регистрировать от zint ничего не надо. Весь код уже внутри FormEx.
2(7) zint сам считает контрольное число, поэтому надо передавать на один символ меньше. Насколько я помню.
9 АЛьФ
 
21.05.19
19:50
Кстати, поведение НарисоватьШтрихкод несколько изменено (не помню в каком релизе) - этот метод не отваливается с ошибкой, как было изначально, а возвращает текст ошибки.
10 big
 
22.05.19
05:42
Спасибо большое! )
11 Mikeware
 
22.05.19
08:06
где-то когда-то мне такого очень не хватало....
12 АЛьФ
 
22.05.19
08:43
2(11) Возвращайся к нам в начало 2000-х!
13 Масянька
 
22.05.19
09:12
(12) Хорошие были времена...
Экономика росла, семерка летала...
14 Mikeware
 
22.05.19
09:49
(13) семерка и сейчас летает.
КА на серверах в разы более мощных при объемах документооборота в 20-30 раз меньше - еле тащится.
прогресс, мля. тьфу, смотреть тошно. и деваться некуда....
15 Злопчинский
 
23.05.19
01:32
(0) если вывели например 10 строк, простых обычных одинарных в макет
и после последней колонки в 5 строке сделаем как в (0) - но присоединяемая секция будет
а) из двух одинарных ?
б) из двух одинарных но обьединеных..?
в) если установим  ..(Таб, ПоследняяСтрока,Последняя колонка) и сделаем присоединить секцию которая из двух "строк" -?
16 Garykom
 
гуру
23.05.19
01:42
(14) А функционал и навороченность с красивостями сравнивали?
Если взять самописку на 8 УФ без лишнего то она будет шустрее чем 77 и тянуть большие объемы штатно без прямых запросов и разных дополнений если сравнивать.

А писать легче и удобнее в использовании для юзеров с более лучшим функционалом.
77 была очень простая (исключая некоторые моменты) поэтому на ней было сложнее наговнокодить так что все сдохло. В 8-ке это очень легко, разрабы не продумали и привет тормоза.
17 Garykom
 
гуру
23.05.19
01:43
(16)+ Шустрее я подразумеваю моменты работы с требуемыми сейчас объемами данных и кол-вом юзеров онлайн.
18 Garykom
 
гуру
23.05.19
01:47
Вот простой момент.

Кто нибудь смог реализовать в 1С 7.7 круглосуточную работу без простоев?
Совсем без простоев (исключая нештатку с падением сервака и глюками) даже на пару минут для монопольной смены точки актуальности ))
19 abibas
 
23.05.19
07:19
(18) Многие, вероятно. В частности - я. ТиС вырубается только для внесения изменения в конфигурацию. А каждого первого числа месяца в 00:01 запускается открытие месяца прямыми запросами.
20 Масянька
 
23.05.19
09:22
(16) "А зачем нам все эти прибабахи в зоопарке?" (С)
Из анекдота.
21 АЛьФ
 
23.05.19
10:09
2(16) У нас самописка "на 8 УФ". Работает совсем немного человек там. Функционал очень простой. Сервера нормальные. Тормозить безбожно.
22 Pahomich
 
23.05.19
10:17
7.7 пока альтернативы нет...
23 Pahomich
 
23.05.19
10:17
(22) + для некоторых предприятий и задач
24 АЛьФ
 
23.05.19
10:19
2(15) Я пробовал только на присоединении пересечения секций ("Гор|Верт"). После использования (0) метод ПрисоединитьСекцию просто вставляет эту область в таблицу с указанной ячейки поверх существующих (не раздвигает по горизонтали и вертикали).
25 trdm
 
23.05.19
10:23
С сорцами интереснее было, надо - полез, поправил ченить.
26 АЛьФ
 
23.05.19
10:39
27 trdm
 
23.05.19
11:10
Мерси.
Что называется влип в "бойтесь своих желаний" ведь любым сорцам нужно еще собрать доп пакеты и выяснить какой средой собираются.
Я в легком замешательстве. :)
28 Mikeware
 
23.05.19
11:24
(18) Многие. Например, я. Работали 24/7/364 (сервак останавливался 31 декабря в 17 часов и запускался - последние годы автоматически - 1 января в 17). Без остановок. Даже для открытия периода. Даже для изменения конфигурации. Даже для изменения конфигурации с изменениями метаданных. с воостановлением последоватеьности в немонопольном режиме в часы наименьших нагрузок. в УРБД с конфигурацией "снежинка".  
Функционал - сейчас на КА юзвери плюются. а все эти "красивости" я бы загнал разработчикам этих красивостей в гузно и залил бы бетоном.
29 trdm
 
23.05.19
11:33
(18) > Кто нибудь смог реализовать в 1С 7.7 круглосуточную работу без простоев?

встречка, а на восьмерке?
30 АЛьФ
 
23.05.19
12:46
2(27) Среда - MS VC++ 6.0. Дополнительные библиотеки - только boost версии 1.34.1 (не помню закинул я ее в этот архив или нет). Если надо, выложу.
31 trdm
 
29.05.19
14:25
(30) Это уже намного легче.
32 Z1
 
29.05.19
19:41
(18)

Да смог. Работает с 03 Москвы по 23 Москвы.c 00 часов 05 минут по 03 часа регламентные обработки запускаются.
База нерезанная с 2003 года,
sql2005  - Сервер где то года 2011
Был бы sql выше можно было фишечками sql еще поускорять - но экономия должна быть экономной.
мереться _1sjourn не буду.

сейчас загибается иногда Терминал - но при чем ту учетная система,
я думаю на восьмерка тоже без терминала работать не будет ( более 50 коннектов )
а так что v7 что v8 -основа sql.

(18) Сервер не падает - один раз только день не работал когда из-за аварии на весь день восточный
округ Москвы на день отключили (не помню в каком это было году )



(all)
если что sorry за off
33 Z1
 
29.05.19
19:47
(0) А наоборот можешь сделать с помощью zint для v7
распознать ил файла jpg, pdf с изобразением qr кода ( кодов но мне хватит и одного кода )
содержание qr кода
было бы  очень круто ( для меня точно )
34 trdm
 
05.07.19
11:13
Леша, ты как там не в отпуске случаем?
35 Chieftain
 
05.07.19
12:57
(33) Используй zbar
36 ptiz
 
05.07.19
13:00
(18) Страшную вещь скажу - в 7.7 можно было модули "на лету" править, без всякого "динамического обновления" вообще.
37 АгентБезопасной Нацио
 
05.07.19
13:25
(36) штатно - медленно. но тоже можно. Ну и все остальные способы.
38 АЛьФ
 
05.07.19
13:52
2(34) Нет. А что?
39 trdm
 
05.07.19
15:22
(38) Да проблемка есть, может поможешь решить.
Закинул функцию в глобальник:

//==============================================================================
// глПолучитьАтрибФормы( псСтрока, псАтриб ) © trdm 2019-06-23 09:11
Функция глПолучитьАтрибФормы( псСтрока, псАтриб ) Экспорт
    псАтриб = псСтрока;    
    Возврат псАтриб;
КонецФункции // глПолучитьАтрибФормы()


//{} © ТрДм 23.06.2019 9:37:02 (FormEx)
Процедура ПриНажатииКнопкиКлавиатуры(конт, код, _а, _ш, _к, _с, псФСО = 1) Экспорт
    псФСО = 1;
    Если глПользователь.ПоискВСпискахСПомощьюFormEx = 0 Тогда
        Возврат;
    КонецЕсли;
    вСтрокаСообщить = "ПриНажатииКнопкиКлавиатуры: "+_с;
    Если типЗначенияСтр(конт) <> "ГрупповойКонтекст" Тогда
        Возврат;
    КонецЕсли;
    вАтрибут = "";
    Попытка
        вЭлемент = конт.форма.АктивныйЭлемент();
        Если ПустоеЗначение(вЭлемент) = 0 Тогда //{} © ТрДм 24.06.2019 12:20:34
            Попытка
                вРш = Шаблон("[глПолучитьАтрибФормы(конт."+вЭлемент+",вАтрибут)]");
            Исключение
                Если глЭтоПрограммист() = Да Тогда
                    глСообщить("ПриНажатииКнопкиКлавиатуры [20190627-1147] "+ОписаниеОшибки());
                КонецЕсли;
            КонецПопытки;
        Иначе
            Возврат;            
        КонецЕсли;
    Исключение
        Возврат;
    КонецПопытки;
    Если ТипЗначенияСтр(вАтрибут) = "СписокЗначений" Тогда
        //Сообщить(Шаблон("ПриНажатииКнопкиКлавиатуры(конт, код = [код], _а = [_а], _ш = [_ш], _к = [_к], _с = [_с])"));
        псФСО = 0;
        вСимвол = Нрег(_с);
        вСимволы = "0123456789_abcdefghijklmnopqrstuvwxyzабвгдежзийклмнопрстуфхцчшщъыьэюя";
        Если (_к = 1) И ((код = 70) или (код = 114))  Тогда // Ctrl+F(70)|F3(114)
            вСтрока = глКешКонстантИЗначений.Получить("СтрокаДляПоискаВСписках");
            Если ВвестиСтроку(вСтрока,"Строка для поиска в списках",20,0) = 0 Тогда
                Возврат;
            КонецЕсли;
            Если ПустоеЗначение(вСтрока) = 0 Тогда
                глКешКонстантИЗначений.установить("СтрокаДляПоискаВСписках", вСтрока);
                глПоискИПозиционированиеВСпискеИнтерактивно(вАтрибут, вСтрока,2);        
            КонецЕсли;
            Возврат;
        ИначеЕсли (код = 114) И ((_а+_ш+_к) = 0)  Тогда
            вСтрока = глКешКонстантИЗначений.Получить("СтрокаДляПоискаВСписках");
            Если ПустоеЗначение(вСтрока) = 0 Тогда
                глПоискИПозиционированиеВСпискеИнтерактивно(вАтрибут, вСтрока,2);
            КонецЕсли;
        КонецЕсли;
        Если Найти(вСимволы,вСимвол) = 0 Тогда
            псФСО = 1;
            Возврат;
        КонецЕсли;
        глПоискИПозиционированиеВСпискеИнтерактивно(вАтрибут, вСимвол);                
    КонецЕсли;
КонецПроцедуры


Цель: организовать поиск по первой букве в списках значений на форме.
Теперь форма ведет себя не адкватно, при нажатии на АЦК выводится месага, если фокус стоит на кнопке типа:
Поле агрегатного объекта не обнаружено (кнДействия)
Поле агрегатного объекта не обнаружено (кнФирма)
Поле агрегатного объекта не обнаружено (кнОснование)
Поле агрегатного объекта не обнаружено (кнПровести)
Хз, как развязать.
Не помогешь?
40 trdm
 
05.07.19
15:29
Хорошо работает только со СпискамиЗначений, но вот только если в фокусе не список начинают сыпаться ошибки.
41 XLife
 
05.07.19
15:30
динозавры давно вымерли
42 АгентБезопасной Нацио
 
05.07.19
15:35
(41) не все...
44 trdm
 
05.07.19
15:44
блин, подумал и решил через расширение формы:
            вРасшФормы = СоздатьОбъект("РасширениеФормы");
            вРасшФормы.УстановитьФорму(конт.форма);
            вАтрРФ = вРасшФормы.ПолучитьАтрибут(вЭлемент);
            Если вАтрРФ.ТипЗначенияСтр() <> "СписокЗначений" Тогда
                Возврат;
            КонецЕсли;