Версия для печати темы (https://pro1c.org.ua/index.php?s=0336798080fb814c7e99af44b8f3645e&showtopic=67054)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Помилка: Номер року в літералі типу 'Дата' перевищує 3999

Автор: Gorus 11.08.22, 16:36

Для інформації, може комусь допоможе.

Після оновлення конфігурації BAS Бухгалтерія КОРП в документах "Відпустка" та "Звільнення" при заповнені стала генеруватись помилка "Номер року в літералі типу 'Дата' перевищує 3999". Причому лише в клієнт-серверному варіанті, у файловому - все добре. Причина виявилась в некоректному виконанні запиту спільного модуля УчетСреднегоЗаработка. Проблема виникає при розрахунку поля:

КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(Начисления.ДатаНачалаБазовогоПериода, МЕСЯЦ, Начисления.КоличествоМесяцев - 1), МЕСЯЦ) КАК ДатаОкончанияПериода

При цьому, якщо Начисления.ДатаНачалаБазовогоПериода - пуста дата, і Начисления.КоличествоМесяцев = 0, то розраховується не пойми що, яке потім в отладчику виглядає як "30.11.0001 0:00:00". Але сам запит - виконується без помилок, проте при використанні отриманих значень в інших запитах - генерується дана помилка.

P.S. Якщо в когось також дана помилка виникає - можу поділитись розширенням для даної конфігурації, що її виправляє.

Автор: AnryMc 12.08.22, 9:04

Gorus @ Вчера, 17:36 * ,
Из справки:

Цитата
Литерал типа ДАТА
Литерал типа ДАТА записывается в виде:
ДАТАВРЕМЯ ( <Целое число>, <Целое число>,
<Целое число>[, <Целое число>,
<Целое число>, <Целое число>] )
Значения типа дата задаются с помощью ключевого слова ДАТАВРЕМЯ, после которого в скобках последовательно указываются год, месяц, день, час, минута, секунда. Последние три указывать необязательно.
Максимальная дата которую возможно задать при помощи литерала ДАТАВРЕМЯ – 31.12.3999 23:59:59.


Вы пишите
Цитата
При цьому, якщо Начисления.ДатаНачалаБазовогоПериода - пуста дата

Пустая дата - это 01.01.0001 или Null или Неопределено?

Автор: dmik 15.08.22, 17:08

Gorus, Добрий день. Gorus,

Такаж маємо помилку: Номер року в літералі типу 'Дата' перевищує 3999 , в конфігурації BAS Бухгалтерія КОРП 2.1.20.3

Чи могли Ви поділитись розширенням для вирішення даної проблеми.

Дякую.

Автор: Gorus 15.08.22, 17:30

dmik @ Сегодня, 18:08 * ,
Переслав.

AnryMc @ 12.08.22, 10:04 * ,
Пуста дата - це 01.01.0001, тобто '00010101'

Автор: AnryMc 16.08.22, 8:25


Цитата(Gorus @ 15.08.22, 18:30) *
Пуста дата - це 01.01.0001, тобто '00010101'


У Вас из МИНИМАЛЬНОГО значения '00010101' вычитается месяц месяц - результат выходит за разрешенный диапазон и выдается сообщение о его превышении, все нормально...
Это как деление на 0 (ноль) - результат = бесконечность...

Единственный выход я вижу в проверке на "0" (т.е. '00010101') перед выполнением кода...

Автор: Gorus 16.08.22, 9:32

AnryMc @ Сегодня, 9:25 * ,
Зверніть увагу: у файловому варіанті даний код виконується без помилок. У клієнт-серверному - генерується помилка.
Ймовірно, що SQL сервер опрацьовує цей запит коректно, просто отримане значення виходить за межі можливого діапазону значень в 1С. Але не зважаючи на це - 1С при цьому все одно опрацьовує результат запиту, хоча й дані там не відповідають обмеженню типа "Дата". А от при подальшій спробі використати отримані дані - генерується помилка, типу 1Ска зненацька "побачила" що дані в змінній некоректні.
Тобто має місце різний алгоритм поводження з даними у файловому і клієнт-серверному варіантах, чого по ідеї бути не повинно - всі відмінності у типах мали б опрацьовуватись платформою автоматично. Ймовірно, що це може бути поправлено в наступних релізах (або, можливо, і вже поправлено, бо у мене це виникло на релізі 8.3.16.1814 з сервером PostgreSQL, а на інших - не перевіряв).

Автор: BigWig 16.08.22, 11:43

Gorus, Добрий день, п.Gorus

яким чином мож було би отримати розширення? та сама ситуація.
Дякую!

Автор: Gorus 16.08.22, 13:04

BigWig @ Сегодня, 12:43 * ,
Доброго дня. Переслав.

Автор: RedCat77 16.08.22, 13:40

Цитата(Gorus @ 11.08.22, 17:36) *
Для інформації, може комусь допомож

І мені надішліть
Завчасно дякую
koral@ukr.net

Автор: Gorus 16.08.22, 13:47

RedCat77 @ Сегодня, 14:40 * ,
Надіслав.

Автор: Gazulo 17.08.22, 13:39

Gorus @ Вчера, 14:47 * ,
Добрий день, киньте і мені. nazar_budivskiy@ukr.net. Дякую.

Автор: Gorus 17.08.22, 22:42

Gazulo @ Сегодня, 14:39 * ,
Відправив.

Автор: RFerdinandes 05.07.23, 12:14

Gorus @ 11.08.22, 16:36 * ,
Доброго дня. При переході на PostgreSQL в мене теж з'явилася ця помилка. Скиньте і мені, будь ласка. r.ferdinandes@gmail.com

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua