Odin — Одинэсник

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

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

      Ошибка «неверный формат файла программного лицензирования» при активации комьюнити лицензии 1С возникает из-за того, что на компьютере обнаружено несколько файлов лицензий, либо лицензия уже заблокирована системой из-за использования на другом компьютере. В частности, файл лицензии должен быть один, его нельзя копировать между машинами, а только перемещать. Если на компьютере есть дублирующие файлы лицензий (например, 2*.lic) или файлы conn8211.pfl (для 8.2) или 1cv8conn.pfl (для 8.3), то это вызывает конфликт и ошибку формата.

      Как исправить:

      1. На всех компьютерах, где ранее была установлена эта лицензия, найти и удалить все файлы лицензий 2*.lic и файлы conn8211.pfl (или 1cv8conn.pfl для 8.3). Обычно они лежат в каталогах:
      — Windows: C:ProgramData1Cconf, C:Program Files (x86)1cv8conf, %USERPROFILE%AppDataLocal1C
      — Linux: /home/usr1cv82/.1cv82/1C/1Cv82/conf, /home/usr1cv8/.1cv8/1C/conf, /opt/1C/v8.2/x86_64/conf/

      2. Если используется клиент-серверный вариант, перезапустить службу агента сервера 1С.

      3. На проблемном компьютере выполнить обновление (восстановление) лицензии по последнему использованному пин-коду.

      4. Если при обновлении появляется сообщение «Пинкод уже активирован. Повторная активация этого пинкода на другой компьютер запрещена», значит у компьютера изменились ключевые параметры. В этом случае нужно использовать резервный пин-код для повторного получения лицензии.

      5. Не использовать резервный пин-код, если такого сообщения нет.

      6. Убедиться, что версия платформы 1С не ниже 8.2.15 (для 8.3 — актуальная версия).

      7. В окне выбора информационных баз поставить галочку «Использовать аппаратную лицензию», если она не стоит.

      8. Если ошибка сохраняется, отказаться от получения лицензии, нажать «Подробно» и отправить журнал поиска ключа в службу поддержки 1С.

      Таким образом, причина — конфликт или дублирование файлов лицензий, либо блокировка лицензии из-за использования на другом ПК. Удаление лишних файлов лицензий и корректное восстановление по пин-коду решает проблему.
      https://helpf.pro/faq/view/1868.html

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

        Привет! Определить, что код запущен в фоновом задании, можно с помощью проверки результата вызова ФоновыеЗадания.ТекущиеДанные(). Если этот вызов возвращает не Неопределено, значит код выполняется в фоне.

        Также можно проверить имя пользователя, под которым запущен код — если это, например, «ФоновыйПользователь», то, скорее всего, это фоновое задание.

        Вот как это выглядит в коде:

        И пример проверки имени пользователя:

        Таким образом, самый простой и надёжный способ — использовать ФоновыеЗадания.ТекущиеДанные(). Если она возвращает данные, значит код выполняется в фоне. Проверка имени пользователя — дополнительный вариант.

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

          Код в целом правильный, но есть несколько важных моментов, которые нужно учесть, чтобы движения в регистре «Хозрасчетный» для документа «ОплатаРассрочки» корректно отражались в учете:

          1. **Очистка движений перед добавлением** — сделано верно: Движения.Хозрасчетный.Очистить();

          2. **Установка свойства Записывать = Истина** — тоже правильно, чтобы движения записались в базу.

          3. **Период движения** — должен быть корректным, обычно это дата документа, а не просто переменная Дата. Убедитесь, что Дата — это дата документа «ОплатаРассрочки». В финальном коде используется ЭтотОбъект.Дата.

          4. **Счета Дт и Кт** — в вашем примере они были перепутаны. В финальном коде дебетуется счет расчетов с покупателями (ПланыСчетов.Хозрасчетный.РасчетыСПокупателями), а кредитуется счет денежных средств (ПланыСчетов.Хозрасчетный.ДенежныеСредства). Это более типично для оплаты рассрочки.

          5. **Субконто** — в финальном коде субконто заполняются по дебету, а не по кредиту, как в вашем примере. Проверьте, что в вашем плане счетов и регистре «Хозрасчетный» именно так устроены виды субконто.

          6. **Признак сторно** — в финальном коде явно установлен Движение.Сторно = Ложь;, что рекомендуется для явного указания, что это не сторно.

          7. **Запись документа** — после формирования движений вызывается ЭтотОбъект.Записать();, чтобы сохранить изменения.

          Итог: главное — правильно определить счета Дт и Кт, корректно заполнить субконто по дебету, установить период из документа и записать объект. Тогда движения в регистре «Хозрасчетный» будут отражены корректно.

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

            Как решить ошибку recv returns zero, disconnected в 1С?

            web, ошибка, которую вы видите:

            означает, что клиент 1С не может получить данные от сервера по TCP-соединению — соединение было разорвано или сервер не отвечает.

            Разберём подробно, что это значит и как решать:

            1. **Ошибка recv returns zero, disconnected**
            Это системное сообщение о том, что при попытке чтения из сокета (TCP-соединения) функция recv вернула 0, что означает, что другая сторона (сервер) закрыла соединение. Клиент 1С получил «пустой» ответ и разорвал соединение.

            2. **Причины возникновения:**
            — Сервер 1С не запущен или упал.
            — Сетевая проблема: сервер недоступен по адресу med1C и порту 1560.
            — Межсетевой экран (фаервол) или антивирус блокирует соединение.
            — Проблемы с сетевой инфраструктурой (например, роутер, VPN, прокси).
            — Перегрузка сервера или ошибка в серверном приложении 1С, из-за которой сервер закрывает соединение.
            — Неправильные настройки подключения клиента (неверный адрес, порт, имя сервера).

            3. **Пошаговое решение:**

            **Шаг 1. Проверка доступности сервера**
            — Попробуйте с клиента выполнить ping на med1C (если это имя сервера).
            — Проверьте, что порт 1560 открыт и слушается на сервере. Можно использовать telnet med1C 1560 или Test-NetConnection в PowerShell.
            — Если сервер не отвечает, значит проблема в сети или сервер не запущен.

            **Шаг 2. Проверка состояния сервера 1С**
            — На сервере проверьте, запущен ли серверный процесс 1С (например, 1cv8srv.exe).
            — Перезапустите сервер 1С.
            — Проверьте логи сервера 1С на наличие ошибок.

            **Шаг 3. Проверка настроек клиента**
            — В конфигурации подключения клиента 1С проверьте правильность указания имени сервера и порта.
            — Если используется имя med1C, убедитесь, что оно резолвится в правильный IP (проверьте hosts или DNS).
            — Если сервер недавно менял IP или порт, обновите настройки.

            **Шаг 4. Проверка сетевого оборудования и безопасности**
            — Убедитесь, что фаерволы и антивирусы на клиенте и сервере не блокируют порт 1560.
            — Если есть VPN или прокси, проверьте их настройки.

            **Шаг 5. Проверка нагрузки и ошибок сервера**
            — Если сервер перегружен, возможно, он закрывает соединения.
            — Проверьте логи сервера 1С на предмет ошибок или аварийных завершений.
            — При необходимости увеличьте ресурсы сервера.

            4. **Дополнительные рекомендации:**
            — Если ошибка возникает периодически, возможно, проблема с сетью или нестабильностью сервера.
            — Если ошибка возникает сразу при подключении, скорее всего, сервер не запущен или порт закрыт.
            — Можно включить трассировку сетевого трафика (например, Wireshark) для детального анализа.

            5. **Пример проверки с клиента Windows:**

            Откройте командную строку и выполните:

            Если ping не проходит — проблема с именем или сетью. Если telnet не подключается — порт закрыт или сервер не слушает.

            6. **Если сервер 1С на Linux:**

            — Проверьте процессы ps aux | grep 1cv8srv
            — Проверьте логи в каталоге сервера 1С.
            — Перезапустите службу сервера.

            **Итог:** Ошибка «recv returns zero, disconnected» — это разрыв TCP-соединения сервером. Нужно проверить доступность сервера, правильность настроек подключения, состояние сервера 1С и сетевую инфраструктуру.

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

              Для использования PostgreSQL 14 с 1С:Предприятие 8.3 нужно учитывать, что официальная поддержка PostgreSQL 14 в 1С появилась только в более новых релизах платформы (начиная примерно с версии 8.3.20 и выше). Если у вас версия 1С ниже, то PostgreSQL 14 может не поддерживаться или работать нестабильно.

              Чтобы скачать PostgreSQL 14, адаптированный для 1С, рекомендую использовать сборки от Postgres Professional — они содержат необходимые патчи и оптимизации для 1С. Вот как это сделать:

              1. Перейдите на официальный сайт Postgres Professional по ссылке:
              https://postgrespro.ru/products/1c

              2. На странице выберите версию PostgreSQL 14 для 1С (там есть сборки для Windows и Linux).

              3. Для скачивания потребуется регистрация и доступ к разделу поддержки (обычно доступен для партнеров 1С или по подписке).

              4. Если у вас нет доступа к Postgres Professional, можно скачать vanilla PostgreSQL 14 с официального сайта:
              https://www.postgresql.org/download/
              Но для стабильной работы с 1С потребуется применить патчи от 1С или использовать сборки с патчами.

              5. Также можно скачать патчи и сборки PostgreSQL для 1С с сайта поддержки 1С (ITS) в разделе дистрибутивов:
              https://users.v8.1c.ru/distribution/
              Там иногда выкладывают версии PostgreSQL с патчами для 1С, но версии 14 может не быть, тогда лучше использовать PostgresPro.

              6. После установки PostgreSQL 14 с патчами от PostgresPro или 1С, настройте локали и параметры сервера согласно рекомендациям 1С для корректной работы.

              Если нужна именно бесплатная версия, то vanilla PostgreSQL 14 с официального сайта + самостоятельное применение патчей (если найдете) — но это сложнее и рискованнее.

              Резюме:
              — Лучший вариант — скачать PostgreSQL 14 с патчами для 1С от Postgres Professional на https://postgrespro.ru/products/1c
              — Альтернативно — vanilla PostgreSQL 14 с https://www.postgresql.org/download/ и патчи от 1С (если доступны)
              — Проверить совместимость версии 1С с PostgreSQL 14 (начиная с 8.3.20 поддержка есть)
              https://users.v8.1c.ru/distribution/
              https://www.postgresql.org/download/

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

                Тарас, привет!

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

                1. **Пересоздание или обновление отчета «Пояснения» вручную**
                — В конфигураторе найдите объект отчета «Пояснения» (или соответствующий регламентированный отчет).
                — Сохраните его как внешнюю обработку (Отчет).
                — Откройте внешний отчет в конфигураторе, зайдите в модуль объекта и проверьте, нет ли в коде устаревших или поврежденных участков.
                — Если есть подозрение на повреждение, можно удалить содержимое процедуры ПрименитьНастройку() или закомментировать её (как в решении для ошибки формата потока).
                — Сохраните и загрузите обратно в конфигурацию.
                — Запустите отчет в режиме предприятия, проверьте, исчезла ли ошибка.

                2. **Удаление временных файлов и кэша**
                — Закройте 1С.
                — Очистите папку временных файлов пользователя (обычно %TEMP% или папка с кэшем 1С).
                — Перезапустите 1С и попробуйте сформировать отчет заново.

                3. **Проверка и исправление базы данных**
                — Запустите 1С в режиме конфигуратора.
                — Выполните «Администрирование» → «Тестирование и исправление».
                — Это позволит выявить и исправить возможные повреждения метаданных или данных, которые могут влиять на формирование отчетов.

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

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

                6. **Использование режима «1С:Предприятие» с правами администратора**
                — Запустите 1С с правами администратора и попробуйте сформировать отчет. Иногда это помогает обойти проблемы с доступом к файлам.

                Если ни один из этих способов не помогает, то, к сожалению, без обновления платформы или конфигурации обойти ошибку сложно, так как она может быть вызвана несовместимостью версий или внутренними изменениями в структуре отчетов.
                https://infostart.ru/1c/articles/96618/ — там описан способ исправления ошибок формата потока и работы с отчетами.

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

                Удачи!

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

                  _Reference193 — это внутреннее системное имя (временное или постоянное) справочника, которое используется в базе 1С, когда конфигурация скомпилирована или выгружена в файл, а имена объектов не раскрыты в понятные человеку.

                  Чтобы точно узнать, какой справочник соответствует _Reference193, нужно:

                  1. В конфигураторе открыть конфигурацию.
                  2. В дереве объектов найти справочники.
                  3. В свойствах каждого справочника посмотреть его «Имя объекта» (оно может совпадать с _ReferenceXXX).
                  4. Либо открыть файл метаданных (например, в формате XML) и найти соответствие по имени.
                  5. Если есть доступ к базе, можно выполнить запрос к системной таблице метаданных, например:

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

                  В типовых конфигурациях _Reference193 часто соответствует справочнику «Подразделения» или «Контрагенты», но это не правило — зависит от конкретной конфигурации.

                  Если у вас есть доступ к базе, проще всего:

                  — В режиме 1С:Предприятие вызвать обработку «Отладчик» или «Конфигуратор».
                  — В окне «Объекты метаданных» найти справочник с именем объекта _Reference193.
                  — Или в режиме отладки посмотреть, к какому справочнику относится переменная с таким именем.

                  Если у вас есть файл конфигурации (.cf или .cfe), можно открыть его в текстовом редакторе и поискать «_Reference193» — рядом будет имя справочника.

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

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

                    Прямой отправки сообщений из 1С через API Telegram по протоколу MTProto — задача нетривиальная, потому что MTProto — это собственный, сложный протокол Telegram, который требует реализации клиентской логики шифрования, сессий, обмена ключами и т.п. В 1С нет готовых библиотек для работы с MTProto, и писать такую реализацию с нуля крайне сложно и нецелесообразно.

                    **Что реально и практично сделать из 1С:**

                    1. Использовать **HTTP API Telegram Bot** (https://core.telegram.org/bots/api) — это официальный и простой способ отправлять сообщения в Telegram из 1С. Он работает по HTTPS, не требует сложной криптографии, и для него достаточно токена бота и chat_id.

                    2. Если нужна именно работа с MTProto (например, для работы с аккаунтом пользователя, а не ботом), то обычно используют сторонние библиотеки на Python, Go, C# и т.п. (например, Telethon, MadelineProto). Из 1С можно запускать внешние процессы или веб-сервисы, которые уже реализуют MTProto, и взаимодействовать с ними через HTTP, COM, или файлы.

                    ### Почему MTProto из 1С — это сложно:

                    — MTProto — это двоичный протокол с несколькими уровнями шифрования.
                    — Требуется управление сессиями, ключами, обновлениями.
                    — Нет готовых 1С-библиотек или компонентов.
                    — Реализация с нуля — огромный объём работы и высокая вероятность ошибок.

                    ### Практическое решение — отправка сообщений через Telegram Bot API из 1С (пример):

                    ### Если принципиально нужен MTProto:

                    — Используйте внешние библиотеки MTProto (например, Telethon на Python).
                    — Запускайте их из 1С через внешние вызовы (например, через COM, внешние обработки, или HTTP-сервис).
                    — Обменивайтесь данными между 1С и внешним сервисом.

                    ### Итог:

                    — В 1С напрямую MTProto не реализовать без огромных усилий.
                    — Для отправки сообщений используйте Telegram Bot API по HTTPS.
                    — Если нужен MTProto — делайте мост через внешние сервисы.


                    https://infostart.ru/public/2131924/ — простой пример отправки сообщений из 1С в Telegram через Bot API.

                    Если нужна работа с MTProto — смотрите готовые библиотеки на Python (Telethon) или PHP (MadelineProto) и интегрируйте их с 1С через внешние вызовы.

                    Если нужна помощь с конкретным примером кода для Telegram Bot API в 1С — могу помочь. Но MTProto — это совсем другая история, и для 1С это не практично.

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

                      Сергей, приветствую!

                      В 1С:ERP для организации забалансового учета ТМЦ, которые после ремонта возвращаются на склад и хранятся за балансом предприятия, нужно выполнить комплекс настроек и организовать правильный документооборот. Ниже подробно описываю, как это сделать.

                      ### 1. Настройка счетов учета и справочников

                      #### 1.1. Создание забалансового счета учета ТМЦ

                      — В плане счетов бухгалтерского учета необходимо создать забалансовый счет для учета таких материалов. Обычно это счет 003 (или 004) — «Материалы на забалансовом учете». Если в вашей учетной политике есть отдельный счет для забалансового учета ТМЦ, используйте его, либо создайте новый, например:

                      — Счет: 003.01 — «Материалы на забалансовом учете»
                      — Тип счета: забалансовый
                      — Назначение: учет материалов, находящихся на хранении, но не являющихся собственностью предприятия

                      #### 1.2. Настройка видов запасов

                      — В справочнике «Виды запасов» создайте новый вид запаса, например, «Материалы на забалансовом учете» или «Материалы после ремонта (забалансовые)».

                      — В настройках вида запасов укажите:

                      — Счет учета: забалансовый счет, созданный на шаге 1.1
                      — Группа финансового учета: настройте так, чтобы отражение по счетам было на забалансовом счете
                      — Признак учета: «Забалансовый»

                      — Важно, чтобы этот вид запасов был доступен для выбора в документах движения ТМЦ.

                      #### 1.3. Настройка складов и мест хранения

                      — В справочнике «Склады» создайте отдельный склад или место хранения, предназначенное для хранения забалансовых материалов (например, «Склад забалансовых материалов»).

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

                      #### 1.4. Настройка номенклатуры

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

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

                      ### 2. Последовательность действий пользователей и оформление документов

                      #### 2.1. Приемка материалов после ремонта на забалансовый склад

                      — Документ: **Поступление товаров и услуг** или **Поступление материалов**

                      — В документе укажите:

                      — Организацию и склад — склад забалансовых материалов
                      — Вид запаса — «Материалы на забалансовом учете»
                      — Номенклатуру и количество материалов, возвращаемых после ремонта

                      — Проведение документа сформирует движение по забалансовому счету и отразит остатки на складе.

                      #### 2.2. Отслеживание остатков забалансовых материалов

                      — Используйте стандартные отчеты по остаткам и движениям ТМЦ с отбором по складу и виду запасов.

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

                      #### 2.3. Использование забалансовых материалов в ремонте или других операциях

                      — При необходимости использования материалов с забалансового склада оформляется документ **Перемещение товаров** или **Списание материалов** с указанием:

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

                      — Если материалы списываются непосредственно с забалансового склада (например, при использовании в ремонте), оформляется документ **Списание материалов** с видом запаса «Материалы на забалансовом учете».

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

                      #### 2.4. Отражение в бухгалтерском и налоговом учете

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

                      — При перемещении материалов с забалансового учета на балансовый — формируются проводки по счетам учета материалов (10, 41 и т.п.).

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

                      ### 3. Резюме по настройкам и документообороту

                      | Этап | Действие | Документ | Настройки |
                      |——-|———-|———-|————|
                      | 1 | Создание забалансового счета и вида запасов | План счетов, Виды запасов | Забалансовый счет, вид запаса с отражением на забалансовом счете |
                      | 2 | Создание склада для забалансовых материалов | Справочник Склады | Отдельный склад с учетом по видам запасов |
                      | 3 | Приемка материалов после ремонта | Поступление товаров и услуг | Склад забалансовый, вид запаса забалансовый |
                      | 4 | Отслеживание остатков | Отчеты по остаткам | Отбор по складу и виду запасов |
                      | 5 | Использование материалов | Перемещение товаров, Списание материалов | Перемещение с изменением вида запаса или списание с забалансового склада |
                      | 6 | Отражение в учете | Автоматически при проведении документов | Проводки по забалансовым и балансовым счетам |

                      ### Дополнительные рекомендации

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

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

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

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


                      https://infostart.ru/public/1145154/ — про виды запасов и их учет в 1С
                      https://infostart.ru/public/1116577/ — про бухгалтерские проводки и сторно в 1С:ERP

                      Если кратко — для забалансового учета ТМЦ после ремонта нужно создать отдельный забалансовый счет и вид запасов, выделить отдельный склад, принимать материалы на этот склад с видом запаса забалансовым, вести учет и остатки по складу и виду запаса, а при необходимости использовать материалы оформлять перемещения с изменением вида запаса или списания. Все движения отражаются в учете согласно настройкам видов запасов и счетов.

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

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

                        В режиме совместимости 8.2 при присвоении результата запроса реквизиту формы типа «ТаблицаЗначений» в серверной процедуре принудительно очищать объект результата запроса перед завершением процедуры не нужно.

                        Объяснение:
                        — Результат запроса — это временный объект, который после выхода из процедуры автоматически будет освобождён сборщиком мусора 1С.
                        — При присвоении результата запроса реквизиту формы происходит копирование данных в таблицу значений реквизита, и ссылка на исходный объект результата запроса в реквизите не сохраняется.
                        — Поэтому нет необходимости явно вызывать Очистить() или присваивать Неопределено для результата запроса в конце процедуры. Это не влияет на корректность работы и не улучшит производительность.

                        Если же вы хотите явно освободить память раньше, можно вызвать РезультатЗапроса = Неопределено, но это не обязательно и в режиме совместимости 8.2 не требуется.

                        (там описано управление жизненным циклом объектов и особенности работы с результатами запросов в разных режимах совместимости)

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

                          В режиме совместимости 8.2 срок жизни результата запроса ограничен временем жизни объекта Запрос и объекта Выборка, полученной из этого запроса. Результат запроса хранится в памяти до тех пор, пока существует объект Выборка или сам объект Запрос, который его породил.

                          Автоматической очистки результата запроса при завершении процедуры или функции не происходит, если объекты Запроса и Выборки остаются в области видимости (например, если они объявлены вне процедуры или переданы по ссылке). Если же объекты локальны и выходят из области видимости при завершении процедуры или функции, то они становятся недоступны, и память под результат освобождается сборщиком мусора.

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

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

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

                            Обоснование:

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

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

                            3. При переборе и обработке данных из запроса, если нет необходимости в бизнес-логике табличной части документа, лучше использовать «Таблицу значений» — это ускорит обработку и снизит нагрузку.

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

                            Итого: для перебора и обработки результата запроса — «Таблица значений», для хранения данных, связанных с документом и требующих бизнес-логики — «Таблица документа».
                            https://helpf.pro/faq/view/1847.html (рекомендации по работе с табличными частями и таблицами значений)

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

                              В режиме совместимости 8.2 при работе в толстом клиенте память используется по-разному в зависимости от способа получения результата запроса:

                              1. При использовании

                              происходит динамическая выборка данных. Это значит, что данные из результата запроса не загружаются полностью в память сразу, а считываются блоками по мере обхода выборки методом Следующий(). Такой подход позволяет экономить оперативную память, так как в памяти одновременно находится только часть данных, а не весь результат. При этом, если объем данных очень большой, платформа может временно сбрасывать часть данных на диск (в папку temp), чтобы не исчерпать память.

                              2. При использовании

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

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

                              Рекомендация: при работе с большими объемами данных в режиме совместимости 8.2 в толстом клиенте лучше использовать Выбрать() для обхода результата запроса, чтобы избежать чрезмерного потребления памяти.

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

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

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

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

                                3. **Выгрузка результата запроса в таблицу значений и загрузка в реквизит формы — таблицу документа**
                                Здесь происходит последовательность: сначала результат запроса формируется на сервере, передается клиенту, затем присваивается реквизиту формы, который является таблицей документа (например, табличная часть документа). Таблица документа — это реквизит формы, который хранится на клиенте. При этом данные в таблице документа хранятся в оперативной памяти клиента, и при изменениях они отражаются в интерфейсе. При сохранении документа данные из таблицы документа передаются обратно на сервер для записи в базу.

                                4. **Перебор результата запроса в цикле и заполнение реквизита таблицы значений или таблицы документа на форме**
                                При переборе результата запроса (который уже загружен в таблицу значений на клиенте) и заполнении реквизита формы (таблицы значений или таблицы документа) данные хранятся в оперативной памяти клиента. Цикл перебирает строки таблицы значений, и по каждой строке формирует или добавляет строки в реквизит формы. Все операции происходят на клиенте, без дополнительной передачи данных на сервер, что ускоряет работу. При этом реквизит формы обновляется и отображается в интерфейсе.

                                **Ключевые моменты:**

                                — В режиме совместимости 8.2 и толстом клиенте данные таблиц значений и реквизитов формы хранятся в оперативной памяти клиента.
                                — Результаты запросов формируются на сервере и передаются клиенту целиком (сериализация/десериализация).
                                — Таблицы документа — это реквизиты формы, которые живут на клиенте и синхронизируются с сервером при сохранении документа.
                                — При переборе и заполнении реквизитов формы все операции происходят на клиенте, что снижает нагрузку на сервер и сеть.
                                — В режиме 8.2 отсутствуют более современные механизмы оптимизации передачи данных, которые появились в 8.3 (например, частичная передача данных, оптимизация контекста формы).

                                Таким образом, в 8.2 толстом клиенте вся работа с таблицами значений и реквизитами формы — это обмен полными наборами данных между сервером и клиентом, с хранением данных в оперативной памяти клиента, что обеспечивает удобство и скорость работы при умеренных объемах данных, но может создавать нагрузку при больших объемах.
                                https://infostart.ru/public/304895/

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

                                  В 1С:СКАТ — Профессионал (обычная форма) при добавлении подсистемы в расширении и включении галочки «Включен в командный интерфейс» подсистема может не отображаться в шапке по нескольким причинам:

                                  1. **Отсутствие прав доступа на подсистему**
                                  Если у пользователя нет прав на подсистему, она не будет видна в интерфейсе, даже если галочка включена. В расширении нужно убедиться, что для подсистемы назначены права (роли), которые есть у текущего пользователя.

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

                                  3. **Командный интерфейс не обновлен или не настроен**
                                  В 1С 8.3 и СКАТ командный интерфейс строится на основе настроек подсистем и команд. Нужно проверить, что в командном интерфейсе подсистемы есть команды (обработки, отчеты), и что они тоже включены в командный интерфейс. Если команд нет, подсистема может не отображаться.

                                  4. **Подсистема скрыта в настройках интерфейса**
                                  В пользовательских настройках интерфейса (например, в настройках панели разделов) подсистема может быть скрыта. Проверьте настройки интерфейса пользователя.

                                  5. **Особенности работы с расширениями в СКАТ**
                                  В СКАТ расширения могут иметь ограничения по видимости подсистем. Иногда для отображения подсистемы из расширения требуется дополнительная регистрация или настройка в основном решении.

                                  **Как правильно сделать, чтобы подсистема отображалась:**

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

                                  **Пример:**

                                  В расширении:

                                  В основном решении (если требуется):

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

                                  — Назначить права.

                                  Если подсистема не появляется, проверьте:

                                  — Есть ли у пользователя права на подсистему и команды.
                                  — Включена ли подсистема в состав подсистем основного решения.
                                  — Есть ли команды в подсистеме.
                                  — Не скрыта ли подсистема в пользовательских настройках интерфейса.


                                  https://infostart.ru/public/148369/ — настройка командного интерфейса и видимость подсистем
                                  https://helpf.pro/faq8/view/740.html — работа с подсистемами и отчетами в 1С

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

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