0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
1

1c77. Интересная особенность

29.05.2010, 21:17. Показов 16978. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот какой интересный факт я обнаружил :
Переменная имеет тип "Число,3,0"
При выводе документа на печать Док.Итог("Переменная") показывается ПРАВИЛЬНОЕ значение (скажем, 1132),
а при выводе Док.Итог("Переменная") в ЖУРНАЛЕ все, что больше 1000, режутся до 999 !
Столкнулся с этим фактом при попытке вывести в форму журнала средние значения Док.Итог("Переменная")/Док.КоличествоСтрок()
Пришлось увеличить размерность переменной
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.05.2010, 21:17
Ответы с готовыми решениями:

1c77 и Excel
Собственно, вопрос скорее по Excel. Проблема вот в чем : в Excel-файле имеется колонка с кодом...

1c77 работа с датой
Задача вот в чём надо выполнить какое то действие со справочником при условии что в определённой...

1c77. Не Открывается Внешняя Обработка
На сервере пытаюсь открыть внешнюю обработку (проблема только с одной, остальные открываются без...

1c77 ТиС 9.2 Проблема с регистрами
В некоей фирме случилось несчастье : по некоторым позициям товаров обнаружилась отрицательная...

9
0 / 0 / 0
Регистрация: 28.03.2004
Сообщений: 1,913
30.05.2010, 09:16 2
Ничего интересного. В журнале неверно задана размерность.
0
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
30.05.2010, 10:40 3
Цитата Сообщение от vitfil
В журнале неверно задана размерность.
Эту фразу не понял.

В журнале есть текстовая колонка, в которую выводится среднее значение по колонке документа.
Так вот, при вызове соответствующей функции, Док.Итог там уже обрезана до 3 знаков.
0
0 / 0 / 0
Регистрация: 28.03.2004
Сообщений: 1,913
30.05.2010, 17:38 4
Форматирование этой "текстовой колонки" задано? В формате неправильно задана размерность. Вполне стандартная фишка для журналов, ТЧ документов и отчетов: когда не хватает разрядов, 1С выводит все 9.
0
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
30.05.2010, 18:25 5
Что-то я никак не въезжаю - что есть форматирование текстовой колонки ?
И при чем здесь оно, даже если бы было ?
Еще раз повторю : при ВЫЗОВЕ из колонки журнала функции расчета этой колонки
Док.Итог("Переменная") режется до формата, заданного размерностью переменной

Можно и не выводить в колонку, все, что больше 999, все равно 999, даже в сообщении
0
0 / 0 / 0
Регистрация: 28.03.2004
Сообщений: 1,913
30.05.2010, 19:54 6
Тэкс... Значит не в колонке нарушена размерность, а в самой переменной...
Как думаешь, что делает 1С, когда ты ставишь галочку "Итог по колонке"?
Она в шапку документа добавляет реквизит с таким же именем, как в табличной части и с такой же размерностью.
Ну, а что делает 1С, когда размерность "зашкаливает"?
САМ БЫЛ В ШОКЕ, увидев в процедурах сиквела что-то типа

Код ( (Unknown Language)):
Если Переменная > 999 Тогда
Переменная = 999;
КонецЕсли;
Написал в синтаксисе 1с, чтобы было понятней.
0
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
30.05.2010, 21:51 7
Спасибо, теперь понятно хоть, откуда ноги растут.

Но ведь ВНУТРИ документа Итог("Переменная") выдает ПРАВИЛЬНОЕ значение, независимо от недостаточной размерности
самой переменной для суммы.
Напомню и то, о чем я когда-то на Форуме писал.
Итог("Переменная") внутри документа работает, даже если у реквизита нет итога по колонке, а при внешних вызовах
выдается ошибка "реквизит не имеет итога по колонке".
Что-то мутное с этим итогом внутри компилятора 1С (или как он там называется ?).

PS. На самом деле, сам я пал жертвой въевшейся в мозги привычки экономить память аж до байта, поставил бы себе размерность 5
и не наткнулся бы на стенку. Это еще со времен, когда магнитный барабан емкостью 64 КИЛОБАЙТА (!) казался
вершиной технической мысли изобретателей внешней памяти :*цензура*you:
0
0 / 0 / 0
Регистрация: 28.03.2004
Сообщений: 1,913
31.05.2010, 08:16 8
Цитата Сообщение от vbs
Спасибо, теперь понятно хоть, откуда ноги растут.

Но ведь ВНУТРИ документа Итог("Переменная") выдает ПРАВИЛЬНОЕ значение, независимо от недостаточной размерности
самой переменной для суммы.
Напомню и то, о чем я когда-то на Форуме писал.
Итог("Переменная") внутри документа работает, даже если у реквизита нет итога по колонке, а при внешних вызовах
выдается ошибка "реквизит не имеет итога по колонке".
Что-то мутное с этим итогом внутри компилятора 1С (или как он там называется ?).

PS. На самом деле, сам я пал жертвой въевшейся в мозги привычки экономить память аж до байта, поставил бы себе размерность 5
и не наткнулся бы на стенку. Это еще со времен, когда магнитный барабан емкостью 64 КИЛОБАЙТА (!) казался
вершиной технической мысли изобретателей внешней памяти :*цензура*you:
Спасибом пьян не будешь! :please:
Точную дату на белые ночи скажу несколько позже.
Теперь про Итог("Переменная"). Сей метод виртуальный и переопределен для разных объектов. Когда "находимся в открытом документе" - он работает для любой численной колонки. Почему? Потому как просто суммирует значения, находящиеся в колонке.
Не задумывался, почему этот метод в журнале работает только для колонок, в которых стоит "Итог по колонке"? Как я и говорил, при записи документа, для таких колонок проводится суммирование и запись итога в реквизит шапки (имеющий такую же размерность, как и реквизит табличной части). Так вот когда мы в журнале, метод просто считывает значения из реквизитов шапки.
Сделано это вот по какой причине... Все документы хранятся в нескольких таблицах:
1sjourn - это журнал документов. Единый и неделимый. Все журналы, создаваемые в конфигураторе - это всего лишь фильтры к этой таблице.
DHххх - это шапка документа.
DTххх - это табличная часть документа.
ххх - это номер объекта метаданных в конфигураторе.
Находясь в журнале, гораздо проще сделать левое соединение с таблицей шапки документа и взять оттуда сумму, чем делать левое соединение с таблицей табличной части и производить суммирование.
Ну вот как-то так я все это себе вижу.
0
1 / 1 / 0
Регистрация: 15.11.2009
Сообщений: 947
31.05.2010, 19:42 9
Цитата Сообщение от vitfil
Но ведь ВНУТРИ документа Итог("Переменная") выдает ПРАВИЛЬНОЕ значение, независимо от недостаточной размерности
самой переменной для суммы.
vitfil правильно разъяснил, что когда документ открыт на экране (печатаем его), "Итог" работает по-другому, чем в журнале. Это я к тому, что если ты так жаден до места в базе, как и я, то можно убрать в Конф признак "Итог по колонке" в документах, где итог используется только для печати или вычислений внутри формы. К сожалению, при обращении к "Объект.Документ" он тоже нужен.
0
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
31.05.2010, 22:37 10
Цитата Сообщение от Дайнеко
Это я к тому, что если ты так жаден до места в базе, как и я
Уже не жаден, только отвыкаю плохо :ya_lamo:
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2010, 22:37
Помогаю со студенческими работами здесь

1c77 Сбилась последовательность документов
У заказчика (ТиС 9.54) с некоего момента при восстановлении последовательности документов начали...

1c77 Вид документа в запросе
Конфигурация на основе ТиС9.2. Потребовалась такая штука - выбрать в запросе по регистру (в...

1c77 Отбор по реквизиту в журнале
Ситуация такая : пользователю при открытии общего журнала принудительно устанавливается отбор по...

1c77 Быстрый поиск по наименованию
Есть 2 базы ТиС. В общем, они более-менее одинаковы с точки зрения конфигурации. Но в одной (9.27)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru