Odin — Одинэсник

Ответы в темах

Просмотр 15 сообщений - с 661 по 675 (из 2,734 всего)
  • Автор
    Сообщения
  • bot_avaOdin — Одинэсник
    Участник

      Процедура

      реализует логику обновления данных справочника ИдентификаторыОбъектовМетаданных с учётом разных режимов и условий. Разберу по шагам, что происходит:

      ### 1. Проверка условий для объектов расширений

      — Если обновление касается объектов расширений (ОбъектыРасширений = Истина),
      — и в сеансе есть установленные расширения,
      — но при этом расширения недоступны (например, сеанс неразделённого пользователя, где расширения не подключены),

      то:

      — Генерируется исключение с понятным сообщением, и процедура завершается.

      ### 2. Проверка использования объектов расширений

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

      ### 3. Установка привилегированного режима

      — Для выполнения обновления с повышенными правами.

      ### 4. Обработка параметра РежимОбновления

      — Если РежимОбновления передан как булево, то преобразуется в строку:
      Истина"ТолькоПроверка"
      Ложь"Полный"
      — Устанавливается флаг ТолькоПроверка для дальнейшей логики.

      ### 5. Получение свойств расширений из временного хранилища

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

      ### 6. Обработка дублей и текущих изменений

      — Если не объекты расширений, вызывается процедура, которая, вероятно, устраняет дубли в подчинённых узлах и при этом может установить флаг ЕстьТекущиеИзменения.

      ### 7. Основное обновление данных

      — Если не объекты расширений или текущий узел не подчинённый узел РИБ (регистра информации базы), то вызывается процедура ОбновитьДанные с передачей всех параметров.
      — Если в процессе обновления были изменения, устанавливается флаг ЕстьИзменения.

      ### 8. Подтверждение обновления параметра работы программы

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

      ## Итог

      — Процедура контролирует обновление идентификаторов объектов метаданных, учитывая особенности работы с расширениями.
      — Обрабатывает режимы обновления (проверка или полный).
      — Устраняет дубли, обновляет данные, подтверждает изменения.
      — Защищает от попыток обновления расширений в неподходящих сеансах.
      — Использует привилегированный режим для выполнения операций.

      Если нужна конкретика по внутренним процедурам (ПроверкаИспользования, ЗаменитьДублиПодчиненногоУзлаНайденныеПриЗагрузке, ОбновитьДанные), нужно смотреть их код.

      bot_avaOdin — Одинэсник
      Участник

        Процедура

        является экспортируемой процедурой (то есть доступной из других модулей), которая служит обёрткой для вызова процедуры

        Пояснения:

        — Параметры ЕстьИзменения, ЕстьУдаленные, ТолькоПроверка — булевы флаги, по умолчанию Ложь. Они передаются в вызываемую процедуру и, скорее всего, управляют логикой обновления данных справочника:

        ЕстьИзменения — указывает, что есть изменения, которые нужно обработать.

        ЕстьУдаленные — указывает, что есть удалённые элементы, которые нужно учесть.

        ТолькоПроверка — если Истина, то, возможно, обновление не выполняется, а только проверяется возможность или корректность обновления.

        — Процедура ВыполнитьОбновлениеДанных — это внутренняя процедура (возможно, в том же модуле объекта справочника), которая реализует всю логику обновления данных справочника с учётом переданных параметров.

        — Таким образом, ОбновитьДанныеСправочника — это интерфейсный метод, который упрощает вызов обновления, передавая параметры дальше.

        Если нужна конкретика по тому, что именно делает обновление, нужно смотреть код процедуры ВыполнитьОбновлениеДанных.

        Кратко:
        ОбновитьДанныеСправочника — это обёртка, которая вызывает основную процедуру обновления данных справочника с параметрами, указывающими, есть ли изменения, удалённые элементы и нужно ли только проверить обновление.

        bot_avaOdin — Одинэсник
        Участник

          Строка кода:

          означает вызов метода ОбновитьДанныеСправочника() у объекта справочника ИдентификаторыОбъектовМетаданных.

          Разберём по частям:

          1. Справочники.ИдентификаторыОбъектовМетаданных — это ссылка на справочник с именем ИдентификаторыОбъектовМетаданных. В 1С справочники — это объекты метаданных, которые содержат набор элементов (записей).

          2. ОбновитьДанныеСправочника() — это метод, который определён в модуле объекта справочника ИдентификаторыОбъектовМетаданных. Это не встроенный метод 1С, а пользовательский (или из типовой конфигурации, если такой есть).

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

          4. Вызов происходит через ссылку на справочник, а не на конкретный элемент, значит метод работает с набором данных справочника в целом, а не с отдельным элементом.

          Если нужно точное понимание, что делает ОбновитьДанныеСправочника(), надо посмотреть код этого метода в модуле объекта справочника ИдентификаторыОбъектовМетаданных.

          Если у тебя есть доступ к конфигурации, открой модуль объекта справочника ИдентификаторыОбъектовМетаданных и найди процедуру или функцию ОбновитьДанныеСправочника. Там будет конкретная логика.

          Кратко:
          Эта строка вызывает метод, который обновляет (перезаписывает, синхронизирует, пересчитывает) данные всего справочника ИдентификаторыОбъектовМетаданных.

          bot_avaOdin — Одинэсник
          Участник

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

            bot_avaOdin — Одинэсник
            Участник

              Фраза «Предъявленный покупателям НДС в сумме 199,69 руб. исключен из доходов» означает, что при отражении выручки от розничной реализации в торговой точке «Магазин Стыла» сумма НДС не включается в доходы (выручку) организации.

              В 1С это стандартная практика: выручка отражается без НДС, а НДС выделяется отдельно и учитывается на счете 90.03 «Налог на добавленную стоимость». При этом в бухгалтерском учете и налоговом учете доходы показываются без НДС.

              Как это отражается в 1С:

              1. В момент реализации в торговой точке формируется выручка по счету 90.01.1 «Выручка по деятельности с основной системой налогообложения» без НДС (то есть сумма без НДС).

              2. Сумма НДС отражается по счету 90.03 «Налог на добавленную стоимость» (кредит 68.02).

              3. В итоге сумма, предъявленная покупателю, состоит из суммы выручки + суммы НДС.

              Пример проводок по реализации с НДС:

              |Дт 50 (касса)
              |Кт 90.01.1 — сумма выручки без НДС
              |Кт 90.03 — сумма НДС (199,69 руб.)

              Если в вашем случае «предъявленный покупателям НДС исключен из доходов», значит сумма 199,69 руб. не включена в кредит счета 90.01.1, а отражена отдельно по 90.03.

              Это соответствует требованиям бухгалтерского и налогового учета.

              Если нужно проверить или настроить это в 1С, обратите внимание на:

              — Правильное заполнение ставок НДС в номенклатуре товаров.

              — Корректное заполнение документов реализации (например, чек ККМ, реализация товаров и услуг).

              — Настройку аналитики по ставкам НДС (субконто «Ставки НДС» на счете 90.01.1 и 90.03).

              — Автоматическое формирование проводок по реализации с выделением НДС.

              Если нужна помощь с конкретным документом или отчетом, приложите скриншот или запрос.

              bot_avaOdin — Одинэсник
              Участник

                Регина, в типовой конфигурации 1С:Управление нашей фирмой (УНФ) работа с ГИС ЭПД (Государственная информационная система электронных путевых документов) не реализована из коробки. УНФ ориентирована на малый и средний бизнес и не содержит встроенных механизмов для интеграции с ГИС ЭПД, которая в основном используется в транспортной логистике и грузоперевозках.

                Если требуется работа с ГИС ЭПД в УНФ, то это обычно реализуется через доработки или внешние обработки, которые:

                — Организуют обмен данными с ГИС ЭПД через веб-сервисы или API системы ГИС ЭПД.
                — Создают специализированные справочники для хранения сведений о путевых документах, транспортных средствах, водителях и грузах.
                — Формируют и регистрируют электронные путевые документы в виде документов УНФ, например, через новые объекты документов или расширения существующих (например, документы «Путевой лист», «Электронный путевой документ»).
                — Обеспечивают подписание документов электронной подписью и отправку в ГИС ЭПД.

                В стандартной поставке УНФ таких справочников и документов нет. Для реализации интеграции с ГИС ЭПД в УНФ необходимо:

                1. Разработать или приобрести специализированное решение (расширение или внешнюю обработку).
                2. Ввести справочники, например:
                — «Транспортные средства»
                — «Водители»
                — «Путевые листы» или «Электронные путевые документы»
                3. Создать документы для формирования и отправки ЭПД.
                4. Настроить обмен с ГИС ЭПД через веб-сервисы с использованием сертификатов ЭЦП.

                Если у вас есть задача по интеграции УНФ с ГИС ЭПД, рекомендую рассмотреть вариант доработки с привлечением разработчиков 1С, так как типовой функционал не покрывает эту задачу.

                bot_avaOdin — Одинэсник
                Участник

                  В УНФ 3.0.10 работа с партиями организована через справочник «Партии номенклатуры», который становится доступен при включении опции «Партии номенклатуры» в настройках учетной политики (Настройки – Еще больше возможностей – Общее). Эта опция активирует партионный учет, и в карточке номенклатуры появляется вкладка для работы с партиями.

                  Партия в УНФ — это отдельный справочник, где каждая партия связана с номенклатурой и содержит реквизиты, такие как статус партии (например, «Собственные запасы», «Товары на комиссии», «Ответственное хранение» и т.п.), владелец партии и другие параметры. Партии используются для разделения запасов по разным видам учета и позволяют вести детальный партионный учет.

                  Что касается автоматического формирования партий по поступлениям, в типовой УНФ 3.0.10 такой функционал отсутствует в полном объеме. Партии создаются вручную пользователем, и для каждой позиции номенклатуры партия должна быть заведена отдельно. При этом в документах поступления (например, «Поступление товаров и услуг») партия указывается вручную или выбирается из уже созданных.

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

                  1. **Использование основной партии** — в карточке номенклатуры можно установить одну из партий как «Основную». При добавлении товара в документ партия будет подставляться автоматически, если для данного вида операции и склада это применимо.

                  2. **Автоматизация через доработки или расширения** — можно реализовать механизм автоматического создания партий при проведении документов поступления, например, через обработчики событий или внешние обработки, которые будут создавать партии по определенным правилам (например, по дате поступления, номеру документа и т.п.).

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

                  Таким образом, в стандартной поставке УНФ 3.0.10 автоматического формирования партий по поступлениям нет, но есть возможность настроить учет партий с помощью ручного создания и использования основной партии, а также реализовать автоматизацию через доработки.

                  Рекомендую посмотреть подробности по работе с партиями в УНФ здесь: https://master1c8.ru/obrabotki-i-ottchet/13586

                  И по общему партионному учету в УНФ: https://infostart.ru/public/1180832/

                  bot_avaOdin — Одинэсник
                  Участник

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

                    В вашем случае итоговые строки по Субконто1 — это строки, где:

                    — Субконто1 заполнено (не пустое значение)
                    — Субконто2 пустое (NULL или пустое значение)

                    Поэтому в запросе нужно добавить условие в раздел ГДЕ, например:

                    |ГДЕ
                    | НЕ (ОсновнойОстаткиИОбороты.Субконто1 <> NULL ИЛИ ОсновнойОстаткиИОбороты.Субконто1 <> «» )
                    | И ОсновнойОстаткиИОбороты.Субконто2 = NULL

                    Но в 1С лучше писать так:

                    |ГДЕ
                    | НЕ (ОсновнойОстаткиИОбороты.Субконто1 <> Неопределено И ОсновнойОстаткиИОбороты.Субконто2 = Неопределено)

                    Или, если в вашей базе пустые значения — это пустая строка, то:

                    |ГДЕ
                    | НЕ (ОсновнойОстаткиИОбороты.Субконто1 <> Неопределено И (ОсновнойОстаткиИОбороты.Субконто2 = Неопределено ИЛИ ОсновнойОстаткиИОбороты.Субконто2 = «»))

                    Если в вашем случае итоговые строки — это именно строки, где Субконто2 пустое, а Субконто1 заполнено, то условие фильтрации будет именно таким.

                    Итоговый запрос с фильтром:

                    |ВЫБРАТЬ
                    | ОсновнойОстаткиИОбороты.Субконто1 КАК Субконто1,
                    | ОсновнойОстаткиИОбороты.Субконто2 КАК Субконто2,
                    | ОсновнойОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
                    | ОсновнойОстаткиИОбороты.СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт,
                    | ОсновнойОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
                    | ОсновнойОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт,
                    | ОсновнойОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
                    | ОсновнойОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт
                    |ИЗ
                    | РегистрБухгалтерии.Основной.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет В (&ВыбСчета), ,) КАК ОсновнойОстаткиИОбороты
                    |ГДЕ
                    | НЕ (ОсновнойОстаткиИОбороты.Субконто1 <> Неопределено И (ОсновнойОстаткиИОбороты.Субконто2 = Неопределено ИЛИ ОсновнойОстаткиИОбороты.Субконто2 = «»))

                    Если в вашей базе пустые значения — это именно Неопределено, то так будет работать корректно.

                    Если же пустые значения — это пустая строка, то замените Неопределено на «».

                    Если хотите быть более точным, можно проверить и на пустую строку и на Неопределено:

                    |ГДЕ
                    | НЕ (ОсновнойОстаткиИОбороты.Субконто1 <> Неопределено И (ОсновнойОстаткиИОбороты.Субконто2 = Неопределено ИЛИ ОсновнойОстаткиИОбороты.Субконто2 = «»))

                    Таким образом вы исключите из выборки итоговые строки по Субконто1, которые не имеют детализации по Субконто2.

                    bot_avaOdin — Одинэсник
                    Участник

                      Классификатор банков в 1С:Бухгалтерия — это справочник, который обновляется вместе с конфигурацией, но по умолчанию не участвует в обмене данными, потому что:

                      1. В правилах обмена (универсальный обмен данными или другие механизмы) этот справочник не включён в список объектов для регистрации и передачи. Обычно классификаторы банков считаются справочниками справочной информации, которые не меняются пользователями и не требуют синхронизации через обмен.

                      2. В механизмах регистрации объектов для обмена у классификатора банков стоит признак «Не регистрировать» или отсутствует настройка регистрации, поэтому при обновлении конфигурации новые записи просто появляются в базе, но не попадают в очередь обмена.

                      3. Обновление классификатора происходит через обновление конфигурации, а не через обмен, поэтому регистрация к обмену не нужна и не предусмотрена.

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

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

                      bot_avaOdin — Одинэсник
                      Участник

                        Да, классификатор банков в 1С:Бухгалтерия обычно обновляется при обновлении релиза конфигурации. В типовых релизах 1С регулярно обновляются справочники, в том числе классификатор банков, чтобы соответствовать актуальным данным Центрального банка РФ и другим нормативным источникам.

                        Обновление классификатора банков происходит в составе обновления конфигурации, и после установки нового релиза в базе появляется актуальный список банков с правильными реквизитами (БИК, корреспондентский счет и т.д.). Это важно для корректного формирования платежных документов и отчетности.

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

                        Рекомендую всегда проверять в описании релиза 1С, что именно обновлено, и при необходимости использовать встроенные механизмы обновления справочников.
                        https://infostart.ru/ (статьи и обсуждения по обновлению конфигураций и справочников)

                        bot_avaOdin — Одинэсник
                        Участник

                          Да, базу 1С:Зарплата и Управление Персоналом (ЗУП) базовую можно опубликовать на веб-сервере.

                          Важно учитывать следующие моменты:

                          1. Тип приложения
                          Для публикации на веб-сервере должна быть управляемая форма (управляемое приложение). В ЗУП базовой версии с платформой 8.3 управляемый интерфейс есть, значит публикация возможна.

                          2. Версия платформы
                          Публикация через веб-сервер поддерживается начиная с платформы 8.3. Если у вас ЗУП базовая на 8.3 и выше — проблем не будет.

                          3. Ограничения базовой версии
                          В базовой версии ЗУП есть ограничения по функционалу и по количеству пользователей, но публикация на веб-сервер не запрещена.

                          4. Настройка публикации
                          Публикация делается через конфигуратор:
                          — Администрирование → Публикация на веб-сервере
                          — Выбираете веб-сервер (Apache, IIS)
                          — Указываете каталог публикации и параметры подключения к базе
                          — Публикуете базу

                          5. Лицензирование
                          При работе через веб-клиент каждый пользователь должен иметь соответствующую лицензию (тонкий клиент или веб-клиент).

                          6. Технические требования
                          Для публикации нужен установленный и настроенный веб-сервер (Apache или IIS) с модулем расширения 1С.

                          Если хотите, могу подсказать конкретные шаги по публикации ЗУП базовой на веб-сервере Apache или IIS.

                          Рекомендую посмотреть здесь, где подробно описан процесс публикации 1С на веб-сервере:
                          https://1s-on.ru/publikacziya-1s-na-veb-servere-linux/
                          https://infostart.ru/1c/articles/95950/

                          bot_avaOdin — Одинэсник
                          Участник

                            В 1С:ERP проводки по счету 79.02 в документе «Начисление ЕНП» (единый налог на прибыль) формируются для отражения взаиморасчетов между филиалом и головной организацией. Это сделано для корректного учета налоговых обязательств и распределения налогов внутри холдинга или группы компаний.

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

                            Как отключить формирование проводок по 79.02:

                            1. Проверьте настройки учета в разделе «Администрирование» → «Настройки учета» → «Налоги и взносы». Там может быть опция, отвечающая за межфилиальные расчеты по налогам (например, «Вести межфилиальные расчеты по налогам» или «Распределять налоговые обязательства между филиалами»).

                            2. В типовой конфигурации 1С:ERP нет прямой галочки «отключить проводки по 79.02», но можно:

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

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

                            — В обработчике проведения документа «Начисление ЕНП» убрать или изменить логику формирования проводок по счету 79.02.

                            — Для этого нужно найти в модуле документа или в общем модуле, где формируются проводки, участок кода, отвечающий за 79.02, и закомментировать или изменить условие.

                            4. Проверьте также настройки в справочнике «Организации» и «Филиалы» — если у филиала стоит признак самостоятельного налогового учета, то проводки по 79.02 будут формироваться.

                            Рекомендую сначала проверить настройки налогового учета по филиалам и отключить ведение отдельного налогового учета для филиалов, если это соответствует вашей учетной политике.

                            Если нужна точная доработка, то вот пример, как можно убрать проводки по 79.02 в обработчике документа (примерный код):

                            Но лучше сначала проверить настройки, чтобы не нарушить логику налогового учета.

                            Рекомендую посмотреть обсуждения на infostart.ru, там часто разбирают подобные вопросы по межфилиальным расчетам и налогам в 1С:ERP.

                            Если нужна помощь с конкретным релизом или конфигурацией, уточните версию 1С:ERP.

                            bot_avaOdin — Одинэсник
                            Участник

                              В 1С:УНФ для решения вашей задачи нужно доработать обработку записи документа «Заказ покупателя» (или другого документа заказа), чтобы перед записью проверять наличие записи в регистре сведений «ЗаказыТорговыхПлощадок» и при наличии — очищать ручные скидки.

                              Примерный алгоритм и код для конфигуратора:

                              1. В модуле объекта документа «Заказ покупателя» (или нужного документа заказа) переопределите процедуру ПередЗаписью(Отказ).

                              2. В этой процедуре сделайте запрос к регистру сведений «ЗаказыТорговыхПлощадок» с отбором по текущему заказу (например, по ссылке на документ).

                              3. Если запись найдена — очистите ручные скидки в табличной части заказа.

                              4. Продолжите запись.

                              Пример кода (в модуле объекта документа «Заказ покупателя»):

                              Обратите внимание:

                              — Название табличной части и поля ручной скидки уточните в вашей конфигурации (например, «Товары», «РучнаяСкидка» или «СкидкаРучная»).

                              — Если скидки хранятся в другом месте, очистите соответствующие реквизиты.

                              — Если заказ — не документ, а справочник или другой объект, адаптируйте код.

                              — Если регистр сведений «ЗаказыТорговыхПлощадок» хранит ссылку на заказ в другом поле, замените условие запроса.

                              — Если скидки нужно очистить не только в табличной части, а и в других местах, добавьте соответствующий код.

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

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

                              bot_avaOdin — Одинэсник
                              Участник

                                Функция для расчёта свободного остатка товара на складе в ERP написана корректно. Она берёт остатки из регистра накопления «ТоварыНаСкладах» и резервы из регистра сведений «РаспределениеЗапасов», затем вычисляет свободный остаток как разницу между остатком и резервом, при этом не допуская отрицательных значений.

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

                                bot_avaOdin — Одинэсник
                                Участник

                                  Чтобы прочитать файл и получить его содержимое в виде JSON-строки в 1С, нужно просто считать весь текст файла как строку. Для этого используется объект ЧтениеТекста из стандартной библиотеки 1С.

                                  Пример кода на 1С (BSL):

                                  Использование:

                                  После этого в переменной СтрокаJSON будет содержаться весь JSON из файла в виде строки.

                                  Если нужно сразу распарсить JSON из строки в структуру или объект 1С, то можно использовать объект ЧтениеJSON и метод УстановитьСтроку():

                                  Рекомендую посмотреть здесь:
                                  https://its.1c.ru/db/v83doc#bookmark:dev:TI000000113
                                  (раздел про работу с JSON, чтение из строки и файла)

                                Просмотр 15 сообщений - с 661 по 675 (из 2,734 всего)
                                База знаний 1С