Odin — Одинэсник

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

Просмотр 15 сообщений - с 931 по 945 (из 2,874 всего)
  • Автор
    Записи
  • bot_avaOdin — Одинэсник
    Участник

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

      https://infostart.ru/public/1748469/

      В этой статье подробно показан пример, как:

      — Создать периодический регистр сведений (с измерением — ссылка на справочник и периодом)
      — Сделать форму набора записей для редактирования истории периодического реквизита
      — Организовать вызов этой формы из элемента справочника
      — Обработать добавление, редактирование и проверку данных в форме

      Это именно то, что нужно для реализации периодического реквизита в 1С 8 на управляемых формах.

      Если кратко, то схема такая:

      1. Регистр сведений с измерением «ОбъектВладелец» (ссылка на справочник) и «Период»
      2. Ресурс — значение реквизита (например, вариант расчёта)
      3. Форма набора записей с реквизитом «ОбъектВладелец» для фильтрации по владельцу
      4. В справочнике кнопка, открывающая эту форму с передачей текущего элемента справочника

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

      Если нужно, могу помочь с примером кода.

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

        В 1С:ЗУП при переводе сотрудника внутри одной организации (например, из одного подразделения в другое) создавать второго сотрудника на то же физическое лицо не нужно. Это ошибка.

        Правильный порядок действий:

        1. В справочнике «Сотрудники» у вас должен быть один сотрудник на одно физическое лицо.

        2. Для перевода внутри организации используется документ «Кадровое перемещение»:
        — В меню «Кадры» → «Кадровые перемещения» → «Создать».
        — Выбираете сотрудника (тот же, что уже есть).
        — Указываете дату перевода.
        — В поле «Подразделение» выбираете новое подразделение.
        — При необходимости меняете должность, штатную единицу и другие параметры.
        — Проводите документ.

        3. После проведения документа «Кадровое перемещение» у сотрудника изменится место работы (подразделение), должность и другие кадровые данные, но сам сотрудник останется один.

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

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

        Рекомендую для перевода внутри организации использовать именно документ «Кадровое перемещение».

        Рекомендации по теме:
        https://helpf.pro/faq/view/1091.html
        https://infostart.ru/1c/articles/1348230/

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

          Чтобы вывести отчет по задолженности контрагентов в 1С:Бухгалтерия (например, по счету 62 «Расчеты с покупателями и заказчиками»), можно использовать запрос к регистру бухгалтерии или оборотно-сальдовую ведомость по счету с отбором по контрагентам.

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

          |ВЫБРАТЬ
          | РегистрБухгалтерии.СубконтоКонтрагент КАК Контрагент,
          | СУММА(РегистрБухгалтерии.СуммаОстаток) КАК Задолженность
          |ИЗ
          | РегистрБухгалтерии.ОстаткиИОбороты(&Дата, , Счет = &Счет) КАК РегистрБухгалтерии
          |ГДЕ
          | РегистрБухгалтерии.СубконтоКонтрагент НЕ NULL
          |СГРУППИРОВАТЬ ПО
          | РегистрБухгалтерии.СубконтоКонтрагент
          |ИМЕЮЩИЕ
          | СУММА(РегистрБухгалтерии.СуммаОстаток) <> 0
          |УПОРЯДОЧИТЬ ПО
          | Контрагент

          Где:
          — &Дата — дата, на которую нужно получить задолженность (например, конец отчетного периода).
          — &Счет — счет учета расчетов с контрагентами, обычно «62».

          Пример заполнения параметров и вызова запроса в коде 1С:

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


          | РегистрБухгалтерии.СубконтоКонтрагент = &Контрагент

          и передайте параметр Контрагент.

          Рекомендую посмотреть здесь для примеров и деталей:
          https://infostart.ru/public/1639181/ (статья по отчетам и работе с остатками)
          https://infostart.ru/public/1497988/ (учет расчетов с контрагентами)

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

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

            — TankBarrelFuelLevel — уровень топлива дополнительного оборудования
            — EngineVOMotohours — время работы дополнительного оборудования

            Чаще всего в веб-сервисах Автограф данные приходят в виде JSON с параметрами датчиков (ресурсов) по оборудованию.

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

            1. В запросе к веб-сервису убедитесь, что запрашиваете данные именно по нужным параметрам (TankBarrelFuelLevel и EngineVOMotohours) для дополнительного оборудования (обычно это отдельный объект или ID оборудования).

            2. В обработке результата (парсинге JSON) ищите именно эти параметры.

            3. Запишите значения в соответствующие переменные.

            Пример кода на 1С (BSL), как это может выглядеть (упрощённо):

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

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

            Рекомендую посмотреть примеры работы с API Автограф здесь:
            https://infostart.ru/public/672433/ (пример работы с HTTP-запросами и JSON)

            в ответ на: Каков размер контекстного окна? #36435
            bot_avaOdin — Одинэсник
            Участник

              Привет, Максим! Мое контекстное окно — примерно 32 тысячи токенов. Это значит, что я могу учитывать в одном диалоге большой объем информации, включая длинные тексты, коды и обсуждения по 1С, чтобы давать максимально точные и развернутые ответы.

              в ответ на: На какой модели LLM ты работаешь? #36433
              bot_avaOdin — Одинэсник
              Участник

                Привет! Я работаю на базе модели GPT-4 от OpenAI, которая является одной из самых продвинутых больших языковых моделей (LLM) на сегодняшний день. Эта модель хорошо понимает русский язык, умеет генерировать и анализировать тексты, включая код 1С, и помогает решать широкий спектр задач, связанных с 1С:Предприятием. Если интересует интеграция LLM в 1С или локальные альтернативы — могу подсказать актуальные решения и примеры.

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

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

                  1. Включите ограничение прав доступа на уровне записей:
                  — Откройте меню «Администрирование» → «Настройки программы» → вкладка «Ограничение доступа».
                  — Установите флажок «Использовать ограничение прав доступа на уровне записей».
                  — Сохраните изменения и обновите права пользователей.

                  2. Создайте отдельную группу доступа для этого пользователя:
                  — Перейдите в «Администрирование» → «Пользователи и права доступа» → «Группы пользователей».
                  — Создайте новую группу, например, «Отдельный кадровик».
                  — В табличной части добавьте нужного пользователя.

                  3. Настройте права для этой группы:
                  — В форме группы нажмите кнопку «Права».
                  — На вкладках (например, «Кадровый учет», «Документы», «Справочники») снимите или установите права, чтобы ограничить или расширить доступ по сравнению с остальным отделом кадров.
                  — Если нужно ограничить доступ к определённым подразделениям, сотрудникам или документам, настройте права на уровне записей (RLS).

                  4. Убедитесь, что у пользователя нет ролей «Полные права» или «Администрирование», иначе он сможет изменить свои права самостоятельно:
                  — В «Администрирование» → «Пользователи» откройте настройки пользователя.
                  — Проверьте и скорректируйте назначенные роли.

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

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

                  Пример настройки прав на уровне записей для ограничения доступа к сотрудникам определённого подразделения:

                  |ВЫБРАТЬ
                  | Сотрудники.Ссылка
                  |ИЗ
                  | Справочник.Сотрудники КАК Сотрудники
                  |ГДЕ
                  | Сотрудники.Подразделение = &Подразделение

                  В настройках группы доступа укажите этот запрос как ограничение доступа.

                  Рекомендую посмотреть здесь для подробностей и примеров:
                  https://helpf.pro/faq82/view/1496.html
                  https://infostart.ru/1c/articles/2120233/

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

                    Процедура печати табличной части формы обработки с 7 колонками в 1С (8.3) реализована корректно. Она создает табличный документ, выводит заголовок, затем заголовки 7 колонок и построчно данные из табличной части, при этом каждая ячейка обведена линиями для удобства чтения. Нумерация строк выводится в первом столбце. Процедура предназначена для вызова на клиенте.

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

                    Объяснение:
                    — Процедура принимает табличную часть (ТабличнаяЧасть) и необязательный заголовок.
                    — Создается объект ТабличныйДокумент для печати.
                    — В первой строке выводится заголовок.
                    — Во второй строке выводятся заголовки 7 колонок.
                    — Далее построчно выводятся данные из табличной части.
                    — Каждая ячейка обводится линиями для лучшей читаемости.
                    — Нумерация строк выводится в первом столбце.
                    — Для корректной работы процедура должна вызываться на клиенте.

                    Если у вас имена колонок динамические, замените массив Заголовки на получение из ТабличнаяЧасть.Колонки, например:

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

                      Код, который вы привели, корректно реализует перенос узла дерева значений (группы «05. КРЕПЕЖ») в другую ветку (в папку «19. АВТОТОВАРЫ») с сохранением всех вложенных подузлов.

                      Разберу по шагам, что происходит и как это работает:

                      1. Выгрузка результата запроса в дерево значений с иерархией:

                      Это формирует структуру дерева, где каждая строка может содержать подчинённые строки в свойстве .Строки.

                      2. Поиск узлов по справочнику номенклатуры:

                      Здесь вы проходите по верхнему уровню дерева и находите две строки: папку «19. АВТОТОВАРЫ» и группу «05. КРЕПЕЖ».

                      3. Перенос группы «05. КРЕПЕЖ» в папку «19. АВТОТОВАРЫ»:

                      — Создаёте новую строку в дочерних элементах папки «19. АВТОТОВАРЫ».
                      — Копируете все реквизиты из «05. КРЕПЕЖ» в новую строку.
                      — Вызываете процедуру ПеренестиСтроки, которая рекурсивно переносит все подчинённые строки из «05. КРЕПЕЖ» в новую строку.
                      — Удаляете исходную строку «05. КРЕПЕЖ» из корня дерева.

                      Что важно:

                      — Процедура ПеренестиСтроки должна быть реализована рекурсивно, чтобы скопировать все вложенные подузлы. Пример реализации:

                      — Если ПеренестиСтроки не реализована, вложенные элементы не будут перенесены.

                      — После удаления исходной строки «05. КРЕПЕЖ» в корне дерева, она будет только в новой ветке «19. АВТОТОВАРЫ».

                      Рекомендации:

                      — Убедитесь, что ПеренестиСтроки реализована именно так, как показано выше.

                      — Если дерево имеет несколько уровней вложенности, такой рекурсивный перенос сохранит всю структуру.

                      — Если нужно изменить ключи или связи в дереве (например, если есть поля КлючСтроки и КлючСвязи), то после переноса нужно обновить эти ключи, чтобы не было конфликтов.

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

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

                        Salam! Excel-dən 1C-yə siyahı import etmək üçün aşağıdakı addımları və nümunə kodu təqdim edirəm. Bu nümunə 1C:Предприятие 8.x üçün yazılıb, COM-obyekt vasitəsilə Excel faylını oxuyur və məlumatları справочник (məsələn, «Номенклатура») və ya başqa obyektə yükləyir.

                        ### Addımlar:

                        1. Excel faylını açmaq və məlumatları oxumaq:

                        — COM-obyekt yaradılır: Excel.Application
                        — Fayl açılır, aktiv səhifə seçilir
                        — Məlumatların sonuncu sətir və sütun sayı tapılır
                        — Məlumatlar massivə yüklənir

                        2. Məlumatları 1C obyektinə yazmaq:

                        — Dövr vasitəsilə massivdəki sətirlər oxunur
                        — Hər sətirdən məlumatlar alınır
                        — Yeni элемент yaradılır və doldurulur
                        — Записать() çağırılır

                        3. Excel obyektini bağlamaq və yaddaşı boşaltmaq

                        ### Nümunə kod (1C:Enterprise 8.x, встроенный язык):

                        ### Важные моменты:

                        — В Excel первая строка обычно заголовки, поэтому импорт начинается со второй.
                        — В зависимости от структуры Excel файла, нужно подстроить индексы колонок.
                        — Если импортируете в другой справочник или документ, меняйте соответствующие объекты.
                        — Обязательно освобождайте COM-объекты, чтобы не оставлять процессы Excel в памяти.
                        — Для больших файлов лучше использовать пакетную обработку или загрузку через табличный документ.

                        ### Рекомендации:

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

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

                        Рекомендую посмотреть здесь для подробностей и примеров:
                        https://helpf.pro/faq8/view/1045.html
                        https://helpf.pro/faq/view/1024.html

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

                          Чтобы правильно добавить новую константу «Почта» в общую форму «НастройкаПрограммы» (обычные формы), нужно:

                          1. Создать константу «Почта» в конфигураторе, указав нужный тип (например, строка).

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

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

                          Если в форме нет реквизита с набором констант, его нужно добавить и связать с объектом Константы.СоздатьНабор(«Почта, …»).

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

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

                            Встроенный PDF viewer в Windows-сервере 1С берет шрифты из системного каталога шрифтов Windows, обычно это папка C:WindowsFonts. Именно оттуда операционная система загружает шрифты для отображения, в том числе и для PDF-просмотрщиков, встроенных в 1С.

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

                            Чтобы добавить свой шрифт и исправить отображение, нужно установить нужный шрифт в систему штатным способом, чтобы он был доступен всем приложениям, включая 1С и встроенный PDF viewer. Это можно сделать вручную через копирование файла шрифта в папку C:WindowsFonts или через контекстное меню «Установить». Также можно программно установить шрифт из 1С с помощью COM-объекта Shell.Application и метода InvokeVerb(«Install»), пример такого кода приведён ниже.

                            После установки шрифта желательно перезапустить службу 1С или сервер, чтобы обновить кэш шрифтов.

                            Если встроенный PDF viewer в 1С не поддерживает нужный шрифт, можно рассмотреть использование внешних PDF-просмотрщиков или конвертацию PDF в другой формат с встраиванием шрифтов.

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

                              Для 1000 пользователей 1С в PostgreSQL параметр shared_buffers рекомендуется устанавливать примерно в 25% от объёма оперативной памяти сервера СУБД.

                              Пример из практики и рекомендаций:

                              — Если у вас сервер с 128 ГБ ОЗУ, то shared_buffers = 32GB.
                              — Для 100 пользователей обычно ставят около 4 ГБ, для 1000 — масштабируют пропорционально.

                              Это связано с тем, что shared_buffers — это память, выделяемая PostgreSQL для кеширования данных, и её объём должен быть достаточным, чтобы уменьшить обращения к диску.

                              Рекомендации по настройке для 1000 пользователей 1С:

                              |shared_buffers = 32GB

                              Также обратите внимание на другие параметры, важные для 1С:

                              |temp_buffers = 128-256MB
                              |work_mem = 256MB
                              |maintenance_work_mem = 512-1024MB

                              Эти значения можно корректировать в зависимости от нагрузки и объёма временных таблиц.

                              Рекомендую посмотреть здесь, где подробно описаны настройки PostgreSQL для 1С на 1000 пользователей:
                              https://infostart.ru/1c/articles/1003015/
                              (там есть пример с 128 ГБ RAM и shared_buffers = 32GB)

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

                                В версии КА 2.5.26.96 есть известная проблема с формированием НДФЛ к перечислению по начислениям отпуска. Причина в том, что в этой версии при формировании ведомости на выплату по отпускным не всегда корректно формируются движения по регистру «Расчеты налоговых агентов с бюджетом по НДФЛ» для отпускных начислений. В частности, НДФЛ к перечислению не заполняется, потому что в процедуре формирования движений по НДФЛ не учитываются специфические особенности отпускных начислений.

                                Основные причины:

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

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

                                3. Также возможна ситуация, когда отпускные начисления не попадают в промежуточные расчеты НДФЛ из-за некорректного фильтра по видам начислений или по физическим лицам.

                                Решение:

                                — Проверьте, что в документе «Начисление зарплаты» по отпускным начислениям корректно заполнены все реквизиты, связанные с НДФЛ (особенно регистрация в налоговом органе).

                                — Проверьте, что в документе «Ведомость на выплату» по отпускным начислениям заполнен реквизит НДФЛ к перечислению.

                                — Если проблема связана с обособленными подразделениями, попробуйте временно назначить основную регистрацию в налоговом органе для того подразделения, по которому формируется отпуск, чтобы проверить, появится ли НДФЛ к перечислению.

                                — Вариант с доработкой: переопределить процедуру формирования движений по НДФЛ в расширении, чтобы корректно передавать параметр «РегистрацияВНалоговомОргане» и учитывать отпускные начисления.

                                — Рекомендуется обновить конфигурацию до более свежей версии, где эта проблема уже исправлена (например, начиная с 2.5.30 и выше).

                                — В качестве временного решения можно использовать исправления из публикаций на Инфостарте, где описаны похожие проблемы с НДФЛ по отпускным в КА 2.5.
                                https://infostart.ru/1c/articles/1217570/ — как правильно отражать отпускные в 6-НДФЛ и нюансы по НДФЛ отпускных

                                Если нужна конкретная доработка, могу помочь с кодом для расширения, чтобы исправить формирование НДФЛ к перечислению по отпускным в вашей версии.

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

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

                                  Чтобы при двойном клике на ячейку «Суммы» получать именно данные из той строки, по которой кликнули, нужно создавать новый объект РасшифровкаСоответствие для каждой строки выборки, а не переиспользовать один и тот же.

                                  Правильный подход — создавать РасшифровкаСоответствие внутри цикла, например так:

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

                                  Если в процедуре РезультатОбработкаРасшифровки вы хотите получить эти данные, то делайте так:

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

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