Форум Кладовочки АЛьФ`а

Общие вопросы => 7.7 => Тема начата: Злоп от 27 октября 2024, 23:40

Название: УПС! или испанский стыд...
Отправлено: Злоп от 27 октября 2024, 23:40
Это коллектор всяких приключений, косяков, неожиданностей, провалов и прочего испанского стыда приключившегося...
Название: Re: УПС! или испанский стыд...
Отправлено: Злоп от 27 октября 2024, 23:40
С ТЗ еще есть прикол, что можно несколько колонок с одинаковым Идентификатором вкорячить... А потом сидишь колупаешься что за хрень.. Пока не визуализируешь.. ;-)
Название: Re: УПС! или испанский стыд...
Отправлено: Злоп от 27 октября 2024, 23:43
Как-то я потратил часа два, если не больше:
Трабл, не отрабатывает ПриОткрытии()
Я уже и так и сяк, и в миссионерской позе и по-собачьему.
Но не выходит каменный цветок!
Не отрабатывает ПриОткрытии() ну хоть ты тресни...
Пока не "покурил".
И ВНЕЗАПНО обнаружил, что

Функция ПриОткрытии()...
Название: Re: УПС! или испанский стыд...
Отправлено: Харлампий Дымба от 18 ноября 2024, 17:33
Поддержу тему, просто чтоб Сергею неодиноко было. Опять же - именно для испанского стыда нужны как минимум двое :)

Что-то вот глобальных проколов, слава богу, не припомню. Пару относительно лайтовых:
1. На одной из первых 1сных работ вечерком чистил сервер (если так можно назвать машину с win95) и удалил копию базы db1, оставив рабочую с именем db, я же не знал, что предыдущий 1сник был с параноидальной дуринкой. На следующий день в обед достал её из корзины - и прослыл в бухгалтерии волшебником, спасшим базу.
2. Когда-то научил продвинутую бухшу, работавшую со многими на аутсорсе, обходу авторизации через USRDEF0, чтоб ей присланные базы без проблем открывать. Она воспользовалась советом стукнувшись ночью по rdp к рабочей базе своего нового клиента - крупного поставщика автозапчастей. А база была в SQL. Подключение к базе само собой слетело, но вроде обошлось без жертв: прогер на следующий день базу подключил обратно (наверное, тоже прослыл волшебником, спасшим базу).

Из тех что касается себя:
Ковыряешь день какой-нибудь отчет, предварительно выгрузив его во внешний, потом ПКМ на исходном отчете и вместо "Заменить на внешний отчет" щёлкаешь "Сохранить как внешний отчет" и затираешь все изменения. Обидно.
То же самое - но только через двойное редактирование в разных конфигураторах - открываешь внешний отчет в рабочей базе, потом переходишь для отладки в копию базы, там доводишь очет и сохраняешь, а потом нечаянно повторно сохраняешь в конфигураторе рабочей базы, выкинув в помойку всю работу.

Что касается языка, то у каждого, наверное, за эти годы уже есть какие-то флажки: "тут внимательно - был негативный опыт".
Немного моих:
\ - контролируй делений на ноль;
+ - хочешь получить строку, следи за первым операндом;
всегда учитывай есть ли УРБД;
всегда учитывай состав компонент (типа не используй объект Календарь, если не уверен что будет компонента "Расчет")
храни и вызывай внешние dll в одном месте (каталог программы, а не каталог базы данных), чтобы избежать проблем с правами на регистрацию компонент;
используй только необходимое;
при удаление/изменении - помни про указатель и порядок выборки;
для глобальной переменной считывание реквизитов из базы выполняется при присвоении - осторожно;

Если Иначе КонецЕсли - логические выражения проверяются полностью;
Окр() - всегда указывай способ округления, всегда учитывай точность результата, при распределении суммы по базе не забывай про оставшиеся копейки;
Строка() - преобразование документа в строку идёт с датой/без даты в зависимости от уникальности нумерации, при работе со строками (особенно обмены между базами) помни про многострочность и запрещенные символы;
Дата - указывать год полностью '18.11.2024' (год начала рабочего столетия), не путай двойные кавычки и одинарные;
Формат() - "ДДММГГГ", "Д (0)ДДММГГ", "Д ДДММММГГ" и прочие неправильные форматные строки - молча вхолостую отрабатывает, не меняя вывод;
Найти() - не путай порядок параметров, результат >0, а не =1
Состояние() - не преобразует агрегатные объекты к пользовательскому представлению: Состояние(Спр.ТекущийЭлемент()) - неправильно;
Каталогиб() и прочие возвращающие пути - по разному работали в разных ОС (в win95 не добавлялся последний слеш) - уже неактуально;
ИмяКомпьютера() - для терминального подключения вернёт имя сервера;
НачатьТранзакцию() - не забыть Зафиксировать или Отменить, с Попытка дружит плохо (или не дружит?), запись изменений делать подобранными порцями;
ЗначениеВСтрокуВнутр и ЗначениеВСтроку - не путать между собой и особенно при восстановлении значений через ЗначениеИзСтрокиВнутр и ЗначениеИзСтроки;
СтатусВозврата - смотри где используешь, если надо, а как правило - надо, то делай после него Возврат;
ПустоеЗначение и ПолучитьПустоеЗначение - не путай;
ПустоеЗначение() возвращает ноль для битых ссылок - используй Выбран()=1 для дополнительной проверки (замедляет);
ЗаписьЖурналаРегистрации - старайся использовать при программных изменениях объектов;
УдалитьОбъекты - может падать на больших количествах - удаляй порциями;
ОткрытьФорму - используй при необходимости #;
ПриОтменеПроведенияДокумента() - не вызывается при пометке документа на удаление (хотя ИТС считает иначе, и в частности поэтому в ЗиК была историческая проблема с созданием дублирующих записей-перерасчетов, попившая крови многим);
ПриУдаленииЭлемента(), ПриУдаленииДокумента() - вызывается также и при отмене удаления, так что надо контролировать состояние на момент вызова, при удалении группы и подчиненных вызывается единожды для всех сразу;
ИспользоватьСлой() - после переключения видимости слоя туда-сюда Видимость()=1
Не называй реквизиты формы на "я";
Не именуй реквизиты формы, атрибуты справочников и переменные одинково;

Справочники:
Родитель и ИспользоватьРодителя(), Владелец и ИспользоватьВладельца() - не путай
Получить(),Установить() и ИспользоватьДату() - осторожно, для работы в формах используй лучше Получить(), в отчетах и обработках - что удобно;
ИспользоватьДату() - не забывай про параметр УстСразу;
Установить() - работает без Записать();
получить() и установить() через 2 точки работает на последних релизах;
Уровень() - для верхнего уровня возвращает 1;
УстановитьАтрибут(), ПолучитьАтрибут(), а также присвоение и получение атрибутов справочника - молча вхолостую  отрабатывает для групп атрибуты с режимом использования "Для элементы", а для элементов - с режимом использования "Для групп";
НайтиПоКоду() - если код числовой, можно передать строкой;
ВыбратьЭлементыПоРеквзитиу () - про это писал отдельно;
ОбратныйПорядок() - используй до выборки, не забывай указать параметр Режим;
Записать - если меняешь реквизиты в выборке, то используй ПорядокКодов, ПорядокНаименований, ПорядокРеквизита, а также иерархию, которые не затрагивают измененяемые реквизиты;
Удалить(1) - не используй / используй осознано
Блокировка() - возвращает состояние блокировки для ТЕКУЩЕГО пользователя, особый режим использования;
Записать(), Удалить(), СнятьПометкуУдаления(), ПометкаУдаления() - контролируй возможность блокировки другим пользователем;
Программное Записать() не вызывает ПриЗаписи() и т.д.;
ИспользоватьСписокОбъектов() - отключай иерархию или контролируй владельца/родителя, + не будет работать быстрый поиск по строке;
ПриВводеСтроки, ПриРедактированииНовойСтроки, ПриНачалеРедактированияСтроки - не путай, писал про это;
Редактирование в форме списка использовать осознано - есть ряд особенностей, писал про это;
в ПриОткрытии и прочем таком - присваивай значения атрибутам, только если они меняются, чтобы у пользователя ненужная Модифицированность не возникала;
Не путай объект и ссылку на объект;

Документы:
Многое подобно справочникам и плюс:
Документ.Операция - если не знаешь точно, сначала вызывай .СуществуетОперация();
Новый() - если меняешь / устанавливаешь дату - контролируй номер;
ПриЗаписиПерепроводить(1) - не забывай;
УстановитьВремя() - работает после АвтоВремяОтключить(), вызывать во ВводНового();
Не уверен в работе .Провести() без предварительного .Записать();
УстановитьРеквизитСправочника() с указанием документа будет позже, чем ручная или программная (через .Установить) запись в этот же день, значения за одну дату устанвливаются по порядку документов;
ОбработкаУдаленияПроведения не вызывается при перепроведении;
ПривязыватьСтроку - работает для расчета, регистров, периодических значений - если привязываешь строки, то зануляй привязку в конце (иначе при групповом перепроведении может вылезти в чужих документах?);

СписокЗначений:
Не путай НайтиЗначение и Принадлежит, и вообще не используй Принадлежит без особой надобности (тормоза);
вСтрокуСРазделителями - если в списке есть многострочные строки, то результат тоже будет многострочным (внимательно при обменах);

ТаблицаЗначений - тут много всего, надо будет поразбираться как-нибудь:
НомерСтроки и ТекущаяСтрока() - не путай
НоваяКолонка - для чисел указывай тип явно, иначе Свернуть() не будет правильно суммировать колонки, в котороых есть пустые ячейки (где явно не задано значение 0);
НоваяКолонка - если задашь несуществующий тип  (опечатка, например) - молча отработает;
НайтиЗначение - параметры Строка и Колонка если указаны, то поиск идёт только в указанной строке/колонке, так что зануляй Строка (или Колонка) перед поиском.
Выгрузить/Загрузить - не сохраняет значения установленные ВидимостьКолонки,  ВыводитьПиктограммы, Фиксировать
Сортировать - пользуйся *;
Сортировать - помни про Параметр ДокумПоДате;
Сортировать - баг, после сортировки нельзя использовать КоличествоСтрок(), СдвинутьСтроку() и что-то ещё, вроде писал про это;
Заполнить - используй только в  обёртке Если .Количестовстрок()>0;
Если кладешь СписокЗначений/ТаблицуЗначений в СписокЗначений/ТаблицуЗначений для каждой новой строки делай СоздатьОбъект();

Таблица:
КоличествоСтраниц - работает долго, + нужен контроль релиза
ВывестиСекцию или Область - проигрывают ПолучитьСекцию();
Напечатать  - длина имени принтера максимум 31 символ (-20 на русский _Перенаправлено ХХ) = 11 символов;

Не, не осилил.






Название: Re: УПС! или испанский стыд...
Отправлено: trdm от 19 ноября 2024, 10:41
Цитата: Харлампий Дымба от 18 ноября 2024, 17:33Из тех что касается себя:
Ковыряешь день какой-нибудь отчет, предварительно выгрузив его во внешний, потом ПКМ на исходном отчете и вместо "Заменить на внешний отчет" щёлкаешь "Сохранить как внешний отчет" и затираешь все изменения. Обидно.
То же самое - но только через двойное редактирование в разных конфигураторах - открываешь внешний отчет в рабочей базе, потом переходишь для отладки в копию базы, там доводишь очет и сохраняешь, а потом нечаянно повторно сохраняешь в конфигураторе рабочей базы, выкинув в помойку всю работу.
У меня скрипт работает, который при сейве внешнего отчета кидает его копию в ExtForms\_Arhive
 
Название: Re: УПС! или испанский стыд...
Отправлено: Arbuz от 19 ноября 2024, 15:33
Цитата: trdm от 19 ноября 2024, 10:41У меня скрипт работает, который при сейве внешнего отчета кидает его копию в ExtForms\_Arhive
 

Я его слегка подпилил и он сохраняет и мд'шки в .\_Arhive
Каталог правда пухнет интенсивно.
Спасибо — очень нужная штука, несколько раз выручало.
Название: Re: УПС! или испанский стыд...
Отправлено: Харлампий Дымба от 19 ноября 2024, 18:15
Цитата: trdm от 19 ноября 2024, 10:41У меня скрипт работает, который при сейве внешнего отчета кидает его копию в ExtForms\_Arhive
Хорошее решение, если рабочее место постоянно. Но если подключаешься к эпизодическому заказчику, не всегда получается принести своё окружение с собой. Я и попытался перечислить некоторые свои триггеры и правила по ним: "включаешь отчет в конфу - обрати внимание", "не держи 2 конфигуратора для редактирования", ну и тд. Ну и такие проколы с сохранением уже и не вспомню когда случались, значит правила работают, тьфу 3 раза.
А что за скрипт, если не секрет?
Название: Re: УПС! или испанский стыд...
Отправлено: Arbuz от 20 ноября 2024, 17:41
Я так понимаю, что это изначально ИсторияОткрытияДокументов.vbs (https://www.1cpp.ru/forum/YaBB.pl?num=1164784767/2#2) для OpenConf, в который trdm (https://forum.dorex.pro/index.php?action=profile;u=8) в 21 году добавил сохранение копий внешних отчётов. В который я, в свою очередь, прикрутил сохранение копий мд'шек.
'ИсторияОткрытияДокументов.vbs
'(c) trdm 2006
Dim DictHWND : Set DictHWND = CreateObject("Scripting.Dictionary")
Dim DictCPTN : Set DictCPTN = CreateObject("Scripting.Dictionary")

Dim strFilePath

'+
' trdm 2021-03-19 04:17:29
' Делает копию файла после сохранения в конфигураторе.
' Работает только с файлами в  в каталоге 'IBDir + "ExtForms\"'
Sub makeCopyToArhive(psDocPath)
    Set FSO = CreateObject("Scripting.FileSystemObject")
    vCopyFolder = IBDir + "ExtForms\_Arhive\"
    vCheckFolder = IBDir + "ExtForms\"
    vDocPathNew = psDocPath
    'message vDocPathNew
    'message vCheckFolder
    if InStr(1,psDocPath,vCheckFolder,1) = 0 Then
        if Left(psDocPath, 1) <> "\" Then
        message "not in ExtForms, not backup"
    end if
        exit sub
    Else
        vDocPathNew = Replace(vDocPathNew,vCheckFolder,"",1,-1,1)
        vDocPathNew = Replace(vDocPathNew,"\","#")

    end if
    'message vDocPathNew
    if not FSO.FolderExists(vCopyFolder) Then
        exit sub
    end if
    str_now = CStr(Now)
    str_date = Left(str_now,10)
    str_time = Right(str_now,8)
    str_nowA = Split(str_date,".")
    str_nowB = Split(str_time,":")
    vDocPathNew = "" + str_nowA(2)+str_nowA(1)+str_nowA(0)+"_"+str_nowB(0)+str_nowB(1)+str_nowB(2)+"_" + vDocPathNew
    vDocPathNew = vCopyFolder + vDocPathNew
    FSO.CopyFile psDocPath,vDocPathNew
End Sub


Private Sub RegisterOpenWindow( spDoc, sOpt)
'Stop

    Set FSO = CreateObject("Scripting.FileSystemObject")
    if Not FSO.FileExists(strFilePath) Then
        Set TextStream = FSO.CreateTextFile(strFilePath,false)
        TextStream.Close
    End If
    Set File = FSO.GetFile(strFilePath)
    Set TextStream = File.OpenAsTextStream(8,0)

    If isObject(spDoc) Then
        strToWrite = FormatDateTime(now(),0) +" "+spDoc.Name
        strToWrite = Replace(strToWrite,"CBodyTextDoc::","")
        strToWrite = Replace(strToWrite,"CSheetDoc::","")
        strToWrite = Replace(strToWrite,"CWorkBookDoc::","")
    Else
        strToWrite = spDoc
    End If

    TextStream.WriteLine sOpt + strToWrite
    TextStream.Close

End Sub

' просто добавим окна в словарь.....
Private Sub RemakeDictHWND(  )
    DictHWND.RemoveAll
    DictCPTN.RemoveAll
    Set w = Windows.FirstWnd
    While Not w Is Nothing
        DictHWND.Add CStr(w.hWnd), w.Caption
        on error resume next
        if Len(w.Document.path)>0 Then    DictCPTN.Add w.Document.path, CStr(w.hWnd)
        on error goto 0
        Set w = Windows.NextWnd(w)
    Wend
End Sub

Private sub RegisterWindow( psWnd, spDoc )
    sHWND = CStr(psWnd.HWND)

    if Not DictHWND.Exists(sHWND) Then
        RegisterOpenWindow spDoc, "find "
    End IF
    RemakeDictHWND
    ' Сохраним HWND-ы всех окон в системе и будем добавлять в лог файл только
    ' те, которых раньше не было....
End Sub

' artbear - устраню ошибку, возникающую при закрытии всех окон (через меню) - если переданное окно уже не существует
' Устанавливает GlobalModuleParse в 0, что означает, что мы не парсили Глоб. модуль
'  или побывали в нем, значит возможно он изменен и придется его
' еще раз отпарсить.
Sub Configurator_OnActivateWindow(Wnd,bActive) 'As ICfgWindow, ByVal bActive As Boolean)
    On Error Resume Next
    Set doc134 = Wnd.Document
    iErrNumber = err.Number
    On Error GoTo 0
    If iErrNumber <> 0 Then
      Exit Sub
    End If

    if Not bActive Then
        Exit Sub
    End IF
    on error resume next
    iErrNumber = Err.Number
    on error goto 0
    Set doc = Wnd.Document

    if doc.Type = 0 Then
        Exit Sub
    End IF
    RegisterWindow  Wnd, doc
End Sub

Sub Configurator_OnFileSaved( psDoc )
    ' trdm 2021-03-19 03:48:36
    'Message psDoc.path
    makeCopyToArhive psDoc.path
    if Not DictHWND.Exists(psDoc.path) Then
        RegisterOpenWindow psDoc, "save "
    End IF
    RemakeDictHWND
End Sub

Sub Configurator_MetaDataSaved(FileName)

  Set fso = CreateObject("Scripting.FileSystemObject")

      path = fso.GetParentFolderName(FileName)

  path = LCase(path)

      If InStr(path, "new_stru") <> 0 Then
          path = fso.GetParentFolderName(path)
      End If

    fname = "1cv7.md"
    vCopyFolder = path+"\_Arhive\"
    if not FSO.FolderExists(vCopyFolder) Then
        exit sub
    end if
    str_now = CStr(Now)
    str_date = Left(str_now,10)
    str_time = Right(str_now,8)
    str_nowA = Split(str_date,".")
    str_nowB = Split(str_time,":")
    vDocPathNew = "" + str_nowA(2)+str_nowA(1)+str_nowA(0)+"_"+str_nowB(0)+str_nowB(1)+str_nowB(2)+"_" + fname
    vDocPathNew = vCopyFolder + vDocPathNew
    RegisterOpenWindow vDocPathNew, "save "

End Sub

Sub OpenHistory()
    Documents.Open(strFilePath)
End Sub

Sub InitScript()
'Stop
    strFilePath = IBDir+"_HistoryDocs.txt"
    str_now = CStr(Now)
    str_now = Left(str_now,10)
    str_nowA = Split(str_now,".")
    strFilePath = IBDir+""+str_nowA(2)+"_"+str_nowA(1)+"_HistoryDocs.txt"


End Sub

InitScript



PS: раскраску бы для vbs
Название: Re: УПС! или испанский стыд...
Отправлено: Харлампий Дымба от 20 ноября 2024, 18:53
А вот испанский стыд с Селезнёвки подоспел, новое поколение обнаружило:
Цитата: Харлампий Дымба от 18 ноября 2024, 17:33при распределении суммы по базе не забывай про оставшиеся копейки;
и пытается победить копейки:
https://buh.ru/articles/novyy-algoritm-spisaniya-dopolnitelnykh-raskhodov-pri-vedenii-razdelnogo-ucheta-nds-v-1s-bukhgalteri.html
Если коротко: как я понял,в типовой БП при списании стоимости МПЗ определяли сумму поступивших доп.расходов, приходящихся на списываемое, в разрезе документов поступления этих доп.расходов, пропорционально списанию.
То есть приход партии товаров, приход доп.расходов к этой партии несколькими документами, частичное списание товара - надо частично списать долю доп.расходов в разрезе документов поступления. Не смогли победить копейки. ???
Тупо сделали для всех с 01.10.2024 списание доп.расходов по FIFO.
Я, конечно, 8ку в руках не держал, но если у ребят, пишущих типовую с такой ерундой проблемы, то пожалуй и не подержу.

Ну вот же в типовой бухии 7.7:
Процедура глРаспределитьПропорционально(ИсхСумма, ТабличнаяЧасть, КолонкаОснование, КолонкаРаспределения, ЗнаковОкругления = 2) Экспорт

ИтогПоОснованию = ТабличнаяЧасть.Итог(КолонкаОснование);

Если ИсхСумма=ИтогПоОснованию Тогда
Для К = 1 По ТабличнаяЧасть.КоличествоСтрок() Цикл
ТабличнаяЧасть.УстановитьЗначение(К, КолонкаРаспределения, ТабличнаяЧасть.ПолучитьЗначение(К, КолонкаОснование));
КонецЦикла;
Возврат;
КонецЕсли;

Если ИтогПоОснованию = 0 Тогда
Возврат;
КонецЕсли;

МаксЗнач = 0;
ИндексМакс = 0;
Для К = 1 По ТабличнаяЧасть.КоличествоСтрок() Цикл
ТекЗнач = ТабличнаяЧасть.ПолучитьЗначение(К, КолонкаОснование);
МодульЧисла = ?(ТекЗнач > 0, ТекЗнач, -ТекЗнач);
Если МаксЗнач < МодульЧисла Тогда
МаксЗнач = МодульЧисла;
ИндексМакс = К;
КонецЕсли;
УстанавливаемоеЗначение = Окр(ИсхСумма * ТекЗнач / ИтогПоОснованию, ЗнаковОкругления, 1);
ТабличнаяЧасть.УстановитьЗначение(К, КолонкаРаспределения, УстанавливаемоеЗначение);
КонецЦикла;

ИтогПоРаспределению = ТабличнаяЧасть.Итог(КолонкаРаспределения);
Если ИсхСумма <> ИтогПоРаспределению Тогда
УстанавливаемоеЗначение = ТабличнаяЧасть.ПолучитьЗначение(ИндексМакс, КолонкаРаспределения)
+ ИсхСумма - ИтогПоРаспределению;
ТабличнаяЧасть.УстановитьЗначение(ИндексМакс, КолонкаРаспределения, УстанавливаемоеЗначение);
КонецЕсли;

КонецПроцедуры // глРаспределитьПропорционально()
Название: Re: УПС! или испанский стыд...
Отправлено: Злоп от 20 ноября 2024, 21:25
Для копий внешних обработок у меня стоит патч Ромикса, спасал неоднократно.
Название: Re: УПС! или испанский стыд...
Отправлено: Харлампий Дымба от 20 февраля 2025, 18:11
Вот ещё из любимых граблей - раз в пару лет обязательно наступлю, именно когда башка забита, и потуплю часок: "Почему выборка пуста?"

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Свод)
|Период с ДатаНачала по ДатаОкончания;
|Сотрудник = ЖурналРасчетов.Зарплата.Объект;
|Расчет = ЖурналРасчетов.Зарплата.ВидРасч;
|Результат = ЖурналРасчетов.Зарплата.Результат;
|Часов = ЖурналРасчетов.Зарплата.Часы;
|Группировка Сотрудник Без Групп Упорядочить По Сотрудник.Код;
|Функция Сумма = Сумма(Результат);
|Функция ЧасовОтработано = Сумма(Часов) когда (Расчет=ВидРасчета_ОплатаПоОкладу);
|Условие (Результат<>0);
|Условие (ЧасовОтработано<>0);
|Условие (Расчет в СписокВкл);
|"//}}ЗАПРОС
;
Пока Запрос.Группировка("Сотрудник")=1 Цикл
...
//ПУСТО!
...
КонецЦикла;
Название: Re: УПС! или испанский стыд...
Отправлено: Злоп от 21 февраля 2025, 13:19
И почему?
Взаимоисключающие условия по Расчет?
Название: Re: УПС! или испанский стыд...
Отправлено: Грузчик от 21 февраля 2025, 14:08
Запрос.Выполнить(ТекстЗапроса);
Оно?
Название: Re: УПС! или испанский стыд...
Отправлено: Харлампий Дымба от 21 февраля 2025, 22:17
Цитата: Грузчик от 21 февраля 2025, 14:08Запрос.Выполнить(ТекстЗапроса);
Оно?
Да, в точку!
Название: Re: УПС! или испанский стыд...
Отправлено: Харлампий Дымба от 24 февраля 2025, 18:02
Ещё одна неприятная для меня особенность:
При программном открытии формы отчета/обработки используются сохраненные настройки формы (те что с галкой "При открытии") конкретного пользователя.

Например, я использую данные первого отчета при формировании второго:
Во втором отчете пишу:
Параметры=СоздатьОбъект("СписокЗначений");
Параметры.Установить("ДатаАктуальности",ДатаАктуальности);
ОткрытьФормуМодально("Отчет.ПервыйОтчет#",Параметры);
... дальше работаю с возвращенной таблицей Параметры

В первом отчете пишу:
Процедура ПриОткрытии()
Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" Тогда
 СтатусВозврата(0);
 ДатаАктуальности=Параметры.Получить("ДатаАктуальности");
 Сформировать(1);//вернуть таблицу результата
 Возврат;
КонецЕсли;
КонецПроцедуры
...
Процедура СФормировать(ВернутьТаблицуРезультата=0)
 ...//всё считаю, складываю в таблицу результата
 Если ВернутьТаблицуРезультата=1 Тогда
  Форма.Параметр=ТаблицаРезультата;
  Возврат;
 КонецЕсли;
КонецПроцедуры

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





Название: Re: УПС! или испанский стыд...
Отправлено: Злоп от 27 февраля 2025, 21:09
Ну, это не испанский стыд. Это обычные глюкофичи...
Название: Re: УПС! или испанский стыд...
Отправлено: Харлампий Дымба от 28 февраля 2025, 10:39
Цитата: Злоп от 27 февраля 2025, 21:09Ну, это не испанский стыд. Это обычные глюкофичи...
Ну глюкофичи и стыд, что в них вляпался, идут рука об руку.
Вот я делал всегда заполнение ПолнНаименование по необходимости (если Наименование по длине не влезало) так:
Спр.Наименование=НовоеНаименование;
Если Спр.Наименование<>НовоеНаименование Тогда//считал, что тут в Спр.Наименование уже обрезанное по длине наименования значение
 Спр.ПолнНаименование=НовоеНаименование;
КонецЕсли;
а оказалось нет - наименование будет обрезано только в момент сохранения. То есть либо так:
Спр.Наименование=НовоеНаименование;
Спр.Записать();//тут Спр.Наименование обрежется
Если Спр.Наименование<>НовоеНаименование Тогда//заново считывать не надо - Спр.Наименование уже обрезанное
 Спр.ПолнНаименование=НовоеНаименование;
КонецЕсли;
либо через проверку
Метаданные.Справочник().ДлинаНаименования

Ну может и действительно надо завести свою отдельную тему с багами и шлюглюками, а то списки с инфостарта неполны и частью неактуальны - давно пофиксенные проблемы 18го релиза вряд ли кому интересны.
Название: Re: УПС! или испанский стыд...
Отправлено: Arbuz от 28 февраля 2025, 14:21
Цитата: Харлампий Дымба от 28 февраля 2025, 10:39Ну может и действительно надо завести свою отдельную тему с багами и шлюглюками

И, (мечтательно) по итогу, всё это в als'ку вместо родной.
Название: Re: УПС! или испанский стыд...
Отправлено: Харлампий Дымба от 28 февраля 2025, 15:33
Цитата: Arbuz от 28 февраля 2025, 14:21всё это в als'ку вместо родной.
Может и хорошо, да кто же его читает на третьем десятке...

Опять же - проблемы-то могут ждать где уж казалось бы всё знаешь. Вот критичный реальный Баг2 отсюда https://forum.dorex.pro/index.php?topic=203.0 - про него я нигде не видел информации и у меня всё всегда отлично работало с ИспользоватьКорСубконто().

Или вот предыдущее мое, хоть и не баг, но неочевидное поведение - про хранение в реквизите значения, которое не удовлетворяет типу реквизита.
Ну ведь не работает же:
Спр = СоздатьОбъект("Справочник.Номенклатура");
Спр.Новый();
Спр.Наименование = Перечисление.Булево.Нет;
Сообщить(Спр.Наименование.ПорядковыйНомер());//ведь в Спр.Наименование уже не перечисление, а ... "423". Чего?!
Очевидно же, что должен преобразоваться тип при присвоении. А вот на тебе - преобразуется да с особенностями: в частности, строка не режется. Разве бы я в als полез проверять?
Кстати, в приведенном коде Спр.Наименование будет присвоен внутренний идентификатор объекта. Так что вот открыл себе нечаянно ещё один способ его получать.
Название: Re: УПС! или испанский стыд...
Отправлено: Злоп от 01 марта 2025, 03:54
С перечислениями регулярно как-то непонятно - то при преобразовании в строку дает представлением нормально наименование значения перечисления, то ид объекта... и приходится явно типизировать
Название: Re: УПС! или испанский стыд...
Отправлено: Харлампий Дымба от 01 марта 2025, 20:44
Там прикол приведенного кода в том, что он работает не для перечислений - перечисление я взял для примера. Он работает для любых объектов и возвращает СокрЛП(ВнутреннийИД):
Спр.Наименование=ОсновнойПланСчетов() вернет "809" - внутренний идентификатор плана счетов,
Спр.Наименование=Дата(1) вернёт "-4713112" - внутренний идентификатор первой даты
и т.д.
Кстати, так же работает Состояние() - показывает внутренний идентификатор объекта, а не его строковое представление.

Ну вообще я понимаю, о чём речь, у меня тоже какое-то смутное ощущение, что с перечислениями есть какие-то непонятки.
Название: Re: УПС! или испанский стыд...
Отправлено: Mugface от 23 апреля 2025, 14:04
Спецы, подскажите как побороть тормоза отрисовки меню и переключение в закладках на форме в конфигураторе. Как то вроде делал, но давно это было и не точно и сходу методом тыка по меню и по скриптам не отгадалось. Причём если другие 1С долго держать открытыми, то со временем вроде тормозить начинает сильнее. Заметно, что при переключении дёргаются/мигают и другие 1Сные окна (как конфигураторы, так и предприятия). Когда и форму, и модуль, и в таблице надо что-то менять, это нервирует)
Win 10
Видео: https://disk.yandex.ru/i/kWuo_l8R7yxN1w

Спасибо)
Название: Re: УПС! или испанский стыд...
Отправлено: Djelf от 23 апреля 2025, 15:10
Это по рдп или без рдп?  :o
Если без рдп, то это совершенно не нормально!
Решение тебе и гугл выдаст - прогоняй антивирусами/сноси стистему/меняй дрова на видео, убери  всякие тимвьюверы и т.п.
А вот по рдп, то там уже начинаются более тяжелые танцы с бубном...

Еще как предположение (это проверить будет быстрее): отключи OpenConf и Colorer вообще, для чистоты эксперимента, может скрипт какой-то кривой затесался....
Название: Re: УПС! или испанский стыд...
Отправлено: Mugface от 23 апреля 2025, 18:21
Не РДП, всё локально. Перегрузил комп, запустил 1ски для видоса, чтобы показать как и другие моргают. В РДП на другом компе в виртуалке на той же сборке платформы проблема не наблюдается (просто всё скопировано целиком). Может что-то в реестр не прописано от 1С и настроек OpenConf. Как писал - наугад тыкал, не помогает ничего, но может не тыкнул куда нужно. Из приложений на момент записи видео ничего особо запущено не было. Тимвивер установлен, но после перезагрузки компа не запускал даже. Антивирус - виндовый дефендер, в реалтейме отключал.

Видео, где 1С моргает всеми окнами 1С из конфигуратора с OpenConf: https://disk.yandex.ru/i/o5BCCQdjTEE8dA
Видео, где 1С чистая и 1С с OpenConf: https://disk.yandex.ru/i/KcY_Z14gtYITSg

Есть ещё подозрение на видяху (ASUS GeForce GT730, версия с 4 выходами HDMI). Но как то не знаю как притянуть. Попробую попозже без неё на процовой видяхе, но только с одним монитором получится из-за ограничений по разъёмам (сейчас два моника, но на асусе и с одним монитором моргает).
Название: Re: УПС! или испанский стыд...
Отправлено: Djelf от 23 апреля 2025, 19:07
Все верно, сужай вероятность.
GT730 для такой работы больше чем норм
По факту это все должно работать  даже на диназавре от S3trio , возможно GT730  виновата, кто его знает...
Но я ставлю первую фишку за стронее обеспечение и/или на скриты (вероятнее на красное - на срипты).