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

Хранилище

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

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



> Баги чи недокументовані особливості (ньюанси) роботи із платформою , постимо та обговорюємо 4 страниц V   1 2 3 > »           
mister-x Подменю пользователя
сообщение 05.07.12, 21:06
Сообщение #1

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

1. Особливості запиту по документу.

Не використовуйте в межах одного запиту звернення і до реквізиту шапки документу і до реквізиту табличної частини (типу число). Тому що, напр., ф-ія запиту Сумма від цих цих реквізитів буде некоректно працювати в межах різних групувань. Не виключено і інші неточності.

2. Метод док-та НайтиПоНомеру(<Номер>,<Дата>,<ИдентВида>)

шукає документ в межах унікальності номера документа, тобто для параметра <Дата> для унікальності в межах року буде шукатись документ в межах року із переданої дати, в межах місяця - місяць і рік, якщо не унікальний - вся дата.

3. Обхід вкладених групувань в запиті

Стикнувся із такою особливістю
пока запрос.группировка(1)=1 цикл //товар
пока запрос.группировка(2,-1)=1 цикл //документи вибираємо по принципу LIFO (задом наперед)
если такоеТоУсловие тогда //потрібно було проігнорувати всі інші наступні документи по даному товару
  прервать; //такий вихід із вкладеного групування не використовувати - збиває вибірку, зациклює на першому товарі у групуванні (1) і постійно вибирає по ньому документи
конецесли;

використав додаткову зміну игнор по принципу
пока запрос.группировка(2,-1)=1 цикл
если игнор = 1 тогда продолжить; конецесли;
...


4. В случае, когда обход группировки по элементам (многоуровневого) справочника позиционируется на группе - обход следующих по вложенности группировок НЕ выполняется.

Единственный способ обойти эту особенность (например, получить все-таки список документов, двигавших регистр по всем входящим в группу справочника позициям) - это "спустить" группировку по справочнику на самый нижний (самый вложенный) уровень. Неочевидность подобных "плясок с бубном", а также невозможность такими "плясками" решить проблему в некоторых случаях (например, наличие в запросе более одной группировки по многоуровневым справочникам с необходимостью получения для групп таких справочников развернутых в разрезе других группировок данных) делает такую "особенность" вполне достойной для описания в качестве именно "бага".

5. Баг DBF-SQL (запросы+бух.запросы). При использовании в фильтре (отборе) списка значений результаты могут "вдруг" случиться разными.

Причина - некорректная обработка в SQL списков значений (в фильтрах запросов и бух.запросов), содержащих группы справочников.
Обход бага - если в SQL-версии в запросах и бух.запросах необходимо использовать фильтр по списку значений субконто типа "Справочник" - список значений должен содержать только элементы (не содержать групп).


прим.: в качестве срочного "костыля" при переходе с DBF на SQL можно использовать недокументированный метод объектов типа Запрос или Регистр - <Объект>.ВключитьSQL(0). Однако следует помнить, что этот метод очень сильно замедляет работу, и его рекомендуется использовать только в качестве "временного" решения проблемы.

6. Якщо маєте змінну модуля документу - ІНІЦІАЛІЗУЙТЕ ЇЇ ЯВНО. Інакше при пакетному проведенні неініціалізована змінна МОЖЕ бути не пустою, а зовсім навіть навпаки, може мати значення, що залишилось від проведення попереднього (!!) документу.

7. Метод Активизировать(<ИмяРеквизита>,<Режим>) працює тільки напередвизначених (системних) процедурах.

В документації про таке не згадується. Треба було в роздрібній торгівлі сканити товар, його артикул записувати в деякому реквізиті, шукати його і якщо знайшовся, то автоматом в діалозі вказувати його кількість і записувати в табличну частину. Знов активізовувати поле артикулу і процедуру повторяти. Реалізував цю активізацію за допомогою закриття і відміни закриття форми - процедура ПриЗакрытии.

Сообщение отредактировал mister-x - 15.09.12, 20:05

mister-x Подменю пользователя
сообщение 25.07.12, 15:31
Сообщение #2

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

щодо останнього, можливо, є якийсь інший більш "красивіший" (в плані оптимізації) перехід на інший товар?

Сообщение отредактировал mister-x - 25.07.12, 15:32

XBrut Подменю пользователя
сообщение 26.07.12, 9:31
Сообщение #3

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

Кожному багу - окрему тему.
Щодо п.1 - пам'ятаю ділив суму на кількість строк в документі smile.gif

Сообщение отредактировал mister-x - 26.07.12, 10:20

mister-x Подменю пользователя
сообщение 26.07.12, 10:18
Сообщение #4

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата(XBrut @ 26.07.12, 10:31) *
Кожному багу - окрему тему.

баги будуть публікуватися в першому пості
Цитата(XBrut @ 26.07.12, 10:31) *
Щодо п.1 - помню ділив суму на кількість строк в документі

таке пробував, а потім взагалі відмовився від звернення до реквізита табл. частини (став не потрібним)

щодо п.3 таке зустрічали/реалізовували?

Сообщение отредактировал mister-x - 26.07.12, 10:20

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

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 224
Из: не ту страну назвали Гондурасом
Спасибо сказали: 83 раз
Рейтинг: 0

п.1 - не баг. всё вычисляется корректно - в соответствии со схемой запроса и обработкой его результатов. в баг это превращается при отсутствии понимания того, как работает запрос (в данном случае - при включении записей запроса, относящихся к группировке по строкам (или реквизитам строк), в состав группирующих записей по реквизитам шапки или документам). ошибка, свойственная не только запросам по документам, кстати.

п.2 - парафраз штатной документации ("описание встроенного языка", гл.12 - "Поиск зависит от выбранного в конфигураторе способа уникальности номеров (по месяцу, году и др.).").

п.3 - "описание встроенного языка", гл.33: "не следует прерывать последовательность просмотра временного набора данных (например, оператором Прервать;), если вы собираетесь использовать временный набор дальше или еще раз, т. к. в таком случае теряется точка позиционирования во временном наборе и продолжать просмотр невозможно" (в выводах к примеру в самом начале главы - кстати, пример сам по себе очень(!) полезен для понимания того, как работает запрос и обход его результатов).

Дополнение списочка. Особенность, в принципе понятная человеку, имеющему представление о том, как работает SQL-запрос (например). Но в связи с неочевидностью такой особенности, а также с отсутствием её описания в штатной (да и в нештатной тоже)) документации - вполне достойна описания в "багах". Так что - рекомендую:
В случае, когда обход группировки по элементам (многоуровневого) справочника позиционируется на группе - обход следующих по вложенности группировок НЕ выполняется.
Единственный способ обойти эту особенность (например, получить все-таки список документов, двигавших регистр по всем входящим в группу справочника позициям) - это "спустить" группировку по справочнику на самый нижний (самый вложенный) уровень. Неочевидность подобных "плясок с бубном", а также невозможность такими "плясками" решить проблему в некоторых случаях (например, наличие в запросе более одной группировки по многоуровневым справочникам с необходимостью получения для групп таких справочников развернутых в разрезе других группировок данных) делает такую "особенность" вполне достойной для описания в качестве именно "бага".

Сообщение отредактировал MATEVI - 17.08.12, 22:05

Спасибо сказали: mister-x, Petre,

Cthulhu Подменю пользователя
сообщение 18.08.12, 11:22
Сообщение #6

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 224
Из: не ту страну назвали Гондурасом
Спасибо сказали: 83 раз
Рейтинг: 0

Баг DBF-SQL (запросы+бух.запросы).
При использовании в фильтре (отборе) списка значений результаты могут "вдруг" случиться разными.
Причина - некорректная обработка в SQL списков значений (в фильтрах запросов и бух.запросов), содержащих группы справочников.
Обход бага - если в SQL-версии в запросах и бух.запросах необходимо использовать фильтр по списку значений субконто типа "Справочник" - список значений должен содержать только элементы (не содержать групп).
прим.: в качестве срочного "костыля" при переходе с DBF на SQL можно использовать недокументированный метод объектов типа Запрос или Регистр - <Объект>.ВключитьSQL(0). Однако следует помнить, что этот метод очень сильно замедляет работу, и его рекомендуется использовать только в качестве "временного" решения проблемы.

Сообщение отредактировал mister-x - 18.08.12, 12:18

XBrut Подменю пользователя
сообщение 18.08.12, 12:54
Сообщение #7

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

щодо п.3.
...таке не стрічав, мабудь інтуітивно обходив.

Згоден з Cthulhu , якщо уважно придивитись - на "баг" жоден з трьох перших пунктів не тягне...
можливо доречно розділити тему на помилки & особливості

P.S.
Додаю до списку дуже бридку (і недокументовану) особливість : якщо маєте змінну модуля документу - ІНІЦІАЛІЗУЙТЕ ЇЇ ЯВНО. Інакше при пакетному проведенні неініціалізована змінна МОЖЕ бути не пустою, а зовсім навіть навпаки, може мати значення, що залишилось від проведення попереднього (!!) документу.
Типова ПУБ , наприклад цим нехтує.

Сообщение отредактировал XBrut - 18.08.12, 12:59

mister-x Подменю пользователя
сообщение 18.08.12, 13:04
Сообщение #8

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата(Cthulhu @ 17.08.12, 16:49) *
п.1 - не баг.

тут і нюанси і особливості обговорюються, не всі знають SQL та і в документацію давно не дивились або так детально не розбирали smile.gif
Щодо бух. запиту на SQL, помітив таке:
коли правив для клієнта логіку для додатка ОК, там запит по кореспондуючих рахунках прибутку - оборотне субконто ТМЦ. В клієнта цього субконто не було - древня конфа.
...
БИПроджиЕдиинщикам.ИспользоватьСубконто(ВидыСубконто.Контрагенты,,1,0);
...
БИПроджиЕдиинщикам.ИспользоватьКорСубконто(ВидыСубконто.ТМЦ,,1,0);
        БИПроджиЕдиинщикам.ВыполнитьЗапрос(НачГода(ДатаВКвартале),КонКвартала(ДатаВКвартале),"361,3771,3772,3773,3774","70,71,76",,3,"Месяц",1);    

        Если БИПроджиЕдиинщикам.ВыбратьПериоды() = 1 Тогда
            Пока БИПроджиЕдиинщикам.ПолучитьПериод() = 1 Цикл
                
                Если БИПроджиЕдиинщикам.ВыбратьСубконто(1) = 1  Тогда
                    Пока БИПроджиЕдиинщикам.ПолучитьСубконто(1) = 1  Цикл

    ТекКонтрагент = БИПроджиЕдиинщикам.Субконто(1);
    
                        Если ТекКонтрагент.ПлательщикНалогаНаПрибыль.Получить(БИПроджиЕдиинщикам.КонДата) = 1 Тогда
                            // это плательщик налогов на общих основаниях (не упрощенец = не единщик)
                            Продолжить;    
                        КонецЕсли;    
                        
                        ФизЛицо       = ?(ТекКонтрагент.ВидКонтрагента = Перечисление.ВидыКонтрагентов.ЧастноеЛицо, 1, 0);
                        Код              = ТекКонтрагент.ЕДРПОУ;
                        Наименование  = ТекКонтрагент.ПолнНаименование;
                        НаименованиеСокр     = ТекКонтрагент.Наименование;
                        
                        СуммаОБ = БИПроджиЕдиинщикам.ДО();
                        
                        Если СуммаОБ = 0 Тогда
                            Продолжить;
                        КонецЕсли;
                        
                        // из суммы взаиморасчетов вычтем сумму НДС, указанную в карточке товара
                        Если ОрганизацияПлательщикНДС = 0 Тогда
                        
                            СуммаБезНДС =  СуммаОБ;
                    
                        Иначе
                            
                            СуммаБезНДС = 0;
                            Если БИПроджиЕдиинщикам.ВыбратьКорСубконто(1) = 1  Тогда
                                Пока БИПроджиЕдиинщикам.ПолучитьКорСубконто(1) = 1  Цикл

так от в базі DBF (вивантажив із бази клієнта SQL і завантажив в DBF) цей запит пустий (що і логічно), а от в базі клієнта SQL заходить аж до вибірки корсубконто і аж в тому розрізі пустота. Такі от помідори.

ЗІ. Оновив перший пост. Вдячний за пости.

Сообщение отредактировал mister-x - 18.08.12, 13:21

Cthulhu Подменю пользователя
сообщение 18.08.12, 15:08
Сообщение #9

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 224
Из: не ту страну назвали Гондурасом
Спасибо сказали: 83 раз
Рейтинг: 0

Цитата(XBrut @ 18.08.12, 13:54) *
Додаю до списку дуже бридку (і недокументовану) особливість : якщо маєте змінну модуля документу - ІНІЦІАЛІЗУЙТЕ ЇЇ ЯВНО. Інакше при пакетному проведенні неініціалізована змінна МОЖЕ бути не пустою, а зовсім навіть навпаки, може мати значення, що залишилось від проведення попереднього (!!) документу.
Типова ПУБ , наприклад цим нехтує.

Именно так. Тело модуля выполняется при загрузке и компиляции формы документа / модуля документа. При групповом проведении (или даже при последовательном программном проведении документов одного вида) "движок" 1С "оптимизирует" этот этап - не перекомпилирует модуль, а использует тот, который уже был ранее скомпилирован и размещен в памяти. побочный эффект - в ранее скомпилированном и размещенном в памяти модуле "остаются в наследство" все переменные модуля со всеми "оставшимися" после предыдущего выполнения модуля значениями.
Встречается, увы, не только в ПУБ.

mister-x Подменю пользователя
сообщение 18.08.12, 16:12
Сообщение #10

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата(Cthulhu @ 18.08.12, 16:08) *
При групповом проведении (или даже при последовательном программном проведении документов одного вида) "движок" 1С "оптимизирует" этот этап - не перекомпилирует модуль, а использует тот, который уже был ранее скомпилирован и размещен в памяти. побочный эффект - в ранее скомпилированном и размещенном в памяти модуле "остаются в наследство" все переменные модуля со всеми "оставшимися" после предыдущего выполнения модуля значениями.

звідки такі відомості, можна лінк(и) чи Ви берете із досвіду об'єктно-орієнтованого програмування? цікаво про такі нюанси по 8.х дізнатися

Cthulhu Подменю пользователя
сообщение 18.08.12, 16:28
Сообщение #11

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 224
Из: не ту страну назвали Гондурасом
Спасибо сказали: 83 раз
Рейтинг: 0

Цитата(mister-x @ 18.08.12, 17:12) *
звідки такі відомості, можна лінк(и) чи Ви берете із досвіду об'єктно-орієнтованого програмування? цікаво про такі нюанси по 8.х дізнатися

инсайд. линков нет, что, впрочем, не странно в данном случае.
по 8.х - нет. пока просто неинтересно (а богатства багов, имеющего упоминания на просторах интернетов, не способствует появлению интереса).

mister-x Подменю пользователя
сообщение 18.08.12, 16:47
Сообщение #12

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

зрозуміло, в більшості дізнаєтесь на форумах так як і я або в процесі практики

XBrut Подменю пользователя
сообщение 19.08.12, 13:44
Сообщение #13

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

Якщо довідник має реквізит "Пиктограмма", то в формі списку довідника побачите цікавий результат.
Виявляється "Пиктограмма" - це також атрибут форми списку.
Платформа плутається, що саме показувати : реквізит , чи піктограму довідника smile.gif

судячи з того, що в російських типових конфігураціях змінних модуля документів дуже мало, можна припустити, що існує рекомендація їх взагалі не використовувати.
від гріха подалі.


Сообщение отредактировал XBrut - 19.08.12, 13:50

mister-x Подменю пользователя
сообщение 19.08.12, 13:57
Сообщение #14

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата(XBrut @ 19.08.12, 14:44) *
Виявляється "Пиктограмма" - це також атрибут форми списку.

це системний атрибут, тому свої змінні потрібно називати інакше для уникнення плутанини

Cthulhu Подменю пользователя
сообщение 19.08.12, 15:36
Сообщение #15

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 224
Из: не ту страну назвали Гондурасом
Спасибо сказали: 83 раз
Рейтинг: 0

Использование ключевых слов встроенного языка в качестве названий объектов метаданных, реквизитов и переменных - крайне не рекомендуется. возникающие в результате несоблюдения данной рекомендвции баги вряд ли имеет смысл выделять каждый в отдельности. ну, мне так кажется.
А не-баги (полезные приемы и недокументированные особенности) - будем упоминать?..

XBrut Подменю пользователя
сообщение 19.08.12, 16:21
Сообщение #16

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

Все так, але обставина, що зарезервований атрибут доступний для запису виглядає кумедно smile.gif

ось ще якось надибав...
Якщо в регістрі є атрибут невизначеного типу, то в базі формату sql не працює конструкція в запиті
Условие(Атрибут В Список);

доводиться робити так
Условие(Список.Принадлежит(Атрибут)=1);


не працює також конструкція
Регистр.УстановитьЗначениеФильтра("Атрибут",Список,2);

P.S.
окреме питання : якого дідька робити в регістрах атрибути невизначеного типу... але це вже інша історія.

Сообщение отредактировал XBrut - 19.08.12, 16:30

Спасибо сказали: mister-x,

mister-x Подменю пользователя
сообщение 20.08.12, 11:50
Сообщение #17

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата(Cthulhu @ 19.08.12, 16:36) *
недокументированные особенности) - будем упоминать?

яких немає у файлі .als, що описує додаткові можливості 1С - постимо
Цитата(Cthulhu @ 19.08.12, 16:36) *
полезные приемы

в іншій темі

Vofka Подменю пользователя
сообщение 20.08.12, 11:51
Сообщение #18

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

Цитата(mister-x @ 20.08.12, 12:50) *
в іншій темі

Ну вы б тогда либо дали ссылку на тему, либо сказали бы, что такой темы нету и в случае чего её нужно открыть wink.gif

mister-x Подменю пользователя
сообщение 20.08.12, 12:21
Сообщение #19

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата(Vofka @ 20.08.12, 12:51) *
такой темы нету и в случае чего её нужно открыть

дозволяю відкрити smile.gif

Сообщение отредактировал mister-x - 20.08.12, 12:21

vadim007 Подменю пользователя
сообщение 27.08.12, 8:10
Сообщение #20

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

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

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


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

 

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