Логические операции (1с предприятие). Логические операции (1с предприятие) 1с не равно как пишется

Применяются следующие логические операции:

НЕ логическое НЕ (отрицание); И логическое И;

ИЛИ логическое ИЛИ.

Операндами логических операций должны быть логические выражения. В табл. 2.5 приведены результаты логических операций над логическими выражениями ЛВ1 и ЛВ2, принимающими значения истина (И) или ложь (Л).

Таблица истинности

Таблица 2.5

ЛВ1 ЛВ2 ЛВ1 И ЛВ2 ЛВ1 ИЛИ ЛВ2 НЕ ЛВ1
И И И И Л
И Л Л И Л
Л И Л И И
Л Л Л Л И

Операция отрицания является унарной операцией, располагаемой слева от операнда. Все остальные рассмотренные операции являются бинарными.

2.6.5. ПРИОРИТЕТ ВЫПОЛНЕНИЯ ОПЕРАЦИЙ

Все операции 1С выполняются в выражении слева направо в соответствии с их приоритетом (старшинством), то есть, если две последовательные операции имеют равный приоритет, первоначально выполняется левая операция. Подвыражения, заключенные в круглые скобки, вычисляются в первую очередь. В табл. 2.6 операции 1С расположены в порядке убывания их приоритета.

Приоритет выполнения операций

Таблица 2. б

% *,/ +, НЕ И ИЛИ <, <=, >, >=, =, <>

Замечание. Каждая ячейка таблицы содержит операции с равным приоритетом.

Пример:

8 % 2 * 3 // Вернет 0
8 % (2 * 3) // Вернет 2

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

3>2и4< 5 // Так неверно

так как первоначально оценивается логическое подвыражение 2и 4

операнды которого не есть истина или ложь. А это неверно.

Зато верно логическое выражение

(3 > 2) и (4 < 5) // Это истина Пример. Вычислить результат логического выражения

(х / а = 1) или (б / (а + б) < 1) и не (б = а) или (х <> 6) при х = 6.0, а = 2.0 и б=3.0.

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

ложь или истина и не ложь или ложь.

ложь или истина и истина или ложь. После выполнения истина и истина: ложь или истина или ложь. Окончательный результат: истина.

2.7. МАССИВЫ

Массив это объект данных, содержащий несколько значений, доступ к которым осуществляется по их номеру (индексу).

Число элементов массива называется его размером. Размером массива может быть только целочисленная буквальная константа.

Оператор перем а;

объявляет одномерный массив (вектор) а из пяти элементов. Элементы массива имеют следующие имена: а, а, а, а и а. В этих именах величины 1-5 индексы элементов массива.

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

для ин = 1 по 5 цикл

Присваивания

изменят соответственно значения 2-го и 5-го элементов массива а.

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

а = 9.1; // Меняем значение 3-го элемента массива а

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

а = 9.1; // Меняем значение 1 -го элемента массива а

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

Элементы одного и того же массива могут быть разного типа. Например:

а = ‘25.11.01’; // Элемент типа Дата Элементы массива могут быть агрегатного типа. Например:

сСотр= СоздатьОбъект(“Справочник.Сотрудники”);

табл = СоздатьОбъект(“Таблица”);

Массив не может в качестве элементов содержать другие массивы.

Массив может быть формальным параметром программного компонента (процедуры или функции). При этом размер массива не указывается, а квадратные скобки сохраняются. Для определения размера переданного процедуре (функции) массива используется встроенная функция Разм.

Пример:

процедура ИнициализацияМассива(а) перем ин, размА;

размА = Разм(а); // Встроенная функция Разм вернет размер массива а

для ин = 1 по размА цикл

а[ин] = 1; // Теперь все элементы массива равны единице конецЦикла;

конецПроцедуры // ИнициализацияМассива

процедура Выполнить() перем а;

// Вызов процедуры, устанавливающей начальные значения элементов массива

// Ее фактическим параметром является имя массива ИнициализацияМассива(а);

конецПроцедуры // Выполнить

Как правило, изучение любого языка программирования начинается с примера написания первой простейшей программы (“Hello world!”). Делается это для того, чтобы наглядно показать работу с базовыми синтаксическими конструкциями. Мы не будем делать исключение из этого общепринятого способа подачи материала при изучении новой среды разработки и поэтому нашу первую статью следует рассматривать в этом же ключе. В ней мы подробно разберем ответы на следующие вопросы, касающиеся программирования на платформе «1С:Предприятие 8»:

  • Где и при помощи чего писать программный код на встроенном языке 1С?
  • Что такое программные модули, какие существуют правила работы с ними?
  • Что такое переменная, как с ней работать, как и где её объявлять?
  • Какие операторы сравнения, присваивания и условий существуют и как их применять?
  • Булевы операции – что это и как с ними работать?
  • Зачем нужны циклы и как их использовать?

Статья будет полезна всем тем, кто еще не знаком с разработкой на платформе «1С:Предприятие 8», но хочет научиться программировать на 1С.

Применимость

Материал актуален для платформы «1С:Предприятие 8» редакций 8.2. и 8.3.

Переменные и операторы

В этой статье мы приступаем к изучению встроенного языка 1С:Предприятие 8. Исполняемый код содержится в программных модулях.

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

Так, вход пользователя в систему обрабатывается в одном модуле, а обработка нажатия пользователя на некоторую кнопку – в совершенно другом.

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

В дальнейшем они могут быть использованы в процедурах и функциях этого модуля. Если переменная определена с ключевым словом Экспорт, то она будет доступна вне данного модуля. Пример строки объявления переменных:

Перем Склад, Подразделение, Кладовщик Экспорт;

После объявления переменных содержится раздел процедур и функций.

За ними располагается раздел основной программы, который будет выполняться в момент обращения к данному модулю.

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

Состояние=1;
НовоеВыражение=2;
Результат=3;

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

Разделителем операторов является символ «;» (точка с запятой). Этот знак является признаком окончания оператора. Т.е. оператор может быть записан в таком виде:

Результат=100Х200
+400
-600;

При этом не важно, на скольких строках располагается оператор.

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

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

Процедура ВычислениеЗначения()

ИсходноеЗначение = 100;
ПромежуточноеЗначение = ИсходноеЗначение/5;
ИтоговоеЗначение = ИсходноеЗначение+ПромежуточноеЗначение

КонецПроцедуры

Однако лучше использовать точку с запятой в завершающем операторе. Не исключено, что со временем конструкция будет продолжена, и завершающий оператор окажется уже не завершающим. Придется специально отслеживать эту ситуацию.

Переменные предназначены для того, чтобы хранить некоторые значения любого типа данных. Они используются для промежуточного хранения информации, для обработки.

Практически в любом программном модуле, который выполняет некоторые действия, есть различные переменные. Типизация переменных по значениям в Платформе 1С:Предприятие 8 мягкая.

Например, переменная может содержать значение одного типа данных, а через несколько строк – другого типа:

Создан = Ложь;
Создан = Истина;
Создан =100;

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

  • неявный способ (упоминание в левой части оператора присваивания описывает данную переменную, нет предварительного описания переменной со словом Перем, т.е. нет специального раздела описания переменных);
  • явное описание переменных (Перем КонтрольныеДанные;). Явное описание переменных используется, например, если предполагается последующая передача этой переменной в функцию.

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

При этом название переменной должно отображать смысл данной переменной. Названия переменных из одной буквы (типа А, В, С) являются плохими примерами. Они не отражают суть переменных.

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

В названии переменных нельзя использовать зарезервированные слова, такие как Процедура, Функция, Цикл, КонецЦикла и т.д. (эти конструкции выделяются в программном модуле красным цветом).

Зарезервированные слова – это операторы встроенного языка и их достаточно небольшое количество. Все они представлены в Синтакс-помощнике .

Следует отметить, что типы данных к зарезервированным словам не относятся (например, Массив, Булево, Истина, Ложь). Система такие имена переменных воспримет корректно.

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

Для Платформы это не имеет никакого значения. Тем не менее, по правилам хорошего тона начало слова нужно писать с большой буквы, все остальные буквы маленькими.

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

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

Булевы операции

В операторах сравнения очень часто используется булевская логика, которая возвращает значение Истина или Ложь.

Например, в условном операторе можно сравнивать: Если Событие = Продажа Тогда алгоритм пойдет по одной ветке (т.е. при значении Истина), по условию Ложь выполняется другая ветка алгоритма.

Условия могут быть достаточно сложными, они могут комбинироваться, при этом применяются следующие операторы: И, ИЛИ, и НЕ. Так, для оператора И:

Истина И Истина = Истина;
Истина И Ложь = Ложь;
Ложь И Истина = Ложь;
Ложь И Ложь = Ложь.

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

Оператор НЕ просто инвертирует текущее значение (Ложь в Истину, Истину в Ложь).

С помощью комбинации данных операторов можно строить достаточно сложные условия. При составлении сложных условных операторов следует учитывать приоритеты.

Высший приоритет имеет оператор НЕ, следующим идет оператор И, а за ним оператор ИЛИ. То, что заключено в скобки, имеет самый высший приоритет и выполняется в первую очередь.

Например, расставим приоритеты (последовательность выполнения) для операций в приведенном выражении:

НЕ(Условие1 ИЛИ Условие2) И Условие3 ИЛИ Условие4
1. Результат1 = (Условие1 ИЛИ Условие2);
2. Результат2 = НЕ Результат1;
3. Результат3 = Результат2 И Условие1;
4. Результат = Результат3 ИЛИ Условие4;

Существует правило преобразования:

НЕ (Условие1 ИЛИ Условие2) = НЕ Условие1 И НЕ Условие2.

Однако не следует всегда стремиться упростить выражение, поскольку зачастую, по логике, проще читается выражение развернутое.

Оператор присваивания

Не следует путать оператор присваивания с равенством, не смотря на то, что у них одинаковое написание.

Принцип работы оператора присваивания таков, что левому значению (переменной с левой части) присваивается то значение, которое находится справа от знака равенства. Разберем пример:

Переменная1 = Переменная2 = Переменная3;

Переменной1 присваивается значение равенства из булевской логики, т.е. Истина, если Переменная2 = Переменная3, или Ложь в обратном случае.

При тестировании на должность начинающего программиста довольно часто используется задача: поменять значения двух переменных местами.

Данная задача решается с использованием оператора присваивания и имеет два решения.

Решение №1 с использованием временной переменной:
ВременнаяПеременная = Переменная1;
Переменная1 = Переменная2;
Переменная2 = ВременнаяПеременная;

Решение №2:
Переменная1 = Переменная1 + Переменная2;
Переменная2 = Переменная1 – Переменная2;
Переменная1 = Переменная1 – Переменная2;

Условный оператор

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

Далее может следовать ключевое слово Иначе и серия других операторов. Если разных условий несколько, можно использовать серию ключевых слов ИначеЕсли (см. пример ниже). Вся конструкция обязательно завершается ключевым словом КонецЕсли , после чего следует знак точки с запятой.

Кроме простого и множественного условия существует сокращенная форма условного оператора: ?(Условие, Выражение1, Выражение2);

Если условие истинное, то будет выполняться Выражение1 , в противном случае – Выражение2 . Пример кода: ДорогойТовар = ?(Товар.Цена>100000, Истина, Ложь);

На практике вместо записей сравнения со значением Истина (Ложь ) типа:

Если Переменная = Истина Тогда
и
Если Переменная = Ложь Тогда

реально используются эквивалентные записи:

Если Переменная Тогда
и
Если НЕ Переменная Тогда

Циклические операторы

Для любого вида цикла обязательно явное указание окончания этого цикла с помощью ключевого слова КонецЦикла . Существует несколько типов циклов.

Цикл по счетчику – цикл с фиксированным количеством повторений. Условием выхода из цикла является превышение граничного значения. Пример использования для расчета значения А!

А = 5;
Факториал = 1;
Для Счетчик = 1 По А Цикл
Факториал = Факториал * Счетчик;
КонецЦикла;

Цикл по условию – выполняется пока истинно условие данного цикла. Пример:

ОстатокСуммы = 1000;
ЦенаДополнительногоТовара = 243;
Количество = 0;
Пока ОстатокСуммы>0 Цикл
Количество = Количество+1;
ОстатокСуммы = ОстатокСуммы – Количество*ЦенаДополнительногоТовара;
ЦенаДополнительногоТовара = ЦенаДополнительногоТовара * 0.8;
КонецЦикла
Количество = Количество-1;

Данный цикл вычисляет, сколько единиц товара можно купить на данную сумму (1000 рублей), если после покупки каждой единицы товара предыдущая его цена умножается на коэффициент 0,8. Изначальная цена товара – 243 рубля.

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

Цикл по коллекциям (другое название Для каждого).

В Платформе существует достаточно большое количество коллекций (это такие контейнеры, которые содержат элементы определенного типа).

Обойти элементы коллекции можно с помощью цикла специального вида.

Например, существует массив чисел, необходимо посчитать сумму всех элементов массива:

Сумма = 0;
Для каждого Элемент Из Массив Цикл
Сумма=Сумма+Элемент;
КонецЦикла;

Для циклов существуют специальные операторы: Продолжить и Прервать .

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

Оператор Прервать позволяет закончить выполнение цикла, даже если условие цикла истинно.

На этом мы завершаем наше первое знакомство с разработкой на внутреннем языке 1С.

А как же Hello World? Мы же его еще не написали, да? Да, но ничто не мешает вам сделать это самостоятельно, т.к. знаний УЖЕ достаточно. Ну а если не получается, то можете подглядеть сюда.

Внимание! Перед вами ознакомительная версия урока, материалы которого могут быть неполными.

Войдите на сайт как ученик

Войдите как ученик, чтобы получить доступ к материалам школы

Внутренний язык программирования 1С 8.3 для начинающих программистов: простые логические выражения в 1С

На прошлом занятии мы научились давать имена и вводить их значения от пользователя.

Наберитесь сил и терпения. Занятия №5 и №6 будут трудными, но очень важными для дальнейшего понимания программирования в 1С. Поэтому, если хоть что-то останется непонятным или нераскрытым - перечитывайте, вдумывайтесь, задавайте вопросы.

Простые логические выражения

Сегодня, к уже изученным типам данных (строка, число и дата) добавим ещё один - логический тип. Он может принимать всего два значения: Истина или Ложь .

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

Логическое выражение - это выражение, составленное при помощи операций сравнения. Сравнивать можно числа, даты, строки и другие данные. Вы читаете ознакомительную версию урока, полноценные уроки находятся . О логическом выражении можно сказать, верно оно (Истина ) или неверно (Ложь ).

Операции сравнения бывают следующие:

Думаю, интуитивно понятно, что обозначает каждая из операций.

Читается, например, так:

  • 1 = 1 ("один равен одному").
  • 4 <> 5 ("четыре не равно пяти")
  • 3 > 1 ("три больше одного").

Обращаю ваше внимание, что перечисленные три примера логических выражений принимают значение Истина , так как все они верны.

Разберем на примере:

Задание №14. Укажите для каждого логического выражения его результат - Истина или Ложь .

  1. "Венера" = "Юпитер"
  2. "Венера" <> "Юпитер"
  3. 123 = 321
  4. 123 < 321
  5. 123 <= 321
  6. 123 <= 123
  7. "20000101" <> "20140101"
  8. "20000101" = "20000101"
  9. "20140101" > "20120101"
  10. 25 + 25 = 50
  11. 2 * (10 + 10) > 50
  12. "Юрий" + " Гагарин" = "Юрий Гагарин"

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

  1. "Венера" = "Юпитер" (Ложь , строки не равны между собой, а в выражении утверждается, что равны).
  2. "Венера" <> "Юпитер" (Истина , строки не равны между собой, как и утверждается в выражении).
  3. 123 = 321 (Ложь , так как числа не равны между собой, а в выражении утверждается, что равны).
  4. 123 < 321 (Истина , так как 123 меньше 321, как и утверждается в выражении).
  5. 123 <= 321 (Истина , так как 123 меньше 321, а данное утверждение истинно, если левое число меньше или равно правому).
  6. 123 <= 123 (Истина , так как 123 равно 123, а данное утверждение истинно, если левое число меньше или равно правому).
  7. "20000101" <> "20140101" (Истина , так как левая дата 01.01.2000 не равна 01.01.2014, как и утверждается в выражении).
  8. "20000101" = "20000101" (Истина , так как левая дата 01.01.2000 равна 01.01.2000, как и утверждается в выражении).
  9. "20140101" > "20120101" (Истина , так как первое января 2014 года больше первого января 2012 года, как и утверждается в выражении).
  10. 25 + 25 = 50 (Истина, так как 25 плюс 25 действительно равно пятидесяти, как и утверждается в выражении).
  11. 2 * (10 + 10) > 50 (Ложь , так как результат левого выражения равен 40, а 40 меньше 50, хотя в утверждении говорится обратное).
  12. "Юрий" + " Гагарин" = "Юрий Гагарин" (Истина , так как сумма строк "Юрий" и " Гагарин" образует одну строку "Юрий Гагарин", которая равна строке справа, как и утверждается в выражении).

Заставим считать компьютер

Но, что же мы сами-то считаем "верно" или "неверно ". Ведь у нас под рукой компьютер! Давайте возложим эту задачу на него, а заодно и проверим себя.

К примеру, проверим выражение 2 * (10 + 10) > 50.
Для этого напишем такую программу:

Сообщить(2 * (10 + 10 ) > 50 ) ;

Если мы запустим её, то компьютер выдаст "Нет", что означает - результат равен Ложь .

Как он посчитал это выражение?

  1. Компьютер увидел команду Сообщить.
  2. Посмотрел, что за параметр мы передаем этой команде.
  3. Увидел, что в качестве параметра указано логическое выражение 2 * (10 + 10) > 50.
  4. Стал вычислять результат логического выражения.
  5. Увидел, что выражение состоит из левой части 2 * (10 + 10), правой части 50 и знака больше между ними.
  6. Посчитал результат левой части и выяснил, что он равен сорока.
  7. Снова взглянул на выражение, только в уже упрощенном виде 40 > 50, а так как 40, конечно же, меньше 50, то он вывел "Нет".

Задание №15. Вычислите все примеры логических выражений из предыдущего задания на компьютере.

Например, выражение "Венера" = "Юпитер" , значение которого, как мы выяснили, равно Ложь .

Сообщить("Венера" = "Юпитер" ) ;

Компьютер при запуске выводит значение "Нет", что означает: результат действительно равен Ложь и мы совершенно верно вычислили его сами.

Эталонное решение. Сначала пишем код сами, проверяем на компьютере (как и все примеры программ из уроков), только потом сверяемся

Эта статья - своего рода ответ на публикацию «Почему 1С это плохо и почему так не любят 1С программистов» . Я уже много лет занимаюсь 1С программированием и хочу сказать, что косо на нас смотрят именно из-за таких авторов статей. Давайте по порядку разберемся с тем, что мы имеем сейчас.

Платформа

У нас есть платформа и конфигурации написанные для нее.

Обновление платформы приносит дополнительный функционал, уносит некоторое количество багов и некоторое естественно приносит. В принципе, по моему личному мнению, ныть по поводу того, что после обновления платформы работа в офисе встала - не правильно. Во-первых, бэкапы баз перед обновлением должны спасти от проблем с базами. Ну и возможность вернуться на старую платформу никто не отменял. Это все равно что винить Microsoft или авторов свободного ПО за то, что после выпуска патча/обновления все слетело, а мысль сделать копию данных не пришла в вашу голову. Да, сейчас наблюдаются проблемы с программными ключами. Но можно пользоваться аппаратными (они немного дороже), либо на время проведения тех.работ для восстановления работоспособности офиса можно поставить не православные патчи, которые на время помогут решить проблему с отсутствием/недееспособностью ключа. Работа офиса в 30-40 человек важнее.

Конфигурации

Вот здесь есть где разгуляться критикам, но давайте по порядку.

Допустим, у нас обычная торговая организация и нам за глаза хватает функционала конфигурации «Управление торговлей 10.3/ 11».

Тут у нас есть два варианта использования этого программного продукта:

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

По сути, второй вариант используется наиболее часто. Ставится конфигурация, настраивается и на протяжении всей жизни организации она практически не обновляется. Максимум - правятся печатные формы согласно постановлениям. Вот, в принципе, и все. Зачем постоянно мучится и переносить изменения из релиза в релиз - непонятно.

Конечно, можно возразить и сказать, что у организации есть, к примеру, бухгалтерия. Рассмотрим и такой вариант.

Бухгалтерию необходимо постоянно обновлять из-за изменения законодательства, ставок в налоговых и пенсионных фондах и прочих буднях тяжкого труда бухгалтеров.

Для передачи данных между торговлей и бухгалтерией используют обычно правила обмена. Это некое правило, написанное на xml, которое описывает какие объекты данных выгружаются, как они загружаются; также можно указать дополнительные обработки перед, после в момент выгрузки/загрузки. Если конфигурация торговли у нас неизменна, то правила выгрузки мы не трогаем (за редким исключением, если вдруг произошли координальные изменения). Правила загрузки мы менять будем тоже не часто. Факт поступления/продажи товара будет переносится всегда. А вот порядок начисления налогов и прочего будет уже расчитываться в обновленной бухгалтерии и это никак не повлияет на торговую конфигурацию.

Мне кажется, глупо напоминать, но я все же осмелюсь. Перед обновлениями и изменениями всегда стоит делать бэкапы. Ну согласитесь, глупо нытьб что после обновления все сломалось и вся фирма стоит колом. Т.к. нет возможности ни продать, ни выписать, ни позвонить. Все контакты, счета и информация в базе.

Использование 1С в различных сферах бизнеса

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

Если мы говорим о сегменте малого бизнеса, то для учета в большинстве фирм можно использовать почти любые программы, которые немного сложнее сводных таблиц в экселе. Учет штучного товара/услуг, учет дебеторки/кредиторки, расчет зарплаты. Сдача отчетности возможна через сторонние программы, в которые просто вбиваются итоговые цифры.
Если бизнес крупнее, то конкуренты 1С - это Navision, Oracle, в совсем крупных примерах это SAP.

Но здесь мы сталкиваемся с другой спецификой. Наше законодательство меняется довольно часто. И иностранные если уж и занимаются поддержкой актуальности своих программных продуктов, то не всегда успевают за изменениями. Так как количество внедрений «НЕ 1С программ» мало, то стоимость владения становится высокой. Сложно найти специалиста, способного быстро обновить (при условии наличия обновления) или настроить/сконфигурировать существующий программный продукт.

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

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

Мне кажется, что основная причина негатива к 1С в том, что код открыт. Никто не видел, как написан Word или Navision и никто не полезет туда дописывать свои кнопки, которые будут поступать совсем не так, как задумывалось разработчиками. Глупо писать, что обновляется все, даже то, чем я не пользуюсь. Не обновляйте модуль, который отвечает за закладки в браузере, я им не пользуюсь. Или колонтитулы в ворде совсем не нужны, уберите их из обновления. Не нравится - не обновляй, или при обновлении читайте, что поменялось.

От себя добавлю, что я не являюсь представителем фирм франчайзи или партнером. Занимаюсь автоматизацией учета на 1С более 7 лет. Если будет интересно, могу поподробней рассказать о тонкостях ведения учета в реалиях нашего времени.

27.06.2017

NULL, ЕСТЬNULL() и ЕСТЬ NULL в запросах 1С

Что такое NULL

NULL в результате запроса, означает отсутствие значения (это не пустое значение, не нулевое, не пустая ссылка).
Например в результате соединения таблиц запроса, не нашлось значения в одной из таблиц при связи по полям соединения. Или в запросе идет обращение к несуществующему реквизиту (свойству).

NULL не равно NULL !

Если вы в запросе 1С захотите наложить отбор (условие) с проверкой на NULL, то конструкция вида " ГДЕ ВТ.Поле1 = NULL" Всегда будет возвращать ЛОЖЬ ! Для проверки следует использовать специальный оператор

ЕСТЬ NULL в запросе 1С

Для проверки значения (или для работы со значениями) на NULL необходимо использовать следующую конструкцию " ГДЕ ВТ.Поле1 ЕСТЬ NULL" Или другой пример, использование в конструкции ВЫБОР " ВЫБОР | КОГДА ВТ.Поле1 ЕСТЬ NULL | ТОГДА" Стоит отметить, что функция проверки поля на NULL одна из самых ресурсоемких в запросах 1С. Поэтому если Вы хотите использовать ее в условии запроса, подумайте, возможно ли заменить такую проверку внутренним соединением (вид соединения в запросах, при котором в выборке остаются только записи, присутствующие в обоих таблицах).

Функция ЕСТЬNULL() в запросе 1С

Функция ЕСТЬNULL() позволяет заменить отсутствующее значение в поле запроса, на указанное значение (стандартное значение, заглушку).
К примеру, если информация о стоимости товара отсутствует, то мы указываем ее равной 0 (нулю) "ВЫБРАТЬ | ЕСТЬNULL(ВТ.Цена, 0) КАК Цена |ИЗ ОстаткиТоваров КАК ВТ"

Заключение

Пишите запросы правильно и оптимально. Потому что плохой запрос - это тормоза и говнокод)
Понравилось? Лайкни нас на Facebook