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

Хранилище

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

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




>  Вопрос с обновлением формы
Victor Skif
Отправлено: 01.03.18, 21:18


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


sava1 @ Сегодня, 20:15 * ,
1С++ v 3.2.4.1
Формекс v 2.0.5.129

Вроде скачивал самые свежие что нашел.
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #139201 · Ответов: 2 · Просмотров: 1484
 

>  Вопрос с обновлением формы
Victor Skif
Отправлено: 01.03.18, 16:47


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


Добрый всем день!

1С 7.7.27, Формекс, 1Спп

У меня опять странный вопрос по интерфейсу.
Допустим, есть форма журнала документов. На ней - текстовое поле ввода.
Форма время от времени обновляется по Форма.Обновить();. Так надо для кое-каких эффектов.
Если при этом пользователь что-то пишет в поле ввода - то написанное обнуляется, поле очищается. Что естественно недопустимо.

Примечание. Формексовская РасшФорма.Обновить() решает проблему! с ней все обновляется и ничего не сбрасывается. Однако есть большой недостаток - не знаю по какой причине, но форма при этом очень значительно моргает. Что естественно недопустимо. Такого моргания нету по обычному Форма.Обновить().

Знает ли кто-то, как это побороть? Как обновлять форму, не сбрасывая ввод? Или как обновлять отдельный реквизит (МногострочнуюЧасть), не обновляя при этом всей формы? Или как сделать, чтобы формексовское обновление формы не моргало?

Примечание 2. Попутно я случайно выяснил, что формексовское ПослеОбновленияФормы() вызывается при РасшФорма.Обновить() не один раз, как думается по логике, а, видимо, при отрисовке каждой строки многострочной части. То есть при одном обновлении она может вызваться раз сто. Это почему так?
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #139192 · Ответов: 2 · Просмотров: 1484
 

>  Как побороть эффект "отпрыгивания" при сортировке справочника в списке?
Victor Skif
Отправлено: 18.01.18, 20:19


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


sava1 @ Сегодня, 19:52 * ,
это решение, но слишком уж крутое ) для такого мизерного повода.
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #137365 · Ответов: 7 · Просмотров: 1725
 

>  Как побороть эффект "отпрыгивания" при сортировке справочника в списке?
Victor Skif
Отправлено: 18.01.18, 18:52


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


Sharzem @ Сегодня, 16:46 * ,

Вы не вчитались в суть вопроса. Сортирует оно как надо, вопрос не в этом. А в том, что список уезжает вверх, внезапно "пропадая" с глаз пользователя. И надо крутить мышку или жать "вверх" чтобы его вернуть.
Ну грубо говоря, до сортировки вы видите в списке 14 позиций? Вот и после сортировки хочется видеть те же 14, схрена там только 3, а остальные уехавши ))
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #137363 · Ответов: 7 · Просмотров: 1725
 

>  Как побороть эффект "отпрыгивания" при сортировке справочника в списке?
Victor Skif
Отправлено: 17.01.18, 17:16


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


Bernet @ Сегодня, 16:58 * ,
Спасибо, но нет ))
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #137323 · Ответов: 7 · Просмотров: 1725
 

>  Как побороть эффект "отпрыгивания" при сортировке справочника в списке?
Victor Skif
Отправлено: 17.01.18, 16:38


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


1С 7.70.27

А вот есть у 1С такая багофича. Если в списке справочника изменить сортировку, например выполнив Сортировать("Наименование") - то оно отсортирует, но список каким-то образом "отпрыгнет", так что часть элементов уедет вверх и станут невидны (а нижняя половина списка, напротив, окажется неоправданно пустой). Их можно вернуть стрелками или колесиком мышки. Но пользователей это пугает, да и меня самого раздражает если честно.

Тот же эффект наблюдаем, если хотим прыгнуть на последний документ в журнале, и делаем это через АктивизироватьОбъект.

Никто не знает, как эту фигню побороть?

  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #137320 · Ответов: 7 · Просмотров: 1725
 

>  Интерфейс: Вариант вкладок на форме
Victor Skif
Отправлено: 09.01.18, 13:53


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


Еще маленькое усовершенствование открылось - в коде УстДост() следует убрать строки
Форма.кнОснова.Видимость(0); и Форма.кнОснова.Видимость(1);
Они не нужны оказались. Без них мигания вкладок вообще нету.

В выложенной ДемонстрацияЗакладок.ert уже это сделано.
  Форум: 1С Предприятие 7.7 · Просмотр сообщения: #137026 · Ответов: 1 · Просмотров: 3018
 

>  Интерфейс: Вариант вкладок на форме
Victor Skif
Отправлено: 06.01.18, 15:50


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


Добрый день.
1С 7.70.27

Видел у Альфа предложение по реализации вкладок на форме (размером меньше формы), тут - http://www.dorex.pro/?articles&a1&p1
А мне как раз такое надо. Начал делать - вижу, оно, в общем-то, прекрасно все работает, но с мелкими и досадными интерфейсными погрешностями. То кнопка вылезет там где не должна, то фокус с нее не слазит, портит внешний вид.. А мне бы надо так, чтоб комар носа не подточил. Ну, начал доделывать, изменил схему в сторону усложнения, но в целом, по-моему, получился вполне законченный вариант. Который я вам и представляю, пользуйтесь, кому надо.

Вот что получилось:


Вот как делалось (отличия от Альфа):


3. Кнопки, изображающие вкладки - без заголовка (будем управлять их доступностью, заголовки не должны менять вид), взамен них - сверху на кнопках лежат тексты, которые собственно и изображают названия вкладок.
1. Порядок расположения реквизитов - такой. (это важно).
2. То что должно быть на вкладках - разносим на слои.
4. На форму кидаем невидимый текст, в формуле которого пишем УстДост()

В кнопках - формулы ПриВыбореЗакладки(1) и ПриВыбореЗакладки(2).
Я делал всего две закладки, поэтому атрибуты не нумерованы, а названы (оплаты, доставки). Если вкладок много - то можно все нумеровать, как у Альфа, и управлять циклами, как у него. Смысл не меняется.

Ну и код. Порядок всех действий - важен.

Перем ТекущаяЗакладка;

// =========================
Процедура ПриВыбореЗакладки(НомерЗакладки)
    // запоминаем номер. Чтобы включить нужную ширму и кнопку в УстДост()
    ТекущаяЗакладка = НомерЗакладки;
    // здесь выполняются действия по переключению слоев    
    Если НомерЗакладки = 1 Тогда
        Форма.ИспользоватьСлой("Основной,Оплаты", 2);
    ИначеЕсли НомерЗакладки = 2 Тогда
        Форма.ИспользоватьСлой("Основной,Доставки", 2);
    КонецЕсли;
КонецПроцедуры    

// =========================
Функция УстДост()
    // делаем все невидимым
    Форма.кнОснова.Видимость(0);
    Форма.Ширма1.Видимость(0);
    Форма.Ширма2.Видимость(0);
    Форма.тОплаты.Видимость(0);
    Форма.тДоставки.Видимость(0);
    // делаем нужное невидимым
    Форма.кнОснова.Видимость(1);    
    Форма.тОплаты.Видимость(1);
    Форма.тДоставки.Видимость(1);    
    Форма.ПолучитьАтрибут("Ширма"+ТекущаяЗакладка).Видимость(1);
    // делаем кнопки недоступными
    Форма.кнОплаты.Доступность(0);
    Форма.кнДоставки.Доступность(0);
    // делаем нужные кнопки доступными
    Форма.кнОплаты.Доступность(?(ТекущаяЗакладка = 1, 0, 1));
    Форма.кнДоставки.Доступность(?(ТекущаяЗакладка = 2, 0, 1));
КонецФункции  


ТекущаяЗакладка = 1;
ПриВыбореЗакладки(1);


Демо: Прикрепленный файл  ДемонстрацияЗакладок.zip ( 2,97 килобайт ) Кол-во скачиваний: 21
  Форум: 1С Предприятие 7.7 · Просмотр сообщения: #136986 · Ответов: 1 · Просмотров: 3018
 

>  Как программно разрешить или запретить сохранение реквизита...
Victor Skif
Отправлено: 06.01.18, 2:19


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


Стрелок @ 29.12.17, 21:56 * ,
Спасибо за обсуждение!

Я решил вопрос в итоге следующим способом: проверку реквизита Артикул вешаю на процедуру этого реквизита ИзмАртикул(); перед этим сохраняю старое значение в переменную; если значение плохое - то возвращаю в реквизит сохраненное старое значение, и активизирую. Активизирую ректально - через ложное закрытие, других путей нет. Минус решения - плохое значение в этот момент уже записано. Если пользователь выйдет по эскейпу - оно останется. Это не критично, в целом результат удовлетворительный.

Вот код:

Перем флЛожноеЗакрытие;

// =========================
Процедура ПриЗакрытии()
    Если флЛожноеЗакрытие = 1 Тогда
        флЛожноеЗакрытие = 0;
        Активизировать("Артикул");
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;
КонецПроцедуры


// =========================
Процедура АктивистАртикул()             // вот через такую жопу можно активировать отсюда объект
    флЛожноеЗакрытие = 1;
    Форма.Закрыть(0);
КонецПроцедуры


// =========================
Процедура ИзмАртикул()
    Арт = Стро(Артикул);  
    Если Арт = "" Тогда
        Возврат;
    КонецЕсли;
    СтарыйАрт = Стро(ТекущийЭлемент().Артикул);  // берем старое значение из записанного реквизита!
    Если СтарыйАрт = Арт Тогда
        Возврат; // не менялось ничего
    КонецЕсли;
    Если УникальностьАртикула(Арт) = 0 Тогда
        Предупреждение("Артикул " + Арт + " не уникален!");
        // СтатусВозврата(0);  // - не работает!
        // сохраняем старое значение
        // а теперь обратно активизируем
        Артикул = СтарыйАрт;
        АктивистАртикул();
    КонецЕсли;
КонецПроцедуры
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #136984 · Ответов: 13 · Просмотров: 4132
 

>  Как программно разрешить или запретить сохранение реквизита...
Victor Skif
Отправлено: 25.12.17, 19:51


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


Gazulo @ Сегодня, 18:52 * ,

Красиво, но не совсем то. Потому что реквизит при этом все равно сохраняется - с новым значением, или исправленным. И выходит из редактирования. А надо - чтобы было Сообщить("Вы ввели херню"); - и остаться в режиме редактирования, мол, исправляй. А по нажатию Esc - вернуться к нередактированному.

Можно, конечно, его ре-активизировать программно (прямо нельзя, через ложное закрытие можно), и подставить заранее сохраненное старое значение... Но это некрасиво ) Похоже, нет менее геморройного способа?
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #136661 · Ответов: 13 · Просмотров: 4132
 

>  Как программно разрешить или запретить сохранение реквизита...
Victor Skif
Отправлено: 24.12.17, 23:08


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


Добрый вечер.
1С 7.70.027.
Формекс.

Наведите на мысль, плз.

Имеем форму списка справочника. Пользователь редактирует реквизит. Когда он нажимает Энтер - необходимо программно проверять введенное значение (частный случай - проверить уникальность), и в зависимости от результатов проверки, разрешить или запретить сохранение. Как это по-нормальному сделать? Что-то у меня не придумывается. Отследить нажатие энтера, и устроить проверку - можно в назначенной реквизиту процедуре. Но как в ней сказать, что это значение не годится, и запретить его сохранять?
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #136657 · Ответов: 13 · Просмотров: 4132
 

>  Как программно совершить выбор в форме списка справочника?
Victor Skif
Отправлено: 08.12.17, 11:59


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


mister-x @ Сегодня, 11:28 * ,
Подбор в данном случае мне не подходил, но вы меня навели на мысль - полез в конфигурацию смотреть как там сделано, и нашел.
Всего лишь
Форма.ВыполнитьВыбор(ТекущийЭлемент());

Элементарщина, но как-то так вышло, что за всю жизнь не приходилось пользоваться.
Спасибо!
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #135891 · Ответов: 7 · Просмотров: 3009
 

>  Как программно совершить выбор в форме списка справочника?
Victor Skif
Отправлено: 08.12.17, 9:58


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


Володька @ Сегодня, 9:48 * ,
о, это сильное колдунство.
Просто в этой форме, помимо элемента, у меня выбирается еще два параметра, плюс "выбрать" нужна возможность тремя разными вариантами (на что я хочу создать три разные кнопки, но как же это сделать, не нашел).
Понятно, что это всё возможно сделать и как-то иначе по-всякому, но именно такая форма будет наиболее удобна пользователям. Хотелось бы преодолеть.
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #135888 · Ответов: 7 · Просмотров: 3009
 

>  1C 7.x Не получается провести документы - 1С
Victor Skif
Отправлено: 08.12.17, 9:39


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


wwe2012 @ 16.10.17, 8:27 * ,
В свойствах документа галка на "Разрешить проведение документа" стоит?
Если да. Что значит "не получается провести"? как это выглядит?
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #135886 · Ответов: 4 · Просмотров: 1530
 

>  Как программно совершить выбор в форме списка справочника?
Victor Skif
Отправлено: 08.12.17, 9:07


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


Володька @ Сегодня, 8:25 * ,
Может я не совсем понятно выразился.
Вот я вызвал форму для выбора. Стал на нужный элемент. Теперь мне надо совершить выбор - так же, как если бы я нажал энтер. Но программно, путем нажатия на мою кнопку. Как это сделать?
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #135885 · Ответов: 7 · Просмотров: 3009
 

>  Как программно совершить выбор в форме списка справочника?
Victor Skif
Отправлено: 08.12.17, 2:09


Общительный
**

Группа: Пользователи
Сообщений: 16
Регистрация: 08.12.17
Из: Киев
Пользователь №: 59000


Добрый вечер.
1С 7.70.020.

Наведите на мысль, плз.
Имеем форму списка справочника, открытую "для выбора". Становимся на элемент, жмем энтер, или контр-энтер, или двойной щелчок - совершается выбор. Отлично.
А как теперь сделать то же самое программно, из модуля? Например, нажатием на кнопку?
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #135881 · Ответов: 7 · Просмотров: 3009
 


Новые сообщения  Открытая тема (есть новые ответы)
Опрос  Опрос (есть новые голоса)
Нет новых сообщений  Открытая тема (нет новых ответов)
Нет новых голосов  Опрос (нет новых голосов)
Популярная тема  Горячая тема (есть новые ответы)
Закрыта  Закрытая тема
Нет новых  Горячая тема (нет новых ответов) Перемещена  Тема перемещена
 

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