На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:

  • Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
  • Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
  • Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.

Высказать своё мнение о модераторах раздела можно здесь: evGenius
Страницы: (3) 1 2 [3]  все  ( Перейти к последнему сообщению )  
> Что-то вроде bug report
    На компе очистили папку "temp". Вручную, просто снеся все что там было. После этого перестала запускаться 1С, причем только под определенным пользователем (который собсна и работал на этом компе). Просто при загрузке, еще до инициализации глобальника выдавала "программа выполнила недопустимую операцию и будет закрыта".

    Решилась проблема снесением в реестре ключа с настройками пользователя (/HKCU/Software/1C/1Cv7/7.7/<DBName>/V7/<UserName>)
      Сам я так и не понял глюк это или нет, но я был крайне удивлён. Делал я вначале так (объясняю на более простом примере):
      ExpandedWrap disabled
        Список1 = СоздатьОбъект("СписокЗначений");
        Список2 = СоздатьОбъект("СписокЗначений");
        Для Н = 1 По 3 Цикл                    
            Список2.УдалитьВсе();
            Для НН = 1 По 3 Цикл
                Список2.ДобавитьЗначение(Н*10+НН);
            КонецЦикла;        
            Список1.ДобавитьЗначение(Список2);
        КонецЦикла;                          
         
        Для Н = 1 По 3 Цикл                            
            СписокСписка = Список1.ПолучитьЗначение(Н);
            Для НН = 1 По 3 Цикл
                Сообщить("Н="+Н+" НН="+НН+" Значение="+СписокСписка.ПолучитьЗначение(НН));
            КонецЦикла;
        КонецЦикла;


      а потом врубился в прикол и сделал так:

      ExpandedWrap disabled
        Список1 = СоздатьОбъект("СписокЗначений");
        Для Н = 1 По 3 Цикл                    
            Список2 = СоздатьОбъект("СписокЗначений");
            Для НН = 1 По 3 Цикл
                Список2.ДобавитьЗначение(Н*10+НН);
            КонецЦикла;        
            Список1.ДобавитьЗначение(Список2);
        КонецЦикла;                          
         
        Для Н = 1 По 3 Цикл                            
            СписокСписка = Список1.ПолучитьЗначение(Н);
            Для НН = 1 По 3 Цикл
                Сообщить("Н="+Н+" НН="+НН+" Значение="+СписокСписка.ПолучитьЗначение(НН));
            КонецЦикла;
        КонецЦикла;


      ...И кто-то после этого будет доказывать, что 1С не ООП ?! :)
        Это не глюк, это фича. А ООП тут не при чем, всего лишь реализация ссылок на переменые агрегатного типа.

        Добавлено
        ООП в 1С нет, т.к. ты не можешь создавать сам объекты в чистом виде, можешь только использовать встроенные.
        Сообщение отредактировано: evGenius -
          Ну ладно придираться к словам, вот, что я ещё накопал 7.7:
          ExpandedWrap disabled
            // Запустите эту процедуру у себя и наслаждайтесь.
            Процедура Сформировать()  
                Для НН = 1 По Метаданные.Справочник() Цикл
                    Спр = Метаданные.Справочник(НН).Идентификатор;
                    Сообщить("Проверка справочника "+Спр);
                    С = СоздатьОбъект("Справочник."+Спр);
                    С.ВыбратьЭлементы(0);
                    Пока С.ПолучитьЭлемент() = 1 Цикл    
                        Состояние(С.ТекущийЭлемент());
                        Для Н = 1 По Метаданные.Справочник(Спр).Реквизит() Цикл
                            Рек = Метаданные.Справочник(Спр).Реквизит(Н);
                            Р = С.ПолучитьАтрибут(Рек.Идентификатор);
                            Если (ТипЗначенияСтр(Р) = "Справочник") И (ПустоеЗначение(Р) = 0) Тогда
                                Рвнутр1 = ЗначениеВСтрокуВнутр(Р);
                                РС = СоздатьОбъект("Справочник."+Р.Вид());
                                РС.НайтиЭлемент(Р);
                                Рвнутр2 = ЗначениеВСтрокуВнутр(РС.ТекущийЭлемент());
                                Если Рвнутр1 <> Рвнутр2 Тогда
                                    Сообщить("В справочнике "+Р.Вид()+" у элемента "+Р+" что-то непонятное с внутр.значением");
                                    Сообщить("    У ссылки="""+Рвнутр1+"""");
                                    Сообщить("  У элемента="""+Рвнутр2+"""");
                                КонецЕсли;    
                            КонецЕсли;
                        КонецЦикла;
                    КонецЦикла;
                КонецЦикла;
            КонецПроцедуры


          А если серьёзно может кто-нибудь ответить почему у некоторых элементов ЗначениеВСтрокуВнутр для ссылки не равно для элемента? (:)) может это фича?)
          Сообщение отредактировано: RusUdin -
            Ну просто иногда почему-то переменная определяется как переменная неопределенного типа, а иногда - определенного.
            Про формат возвращаемой строки: тут, тут и тут.
              имена полей в макете не могут содержать буквы cn, dn, и tn где n = число, потому что это особенность платформы 8.0 и имена зарезервированы

              Сообщения были разделены в тему "Шрифт для отображения штрих-кода"
                1C v7.70.024 & 1C++ v2.0.1.2
                Создаем пустую форму (т.е. вообще без элементов), пытаемся ее в 1С открыть - не открывается.
                Это нормально, об этом ест предупреждение в FAQ по 1С++
                Кидаем на форму статитеский текст - все в порядке, форма открывается.

                дальше... Добавляем в форму таблицу для ввода данных, режим - "на все окно", в таблицу выводим парочку ячеек с расшифровкой, пытаемся по ним (ячейкам) кликнуть. 1С падает.

                дальше... Добавляем на форму кнопку. Не привязываем ее ни к какой процедуре, она там просто висит (она даже не видна - у нас на все окно идет таблица ввода данных). Запускаем, и расшифровка работает, 1С не падает... все чудно

                /*сорри за сумбурность, я только на это наткнулась, и нахожусь в состоянии тихого шока...*/
                  1C v7.70.024 & 1C++ v2.5.0.3

                  Ошибочний код:
                  ExpandedWrap disabled
                     Конт = 0;
                     ОткрытьФорму(Док.ТекущийДокумент(),Конт);
                     // Тут выполянем с этим контекстом какие-либо действия
                     Конт.Записать();
                  1С выдает ошибку: "Конт.Записать() : Данная команда не может выполняться в форуле элемента диалога"

                  Решение:
                  в документе прописываем такую процедуру:
                  ExpandedWrap disabled
                    Процедура тЗаписать()
                        Записать();
                        Провести(); // Это по желанию. Можно дописать еще что-нибудь.
                    КонецПроцедуры


                  И после этого в обработке можно вызывать:
                  ExpandedWrap disabled
                     Конт = 0;
                     ОткрытьФорму(Док.ТекущийДокумент(),Конт);
                     // Тут выполянем с этим контекстом какие-либо действия
                     Конт.тЗаписать();


                  Для информации: 1С++ позволяет вызывать процедуры и функции контекста. Весьма удобная вещь.
                    1С:Предприятие 7.7 (027)
                    Только что обнаружил странную фичу платформы. Запускается обработка загрузки выписок банка. Обработка пытается провести, загруженные выписки. Так как в виписках есть ошибки, то формируется отчет "Комментарий проведения". После чего обработка пытается сформировать свой отчет о загруженных документах. Так вот тут возникает проблема - обработка не находит исходную таблицу из текущей формы. И выдает сообщение "Файл Отчет не найден". А вот если отчет "Комментарий проведения" не формируется, то все работает нормально.
                    Похожая проблема обсуждалась тут http://forum.shelek.ru/index.php/topic,5826.0.html

                    Не долго думая решил проблему, переносом исходной таблицы из обработки в раздел общих таблиц.
                    Сообщение отредактировано: Pavlovsky -
                      7.7.025
                      Если попробовать засунуть в список значений пустое значение неопределенного типа (именно типа, а не вида), то значение в список не добавится. Наткнулся на эту багу, когда писал процедуру копирования строки таблицы значений:
                      ExpandedWrap disabled
                        Процедура КопироватьСтрокуТаблицы(Табл)
                            КК = Табл.КоличествоКолонок();
                            ТС = Табл.НомерСтроки;
                            СписЗначенийКолонок = СоздатьОбъект("СписокЗначений");
                            Для Инд = 1 По КК Цикл
                                СписЗначенийКолонок.ДобавитьЗначение(Табл.ПолучитьЗначение(ТС,Инд));
                            КонецЦикла;
                            Табл.НоваяСтрока();
                            ТС = Табл.НомерСтроки;
                            Для Инд = 1 По КК Цикл
                                Табл.УстановитьЗначение(ТС,Инд,СписЗначенийКолонок.ПолучитьЗначение(Инд));
                            КонецЦикла;
                        КонецПроцедуры

                      В таблице у одной колонки не задан тип и туда ничего не было записано, т.е. пустое значение неопределенного типа. В результате в список значений добавлялось меньше значений, чем нужно ==> красная ошибка на строке
                      ExpandedWrap disabled
                        Табл.УстановитьЗначение(ТС,Инд,СписЗначенийКолонок.ПолучитьЗначение(Инд));

                      т.к. значений в списке меньше, чем колонок.
                        7.7.021

                        При занесении одинакового ряда символьных значений в СписокЗначений и в ТаблицуЗначений различается порядок при сортировке.

                        В списке получим:
                        ананас
                        банан
                        ПЭРсик

                        В таблице значений:
                        ПЭРсик
                        ананас
                        банан

                        Логику можно проследить и там и там, но могли бы уж сделать одинаково! :wall:
                          1C 7.70.27
                          Реквизит формы справочника "Наименование" (строковый) не может иметь кнопку выбора. Причем в конфигураторе поле ввода рисуется с кнопкой.
                            еще один глюк, при создании нового справочника, даже без реквизитов, при открытии его в режиме 1с: Предприятие 7.7, не отображаются реквизиты по умолчанию "Код" и "Наименование"
                              Fellinggood, ты видимо просто в конфигураторе открыл форму списка этого справочника и отказался от автоматического размещения реквизитов. После этого сохранил конфу и получил проблему.
                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                              0 пользователей:
                              Страницы: (3) 1 2 [3]  все


                              Рейтинг@Mail.ru
                              [ Script execution time: 0,0401 ]   [ 15 queries used ]   [ Generated: 19.03.24, 09:13 GMT ]