неділя, 26 березня 2017 р.

Подводные камни при работе в "1С:Підприємство" c датами

Работа с датами в 1С
Работа с датой
Знал бы, где упасть – соломки бы подстелил
(Народная мудрость)
Довелось в практической деятельности разработчика в "1С:Підприємство" столкнуться со следующим явлением. В базе было создано наперед несколько тысяч объектов справочника «Информационные карты» - для последующего занесения в них и хранения информации о постоянных покупателях торговой сети. Объектов было создано примерно 10 тысяч, на момент возникновения инцидента заполнено данными было около 7 тысяч карт. Каждое утро одно регламентное задание находило именинников среди клиентов сети (данные о которых были занесены в базу), а другое рассылало им поздравительные СМС с приглашениями получить подарок в любом удобном покупателю магазине. Запрос, который выбирал именинников из общей массы, имел приблизительно следующий вид:
ЗапросИменинников = Новый Запрос;

ЗапросИменинников.Текст = “Выбрать

| ИнформационныеКарты.Ссылка

| ГДЕ

| День(ИнформационныеКарты.ДатаРожденияКлиента) = &День

| И Месяц(ИнформационныеКарты.ДатаРожденияКлиента) = &Месяц”;
На место параметров «День» и «Месяц» подставлялись соответствующие день и месяц текущего дня. Всё шло своим чередом, именинников в среднем находилось по 10-20 с периодическими всплесками до 30, но тут наступило 1е января. Регламент вдруг посчитал нужным поздравить почти 3 тысячи человек (к счастью, телефоны были указаны только у 300 из этого количества).
Анализ ситуации показал, что причиной такого поведения процедуры стало своеобразное понимание понятия NULL создателями среды "1С:Підприємство" (а также нежелание привести это понимание к общему знаменателю с пониманием этого у авторов языка запросов SQL).
В данном конкретном случае дело было в следующем. Даже незаполненное данными поле типа ДАТА вовсе не равно NULL, как можно было бы подумать. Среда "1С:Підприємство" в пустое поле ДАТА записывает значение Дата(“00010101”), то есть 1 января 0001-го года (видимо, нашей эры, хотя я не был бы столь уверен – имея опыт работы с "1С:Підприємство" больше недели), при этом никак не отражая это на форме. В то же время – хотя какие-то данные в поле (и соответствующую ячейку памяти) записаны, функция ЗначениеЗаполнено(Дата) возвращает Ложь. Это обстоятельство стоит учитывать при разработке операций с датами (хотя тип ДАТА вовсе не единственный, где NULLи не заполненное значение вовсе не тождественны) – во избежание подобных затруднений.
Конкретно в данном случае можно либо при обработке результатов запроса проверять значение ДатаРожденияКлиента на заполненность (что менее производительно), либо задавать в запросе отбор еще и по году рождения клиента (например с 1800 – чтобы наверняка)
ЗапросИменинников = Новый Запрос;

ЗапросИменинников.Текст = “Выбрать

| ИнформационныеКарты.Ссылка

| ГДЕ

| День(ИнформационныеКарты.ДатаРожденияКлиента) = &День

| И Месяц(ИнформационныеКарты.ДатаРожденияКлиента) = &Месяц

| И Год(ИнформационныеКарты.ДатаРожденияКлиента) > 1800”;

Автор: Виталий Моргун

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Разработка сайтов, лэндингов, порталов, веб-приложений, мобильных и прикладных приложений в Киеве.

Звоните и пишите!
E-mail: rs@corp2.net
Skype: rudjuk
Звоните: +38 067 901-63-22

Компания К2® предлагает быстрые и функциональные веб-решения для бизнеса.Наши сайты работают на модульной платформе, что позволяет расширять и улучшать сайт без ограничений. Сайты созданные нами имеют высокую производительность и способны выдерживать большие нагрузки.
Для управления сайтом предусмотрена удобная Система управления сайтом Корпорация 2 (CMS), которая позволяет без труда обновлять текстовые и фотоматериалы самостоятельно.
После создания сайта мы производим обучение заказчика работе с ним.
Landing page (Лендинг пейдж) - это страница сайта, на которую попадает пользователь при клике по рекламному объявлению. Главной особенностью Landing page является то, что она содержит некий призыв к действию и предоставляет посетителю только ту информацию, за которой он пришел на данный сайт.
Для управления сайтом предусмотрена удобная Система управления сайтом Корпорация 2 (CMS), которая позволит пользователю без труда обновлять текстовые и фотоматериалы самостоятельно.

Время разработки сайта от 1 до 3 недель.

Сайт Визитка - небольшой, но достаточно информативный и совершенно полноценный сайт. Лучший вариант сайта Премиум качества по минимальной стоимости для быстрого начала бизнеса.
Для управления сайтом предусмотрена удобная Система управления сайтом Корпорация 2 (CMS), которая позволит пользователю без труда обновлять текстовые и фотоматериалы самостоятельно.

Время разработки сайта от 0,5 до 2 недель.

Корпоративный сайт - идеальное решение для компаний любой сферы деятельности. Качественно и профессионально сделанный корпоративный сайт не подвержен времени и актуален всегда.
Для управления сайтом предусмотрена удобная Система управления сайтом Корпорация 2 (CMS), которая позволит пользователю без труда обновлять текстовые и фотоматериалы самостоятельно.

Время разработки сайта от 3 до 5 недель.

Сайт Каталог - отличное решение для компаний, у которых перечень товаров и услуг составляет не одну сотню печатных страниц. Мы поможем создать электронный каталог и разместить его в Интернете. Структурно, электронный каталог напоминает интернет-магазин.
Для управления сайтом предусмотрена удобная Система управления сайтом Корпорация 2 (CMS), которая позволит пользователю без труда обновлять текстовые и фотоматериалы самостоятельно.

Время разработки сайта от 3 до 5 недель.

Интернет-магазин - отличное решение для компаний, которые решили заняться интернет-коммерцией. Разработка интернет-магазина позволит вывести компанию на самый быстрорастущий рынок продажи через Интернет.
Для управления сайтом предусмотрена удобная Система управления сайтом Корпорация 2 (CMS), которая позволит пользователю без труда обновлять текстовые и фотоматериалы самостоятельно.

Время разработки сайта от 2 до 5 недель.

Уникальный портал - это любой сервис или маркетплейс, который разрабатывается индивидуально по вашим желаниям. Это может быть доска объявлений, биржа фриланса или вообще социальная сеть.
Для управления сайтом предусмотрена удобная Система управления сайтом Корпорация 2 (CMS), которая позволит пользователю без труда обновлять текстовые и фотоматериалы самостоятельно.

Время разработки сайта от 3 до 7 недель.

Примеры некоторых работ (интернет-магазин, лендинг, блог, аукцион, веб-приложение):

Разработка сайта
Разработка интернет-магазина
Разработка блога
Разработка веб-приложения
Разработка веб-аукциона
Разработка лэндинга
Разработка Landing
Купить интернет-магазин

Разработка сайтов, лэндингов, порталов, веб-приложений, мобильных и прикладных приложений в Киеве.
Звоните и пишите!
E-mail: rs@corp2.net
Skype: rudjuk
Звоните: +38 067 901-63-22

Життя після 1С та BAS: Великий огляд українського ринку ERP-систем та реальних альтернатив у 2026 році

На початку 2026 року історія з 1С та BAS в Україні остаточно перестала бути темою про звичку, інерцію чи бухгалтерський комфорт. Вона перейш...