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

Хранилище

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

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



> Как сменить булевое значение заполнения по умолчанию на булевую константу?          
Gigi Подменю пользователя
сообщение 25.11.18, 12:43
Сообщение #1

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

Всем привет!
Данная тема уже рассматривалась на этом сайте..
Однако ... ну опять вижу чего то не хватает ... вечно что то не хватает ...и опять какой то ерунды ...
Всем хорошая платформа, но в кое каких тонких вопросах опять малые не доработки.

Поэтому никто не подскажет как сменить на Истину то, что по умолчанию Ложь. Имею ввиду булевый тип константы.
Дело в том, что когда создаешь булевый реквизит объекта, там есть опция "ЗначениеЗаполнения". Обычно по умолчанию всегда стоит Ложь. И поэтому есть возможность сменить на Истину. А вот когда создаешь тот же булевый тип но константу, такая опция как "ЗначениеЗаполнения", и вовсе отсутствует. ПОЧЕМУ? По крайней мере че то ее не нахожу.
А нужно что бы значение созданной булевой константы было не Ложь, а ИСТИНА!
Никто не подскажет пути как это сделать?
Буду опять признателен!



Gigi @ Сегодня, 12:45 * ,
Короче ... понятно ... такой опции просто нет... Скорее всего.
А на этом сайте мне еще говорили что просто идеальная среда разработки.
Согласен что очень удобная и функциональная... но с тем что идеальная НЕТ. Это далеко не так. И это лишь малая часть многих не больших но не доработок.
И это не удивительно.... идеал может быть только у самого Бога ... и точно не в том, что от рук человека.
Поэтому опять придется делать двойную работу. И во всех процедурах в соответствующих местах кода менять Истину на Ложь или наоборот. И приспосабливаться под возможности системы 1С.

Ладно.. так и быть.

Vladal Подменю пользователя
сообщение 26.11.18, 15:41
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 365
Из: Slovensko
Спасибо сказали: 78 раз
Рейтинг: 0

з - зубожиння


Создайте свою обработку или доработайте обработчик обновления информационной базы, который бы заполнял значения новых реквизитов.

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

Gigi Подменю пользователя
сообщение 27.11.18, 8:19
Сообщение #3

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

Vladal @ Вчера, 16:41 * ,
Ну конечно ... "создайте" ... "доработайте" А в опциях просто сменить значение заполнения константы по умолчанию без "создайте/доработайте" это конечно невозможно.
У меня уже глаза квадратные из-за этих "создайте/доработайте" smile.gifsmile.gif

Ладно! Так и быть .... опять буду "создавать" и "дорабатывать" )))) Без конца края.
Спасибо
Пока!

andr_andrey Подменю пользователя
сообщение 27.11.18, 9:29
Сообщение #4

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

Цитата(Gigi @ 27.11.18, 8:19) *
Так и быть .... опять буду "создавать" и "дорабатывать" )))) Без конца края.

Извините, я наверное пропустил, а в каком инструменте/языке не надо ничего "создавать/дорабатывать"?
Просто запамятовал, с какой супер-технологии вы снизошли на 1С?


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

Gigi Подменю пользователя
сообщение 27.11.18, 10:09
Сообщение #5

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

andr_andrey @ Сегодня, 10:29 * ,
Цитата(andr_andrey @ 27.11.18, 10:29) *
Просто запамятовал, с какой супер-технологии вы снизошли на 1С?

Не с какой ...
просто длина одного шага вперед должна быть 100 см, а не 95.
И раз шаг был сделан то наверно, трудно было добавить недостающие 5 см.
Поэтому эти 5 см приходится "создавать/дорабатывать" самому раз разработчики поленились.
Хотя может я шас говорю как избалованный парень. Который никогда не писал ну на пример на Си... и не знает какой это ужас ... когда все с нуля. Но все таки.

А так в остальном среда разработки всем хороша.. согласен. Просто кое где не до конца удобна.
Ладно... я думаю в следующих релизах добавят эти не достающие сантиметры.
А пока наверно чем богаты тем и рады.
Пока!

Vladal Подменю пользователя
сообщение 27.11.18, 16:17
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 365
Из: Slovensko
Спасибо сказали: 78 раз
Рейтинг: 0

Цитата(Gigi @ 27.11.18, 10:09) *
Ладно... я думаю в следующих релизах добавят эти не достающие сантиметры.

навряд ли

Vofka Подменю пользователя
сообщение 27.11.18, 16:36
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата(Vladal @ 27.11.18, 16:17) *
навряд ли

Зачем вы так жестоко с человеком?

Vladal Подменю пользователя
сообщение 27.11.18, 17:29
Сообщение #8

Оратор
Иконка группы
Группа: Местный
Сообщений: 365
Из: Slovensko
Спасибо сказали: 78 раз
Рейтинг: 0

Цитата(Gigi @ 27.11.18, 8:19) *
Ну конечно ... "создайте" ... "доработайте" А в опциях просто сменить значение заполнения константы по умолчанию без "создайте/доработайте" это конечно невозможно.

Если Вы разработчик в 1С - есть ресурсы для обучения или тут же на форуме можно обсудить.
Если Вы - пользователь 1С, хоть и продвинутый, то наверно это создает сложности.

Потом: константа и её значения находятся в области данных информационной базы, поэтому в конфигураторе нельзя задать значение заполнения. Но если бы это была ссылка на объект с предопределенными данными - то да, в значении заполнения можно указать этот предопределенный элемент.

Цитата(Vofka @ 27.11.18, 16:36) *
Зачем вы так жестоко с человеком?

Я не хотел.


Цитата(Gigi @ 27.11.18, 10:09) *
просто длина одного шага вперед должна быть 100 см, а не 95.

Либо нестандартизированная линейка. Как, например, дешевая китайская рулетка, шкала которой не совпадает с эталоном.
Может, Вы ожидаете неоправданно большего от системы, которая рассчитана под другие задачи.
Так что разработчики 1С сделали километр из 1000 эталонных метров, а Вы ожидаете от этого километра 1024 "китайских" метра.
Увы.

Цитата(Gigi @ 25.11.18, 12:43) *
Дело в том, что когда создаешь булевый реквизит объекта, там есть опция "ЗначениеЗаполнения". Обычно по умолчанию всегда стоит Ложь. И поэтому есть возможность сменить на Истину. А вот когда создаешь тот же булевый тип но константу, такая опция как "ЗначениеЗаполнения", и вовсе отсутствует. ПОЧЕМУ? По крайней мере че то ее не нахожу.
А нужно что бы значение созданной булевой константы было не Ложь, а ИСТИНА!
Никто не подскажет пути как это сделать?
Буду опять признателен!

Итак, в форме элемента/группы справочника в обработчике ПриОткрытии можно добавить проверку на то, что это новый объект и заполнять нужный реквизит значением из константы.

Вот пример:

Процедура ПриОткрытии()
    
    Если ЭтоНовый() Тогда
        ЗначениеРеквизита = Константы.БулеваяКонстанта.Получить();
        НовыйРеквизит = ЗначениеРеквизита;
    КонецЕсли;
    
КонецПроцедуры


Но это надо дописывать ручками. А вот чтобы это прописать в свойства реквизита, мне пока неизвестно.


Цитата(Gigi @ 27.11.18, 10:09) *
Просто кое где не до конца удобна.

Зато не надо в notepad.exe или nano писать текст программы и компилировать его из командной строки )))

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

Gigi Подменю пользователя
сообщение 27.11.18, 20:29
Сообщение #9

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

Цитата(Vofka @ 27.11.18, 17:36) *
Зачем вы так жестоко с человеком?

Да ничего страшного smile.gif ..переживу... куда денусь... пусть даже с трудом smile.gif
Цитата(Vladal @ 27.11.18, 18:29) *
Либо нестандартизированная линейка. Как, например, дешевая китайская рулетка, шкала которой не совпадает с эталоном.
Может, Вы ожидаете неоправданно большего от системы, которая рассчитана под другие задачи.
Так что разработчики 1С сделали километр из 1000 эталонных метров, а Вы ожидаете от этого километра 1024 "китайских" метра.
Увы.

Ну не знаю господа... с одной стороны логично, но с другой стороны усматриваю подвох в сказанном. Имеющий цель оправдать то, что разработчики не до конца сделали. И прав или ошибаюсь в этом точно знать не могу. Ибо если честно мало знаком с архитектурой ... Пока все внимание акцентирую только на кодинг. Что иногда просто выматывает. и просто было бы не плохо если почаще обходилось бы без единой строки. Но раз это не вписывается то ладно буду верить тому, что сказано. Хотя бы потому, что у самого опыт не большой.
Так что, по поводу ..
Цитата(Vladal @ 27.11.18, 18:29) *
Потом: константа и её значения находятся в области данных информационной базы, поэтому в конфигураторе нельзя задать значение заполнения. Но если бы это была ссылка на объект с предопределенными данными - то да, в значении заполнения можно указать этот предопределенный элемент.

А константа это не элемент конфигурации? Так же как на пример перечисление? Я понимаю так.... Все то, что может создать пользователь в основном это область инфо. базы. А все что не может ... на пример перечисление, константы .. это же область конфигурации? Или не так? Хотя плаваю в этом если честно. Поэтому и тут ... ладно .... доверюсь сказанному выше.
А в остальном по поводу заполнения по умолчанию ... для чего нужно было ...
Вот для чего
Процедура ПередНачаломРаботыСистемы(Отказ)
ОБСЛУЖИВАНИЕ(Отказ);
КонецПроцедуры

Процедура ОБСЛУЖИВАНИЕ(Отказ)
//==============================    
знОбслуживание=Обслуживание_ИстинаЛожь();
Если знОбслуживание=Ложь Тогда
    Текст="ОБСЛУЖИВАНИЕ РАЗРАБОТКИ ВРЕМЕННО ОТКЛЮЧЕНО!"+Символы.ПС+
    "ИДЕТ ПРОЦЕСС ОБНОВЛЕНИЯ КОНФИГУРАЦИИ!";
    Предупреждение(Текст);
    Отказ=Истина;
КонецЕсли;
//==============================
КонецПроцедуры

Функция Обслуживание_ИстинаЛожь()
ТекущийПользователь=ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
Если ТекущийПользователь="Программер" Тогда
    Возврат Истина;
Иначе
    Возврат Константы["Обслуживание"].Получить();
КонецЕсли;
КонецФункции

Так написал в модуле управляемого приложения. Думаю теперь ясно почему.
Просто это еще урезанный вариант... у меня там еще другие строки.
Но суть в том, что если константа "Обслуживание" имеет значение Истина тогда база грузиться, а если ложь то нет.
Просто резоннее было бы если константа для этой цели по умолчанию имела бы значение Истина.
В противном случае придется в других процедурах везде менять. Что думаю и придется делать.
Ладно .. это так ..для ясного понимания негодования...
спасибо


Gigi @ Сегодня, 21:02 * ,
P.S. Да еще ..
Конечно разумнее было бы создать константу с именем не "Обслуживание", а "Отключение" .. это было бы уместнее к значению по умолчанию. Но я уже сделал и когда делал не знал, что у константы нет опции выбора значения по умолчанию. А уже после и не охота было переделывать

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

Оратор
Иконка группы
Группа: Местный
Сообщений: 365
Из: Slovensko
Спасибо сказали: 78 раз
Рейтинг: 0

Цитата(Gigi @ 27.11.18, 20:29) *
А константа это не элемент конфигурации?

Элемент. А вот её значение - в области пользовательских данных, а не конфигуратора. Сейчас значение одно, через час другое. А если это значение перечисления, предопределенный элемент справочника, плана счетов или ПВХ, то к нему есть доступ из свойств автозаполнения.
Цитата(Gigi @ 27.11.18, 20:29) *
Пока все внимание акцентирую только на кодинг.

Да. Понимание архитектуры 1С 8 облегчит работу.
Цитата(Gigi @ 27.11.18, 20:29) *
А константа это не элемент конфигурации? Так же как на пример перечисление?

Константа и перечисления - объекты конфигурации.
Только значение перечисления задано в конфигураторе, а значение константы задано в пользовательском режиме. Это если "на пальцах".

Цитата(Gigi @ 27.11.18, 20:29) *
Но суть в том, что если константа "Обслуживание" имеет значение Истина тогда база грузиться, а если ложь то нет.
...
Конечно разумнее было бы создать константу с именем не "Обслуживание", а "Отключение" .. это было бы уместнее к значению по умолчанию.

Да. Это хорошо, что пришли к такому выводу.
Цитата(Gigi @ 27.11.18, 20:29) *
В противном случае придется в других процедурах везде менять. Что думаю и придется делать.
Ладно .. это так ..для ясного понимания негодования...
спасибо

Да, такое тоже бывает, когда надо переписывать код на оптимальный.

Суть негодования понятна. Особенно, когда "бросили на амбразуру" и плыви, как хочешь.

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

Gigi Подменю пользователя
сообщение 29.11.18, 12:10
Сообщение #11

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

Vladal @ Вчера, 0:51 * ,
Тема закрыта .. но это так ... ради прикола...
Полный вариант решения... с учетом значения заполнения по умолчанию.
Пришлось добавить константу "отключение", а не менять константу "Обслуживание", на "отключение" ... что бы обойтись меньшими трудозатратами.
Много лишнего и не связанного с указанной темой, но не охота укорачивать.
Поэтому целиком как написал... И ради прикола
// ===== МОДУЛЬ УПРАВЛЯЕМОГО ПРИЛОЖЕНИЯ

Процедура ОБСЛУЖИВАНИЕ(Отказ)
//==============================    
знОбслуживание=Обслуживание.Обслуживание();
If знОбслуживание<>True Then
    Предупреждение(знОбслуживание);
    Отказ=True;
EndIf;
//==============================
КонецПроцедуры

// == МОДУЛЬ: "Обслуживание"

Функция Обслуживание() Экспорт
ТекущийПользователь=ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
ОбслуживаниеЗапись();
If ТекущийПользователь="Программер" Then Возврат True; EndIf;
//================================
знОбслуживание=FxSub_ЗаписьПолучКонст.ПолучитьЗначениеКонстанты("Обслуживание");
If знОбслуживание=True Then Возврат True; EndIf;
//================================
ДКО=FxSub_ЗаписьПолучКонст.ПолучитьЗначениеКонстанты("ДКО");
If ДКО='00010101' Then
Возврат Отключение_ТекстПредупреждения("ОТКЛЮЧИЕ - ПРИНУДИТЕЛЬНОЕ");
Else
Возврат Отключение_ТекстПредупреждения("ОТКЛЮЧИЕ - ПРОИЗВОЛЬНОЕ");
EndIf;
//================================
КонецФункции

Функция Отключение_ТекстПредупреждения(ТипОтключения) Экспорт
//======================================
If ТипОтключения="ОТКЛЮЧИЕ - ПРИНУДИТЕЛЬНОЕ" Then
    ВремяОжиданияВключения_ЧасМоментаОтключения=Константы["ОбслуживаниеОтключено_Пояснение"].Получить();
    ВремяОжиданияВключения=Константы["ОбслуживаниеОтключено_ПояснениеЧерез"].Получить();
    If ВремяОжиданияВключения=""  Then ПояснениеБудетВклЧерез="" Else ПояснениеБудетВклЧерез="Работоспособность будет возоблена примерно через: " EndIf;        
    If ВремяОжиданияВключения_ЧасМоментаОтключения="" Then
    Текст="ОБСЛУЖИВАНИЕ РАЗРАБОТКИ ВРЕМЕННО ОТКЛЮЧЕНО!"+Символы.ПС+
    "ИДЕТ ПРОЦЕСС ОБНОВЛЕНИЯ КОНФИГУРАЦИИ!";    
    Else
    Текст="ОБСЛУЖИВАНИЕ РАЗРАБОТКИ ВРЕМЕННО ОТКЛЮЧЕНО!"+Символы.ПС+
    "ИДЕТ ПРОЦЕСС ОБНОВЛЕНИЯ КОНФИГУРАЦИИ!"+Символы.ПС+
    ПояснениеБудетВклЧерез+ВремяОжиданияВключения_ЧасМоментаОтключения;    
    EndIf;
Else
    Текст="Дело в з...це ребята;). Срок службы разрабтки истек... за продление нужно заплатить :) )))):)"; // Это так ... Шутка... эту строку уберу.. равно как и функцию: "ДКО_Check(ДКО)"
EndIf;
//======================================
Возврат Текст;
КонецФункции

Процедура ОбслуживаниеЗапись() Экспорт
знОбслуживание=Константы["Обслуживание"].Получить();    
знОтключение=Константы["Отключение"].Получить();
ДКО=Константы["ДКО"].Получить();
ДКО_Check=ДКО_Check(ДКО);
If ДКО_Check=True Then
    If знОбслуживание=True Then Константы["Обслуживание"].Установить(False); EndIf;
    //Константы["Отключение"].Установить(True);
Else
    If знОтключение=True Then
        If знОбслуживание=True Then Константы["Обслуживание"].Установить(False) EndIf;
    Else
        If знОбслуживание=False Then Константы["Обслуживание"].Установить(True) EndIf;
    EndIf;
EndIf;
КонецПроцедуры


Функция ДКО_Check(ДКО) Экспорт
//Дата конца обслуживания - проверка
TrueFalse=False;
//======================================
Цифра_ДКО=МесяцГодДата_серв.ГодМесяцДень_Цифра(ДКО);
//--------------------------------------
If Строка(ДКО)='00010101' Then GoTo ~Возврат; EndIf;
//======================================
ТекстЗапроса=FxSub_МетаДанные.ЗапросТекстПоСтруктуре("РегистрСведений.ОтчетныеМесяцы",Новый Структура("Дата"),)+" УПОРЯДОЧИТЬ ПО Дата УБЫВ";
Запрос = Новый Запрос(ТекстЗапроса);
//--------------------------------------
Выгрузка = Запрос.Выполнить().Выбрать();
//--------------------------------------
Пока Выгрузка.Следующий() Цикл
ДатаОтчетов=Выгрузка.Дата;
Цифра_ДатаОтчетов=МесяцГодДата_серв.ГодМесяцДень_Цифра(ДатаОтчетов);
If Цифра_ДатаОтчетов>=Цифра_ДКО Then
TrueFalse=True;
GoTo ~Возврат;
EndIf;
КонецЦикла;
//======================================
~Возврат:;
Возврат TrueFalse;
КонецФункции



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


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

 

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