Как разделить в 1с
Недавно в чужом программном столкнулся с тем, что не все программисты 1С знают, как в 1С 8.2 или 8.3 получить остаток от деления.
Периодически встречаются вот такие конструкции:
Это конечно забавный и остроумный способ. Но есть более простой метод, встроенный в платформу:
ОстатокОтДеления = Делимое % Делитель;
Вот, собственно, и всё!
P.S. Кстати, результат 1%2 = 1, некоторые почему-то думают, что ноль 🙂
Поддержите нас, расскажите друзьям!
СПРОСИТЕ в комментариях!
Комментариев: 6 на “ Остаток от деления в 1С 8.3 и 8.2 ”Добрый вечер.А вы уже пробовали заполнять матрицу змейкой числами от 1 до 100 на 1с?
Змейкой уже не актуально. Правильнее Бустадефон (ходом быка).
По обычной такой математической логике. Остаток от деления единицы на два равен единице.
ps: а вообще процессор компьютера, выполняя целочисленное деление командой div или idiv, получает целочисленный результат от деления и остаток одним действием.
целочисленный результат помещается в регистр RAX (если рассматриваем 64-битный вариант), а остаток помещается в регистр RDX.
При использовании данного сайта, вы подтверждаете свое согласие на использование файлов cookie в соответствии с настоящим уведомлением в отношении данного типа файлов. Если вы не согласны с тем, чтобы мы использовали данный тип файлов, то вы должны соответствующим образом установить настройки вашего браузера или не использовать сайт.
Отправляя любую форму на сайте, вы соглашаетесь с политикой конфиденциальности данного сайта.
В случаях, когда нужно разбить строку на части, чаще всего используется один из методов:
- СтрРазделить() - платформенный метод
- РазложитьСтрокуВМассивПодстрок() - функция общего модуля БСП
Всеми рекомендуется использовать СтрРазделить(), так как это платформенный и более оптимизированный метод. Однако, при этом часто забывают, что он не полностью идентичен второму. И в некоторых случаях применить его не получится.
Разберём нагляднее параметры по-порядку:
СтрРазделить(<Строка>, <Разделитель>, <ВключатьПустые>)
РазложитьСтрокуВМассивПодстрок(<Строка>, <Разделитель>, <ПропускатьПустыеСтроки>, <СокращатьНепечатаемыеСимволы>)
- <Строка>
Тут всё понятно. Строка, которую нужно разделить. - <Разделитель>
Вроде тоже ясно. Строка, которая является разделителем.
Однако. Этот параметр оба метода используют по-разному, когда его значение больше, чем один символ.
У СтрРазделить() каждый символ в параметре является отдельным разделителем. В то время как в РазложитьСтрокуВМассивПодстрок() он цельный.
"б1" - цельный разделитель
"б1" - набор из двух несвязанных разделителей. "б" и "1".
Выходит, что когда нам необходимо в качестве разделителя использовать некую строку, то используем метод РазложитьСтрокуВМассивПодстрок(). Ведь платформенный СтрРазделить() сработает иначе.
Так же интересная особенность. Если в этот параметр передать пустую строку, то СтрРазделить() вернёт массив с одним элементов (всей строкой). А РазложитьСтрокуВМассивПодстрок() уйдёт в небытие.
3 . <ВключатьПустые> и <ПропускатьПустыеСтроки>
Параметр хоть и схож, но, снова, не полностью идентичен.
Платформенный метод имеет два положения: Ложь или Истина. Либо результат метода будет содержать пустые строки, либо нет.
В то время, как метод БСП имеет чуть более расширенный функционал, а именно:
Если параметр не задан, то функция работает в режиме совместимости со своей предыдущей версией:
- для разделителя-пробела пустые строки не включаются в результат, для остальных разделителей пустые строки включаются в результат.
- если параметр Строка не содержит значащих символов или не содержит ни одного символа (пустая строка), то в случае разделителя-пробела результатом функции будет массив, содержащий одно значение "" (пустая строка), а при других разделителях результатом функции будет пустой массив.
Получается, если не передать параметр, то БСП сама решит догадаться, нужно ли сохранять пустые элементы или нет. По мне так, если нет необходимости, лучше всегда указывать конкретно логику, чтобы и самому не путаться и не путать других.
4. <СокращатьНепечатаемыеСимволы>
Данный параметр есть только в РазложитьСтрокуВМассивПодстрок().
Всё просто - нужно ли к каждому элементу массива применять СокрЛП (избавлять слева и справа всякие пробелы и переносы строк).
СтрРазделить() этого делать не умеет. Однако, замеры скорости показывают, что быстрее будет обойти циклом результат СтрРазделить(), чем использовать РазложитьСтрокуВМассивПодстрок().
Какие выводы?
В большинстве случаев при помощи СтрРазделить() можно сделать тоже самое, что и РазложитьСтрокуВМассивПодстрок(). В таких случаях нужно применять платформенный метод. Но:
- Когда необходимо использовать разделитель, состоящий из строки, а не одного символа, берёмся за РазложитьСтрокуВМассивПодстрок()
- Когда необходимо, чтобы элементы результата были обработаны СокрЛП(), делаем это сами постобработкой. Так будет быстрее.
Понять особенности методов будет полезно на практике. Но помнить не обязательно. Можно вместо этого использовать обёртку на подобии:
Механизм разделения данных позволяет хранить данные нескольких независимых организаций в одной информационной базе.
Это становится возможным благодаря тому, что общие реквизиты объектов конфигурации можно использовать не только как «одинаковый реквизит, который есть у всех объектов», но и как идентификатор того, что данные относятся к какой-то одной из нескольких независимых областей. Это можно объяснить на следующем примере.
Допустим в конфигурации существует общий реквизит «Организация». Это значит (упрощённо), что у каждого справочника, документа или другого объекта конфигурации также будет существовать реквизит «Организация».
При этом любой из пользователей информационной базы имеет доступ ко всем данным, которые хранятся в этой базе, независимо от того, какая организация указана, например, в том или ином документе.
Теперь укажем, что общий реквизит «Организация» будет являться разделителем.
Тогда (упрощённо) в информационной базе будет создано несколько независимых областей данных, в каждой из которых будут храниться данные только для одной конкретной организации:
Теперь, заходя в программу, пользователь будет получать доступ не ко всей информации, которая есть в информационной базе, а только к данным «своей» области, в данном случае к документам, справочникам и др. своей организации.
Возможен и другой вариант использования этого механизма, когда в информационной базе существует несколько независимых областей данных и наряду с этим существуют данные, которые доступны всем пользователям программы. Например, они содержат справочник банков, который одинаков для всех организаций.
В этом случае пользователь имеет доступ к «своей» области данных и к области неразделённых данных, которая является общей для всех пользователей.
Бывает необходимо разделить текстовый файл большого размера на несколько маленьких файлов. Ниже представлены функции при помощи которых можно разделить файл:
РазделитьФайл(<ИмяФайла>, <РазмерЧасти>, <Путь>)
// для разделения файла на части, размером каждой равной одному мегабайту Код 1C v 8.хРазделяет указанный файл на несколько частей (файлов) заданного размера. Имя каждой части образуется из имени исходного файла с прибавлением ему расширения в виде порядкового номера, включая лидирующие нули.
В результате получим несколько файлов:
А для объединения файлов в один используйте:
При объединении файлов по маске необходимо задать маску поиска файлов и имя файла, который требуется создать.
Выполнение кода вида:
приведет к объединению вышеперечисленных файлов в файл с заданным именем.
Внимание! Файлы объединяются в порядке возрастания имен.Разместил: E_Migachev Версии: | 8.x | 8.3 | Дата: 23.02.2015 Прочитано: 11789
Похожие FAQ
Еще в этой же категории
Загрузить данные в 1с из текстового файла с разделителями 6В этой статье я расскажу, как загружать данные в 1с 8 из простейших текстовых файлов с разделителями. Обычно они имеют расширение csv (Comma-Separated Values). Т. е. название подразумевает, что в каждой строке такого текстового файла значения разделе Пример выгрузки данных в Текстовый файл, документ 0
Режим = РежимДиалогаВыбораФайла.Сохранение; ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогСохраненияФайла.ПолноеИмяФайла = " Выгрузка_" +Формат(ПериодРегистрации," ДФ=M_yy" ); Фильтр = " Текст(*.txt)|*.txt" ; Пример загрузки данных из Текстового файла, документа 0
Файл для загрузки содержит данные вида(КодФизЛица, ФизЛицо, Сумма): 000000513
Петров Юрий Викторович
Иванов Александр Юрьевич
50 //Выбор файла Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла Посмотреть все в категории Текстовый документ
На практике может возникнуть ситуация, когда основное средство принято к учету как единый объект, а потом возникла необходимость его разделить. В данной статье пошагово на примере изучим, как в программе 1С 8.3 Бухгалтерия 3.0 разделить один объект основного средства на два основных средства.
Как разделить основное средство на два в 1С 8.3
Шаг 1
Создадим документ по списанию основных средств в 1С 8.3: Трактор Агромаш 85ТК и Дисковая борона в разделе ОС и НМА – Выбытие основных средств – Списание ОС.
Заполним шапку верхней части документа:
- Указываем дату списания ОС;
- В строчке Организация – указываем наименование организации, которая списывает ОС;
- В строчке Местонахождение ОС – указываем место эксплуатации ОС;
- В строчке Событие ОС – указываем Списание;
- В строчке Счет списания – указываем сч.91.02;
- В строчке расходов – указываем Ликвидация основных средств.
В табличной части введем основное средство, которое списываем:
Примечание: Если в 1С 8.3 в справочнике Прочие доходы и расходы нет нужной статьи, то статью создаем:
После проведения документа получим проводки по доначислению амортизации за месяц и списанию остаточной стоимости ОС на счет прочих доходов и расходов:
Шаг 2
Определим остаточную стоимость и сумму накопленных амортизационных отчислений основного средства: Трактор Агромаш 85ТК и Дисковая борона в разделе ОС и НМА – Отчеты – Ведомость амортизации ОС:
Шаг 3
Стоимость ОС – 1 520 000,00 руб. и накопленную амортизацию ОС – 190 000,05 руб. разделим между двумя объектами основных средств. Допустим,
- Трактор Агромаш 85ТК стоит 1 086 800 руб., накопленная амортизация – 136 800,00 руб.;
- Дисковая борона стоит 433 200,00 руб., накопленная амортизация – 53 200,05 руб.
Шаг 4
Для корректного ввода данных по новым объектам в 1С 8.3, создадим документ Ввод начальных остатков: раздел Операции – Бухгалтерский учет – Журнал операций – Создать – Ввод остатков – Основные средства.
Заполним верхнюю часть документа:
- Указываем дату разъединения ОС;
- В строчке Организация – указываем наименование организации;
- В строчке Местонахождение ОС – указываем место эксплуатации ОС.
В табличной части указываем созданные объекты:
Для каждого объекта создадим карточку с данными для дальнейшего учета в 1С 8.3:
- Новая карточка для ОС Трактор Агромаш 85 ТК. Заполним последовательно все закладки как показано на рисунках:
- Новая карточка для ОС Дисковая борона. Заполним все закладки последовательно как в первой карточке:
После проведения документа в 1С 8.3 будут сформированы проводки по счету учета первоначальной стоимости новых объектов основных средств и накопленной амортизации. Так же в 1С 8.3 автоматически заполнятся все регистры сведений:
Шаг 5
Закроем сумму остатка по вспомогательному счету 000 в 1С 8.3. Для этого нужно отредактировать проводки, полученные в документе Списание ОС:
- Устанавливаем режим ручной корректировки;
- Накопительные счета по определению остаточной стоимости и накопленной амортизации меняем на счет 000:
Шаг 6
Сформировав ОСВ, видим, что счет 000 закрыт:
Шаг 7
Сформировав ОСВ по счету 01, видим, что суммы первоначальной стоимости отражены по двум новым объектам ОС. По объекту ОС, которое было списано в 1С 8.3, сумма закрыта:
Шаг 8
Начислим ежемесячную амортизацию: раздел Операции – Закрытие периода – Закрытие месяца – Амортизация и износ основных средств.
Сформировав проводки, видим, что в 1С 8.3 амортизация начислялась по каждому объекту отдельно:
Особенности отражения операций, связанных с приобретением, принятием к учету, реализацией ОС, а так же начислением амортизации в 1С 8.3, можно изучить на нашем курсе по работе в 1С 8.3 в модуле Приобретение и движение ОС. Подробнее о курсе смотрите в следующем видео:
Читайте также: