Версия для печати темы (https://pro1c.org.ua/index.php?showtopic=44807)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Почему регистр сведений никак не хочет записывать булевое занчение
Автор: Gigi 21.03.18, 11:41
Всем привет!
Короче проблема простая связанная с записями в рег сведений
Вот процедура в общем модуле... которая вроде работает:
Процедура РегистрСведенийЗаписьПоСтруктуре(РегистрСведенийИмя,СтруктураИзмеренияЗначения,СтруктураРесурсыЗначения)Экспорт
//=======================================================
Менеджер = РегистрыСведений[РегистрСведенийИмя].СоздатьМенеджерЗаписи();
НаборЗаписей = РегистрыСведений[РегистрСведенийИмя].СоздатьНаборЗаписей();
//=======================================================
Для Каждого Элемент Из СтруктураИзмеренияЗначения Цикл
ИзмерениеИмя=Элемент.Ключ;
ИзмерениеЗначение=Элемент.Значение;
Менеджер[ИзмерениеИмя]=ИзмерениеЗначение;
КонецЦикла;
Менеджер.Прочитать();
//=======================================================
Для Каждого ЭлементРесурс Из СтруктураРесурсыЗначения Цикл
РесурсИмя=ЭлементРесурс.Ключ;
РесурсЗначение=ЭлементРесурс.Значение;
Если Менеджер.Выбран()=Ложь Тогда
Для Каждого ЭлементИзмер Из СтруктураИзмеренияЗначения Цикл
ИзмерениеИмя=ЭлементИзмер.Ключ;
ИзмерениеЗначение=ЭлементИзмер.Значение;
//Сообщить("ЗАПИСЬ НАЙДЕНА - "+Менеджер.Выбран()+Символы.ПС+"ИЗМЕРЕНИЕ ИМЯ - "+ИзмерениеИмя+Символы.ПС+"ИЗМЕРЕНИЕ ЗНАЧ - "+ИзмерениеЗначение);
Менеджер[ИзмерениеИмя]=ИзмерениеЗначение;
Если РесурсИмя=Неопределено Тогда Перейти ~ЛинияДалее1; КонецЕсли;
Менеджер[РесурсИмя]=РесурсЗначение;
КонецЦикла;
Менеджер.Записать();
~ЛинияДалее1:;
Иначе
Для Каждого ЭлементИзмер Из СтруктураИзмеренияЗначения Цикл
ИзмерениеИмя=ЭлементИзмер.Ключ;
ИзмерениеЗначение=ЭлементИзмер.Значение;
//Сообщить("ЗАПИСЬ НАЙДЕНА - "+Менеджер.Выбран()+Символы.ПС+"ИЗМЕРЕНИЕ ИМЯ - "+ИзмерениеИмя+Символы.ПС+"ИЗМЕРЕНИЕ ЗНАЧ - "+ИзмерениеЗначение);
НаборЗаписей.Отбор[ИзмерениеИмя].Установить(ИзмерениеЗначение);
КонецЦикла;
НаборЗаписей.Прочитать();
//-----------------------------------------------------
Если РесурсИмя=Неопределено Тогда Перейти ~ЛинияДалее2; КонецЕсли;
Для каждого Строка из НаборЗаписей Цикл
Строка[РесурсИмя]=РесурсЗначение;
КонецЦикла;
//----------------------------------------------------
НаборЗаписей.Записать();
~ЛинияДалее2:;
КонецЕсли;
КонецЦикла;
//=======================================================
КонецПроцедуры
А вот код использования в модуле объекта:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
ДокументСуществует="Документ_"+Строка(Месяц);
СтруктураИзмеренияЗначения=Новый Структура("СправочникЗначениеСсылки,Год",ТОЧКАэлсеть,Год);
СтруктураРесурсыЗначения=Новый Структура(Строка(Месяц),ДокументСуществует,Расход,Истина);
FxSub_РегистрСведений.РегистрСведенийЗаписьПоСтруктуре("ДанныеОтчетногоГода",СтруктураИзмеренияЗначения,СтруктураРесурсыЗначения);
КонецПроцедуры
Вопрос в чем ...
Любые записи нормально регистрируются, но это любые значения, кроме булевых.
Когда создаешь в реге сведений реквизит с будевым типом то почему то значение не записывается.
По крайней мере с помощью выше указанной процедуры.
Ну в данном случае такой реквизит обозначен переменной: "ДокументСуществует"
Никак не записывается булевое значение.
Почему?
Буду признателен!
Автор: logist 21.03.18, 12:13
Цитата(Gigi @ 21.03.18, 11:41)
Перейти ~ЛинияДалее1;
Если вы хотели написать какую-то универсальную процедуру записи в РС - то вы написали какую-то х...ню. Вообще не понятно в чем смысл, сделайте запись в регистр так как это принято, и будет всё работать.
Автор: Gigi 21.03.18, 13:36
Цитата(logist @ 21.03.18, 12:13)
написали какую-то х...ню
Какую х..ню... Это так в голове у тех которые не понимают в чем смысл подобных процедур.
Так что ху...я у вас в голове уважаемые... это я щас не лично кого то а тех которые не понимают.
Цитата(logist @ 21.03.18, 12:13)
сделайте запись в регистр так как это принято, и будет всё работать.
Да прям ... мне больше делать нечего при каждой записи в каждом модуле писать ОДНО И ТО ЖЕ.
И так уже достал весь этот гем. постоянно писать .. так что если о ху..не то вся система 1С тогда одна спольная ху..ня.
И построена вниз головой .. просто нет другого а то....
Да сама система это и есть ху-я ... Там много че сделано так что правое ухо левой рукой .. и многое можно было сделать совсем иначе.
И тогда не приходовалось бы столько писать писать ... без конца края ... и самому облегчать себе жизнь... если сами разработчики об этом не позаботились .
А что касается этой функции, не ху-ня а ОНА РАБОТАЕТ! И нормально.
Просто я только что выяснил, что дело в коде объекта.
Ну на пример я для теста линию:
СтруктураРесурсыЗначения=Новый Структура(Строка(Месяц),ДокументСуществует,Расход,Истина);
Сменил на эту
СтруктураРесурсыЗначения=Новый Структура("январь,Документ_январь",Расход,Истина);
Это просто для теста.
И теперь нормально записала.
Поэтому я просил О ПОМОЩИ!
ТОЛЬКО ОБ ЭТОМ!
А ху-ня не ху-ня .... и эта фото которая мне до лампочки ... заверните все это в рулон и пихните себе в одно место.
Я о помощи просил.
А ВАШЕ МНЕНИЕ мне извините но до .... так что придержите пожалуйста его при себе.
Короче ... опять пошли не нужные речи.
Поэтому опять просьба просто исправить... т.е. причина в том, что когда указываешь имя ресурса в таком виде:
ДокументСуществует="Документ_"+Строка(Месяц);
Не записывает...
Записывает только тогда когда указываешь константу значения, а нужно имя ресурса запеременить и так записать. И облегчить жизнь.
Переменная вроде на то и создана что бы не повторять одно и тоже
Вот что я просил...
Gigi @ Сегодня, 12:40
,
~ЛинияДалее1:;
А с этим ... ну ладно .. согласен ... не уместна ... это просто вначале по другому накидал а эту линию стереть забыл ... ладно это ерунда.
Ладно как хотите ...
Просто вопрос уже в том как правильно запеременить имя ресурса для записи по структуре.
На пример ресуры такие ... Документ_январь, Документ_ ферваль и т.д.
А в объекте есть реквизит перечисления: с выбором месяцев.
Соответственно нужно что бы ресурс записи зависел от выбранного месяца..
Поэтому переменная имени ресурса будет: "Документ_"+Строка(Месяц)
Т.е. как правильнее обозначить переменную как ключ структуры для записи.
Вот уже в чем вопрос...
А за выше написанное ... не в обиду... просто это всего лишь код.. и не более... не со скульптурой ведь работаем а с машиной
Gigi @ Сегодня, 13:16
,
Ладно ... сам разобрался..
Вот так записывает..
ДокументСуществует="Документ_"+Строка(Месяц);
СтруктураРесурсыЗначения=Новый Структура();
СтруктураРесурсыЗначения.Вставить(Строка(Месяц),Расход);
СтруктураРесурсыЗначения.Вставить(ДокументСуществует,Истина);
Так что все работает.
Но все равно спасибо...
Ладно простите извините но сам разобрался...
Пока
Автор: Нонна 21.03.18, 13:48
Gigi @ Сегодня, 13:36
,
Не расстраивайтесь, для этого супермодератора, такое общение это норма.
Автор: sava1 21.03.18, 14:23
Цитата(Нонна @ 21.03.18, 13:48)
для этого супермодератора, такое общение это норма.
Не надо на модератора пенять...
Я бы тоже так написал.
На первых парах (сейчас может и уроках) по Бейсику !!! препод рассказал, что поддерживаются переходы пометкам
и сразу-же попросил об этом забыть и никогда не применять.
Вы слышали такое выражение "спагетти" относительно кода ? пробовали "такое" прочитать ?
Автор: Нонна 21.03.18, 14:40
sava1 @ Сегодня, 14:23
,
Может быть переход по меткам это и не очень хорошо, но этого никто не отменял. Здесь идет речь о некорректном ответе.
Автор: sava1 21.03.18, 15:08
Цитата(logist @ 21.03.18, 12:13)
делайте запись в регистр так как это принято, и будет всё работать
Это некорректный ответ ?
Автор: Vofka 21.03.18, 15:54
Цитата(Нонна @ 21.03.18, 14:40)
Может быть переход по меткам это и не очень хорошо, но этого никто не отменял. Здесь идет речь о некорректном ответе.
Тут 2 момента есть.
Первый момент заключается в том, что вопросы от
Gigi это действительно что-то с чем-то. Во-первых, каждый его ответ - это целая книга. Во-вторых, он проецирует на платформу 1С свои знания из какой-то другой платформы (Visual Basic?) и при этом не устает хаять 1С. По этому моменту мое личное мнение, что проблема не в 1С, а в
Gigi.
Насчет меток (в данном случае). Вникать детально в суть написанного я не хочу, но, по-моему, вместо использования меток можно просто использовать ключевое слово
Продолжить. Но писать об этом
Gigi я не хочу, потому что за этим последует ответ какое овно 1С и как тут все через одно место. Но мое мнение на этот счет я описал в абзаце выше.
Второй момент.
logist, я вас прошу удерживаться от фраз вроде
Цитата
вы написали какую-то х...ню
То, что это на самом деле так, я не спорю. Но я очень не хочу, что бы общение у нас на форуме скатилось до уровня миста.ру. Поэтому большая просьба не использовать в ответах нецензурную лексику или переход на личности если есть подозрение, что это может кого-то из участников темы обидеть.
Автор: Gigi 21.03.18, 16:43
Vofka @ Сегодня, 15:54
,
Цитата(Vofka @ 21.03.18, 15:54)
То, что это на самом деле так, я не спорю.
Ну ладно извините ... опять погорячился ...
а по поводу на самом деле ... я просто одурею ... ЭТО ПРОСТО КОД
Ведь это не лепить скульптуру ... для написания которого вдохновение точно не нужно!
Поэтому мне кажется, что тут иногда просто любят просто кидаться критикой и это ради того что бы просто обхайть, а совсем не по делу.
То что я говорю про систему это ПО ДЕЛУ... поверьте ... и это не тараканы какие то ... а ПО ДЕЛУ.
Могу конкретные примеры привести ... того как сделано в системе и как можно было сделать по другому.
И это для ОДНОЙ ЦЕЛИ!
ОБЛЕГЧИТЬ ЖИЗНЬ! всего лишь.
И это не только юзеру но и программисту.
Поэтому процедурка ставит одну единственную туже самую цель.
Следовательно зачем нужно вообще писать всю эту фигную для записи в рег сведений?
Эти строки ...менеджер записи ... прочитать ... отобрать .... и прочее.
Не проще ли просто указал имя рега сведений;измерения;ресурсы и все.. вот все что нужно ... а то достало уже... менеджер ж....пенеджер и прочее
Что тут такого?
Когда вы говорите что ерунда вы хоть понимаете что есть цель а есть способ реализации. И что если цель невыполнима то это проблемы разработчиков...
Короче ладно ... не буду спорить ... оказывается сделать так как проще это ерунда... надо же..
Так что воздержусь дальше...
Автор: andr_andrey 21.03.18, 17:01
logist @ Сегодня, 12:13
,
Автор имеет навык веселить, и я подозреваю, что псевдоним он специально выбрал совпадающий с
Автор: Gigi 21.03.18, 17:05
andr_andrey @ Сегодня, 16:45
,
Цитата(andr_andrey @ 21.03.18, 16:45)
совпадающий с
Не буду отвечать на это ... Что бы уже действительно не стало "весело"
Ладно... говорите че хотите ...
Пока
Автор: andr_andrey 21.03.18, 17:10
Цитата(Gigi @ 21.03.18, 16:43)
Следовательно зачем нужно вообще писать всю эту фигную для записи в рег сведений?
Эти строки ...менеджер записи ... прочитать ... отобрать .... и прочее.
Не проще ли просто указал имя рега сведений;измерения;ресурсы и все.. вот все что нужно ... а то достало уже... менеджер ж....пенеджер и прочее smile.gifsmile.gif
Что тут такого?
Вы подумали, как платформа скрывает от вас внутреннее представление всех этих "регистров и прочее" для различных вариантов серверов и файлового хранения?
Не надо думать, что создатели платформы дураки, или что они хотели всем умышленно усложнить жизнь.
Gigi @ Сегодня, 17:05
,
Цитата(Gigi @ 21.03.18, 17:05)
Не буду отвечать на это ...
Без обид, просто иконка
:gigi:
даёт такую рожицу
Автор: Vofka 21.03.18, 17:13
Gigi, при использовании любого инструмента, нужно, во-первых, разобраться как он работает, во-вторых, нужно принять, что он работает как работает и либо подстроить свое мышление под это либо отказаться от использования. Но вы выбрали путь
Автор: Gigi 21.03.18, 17:24
andr_andrey @ Сегодня, 17:08
,
Нет я не говорю что платформа не та... она всем хороша... функциональна удобна ... очень все хорошо все построено.
И конечно понятное дело над ее разработкой работали очень грамотные программисты и не только ... но и очень идейные ... это понятно.
Но просто в кое каких местах мне кажется можно было сделать иначе. И дело не в вопросе данной темы, в кое каких мамонтах в целом.
Не знаю так думается ... так что любое решение должно иметь свои логические аргументы. Аргументы главного... ОПТИМАЛЬНОСТИ!
Поэтому я думаю дело тут в этапе релиза. В самом начале ведь платформа была совсем голая. Потом ведь пошли навороты.
Так что думаю в дальнейшем будет лучше.
А так я не в целом говорю ...
В целом среда нормальная!
Ладно! Всем спасибо... извинения ... и пока!
Цитата(andr_andrey @ 21.03.18, 17:10)
даёт такую рожицу
Это совпадение ... всего лишь
Пока
Автор: logist 21.03.18, 17:45
Цитата(Vofka @ 21.03.18, 15:54)
Поэтому большая просьба не использовать в ответах нецензурную лексику
Где там нецензурная лексика? То, что кто-то там дофантазирует что было за точками - это его фантазия. "Херня" в принципе не является нецензурным словом, поскольку считается, что фразеологизм происходит от латыни hernia, медицинского термина.
Цитата(Vofka @ 21.03.18, 15:54)
или переход на личности если есть подозрение, что это может кого-то из участников темы обидеть.
Такое отношение к разработке на 1С обижает меня, это не считается, что это задевает мой чувства? Я, быть может, испытываю моральные страдания...
Цитата(Gigi @ 21.03.18, 17:24)
Аргументы главного... ОПТИМАЛЬНОСТИ!
Оптимальность это что-то типа такого:
Процедура ЗаписатьРегистрСведений(ИмяРегистра, МассивЗаписей, Перезаписывать = Истина) Экспорт
// МассивЗаписей - массиив который состоит из структур, ключ структуры соответствует измерению, ресурсу или реквизиту регистра
// Делить измерения, ресурсы и реквизиты на отдельные структуры не имеет смысла т.к. их имена уникальны
ЗаписьРегистра = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей();
Для Каждого Запись Из МассивЗаписей Цикл
НоваяЗапись = ЗаписьРегистра.Добавить();
ЗаполнитьЗначенияСвойств(НоваяЗапись, Запись);
КонецЦикла;
ЗаписьРегистра.Записать(Перезаписывать);
КонецПроцедуры
а то, что вы там написали, это "методом тыка придумал велосипед, с квадратными колесами"
Автор: Gigi 23.03.18, 9:58
logist @ 21.03.18, 17:45
,
Вот это другое дело.
С этого нужно было и начинать
А квадратные колоса обычно не ездят. И в форме квадрат это уже не колоса.... Другое дело что колоса могут быть разные.... из разных материалов.
И то что получились не колоса со спицами а колоса деревянные это опять по причине того, что слишком сильно поверил тому, что говориться в учебниках и строго следовал стандарту.
А цель оказывается можно было решить гораздо проще.
Дааа .... Вот что бывает когда тупо следуешь стандарту. Как раз предложенный вариант опять это и подтверждает
Так что спасибо за подсказку ... уже не буду делать то, что навязывается стандартом. А искать всегда надо более разумный простой и оптимальный путь. Правильно.
Без этого гема ...
Менеджер = РегистрыСведений[РегистрСведенийИмя].СоздатьМенеджерЗаписи();
НаборЗаписей = РегистрыСведений[РегистрСведенийИмя].СоздатьНаборЗаписей();
Менеджер.Прочитать();
//..... и т.д.
Просто .... имя регистра.... имена измерений.... имена ресурсов или реквизитов.... и ВСЕ!!! Больше ничего другого не надо! Что бы постоянно в каждом конкретном случае не писать: "Менеджер" , "НаборЗаписей" и прочую хрень
Так что спасибо за то что своим примером опять подтвердили как глупо буквально следовать тому что в учебниках пишут.
Ладно! Я приношу извинения за резкие слова...
Спасибо!
Gigi @ Сегодня, 9:27
,
Колоса вместо Колеса .... ладно опечатки
Самое смешное что на этом сайте после обновления страницы исправить почему то невозможно
Ладно .. пока
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua