30.10.2020 Иван Каплин 10077
Дата прописью в 1С

Содержание:

1.       Необходимость написания даты прописью 1С

2.       Описание правил склонения в самостоятельном алгоритме  


1.    Необходимость написания даты прописью 1С


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

 

Решить такую задачу можно двумя путями:


1.     Простой, но имеющий ограничения: это использование при формировании даты прописью 1С подсистемы «Склонение представлений объектов» из набора «Библиотеки стандартных подсистем» в 1С (в большинство типовых конфигураций такая подсистема встроена). Так как подсистема универсальна и использует веб-сервис «Морфер», для ее работы требуется подключение к сети (что и является ограничением даже сегодня, ведь не везде возможно подключение к сети, иногда, в целях информационной безопасности).


2.     Сложный, но трудоемкий в реализации: это написать самостоятельно все правила склонений Даты, но придется указать ограничения в пределах 9999 года.

 

По простому пути идти рекомендуется в связи с возможностью использования веб-сервиса, а также для получения корректных данных (у сервиса меньше вероятности ошибки склонения).

 

Об использовании подсистемы «Склонение представлений объектов» есть достаточно подробные статьи, например, моего коллеги Алексея Болдонова (читать здесь). Однако цель текущей статьи – показать пример написания алгоритма в программе 1С.  


2. Описание правил склонения в самостоятельном алгоритме


Для того чтобы написать число прописью, потребуется предварительно составить порядок действий для сложных и простых случаев.

 

Очертим некоторые допущения:


1. согласно нормам русского языка в названии года могут использоваться как порядковые числительные, так и количественные, но, рассматривая текущий пример, мы несколько упростим правила для лучшего понимания примера самостоятельного алгоритма;


2. важно помнить, что для неодушевленных предметов вопрос для именительного падежа будет такой же, как и для винительного, поэтому последний мы указывать в таблице не будем;


3. в примере будет использована формула: для числа с двумя и более знаками все цифры (кроме нуля) будут взяты в именительном падеже, кроме последней (кроме нуля), которая будет взята в родительном падеже;


4. в примере будет рассмотрена упрощенная модель написания даты (месяца) прописью, не берущая во внимание исключения и из правил русского языка.

 

В прописной дате можно выделить следующие основные блоки чисел прописью на русском языке:

·        число дня;

·        число месяца прописью;

·        число года.


Начнем с простого – число месяца прописью. Для месяца всегда будет использован Родительный падеж, поэтому можно зафиксировать 12 значений в любом удобном виде (массив, список значений, соответствие и иное) используя метод Месяц(), который возвращает числовое значение месяца, поэтому как Ключ записи 1С может использовать число месяца прописью, а как значение записи – наименование месяца в Родительном падеже (для массива ключом записи в 1С может служить индекс значения).

 

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

 

Чтобы мы методом подбора могли брать правильные значения, необходимо создать таблицу значений, где в названии колонок укажем падежи и само значение, и таким образом заполним некоторые данные для нашего алгоритма. Для создания своей наработки можно использовать Регистр сведений 1С 8, но это больше подходит тем пользователям, кому потребуется широко использовать возможности склонений в повседневной работе.

 

Число дня

Мы можем разбить число дня на две части: единицы и десятки. При этом мы должны понимать, что каждый раз необходимо выделять саму «цифру» дня или года, и ее «позицию».

 

Итак, зададим переменную и первые несколько строк значений:


написания даты прописью 1С


И так далее аж до 19-го числа. Начиная с 21-го числа, мы сможем комбинировать значение «двадцать», и «первое», «двадцать», и «второе», «двадцать», и «третье» аж до 99-го:


комбинировать значение в 1С


Для уменьшения количества строк, мы можем пойти следующим путем:


1. для значений от одного до двадцати используем уникальные значения склонений;


2. для значений внутри десятков, начиная со второго, мы будем пользоваться формулой: число дня >= 21 и < 30; значение 21 + значение дня, взятое из второй части цифры дня, например, 25 >= 21 и < 30, значит «двадцать» + «пятое» (всё в именительном падеже).

 

Используя метод День(), мы можем получить числовое выражение дня, что нам поможет в алгоритме.

 

При этом можно использовать условие (чтобы было проще понимать):


Используя метод День()


Так как до сотни значения будут повторяться, считаем, что с ними мы закончили. Для придания универсальности (то есть использования как дней, так и лет), можно добавить условия и заключить в функцию:


добавить условия 1с


Таким образом, мы получаем значение числа прописью для дня – в Именительном падеже, а для года (от первого до девяносто девятого) – в Родительном падеже.

 

Так как с днями мы разобрались, настал черед годов. Мы разобрали значения лет от одного до девяносто девяти, теперь же разберем состав сотен лет:


заключить в функцию


При этом следует учитывать, что если в указанном году нет десятков или единиц, то мы подставляем значение «Какого». Если есть десятки или единицы, то – «Какой». Через условие можно это указать и заключить в функцию:


подставляем значение в 1с


При написания тысяч ситуация будет схожей, а само заполнение будет выглядеть так:


Дата прописью в 1С


Таким же образом заключим условия для выбора в функцию 1С 8:


выбор в функцию 1С 8


Соединяя полученные функции 1С 8, мы сможем из даты получить все, что нам потребуется, чтобы собрать результат в одну строку:


функции 1С 8


Итак, мы разобрали сначала день, потом месяц. Год мы разобрали по частям: десятки лет, сотни лет и тысячи лет. И уже после собрали все в одну строку.

 

Вот таким объемным способом можно самостоятельно создать функцию даты прописью в 1С, но, конечно, следует учитывать ограничения.

 

Для более гибких функции в 1С 8 лучше всего создать отдельный словарь в Регистре Сведений 1С, и использовать более сложный алгоритм, учитывающий необходимые склонения. Однако и в этом случае универсальность такой функции достаточно ограничена.

 

Специалист компании «Кодерлайн»

Иван Каплин

Наши проекты

ООО "АСК ИНЖИНИРИНГ"
ООО "АСК ИНЖИНИРИНГ"

Отрасль:
Машиностроение, приборостроение

Внедренное типовое решение:
1С:Документооборот ПРОФ

Делопроизводство
Учет и хранение документов
Ведение номенклатуры дел
Учет и контроль исполнения поручений
Учет договоров...

ЗАО «Инвестгеосервис»
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Объемно-календарное планирование производства Автоматизация бизнес-процессов Анализ деятельности в разрезе проектов Планирование проектов У...

ООО «ЛукБелОйл»
ООО «ЛукБелОйл»

Отрасль:
Нефтегазовая отрасль

Внедренное типовое решение:

- Обследовании бизнес-процессов «Документооборот», «Казначейство и Бюджетирование», «Управление закупками»
- Подбор и обоснование оптима...

1с-РАРУС МСК
1с-РАРУС МСК

Отрасль:
Разработка компьютерного программного обеспечения

Внедренное типовое решение:
1С:Управление корпоративными финансами

- Финансово-бухгалтерский блок
- Казначейство ...

МГК "Световые Технологии"
МГК "Световые Технологии"

Отрасль:

Внедренное типовое решение:
1С:Предприятие 8. ERP Управление предприятием 2

Специалисты "Кодерлайн" произвели доработки в системе 1С:ЕРП 2.4 с учетом требований заказчика, осуществили настройки загрузки и выгрузки н...

Внедрение ПП "1С:Управление небольшой фирмой 8 ПРОФ" в
ИП Любо Виктория Александровна (ООО «Рекреация»)

Отрасль:
Производство

Внедренное типовое решение:
1С:Управление небольшой фирмой 8 ПРОФ

Осуществлены разработки:
– отчета по спецификации Заказа;
– загрузки спецификаций из Excell...

ООО «ПЛЮСПЭЙ»
ООО «ПЛЮСПЭЙ»

Отрасль:
Организацией расчетов посредством электронных средств платежа

Внедренное типовое решение:
1С:Комплексная автоматизация

- Разработка подсистемы оперативного учета транзакций...

Автоматизация интеграции с информсистемами клиентов на базе «1С:Предприятие 8. WMS Логистика. Управление складом»
ОАО «Фрейт Линк»

Отрасль:
Логистика и грузоперевозки

Внедренное типовое решение:
«1С:Предприятие 8. WMS Логистика. Управление складом»

– Управление складскими запасами;
– Оформление заказов покупателей;
– Логистика адресного склада;
– Управление отношениями с пост...

ООО «Фипар»
ООО «Фипар»

Отрасль:

Внедренное типовое решение:
1С:Предприятие 8. ERP Управление предприятием 2

Специалисты «Кодерлайн» внедрили «1С:ERP. Управление предприятием 2» и автоматизировали блоки: продажи, закупки, производство, складская и т...

Фирма 1С
Фирма 1С

Отрасль:

Внедренное типовое решение:
1С:Документооборот

- Подготовка функциональной модели прикладного решения «1С:Документооборот» для сервиса «1С:Облачная карта решений»; - Возможность интеграц...

ХИТЕК-ГРУП
ХИТЕК-ГРУП

Отрасль:
Продажа парикмахерского инструмента и аксессуаров

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Документооборот (ECM)
• Делопроизводство
Управление бизнес-процессами и ИТ процессами
• Автоматизация бизнес-процессов
Управлени...

ООО «ЛИГА-ТРАНС»
ООО «ЛИГА-ТРАНС»

Отрасль:
Профессиональные услуги, бытовое обслуживание

Внедренное типовое решение:
«1С:ERP Управление предприятием 2.1».

- Сделано ТЗ по автоматизации учета МСФО: - Разработана карта бюджета доходов и расходов в разрезе управленческого учета - Установлены форм...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение