Принято в 1с что значит
Акт сверки взаиморасчетов 1С — документ, содержащий сведения о состоянии расчетов между контрагентами за выбранный период и на определенную дату. Оформление акта сверки в программе — несложная операция, освоить которую помогут наши подсказки. Представляем пошаговую инструкцию, как сделать акт сверки в 1С 8.3.
- где найти акт сверки в 1С 8.3;
- как сформировать акт сверки в 1С.
Как сделать акт сверки в 1С 8.3 Бухгалтерия
Где найти акт сверки в 1С 8.3? Сверку расчетов оформляют документом Акт сверки расчетов с контрагентами в разделе Покупки – Расчеты с контрагентами – Акты сверки расчетов – кнопка Создать .
Организация заключила договор поставки кухонной мебели с ООО «КЛЕРМОНТ».
10 января поступила кухонная мебель на сумму 1 416 000 руб.
01 февраля организация погасила задолженность за поставку мебели от 10 января.
15 февраля поступила кухонная мебель на сумму 590 000 руб.
22 февраля организация оплатила поставку мебели от 15 февраля и перечислила предоплату за следующую поставку в размере 295 000 руб.
Рассмотрим, как сформировать акт сверки в 1С по данному примеру.
Период в Акте сверки
Период и контрагент, с которым осуществляется сверка, заполняются в шапке документа Акт сверки расчетов с контрагентами . Рассмотрим подробнее:
- От — дата формирования акта сверки с контрагентом;
- Контрагент — покупатель, поставщик или прочий контрагент, с которым осуществляется сверка взаиморасчетов;
- Договор — документ, по которому ведутся расчеты с контрагентом.
Договор указывается, только если необходимо сверить расчеты с контрагентом по определенному договору. Если поле не заполнено, то сверка осуществляется по всем договорам контрагента.
Также можно осуществить сверку расчетов с контрагентом и его обособленными подразделениями в одном акте, для этого необходимо:
- выбрать головную организацию в поле Контрагент ;
- установить флажок С обособленными подразделениями .
Счета учета расчетов в Акте сверки
После заполнения контрагента необходимо также указать счета учета, по которым будут анализироваться расчеты с контрагентом. Это нужно сделать на вкладке Счета учета расчетов , установив необходимые флажки.
Если вам нужно добавить еще какой-то счет, неотраженный в табличной части по умолчанию, то необходимо воспользоваться кнопкой Добавить . При этом одно из субконто в добавленном счете должно быть Контрагенты и Договоры , если сверка идет еще и по определенному договору. Иначе данные по этому счету автоматически заполняться не будут.
Как сделать Акт сверки взаиморасчетов в 1С
После установки необходимых настроек заполняем расчеты с контрагентом на вкладках По данным организации , По данным контрагента .
Это можно сделать несколькими способами:
- вручную по кнопке Добавить ;
- автоматически заполнить по данным в базе по кнопке Заполнить .
При этом можно заполнить сразу:
- по нашей организации и контрагенту;
- либо только по нашей организации.
Если выбрать По нашей организации и контрагенту , то заполнятся обе вкладки ( По данным организации и По данным контрагента ).
Если выбрать Только по нашей организации , то вкладку По данным контрагента необходимо заполнить вручную или по кнопке Заполнить , но уже на вкладке По данным контрагента .
Рассмотрим подробнее заполнение Акта сверки в 1С на вкладках По данным организации и По данным контрагента :
- Дата — дата совершения хозяйственной операции (прихода, продажи, оплаты и т.д.). Заполняется датой первичного документа.
- Документ — ссылка на первичный документ в базе.
- Представление — краткое описание хозяйственной операции, в скобках — дата, номер первичного документа (входящие или исходящие данные первичного документа). Именно эти данные попадают в печатную форму документа Акта сверки . Подробнее о выводе полного названия документов в печатной форме Акт сверки.
- Дебет — сумма, отраженная по дебету;
- Кредит — сумма, отраженная по кредиту.
В подвале документа выводится:
- Остаток на начало — итоговые взаиморасчеты с контрагентом на начальную дату указанную в поле Период . В нашем примере Поступление от 10.01.2018 на сумму 1 416 000 руб. не попало в период сверки, поэтому неоплаченная сумма отражается в данном поле.
- Остаток на конец — итоговые взаиморасчеты на конечную дату указанную в поле Период . В нашем примере перечислен аванс в счет будущих поставок в размере 295 000 руб.; т.к. он не закрыт на 28.02.2018, то выводится в данном поле.
- Расхождение с контрагентом (Расхождение с организацией) — должно равняться «0». Если в данном поле есть сумма, то значит каких-то данных не хватает в базе. Возможно не разнесена оплата или забыли внести документ поступления (продажи). Что делать, если в расчетах с контрагентом допущены ошибки и акт сверки оказался неверным?
После заполнения и проверки данных Акт сверки необходимо согласовать или передать контрагенту для согласования:
Есть расхождения с контрагентом
Что делать, если в расчетах с контрагентом допущены ошибки и акт сверки оказался неверным?
Сверка согласована
Если контрагент одобрил суммы, внесенные в акт сверки и подписал его без расхождений, то в документе Акт сверки расчетов с контрагентом необходимо установить флажок Сверка согласована .
Если дата Акта сверки в 1С в поле от находится в закрытом для редактирования периоде, то отметка Сверка согласована не доступна. Документ закрыт для редактирования.
Если ответ с подтверждением от контрагента поступил с опозданием, то можно создать еще один Акт сверки за нужный период, но с датой создания в открытом периоде.
Например, Акт сверки от 15.05.2020 за 2019 год. Заполнить необходимыми данными. Сверить с информацией от контрагента, которая поступила после закрытия периода. Если все сходится, то поставить флаг Сверка согласована .
Как распечатать Акт сверки
Как вывести полное название документа в печатной форме Акта сверки
Названия документов в печатной форме могут выводиться в двух видах:
- полное название — «Списание с расчетного счета (258 от 01.02.2018)».
Для вывода полного наименования необходимо установить флажок Выводить полные названия документов на вкладке Дополнительно .
Как вывести счета-фактуры в Акте сверки
Для вывода счет-фактур в бланке Акта сверки необходимо установить флажок Выводить счета-фактуры на вкладке Дополнительно .
Как указать договора в Акте сверки
Для вывода договоров в бланке Акта сверки необходимо установить флажок Разбить по договорам на вкладке Дополнительно .
Если сверка осуществляется с головным контрагентом (ГО) и его обособленными подразделениями (ОП), то флажок Разбить по договорам устанавливать нужно аккуратно: может быть задвоение оборотов, если была корректировка взаиморасчетов (Оплата от ГО, поставка от ОП или наоборот).
Как в Акте сверки указать ответственных лиц, подписывающих его
Рассмотрим, как заполнить печатную форму акта сверки, чтобы в ней автоматически указывались ответственные лица нашей организации и контрагента, подписывающие акт сверки.
- Дружников Г. П.— со стороны Организации;
- Васильев С.С. — со стороны ООО «КЛЕРМОНТ».
В печатной форме Акта сверки ФИО и должность представителей сторон заполняют по данным вкладки Дополнительно в разделе Представители сторон .
Эти данные автоматически заполняются при создании документа, при необходимости их можно изменить вручную.
В печатной форме Акта сверки данные по представителю контрагента ООО «КЛЕРМОНТ» мы увидим в двух местах: в тексте акта и внизу акта — там, где проставляется печать контрагента.
Акт сверки взаиморасчетов — пример заполнения.
Если Представитель контрагента на вкладке Дополнительно не указан, то данные по нему в печатную форму не попадут.
Чтобы не переделывать документ, можно вписать в пустующее поле ФИО представителя контрагента от руки.
Как вывести факсимильную подпись и печать организации в Акте сверки
Для вывода факсимильной подписи руководителя и печати организации необходимо указать флажок Подпись и печать в командной строке печатной формы Акта сверки .
Также в акте сверки можно вывести ИНН контрагента.
См. также:
Если Вы еще не подписаны:
Активировать демо-доступ бесплатно →
или
Оформить подписку на Рубрикатор →
После оформления подписки вам станут доступны все материалы по 1С:Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
-
Выставление первичных документов при выполнении работ, оказании услуг обязательно. И.Счет-фактура – основной документ для подтверждения права на вычет НДС..Документ Поступление (акт, накладная) вид операции Услуги (акт) позволяет оформить.
(12 оценок, среднее: 5,00 из 5)
Публикацию можно обсудить в комментариях ниже.
Обратите внимание!
В комментариях наши эксперты не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно в Личном кабинете
Вы можете задать еще вопросов
Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>
С 1 мая — новые коды в платежках при переводе денег физлицам
Изменения в 2022 году, о которых нужно знать бухгалтеру
6-НДФЛ за 1 квартал 2022 в 1С
Санкции и контрмеры: как работать организации и ее бухгалтеру в новой реальности. Часть 2
Отчетность за 1 квартал 2022
Лектор Мария Демашева — особенный. Спокойно, доходчиво, нет такого, что не понимаю. Высший класс!
Войдите как ученик, чтобы получить доступ к материалам школы
Внутренний язык программирования 1С 8.3 для начинающих программистов: простые логические выражения в 1С
Автор уроков и преподаватель школы: Владимир Милькин
На прошлом занятии мы научились давать имена и вводить их значения от пользователя.
Наберитесь сил и терпения. Занятия №5 и №6 будут трудными, но очень важными для дальнейшего понимания программирования в 1С. Поэтому, если хоть что-то останется непонятным или нераскрытым - перечитывайте, вдумывайтесь, задавайте вопросы.
Простые логические выражения
Сегодня, к уже изученным типам данных (строка, число и дата) добавим ещё один - логический тип. Он может принимать всего два значения: Истина или Ложь.
Значение логического типа (Истина или Ложь) является результатом некоторого логического выражения.
Логическое выражение - это выражение, составленное при помощи операций сравнения. Сравнивать можно числа, даты, строки и другие данные. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. О логическом выражении можно сказать, верно оно (Истина) или неверно (Ложь).
Операции сравнения бывают следующие:
Операция | Обозначение в языке 1С |
---|---|
Равно | = |
Не равно | <> |
Больше | > |
Меньше | |
Больше или равно | >= |
Меньше или равно |
Думаю, интуитивно понятно, что обозначает каждая из операций.
Читается, например, так:
- 1 = 1 ("один равен одному").
- 4 <> 5 ("четыре не равно пяти")
- 3 > 1 ("три больше одного").
Обращаю ваше внимание, что перечисленные три примера логических выражений принимают значение Истина, так как все они верны.
Разберем на примере:
Пример логического выражения | Результат | Объяснение |
---|---|---|
1 = 2 | Ложь | неверно, единица на самом деле не равна двойке |
1 = 1 | Истина | верно, единица равна единице |
выражение "Земля" <> "Луна" | Истина | верно, строка "Земля" не равна строке "Луна" |
'18610101' <> '18610101' | Ложь | неверно, дата 01.01.1861 на самом деле равна дате 01.01.1861 |
100 > 50 | Истина | верно, сто действительно больше пятидесяти |
10 < 0 | Ложь | неверно, на самом деле десять больше нуля |
Задание №14. Укажите для каждого логического выражения его результат - Истина или Ложь.
- "Венера" = "Юпитер"
- "Венера" <> "Юпитер"
- 123 = 321
- 123 < 321
- 123
- 123
- '20000101' <> '20140101'
- '20000101' = '20000101'
- '20140101' > '20120101'
- 25 + 25 = 50
- 2 * (10 + 10) > 50
- "Юрий" + " Гагарин" = "Юрий Гагарин"
Попытайтесь ответить на все вопросы самостоятельно. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Затем посмотрите ответы ниже и попытайтесь разобраться, если где-то ошиблись.
- "Венера" = "Юпитер" (Ложь, строки не равны между собой, а в выражении утверждается, что равны).
- "Венера" <> "Юпитер" (Истина, строки не равны между собой, как и утверждается в выражении).
- 123 = 321 (Ложь, так как числа не равны между собой, а в выражении утверждается, что равны).
- 123 < 321 (Истина, так как 123 меньше 321, как и утверждается в выражении).
- 123 Истина, так как 123 меньше 321, а данное утверждение истинно, если левое число меньше или равно правому).
- 123 Истина, так как 123 равно 123, а данное утверждение истинно, если левое число меньше или равно правому).
- '20000101' <> '20140101' (Истина, так как левая дата 01.01.2000 не равна 01.01.2014, как и утверждается в выражении).
- '20000101' = '20000101' (Истина, так как левая дата 01.01.2000 равна 01.01.2000, как и утверждается в выражении).
- '20140101' > '20120101' (Истина, так как первое января 2014 года больше первого января 2012 года, как и утверждается в выражении).
- 25 + 25 = 50 (Истина, так как 25 плюс 25 действительно равно пятидесяти, как и утверждается в выражении).
- 2 * (10 + 10) > 50 (Ложь, так как результат левого выражения равен 40, а 40 меньше 50, хотя в утверждении говорится обратное).
- "Юрий" + " Гагарин" = "Юрий Гагарин" (Истина, так как сумма строк "Юрий" и " Гагарин" образует одну строку "Юрий Гагарин", которая равна строке справа, как и утверждается в выражении).
Заставим считать компьютер
Но, что же мы сами-то считаем "верно" или "неверно ". Ведь у нас под рукой компьютер! Давайте возложим эту задачу на него, а заодно и проверим себя.
К примеру, проверим выражение 2 * (10 + 10) > 50.
Для этого напишем такую программу:
Если мы запустим её, то компьютер выдаст "Нет", что означает - результат равен Ложь.
Как он посчитал это выражение?
- Компьютер увидел команду Сообщить.
- Посмотрел, что за параметр мы передаем этой команде.
- Увидел, что в качестве параметра указано логическое выражение 2 * (10 + 10) > 50.
- Стал вычислять результат логического выражения.
- Увидел, что выражение состоит из левой части 2 * (10 + 10), правой части 50 и знака больше между ними.
- Посчитал результат левой части и выяснил, что он равен сорока.
- Снова взглянул на выражение, только в уже упрощенном виде 40 > 50, а так как 40, конечно же, меньше 50, то он вывел "Нет".
Задание №15. Вычислите все примеры логических выражений из предыдущего задания на компьютере.
Например, выражение "Венера" = "Юпитер", значение которого, как мы выяснили, равно Ложь.
Компьютер при запуске выводит значение "Нет", что означает: результат действительно равен Ложь и мы совершенно верно вычислили его сами.
Эталонное решение. Сначала пишем код сами, проверяем на компьютере (как и все примеры программ из уроков), только потом сверяемся
Войдите как ученик, чтобы получить доступ к материалам школы
Внутренний язык программирования 1С 8.3 для начинающих программистов: функции и процедуры в 1С часть 1
Автор уроков и преподаватель школы: Владимир Милькин
Сегодня мы приступаем к изучению того, без чего не может обойтись ни одна более менее серьезная программа - функций и процедур.
Функции и процедуры в языке 1С 8.3
Давайте я подведу вас к необходимости функций, заодно вы поймёте что это такое и почему они столь полезны для программистов.
Пусть нам требуется написать программу, которая вычисляет произведение суммы и разности двух введенных чисел. Выглядеть она будет так:
В данном случае формула вычисления результата достаточно проста, но она могла бы быть гораздо сложнее. А что если нам нужно вычислять её не один раз, а несколько? Причем в разных местах программы.
Неужели нам снова и снова придётся писать код для её вычисления:
Это никуда не годится. Нам придётся повторять один и тот же код, что приведёт к раздутости программы. И кроме того, переписывая его очередной раз мы можем допустить ошибку по невнимательности.
Вот бы придумать такое имя, которое будет связано с этой формулой и при обращении к нему мы будем обращаться ко всей этой формуле целиком. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
Пусть этим именем будет ПроизведениеСуммыИРазности.
Получается теперь мы можем написать:
И всё? Нет, конечно! Ведь непонятно произведение суммы и разности каких именно чисел нужно считать. Гораздо лучше будет передать эти числа нашему имени в качестве параметров, как мы обычно делаем при вызове команды:
Это, так называемый, вызов функции. Он выглядит точно также как и вызов многих других команд компьютера, которые мы уже неоднократно делали. Только это наша собственная команда, работу которой определяем мы, а не компьютер.
Давайте, наконец, определим нашу функцию, чтобы компьютер, встретив её вызов, не растерялся, а выполнил то, что мы хотим:
Что включает в себя определение этой функции?
Прежде всего ключевое слово Функция следом за которым идёт имя, которое мы придумали сами.
Затем следуют имена параметров, заключенные в круглые скобки. Параметры - это данные, которые мы передадим в нашу функцию при её вызове. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Она с ними что-то сделает и возвратит результат. Каждый параметр имеет своё имя, которое мы также придумываем сами. Это имя можно использовать только внутри функции.
Дальше идёт тело. Это команды компьютеру, которые будут выполняться в тот момент, когда мы сделаем вызов нашей функции. Тело заканчивается ключевым словом КонецФункции.
Внутри функции могут выполняться абсолютно любые знакомые нам команды: условные операторы, циклы и прочее. Но хотя бы один раз внутри каждой функции должна присутствовать команда:
Где вместо Результат может быть любое выражение, которое вернётся из функции в качестве её результата.
Мы можем вызывать функцию столько раз в программе сколько нам потребуется.
Процедуры это те же самые функции, но они не возвращают результат и объявляются при помощи других ключевых слов: Процедура и КонецПроцедуры.
Но функции и процедуры не следует писать лишь бы где! Для определения наших функций мы будем использовать новый модуль. Чтобы его добавить следуйте инструкциям ниже.
1. Раскройте список "Общие" в дереве конфигурации.
2. Найдите в нём пункт "Общие модули" и нажмите на нём правой кнопкой мыши. Выберите "Добавить".
3. Добавился модуль. В правой части окна конфигуратора задайте его имя и свойства, как показано ниже.
Внимание! Пожалуйста, ещё раз убедитесь, что вы поставили галки (Клиент, Сервер, Внешнее соединение) также, как на рисунке выше.
4. Перейдите в этот модуль. Всё! Здесь можно писать наши функции и процедуры. Напишите процедуру с именем Привет, без параметров, после вызова которой компьютер просто здоровается с нами.
Обратите внимание на ключевое слово Экспорт, которое идёт следом за круглыми скобками. Его наличие обязательно, так как мы определяем функцию в одном модуле (Уроки), а использовать будем совсем в другом (модуль управляемого приложения).
5. Теперь вернитесь в модуль управляемого приложения.
6. И сделайте вызов нашей процедуры. Так как она находится в другом модуле к её имени добавляется "Уроки.".
В Российском бухгалтерском учете присутствуют такие понятия, как план счетов и двойная запись, в Российском налоговом законодательстве таких понятий, разумеется, нет. Но для расчета налога на прибыль есть необходимость учитывать доходы и расходы компании, это можно делать параллельно с ведением бухгалтерского учета или раз в месяц/квартал перед заполнением бухгалтерской отчетности, в которой отражаются временные и постоянные разницы согласно ПБУ 18 и декларации по налогу на прибыль. Для удобства работы пользователя компанией 1С предложен вариант ведения параллельного учета доходов/расходов компании, а также временных и постоянных разниц, возникающих в учете доходов/расходов на плане счетов бухгалтерского учета.
Итак, на Рис 1 видно, что у счетов БУ(бухгалтерского учета) стоит галочка НУ(налоговый учет). Если просмотреть весь план счетов, то пользователь увидит, что не у всех счетов установлена данная галочка. Она ставится только если по счету ведется налоговый учет, соответственно и считаются постоянные и временные разницы.
Где БУ – бухгалтерский учет, НУ – налоговый учет, ВР – временные разницы, ПР – постоянные разницы. Если на счете предусмотрено ведение налогового учета данное равенство обязательно должно выполняться. То есть если сумма БУ в проводке 100, а сумма НУ должна быть 50, обязательно возникнет положительная постоянная или временная разница на 50. И если сумма БУ 100, а сумма НУ 150, возникнет отрицательная временная или постоянная разница.
Временная разница – Это разница, которая рано или поздно закроется и БУ будет равен НУ.
Постоянная разница в учете – это разница условно постоянна и никогда не закроется, то есть по данной операции БУ никогда не будет равен НУ. Что с ними происходит при закрытии периода расскажу немного позднее.
Всегда необходимо помнить, что на счетах по которым ведется налоговый учет должно выполняться равенство БУ=НУ+ВР+ПР.
В НУ(для налога на прибыль) нет понятия НДС соответственно на счете 90 учет будет вестись следующим образом:
Кт 90.01.1 59 000 руб. Выручка отражается, включая НДС
Минус Дт 90.03 9 000 руб. НДС
Итого Кт 90.09 50 000 руб.
Кт 90.01.1 50 000 руб. Выручка отражается без НДС
Итого Кт 90.09 50 000 руб.
Также по-разному будут отражаться и показатель себестоимости на счете 90.02, а так же на счетах 90.07,90.08. Ввиду того, что в Бухгалтерском учете:
90.02
Себестоимость продаж
90.07
Расходы на продажу
90.08
Управленческие расходы
А в налоговом Прямые и косвенные расходы, то есть при определении финансовых результатов программа автоматически закроет БУ по одной методологии, а НУ по другой и уровняет БУ=НУ +ВР+ПР временными разницами, так как на данных счетах установлен флаг НУ.
Теорию почитать можно тут:
Тут все просто! Галочка НУ ставится, если доходы/расходы отраженные бухгалтером по данной статье учитываются в налоговом учете. У таких статей как например: материальная помощь в связи со смертью, переоценка внеоборотных активов, проценты за пользование кредитом сверх норм и т.п. галочку НУ ставить не стоит, тогда программа, при выборе данной статьи автоматически сделает следующие записи в учете. Напирмер:
ПР – 100 соответственно и равенство выполняется и при расчете финансово результата автоматически программа произведет расчет ПНО(постоянного налогового обязательства).
С видом прочих доходов и расходов немного сложнее:
Пользователю, при вводе новой статьи прочих доходов и расходов, необходимо максимально корректно определить вид прочих доходов и расходов. Например:
При реализации основных средств, если вид выбран «Реализация основных средств», то регистр налогового учета
Сформируется автоматически, если у соответствующей статьи прочих доходов и расходов поставить другой вид для НУ, то регистр сформируется пустым.
Так же при правильном выборе вида прочих доходов и расходов автоматически программа заполнит соответствующие разделы декларации по налогу на прибыль. В данном случае, это Приложение 3 к листу 2
Сколько же всего сложного и таинственного нас окружает.
Черные дыры и сновидения. Темная материя и подсознание. Корпускулярно-волновой дуализм и 1С.
И ведь думаешь, что знаешь эту "1Ску" как свои пять пальцев, но стоит случайно копнуть глубже. И очередная багофича. Да ешё и какая!
В этой статье рассмотрим секретный оператор ?
О нём мало кто знает, хоть он и существует как минимум с версии 8.0.
В последнее время я публикую на своём телеграм-канале разные хитрые задачки с подвохом для программистов 1С. Какие-то беру "по памяти", а какие-то "рождаю" в результате экспериментов. Об этом скоро выйдет отдельная статья. И вот в очередном тесте адекватности платформы случайно натыкаюсь на такую конструкцию:
Синтаксис-проверка прошла успешно. Никаких ошибок не высветилось. И, казалось бы, ошибка тогда должна произойти в момент выполнения.
Код успешно выполнился. Удивительно, но сработало! И тут меня понесло.
Как оказалось, знак ? ведёт себя крайне странно. Давайте посмотрим ещё раз прошлый пример.
Мы создаём новую переменную и назначаем ей значение - ?. И в переменной находится Неопределенно. И, казалось бы, это и есть ответ на вопрос. Знак ? означает Неопределено.
Но что же тогда это:
В данном коде сначала идёт объявление переменной "А". И в А установлено числовое значение "1". А далее идёт наше сравнение с ?. Если бы под знаком вопроса скрывалось Неопределено, то мы бы не попали внутрь условия. А по скрину видно, что попали.
Очень странная ошибка. "Переменная не определена (Сообщить)". Ну допустим. Добавим тогда такую переменную:
Данный код компилируется без ошибок. И при выполнении в 1С сообщает "ТЕСТ". То есть значение переменной Сообщить
Выходит, что символ ? указывает на предыдущее слово в коде. В данном случае, перед ? было слово Сообщить. И поэтому 1С изначально поругалась, что такая переменная не определена. А когда мы добавили переменную Сообщить, то всё стало на свои места.
То есть наш код для 1С выглядит так:
А теперь вернемся к нашим предыдущим примерам и разберём что и как сработало.
В данном коде предыдущее слово перед ? - Если. Но оно является ключевым для 1С. Как "Цикл", "Процедура" и так далее. Поэтому, его оператор ? не учитывает и берет в качестве источника значения переменную А.
Скорректируем же этот код так, как его видит 1С:
Теперь всё логично. А = А и поэтому условие выполняется.
А что с нашим самым первым примером?
На самом деле всё так же. Просто заменяем знак вопроса на предыдущее слово.
Да, такой код тоже странный, но в рамках 1С всё логично. Сначала объявляется переменная и в ней Неопределено. А затем происходит присвоение переменной значения из её самой. То есть опять же Неопределено. Можете проверить такой код - это хоть и выглядит странно, но работает. А почитать чуть подробнее можно в статье на ИТС: МояПеременная = 0; МояПеременная = ? + 1; //1 МояПеременная = ? + 1; //2 МояПеременная = ? * 5; //10 МояПеременная = ? / 2; //5 МояПеременная = ? - 6; //-1
Да, мы так долго ждали и вот он😅
А самое интересное, что такая возможность существовала как минимум ещё с версии 8.0 . Специально скачал старую платформу и проверил.
На самом деле такой код можно ещё упросить:
Но такой вариант становится менее надежным. Ведь всё работает до тех пор, пока перед ? находится МояПеременная. Если же вставить после этого какое-то другое "слово", то всё порушится.
Но вот ещё пример:
Мы же помним, что знак ? берет предыдущее слово. Так вот в нашей строке кода это слово "А". Именно так - без "Структура".
Поэтому 1С в таком коде вместо знака вопроса вставит "А"
Выходит, инкремент хоть и есть, но с особенностями 😁
Но зато появляется новая возможность применения:
В данном коде мы создали структуру и наполнили её объявленными ранее переменными. Тоже бывает удобно, когда нужно передать какой-то набор переменных метода в другой метод через структуру.
А вот ещё пример. Можно передать в какой-то метод или конструктор одно значение несколько раз:
Передавать знак ? можно даже в условный тернарный оператор. Например, этот код приводит отрицательные числа к 0:
А этот приводит отрицательные числа к положительным:
Подобным образом можно присваивать дефолтные значения необязательным параметрам:
Главное помнить, что знак ? берет именно предыдущее слово, поэтому вот так работать НЕ будет:
1С поругается, что Переменная не определена (Структура). Ведь перед последним знаком ? слово Структура
Но что если использовать символ ? в параметрах?
Сделаем процедуру с параметром ? :
Такую процедуру действительно возможно создать. И можно вызывать. Причем 1С понимает, что параметр обязательный и его необходимо передать.
Но мы можем сделать его необязательным:
И параметр не обязан быть единственным. Можно делать разными способами:
А можно использовать Знач
Но вот незадача, ? в параметре метода не использует предыдущее слово (как во всех других случаях). Как обратиться к этому параметру - неизвестно.
В стеке вызовов он отображается:
А попробуем добавить второй параметр ?
1С ругается так:
Формальный параметр с указанным именем уже определен (?)
Опираясь на текст ошибки, мы можем предположить, что 1С объявляет параметр с именем "?"
И когда мы пытаемся добавить ещё один такой параметр, то платформа ругается.
Как обратиться к параметру с именем "?" - неизвестно. Методы Вычислить() и Выполнить() не помогли.
Но, возможно, это всё те вопросы, которые нам ещё предстоит разгадать. Секреты и загадки этой таинственной платформы под кодовым названием 1С.
Понравилась статья?
Поставьте лайк плюс. Пишите свои идеи и комментарии по теме. Статья будет дополняться.
Читайте также: