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

Хранилище

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

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



> Реквизит документа с выпадающим списком возможных значений , Организовать реквизит документа с выпадающим списком в форме          
leonid_gun Подменю пользователя
сообщение 15.01.19, 14:38
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте.
ТиС 032. платформа 7.7 027
Есть необходимость создать на форме реквизит документа тип Строка, который будет связан с выпадающим списком, из которого можно выбрать одно значение из многих для этого реквизита, с последующим сохранением этого значения. И при открытии сохраненного документа этот реквизит отображал сохраненное значение. Как можно правильно такое реализовать?

Prospero Подменю пользователя
сообщение 15.01.19, 14:49
Сообщение #2

Говорящий
***
Группа: Пользователи
Сообщений: 68
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

Перечисления не подойдут?

leonid_gun Подменю пользователя
сообщение 15.01.19, 14:52
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

Prospero @ Сегодня, 14:49 * ,
Перечисления не подойдут, т.к таких реквизитов в форме будет до 50 штук. А видов документов, в которых такое надо применить будет не один десяток.

awp Подменю пользователя
сообщение 15.01.19, 15:09
Сообщение #4

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 520
Спасибо сказали: 70 раз
Рейтинг: 51.3

leonid_gun @ Сегодня, 14:52 * ,
Вариант с кнопкой рядом с полем(ТипДок) : на копке прописываем ТипДокИзм()

Процедура ТипДокИзм()
    СпЗн = СоздатьОбъект("СписокЗначений");
    СпЗн.ДобавитьЗначение(0,"Рішення(Стяг. з контрагента)");
    СпЗн.ДобавитьЗначение(1,"Рішення(Стяг. з Унікредіт Лізінг)");
    СпЗн.ДобавитьЗначение(2,"Позов до суду");
    СпЗн.ДобавитьЗначение(3,"Корр. Позову до суду");
    Зн = 0;                                            
    Если СпЗн.ВыбратьЗначение(Зн,"Тип Документа",,,1) = 1 Тогда
        ТипДок = Зн;
    КонецЕсли;
    УстВидимость();
КонецПроцедуры


Вернет правда значение, а оно 0-3, но вы укажите свои smile.gif

Сообщение отредактировал awp - 15.01.19, 15:10


Signature
Бухгалтер - это не профессия! Это диагноз!

Спасибо сказали: leonid_gun,

Naghual Подменю пользователя
сообщение 15.01.19, 15:18
Сообщение #5

Завсегдатай
****
Группа: Пользователи
Сообщений: 102
Из: Днепропетровск
Спасибо сказали: 21 раз
Рейтинг: 0

По моему проще реализовать через Справочник.


Signature
Я желаю всем Счастья!

leonid_gun Подменю пользователя
сообщение 15.01.19, 15:24
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

awp @ Сегодня, 15:09 * ,
Можно принять как вариант.
Есть у реквизита документа на вкладке Дополнительно такой параметр как "Имеет кнопку выбора". Для чего его можно использовать? Может на этой кнопке можно родить еще один вариант решения выбора из списка?

awp Подменю пользователя
сообщение 15.01.19, 15:29
Сообщение #7

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 520
Спасибо сказали: 70 раз
Рейтинг: 51.3

leonid_gun @ Сегодня, 15:24 * ,

Процедура ПриНачалеВыбораЗначения(<?>,)
КонецПроцедуры
Синтаксис:
ПриНачалеВыбораЗначения(<ИдентЭлемДиалога>,<ФлагСтандОбр>)
Назначение:
Предопределенная процедура после выбора значения в форме выбора (выбор может быть инициирован в немодальном режиме интерактивно, при помощи элемента диалога с ''педалькой'').
<ИдентЭлемДиалога> - идентификатор элемента диалога, которым инициализирован выбор значения.
<ФлагСтандОбр> - флаг, изначально, при вызове процедуры равен 1, если в теле процедуры значение этого параметра поменять на 0, то стандартный процесс выбора значения не будет происходить.
Замечание:
Данная процедура может располагаться только в программном модуле формы.

Процедура ПриНачалеВыбораЗначения(Рекв,ФлагСтандОбр)
    Если Рекв = "ИмяВашегоРеквизита" Тогда
        Делаем тут что нужно
    КонецЕсли;
КонецПроцедуры


Сообщение отредактировал awp - 15.01.19, 15:31


Signature
Бухгалтер - это не профессия! Это диагноз!

Prospero Подменю пользователя
сообщение 15.01.19, 15:50
Сообщение #8

Говорящий
***
Группа: Пользователи
Сообщений: 68
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

Цитата(leonid_gun @ 15.01.19, 16:24) *
Может на этой кнопке можно родить еще один вариант решения выбора из списка?

leonid_gun,
Пропишите вызов
ТипДокИзм()
, указанный awp,
и не надо будет дополнительная кнопка.

Спасибо сказали: leonid_gun,

leonid_gun Подменю пользователя
сообщение 15.01.19, 23:54
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

Prospero @ Сегодня, 15:50 * ,
с реквизитом тип Строка работает безупречно.
Процедура ИзмПрозрачность()
    СпЗн = СоздатьОбъект("СписокЗначений");
    СпЗн.ДобавитьЗначение("прозора","прозора");
    СпЗн.ДобавитьЗначение("непрозора","непрозора");
    Зн = 0;                                            
    Если СпЗн.ВыбратьЗначение(Зн,"Прозрачность биоматериала",,,1) = 1 Тогда
        Прозрачность = Зн;
    КонецЕсли;
КонецПроцедуры


А вот как быть если обрабатываем список для реквизита тип Число, еще и с дробной частью? ))

Цитата(leonid_gun @ 15.01.19, 23:41) *
А вот как быть если обрабатываем список для реквизита тип Число, еще и с дробной частью? ))

при выборе "педальки" список выводится, но при выборе значения из списка, выпадает экранная цифровая калава, стандартная для цифрового поля ввода с кнопкой. Нужно менять тип на Строку? Но хотелось бы оставить ограничение по разрядности для проверки ввода от руки.

Prospero Подменю пользователя
сообщение 16.01.19, 2:40
Сообщение #10

Говорящий
***
Группа: Пользователи
Сообщений: 68
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

leonid_gun,
Вы "от руки" вводите или выбираете из списка?
На скорую руку, извините, если что:
// (с) awp :)
Функция ТипДокИзм()  
    Перем Зн;
    СпЗн = СоздатьОбъект("СписокЗначений");
    СпЗн.ДобавитьЗначение("прозора");
    СпЗн.ДобавитьЗначение("непрозора");
    СпЗн.ДобавитьЗначение(0);
    СпЗн.ДобавитьЗначение(2);
    СпЗн.ДобавитьЗначение(1.1);
    СпЗн.ДобавитьЗначение(2.5);    
    Рез = СпЗн.ВыбратьЗначение(Зн,,,,1);    
    Если Рез = 1 Тогда
        Возврат Зн;
    КонецЕсли;
КонецФункции  


Процедура ПриНачалеВыбораЗначения()    
    Сообщить("Перед появлением меню");     
    Зн = ТипДокИзм();
    Сообщить("Зн="+Зн);
    Сообщить("Меняем Зн на Зн+Зн");
    Если ТипЗначенияСтр(Зн)="Число" Тогда
        Зн = Число(Зн);
    КонецЕсли;
    Зн = Зн+Зн;
    Сообщить("А теперь Зн="+Зн);    
    ТипДок = Зн;
КонецПроцедуры


2 параметр убрал, лень выписывать его ))
Получайте значение и делайте с ним что хотите...

Извиняюсь,вот чуть подправленный...
Изменения:
Процедура ПриНачалеВыбораЗначения()

на
Процедура ПриНачалеВыбораЗначения(Рекв)


ТипДок = Зн;

на
УстановитьАтрибут(Рекв,Зн)


Должно для каждого реквизита выбирать свое значение.
Рекв - Идентификатор Вашего реквизита, таким образом можно на все поля навесить
обработку и каждому присвоить разные значения из списка.

Тыц.тыц.тыц...
Недопонял вначале smile.gif
У Вас жменька разнотиповых
реквизитов, и для них Вы хотите
эту менюшку прикрутить?


Спасибо сказали: leonid_gun,

Prospero Подменю пользователя
сообщение 16.01.19, 9:32
Сообщение #11

Говорящий
***
Группа: Пользователи
Сообщений: 68
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

Если так, то попробуйте поменять
на
Процедура ПриНачалеВыбораЗначения(Рекв,ФлагСтандОбр)     
    ФлагСтандОбр=0;

Калькулятор не будет появляться, только нечисловые значения будут в 0;

Тут же выше awp выложил по этой функции описание...
Синтакс-Помощник Вам в помощь

Спасибо сказали: leonid_gun,

leonid_gun Подменю пользователя
сообщение 16.01.19, 15:35
Сообщение #12

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

Prospero @ Сегодня, 9:32 * ,
Вот это
ФлагСтандОбр = 0;

в теле предопределенной процедуре как раз и помогло!! Перестала появляться экранная цифровая клава на реквизитах типа Число. То что нужно )))


leonid_gun Подменю пользователя
сообщение 16.01.19, 22:36
Сообщение #13

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

хотя если реквизит тип Число с дробной частью, тогда число из списка выбирается только его целая часть. А надо, чтобы было полностью и целая м дробная части. Не знаю как это победить не переводя сам реквизит в тип Строка (( 09000000.gif

Prospero Подменю пользователя
сообщение 16.01.19, 22:39
Сообщение #14

Говорящий
***
Группа: Пользователи
Сообщений: 68
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

leonid_gun @ Сегодня, 22:36 * ,
Точность какая у реквизита типа Число?

leonid_gun Подменю пользователя
сообщение 16.01.19, 22:43
Сообщение #15

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

Prospero @ Сегодня, 22:39 * ,
разная. зависит от реквизита (их в у документа может быть больше трех десятков) и 0,00 и 0,000

Prospero Подменю пользователя
сообщение 16.01.19, 22:55
Сообщение #16

Говорящий
***
Группа: Пользователи
Сообщений: 68
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

leonid_gun @ Сегодня, 22:43 * ,
странно, создал реквизит, кинул на форму, и целые и дробные

leonid_gun Подменю пользователя
сообщение 16.01.19, 22:56
Сообщение #17

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

Догнал. Надо просто использовать децимальный знак точку, а не запятую. Вот тупанул ((

Процедура ИзмУретальныеНитки()
    зн1 = 1.001;
    зн2 = 1.021;
    зн3 = 1.051;
    СпЗн = СоздатьОбъект("СписокЗначений");
    СпЗн.ДобавитьЗначение(зн1,"1,001");
    СпЗн.ДобавитьЗначение(зн2,"1,010");
    СпЗн.ДобавитьЗначение(зн3,"1,020");
    СпЗн.ДобавитьЗначение("1.030","1,030");  
    СпЗн.ДобавитьЗначение("1.040","1,040");
    Зн = 0;                                            
    Если СпЗн.ВыбратьЗначение(Зн,"УретальныеНитки биоматериала",,,1) = 1 Тогда
        УретальныеНитки = Зн;
    КонецЕсли;
КонецПроцедуры

и все ровно вставляет в реквизит типа Число

Prospero Подменю пользователя
сообщение 16.01.19, 23:12
Сообщение #18

Говорящий
***
Группа: Пользователи
Сообщений: 68
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

leonid_gun @ Сегодня, 22:56 * ,
Ваш код

(просто точность 5 ))

Спасибо сказали: leonid_gun,

leonid_gun Подменю пользователя
сообщение 16.01.19, 23:42
Сообщение #19

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

Prospero @ Сегодня, 23:12 * ,
Старнненько.У меня если оставить запятую вместо точки, то в числовое поле попадает только целая часть, дробную отсекает и оставляет просто нули и их количество соответствует заявленной точности поля. Но если точка, тогда все в порядке и работает четко. Но все равно благодарю за содействие и помощь.

Prospero Подменю пользователя
сообщение 16.01.19, 23:51
Сообщение #20

Говорящий
***
Группа: Пользователи
Сообщений: 68
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

leonid_gun @ Сегодня, 23:42 * ,
Просто в меню высвечивается текстовое представление (2 параметр, а если он не указан, то равен значению (1 параметр))
У Вас в представлении запятые, а в значении точки. поэтому на картинке запятая в списке, а в поле точка
Удачи.

Спасибо сказали: leonid_gun,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

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