30.10.2020 Иван Каплин 9968
Дата прописью в 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С

Отрасль:

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

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

СТС-Медиа
СТС-Медиа

Отрасль:
Медиаиндустрия

Внедренное типовое решение:
1С:Управление холдингом

- Бухгалтерский учет;
- Налоговый учет;
- МСФО (GAAP/управленческий учет);
- Казначейство...

ООО «Экслтрейд»
ООО «Экслтрейд»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

Оформление заказов поставщикам Оптовая торговля Торговые операции ...

ФГУП «Почта России»
ФГУП «Почта России»

Отрасль:
Почта, доставка

Внедренное типовое решение:
1С:Управление торговлей

- Оформление заказов поставщикам
- Оформление заказов покупателей
- Управление складскими запасами ...

Автоматизация торговых операций на базе "1С:Управление торговлей" в ОАО "Авиазапчасть"
ОАО «Авиазапчасть»

Отрасль:
Авиационно-космическая промышленность

Внедренное типовое решение:
1С:Управление торговлей

- Оптовая торговля;
- Оформление заказов покупателей;
- Планирование продаж. ...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО Фирма «Бисер»
ООО фирма «Бисер»

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

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Финансы, управленческий учет, мониторинг показателей:
- Налоговый учет...

ПЭК
ПЭК

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

Внедренное типовое решение:
«1С: Управление торговлей»

- Создание прототипа SRM-системы на базе «1С: Управление торговлей»
- Автоматизация бизнес-процессов компании, связанных с поиском постав...

Госкорпорация «Ростех»
Госкорпорация «Ростех»

Отрасль:
Производство, ТЭК >> Машиностроение, приборостроение

Внедренное типовое решение:
1С:Управление холдингом 1.3.

Специалисты «Кодерлайн» помогли разработать и внедрить автоматизированную систему управления финансовой и закупочной деятельностью (АС ФЗД) ...

ЗАО «Многопрофильная формирующая авиагруппа» (ЗАО МФГ)
ЗАО «Многопрофильная формирующая авиагруппа» (ЗАО МФГ)

Отрасль:
Оптовая торговля транспортными средствами и оборудованием

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

- Финансы, управленческий учет, мониторинг показателей
- Бухгалтерский учет:
- Банк и касса...

Фармацевтическое предприятие «Оболенское»
АО «Фармацевтическое предприятие «Оболенское»

Отрасль:
Фармацевтическая промышленность

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

- Адаптации блоков/подсистем планирования продаж, закупок и казначейства. ...

Филиал ГлавУпДК при МИД России фирма «Инпредкадры»
Филиал ГлавУпДК при МИД России фирма «Инпредкадры»

Отрасль:
Государственное управление

Внедренное типовое решение:
1С:Бухгалтерия

- Расчеты с контрагентами;
- Управленческий учет;
- Формирование отраслевой отчетности;
- Интеграция с отраслевыми продуктами ст...

Внедрение ПП «1С:Предприятие 8. Аренда и управление недвижимостью на базе "1С:Бухгалтерия 8"» в компании «Бутово Молл»
ООО «Бутово Молл»

Отрасль:
Недвижимость

Внедренное типовое решение:
1С:Аренда и управление недвижимостью на базе «1С:Бухгалтерия 8»

Управление продажами, логистикой и транспортом (SFM, WMS, TMS):
- Оформление заказов покупателей;
- Планирование продаж ...

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

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

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

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