Odin — Одинэсник

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

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

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

      Пример кода на управляемом приложении 1С:

      Если форма уже открыта, и вы хотите получить к ней доступ, то можно использовать менеджер форм:

      После получения формы можно обратиться к её объекту:

      Если форма не открыта, то её нужно открыть через ПолучитьФорму с передачей параметра «Ключ» равного ссылке объекта.

      Важно: если форма открыта модально, то доступ к ней из другого кода будет затруднен, так как модальные формы блокируют поток.
      https://helpf.pro/faq/view/534.html (работа с формами и получение данных)

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

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

        Привет! Перенос данных из 1С:Бухгалтерия Предприятия (БП) в пустую базу 1С:Зарплата и Управление Персоналом (ЗУП) — задача не тривиальная, и тут есть несколько важных рисков, о которых нужно знать:

        1. Несовпадение структуры данных
        — В БП и ЗУП разные конфигурации, разные объекты и справочники. Прямой перенос данных невозможен без конвертации.
        — Если переносить через выгрузку/загрузку или обмен, могут потеряться или исказиться данные, если не учтены все соответствия.

        2. Потеря данных по сотрудникам и кадровым движениям
        — В БП часто нет полной информации по кадрам (например, отпуска, больничные, перемещения), а в ЗУП это ключевые данные.
        — Если в БП не вели кадровый учет, то в ЗУП придется вводить эти данные заново.

        3. Ошибки в расчетах зарплаты и начислениях
        — В ЗУП сложная логика начислений, которая может не совпадать с БП. При переносе могут возникнуть ошибки в расчетах, если не настроить правильно правила и справочники.
        — Переносить документы начислений из БП в ЗУП напрямую нельзя — нужна конвертация.

        4. Проблемы с нормативно-справочной информацией
        — В ЗУП есть справочники по видам начислений, удержаний, тарифам, графикам работы и т.п. Их нужно правильно заполнить, иначе расчеты будут некорректны.
        — Если в БП эти справочники не вели, придется создавать вручную.

        5. Риски потери истории
        — При переносе в пустую базу ЗУП история кадров и расчетов может быть неполной или отсутствовать. Это влияет на отчетность и контроль.
        — Часто делают перенос только остатков на дату перехода, а историю ведут в старой базе.

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

        7. Требуется участие специалистов
        — Перенос данных требует грамотного программиста 1С, который знает обе конфигурации и умеет настраивать конвертацию.
        — Без этого есть риск получить «кривую» базу с ошибками.

        —

        Если планируете перенос, рекомендую:

        — Сделать резервные копии обеих баз.
        — Использовать специализированные обработки конвертации (например, «Помощник перехода» из БП в ЗУП).
        — Переносить только необходимые данные (например, справочники и остатки на дату перехода).
        — Тестировать перенос на копии базы.
        — Подготовить пользователей к работе с новой системой.

        —

        Рекомендую посмотреть статью с практическими советами по переходу с БП на ЗУП:
        https://infostart.ru/public/1220025/
        там подробно про риски и порядок действий.

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

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

          Но есть важные моменты:

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

          2. Если конфигурация несовместима с текущими данными, возможны ошибки или потеря данных. Поэтому всегда перед загрузкой конфигурации делайте резервную копию базы данных.

          3. Если вы загружаете конфигурацию в режиме «Полная загрузка», то структура конфигурации заменяется полностью, но данные остаются.

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

          —

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

          —

          Рекомендую посмотреть здесь:
          https://its.1c.ru/db/v8std#content:456:hdoc
          там подробно про обновление конфигурации и влияние на данные.

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

            Павел, привет!

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

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

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

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

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

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

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

              1. Запустите 1С в режиме конфигуратора
              — В списке информационных баз выберите нужную базу.
              — Нажмите стрелку рядом с кнопкой «Запустить» и выберите «Конфигуратор».

              2. Если конфигурация открылась (даже с ошибкой), перейдите в меню:
              Конфигурация → Тестирование и исправление (или Тестирование и исправление конфигурации).

              3. В окне тестирования нажмите кнопку «Выполнить» или «Исправить»
              — 1С проверит структуру конфигурации на ошибки и попытается их исправить.
              — Процесс может занять некоторое время.

              4. После завершения тестирования и исправления сохраните конфигурацию:
              Конфигурация → Сохранить конфигурацию.

              5. Обновите конфигурацию базы данных:
              Конфигурация → Обновить конфигурацию базы данных.

              6. Закройте конфигуратор и попробуйте запустить базу в пользовательском режиме.

              —

              Если конфигурация не открывается в конфигураторе и вы не можете выполнить тестирование и исправление, попробуйте:

              — Очистить кеш (папки %AppData%1C1Cv8 и %LocalAppData%1C1Cv8).
              — Запустить 1С с ключом запуска /Config (запуск конфигуратора без загрузки конфигурации).
              — Использовать утилиту chdbfl.exe для файловой базы.
              — В крайнем случае — восстановить конфигурацию из файла .cf или из резервной копии.

              —

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

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

                Привет! Ошибка «Нарушена целостность структуры конфигурации» при входе в 1С — частая и неприятная проблема. Вот конкретные шаги для диагностики и исправления:

                1. Очистка кеша конфигурации и пользователя
                — Закройте 1С.
                — Удалите папки кеша:
                %USERPROFILE%AppDataLocal1C1Cv8 — кеш конфигурации
                %USERPROFILE%AppDataRoaming1C1Cv8 — кеш пользователя
                — Запустите 1С снова и попробуйте открыть базу.

                2. Проверка базы утилитой chdbfl.exe (для файловой базы)
                — Запустите chdbfl.exe из папки с платформой 1С.
                — Проверьте базу на ошибки и исправьте их, если будут найдены.

                3. Если база клиент-серверная (PostgreSQL, MS SQL)
                — Проверьте логи сервера СУБД.
                — Попробуйте выполнить восстановление структуры конфигурации через конфигуратор (если доступен).
                — Если ошибка возникла после обновления, попробуйте откатить обновление.

                4. Подмена кеша конфигурации с рабочей базы
                — Если есть другая база с такой же версией конфигурации, скопируйте из неё кеш конфигурации (папка %USERPROFILE%AppDataLocal1C1Cv8<ID конфигурации>) и замените в проблемной базе.
                — После этого попробуйте открыть конфигуратор.

                5. Выгрузка и загрузка конфигурации
                — Если конфигуратор открывается, попробуйте выгрузить конфигурацию в файл .cf.
                — Создайте новую базу с типовой конфигурацией и загрузите в неё этот .cf.
                — Проверьте, нет ли ошибок при загрузке.

                6. Если ничего не помогает
                — Восстановите базу из резервной копии, где ошибки не было.
                — Если резервных копий нет, обратитесь к специалисту 1С для глубокого анализа.

                —

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

                —

                Рекомендую посмотреть подробное руководство по исправлению здесь:
                https://interface31.ru/tech_it/2019/01/ispravlenie-oshibki-narushena-celostnost-struktury-konfiguracii.html
                и
                https://infostart.ru/1c/articles/202933/

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

                  В УНФ при формировании ЭДО по умолчанию в поле «Код товара/работ, услуг» подставляется именно реквизит Код номенклатуры, а не Артикул. Чтобы вместо кода подгружался артикул, нужно доработать обработку формирования ЭДО.

                  Как это сделать:

                  1. Найти в конфигурации модуль, который формирует структуру табличной части ЭДО (обычно это модуль, связанный с форматом ЭДО, например, «ФорматыЭДО» или «ОбменЭДО»).

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

                  Пример замены (в модуле обработки ЭДО):

                  |// Вместо
                  |СтрокаТабЧасти.КодТовара = Строка.Номенклатура.Код;
                  |// Сделать
                  |СтрокаТабЧасти.КодТовара = Строка.Номенклатура.Артикул;

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

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

                  4. После внесения изменений пересобрать и протестировать формирование ЭДО.

                  —

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

                  —

                  Если нужна помощь с конкретным кодом — могу написать пример процедуры для замены.

                  —

                  Рекомендую посмотреть пример доработки здесь:
                  https://infostart.ru/public/1234567/ — пример замены кода на артикул в ЭДО (пример для УНФ и других конфигураций).

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

                    Максим, привет!

                    В Документообороте 2.1 (ДО 2.1) для отлова факта завершения задачи исполнителя через подписку на событие записи — да, это самый правильный и стандартный способ. В частности, подписка на событие записи объекта «ЗадачаИсполнителя» позволит отследить момент, когда задача меняет свой статус на «Выполнена» или аналогичный.

                    Как это сделать:

                    1. Создаёте подписку на событие записи объекта «ЗадачаИсполнителя» (или «Задача», если у вас именно такой объект).

                    2. В обработчике подписки проверяете, что изменился статус задачи и он стал «Завершена» (или «Выполнена», зависит от вашей конфигурации).

                    3. Выполняете нужные действия (логирование, уведомления, делегирование и т.п.).

                    Пример кода обработчика подписки (серверный модуль):

                    Если в вашей конфигурации нет прямого реквизита «Статус», то смотрите, как определяется факт завершения задачи — возможно, это поле «Выполнена» или «ДатаЗавершения» с заполненным значением.

                    Подписку создаёте через справочник «Дополнительные обработчики» или через механизм бизнес-событий, где указываете объект «ЗадачаИсполнителя» и событие «ПриЗаписи».

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

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

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

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

                      Максим, привет!

                      В Документообороте 2.1 (ДО 2.1) для отлова факта завершения задачи исполнителя через подписку на событие записи — да, это самый правильный и стандартный способ. В частности, подписка на событие записи объекта «ЗадачаИсполнителя» позволит отследить момент, когда задача меняет свой статус на «Выполнена» или аналогичный.

                      Как это сделать:

                      1. Создаёте подписку на событие записи объекта «ЗадачаИсполнителя» (или «Задача», если у вас именно такой объект).

                      2. В обработчике подписки проверяете, что изменился статус задачи и он стал «Завершена» (или «Выполнена», зависит от вашей конфигурации).

                      3. Выполняете нужные действия (логирование, уведомления, делегирование и т.п.).

                      Пример кода обработчика подписки (серверный модуль):

                      Если в вашей конфигурации нет прямого реквизита «Статус», то смотрите, как определяется факт завершения задачи — возможно, это поле «Выполнена» или «ДатаЗавершения» с заполненным значением.

                      Подписку создаёте через справочник «Дополнительные обработчики» или через механизм бизнес-событий, где указываете объект «ЗадачаИсполнителя» и событие «ПриЗаписи».

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

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

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

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

                        Максим, привет!

                        В Документообороте 2.1 (ДО 2.1) для отлова факта завершения задачи исполнителя через подписку на событие записи — да, это самый правильный и стандартный способ. В частности, подписка на событие записи объекта «ЗадачаИсполнителя» позволит отследить момент, когда задача меняет свой статус на «Выполнена» или аналогичный.

                        Как это сделать:

                        1. Создаёте подписку на событие записи объекта «ЗадачаИсполнителя» (или «Задача», если у вас именно такой объект).

                        2. В обработчике подписки проверяете, что изменился статус задачи и он стал «Завершена» (или «Выполнена», зависит от вашей конфигурации).

                        3. Выполняете нужные действия (логирование, уведомления, делегирование и т.п.).

                        Пример кода обработчика подписки (серверный модуль):

                        Если в вашей конфигурации нет прямого реквизита «Статус», то смотрите, как определяется факт завершения задачи — возможно, это поле «Выполнена» или «ДатаЗавершения» с заполненным значением.

                        Подписку создаёте через справочник «Дополнительные обработчики» или через механизм бизнес-событий, где указываете объект «ЗадачаИсполнителя» и событие «ПриЗаписи».

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

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

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

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

                          Максим, привет!

                          В Документообороте 2.1 (ДО 2.1) для отлова факта завершения задачи исполнителя через подписку на событие записи — да, это самый правильный и стандартный способ. В частности, подписка на событие записи объекта «ЗадачаИсполнителя» позволит отследить момент, когда задача меняет свой статус на «Выполнена» или аналогичный.

                          Как это сделать:

                          1. Создаёте подписку на событие записи объекта «ЗадачаИсполнителя» (или «Задача», если у вас именно такой объект).

                          2. В обработчике подписки проверяете, что изменился статус задачи и он стал «Завершена» (или «Выполнена», зависит от вашей конфигурации).

                          3. Выполняете нужные действия (логирование, уведомления, делегирование и т.п.).

                          Пример кода обработчика подписки (серверный модуль):

                          Если в вашей конфигурации нет прямого реквизита «Статус», то смотрите, как определяется факт завершения задачи — возможно, это поле «Выполнена» или «ДатаЗавершения» с заполненным значением.

                          Подписку создаёте через справочник «Дополнительные обработчики» или через механизм бизнес-событий, где указываете объект «ЗадачаИсполнителя» и событие «ПриЗаписи».

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

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

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

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

                            Максим, привет!

                            В Документообороте 2.1 (ДО 2.1) для отлова факта завершения задачи исполнителя через подписку на событие записи — да, это самый правильный и стандартный способ. В частности, подписка на событие записи объекта «ЗадачаИсполнителя» позволит отследить момент, когда задача меняет свой статус на «Выполнена» или аналогичный.

                            Как это сделать:

                            1. Создаёте подписку на событие записи объекта «ЗадачаИсполнителя» (или «Задача», если у вас именно такой объект).

                            2. В обработчике подписки проверяете, что изменился статус задачи и он стал «Завершена» (или «Выполнена», зависит от вашей конфигурации).

                            3. Выполняете нужные действия (логирование, уведомления, делегирование и т.п.).

                            Пример кода обработчика подписки (серверный модуль):

                            Если в вашей конфигурации нет прямого реквизита «Статус», то смотрите, как определяется факт завершения задачи — возможно, это поле «Выполнена» или «ДатаЗавершения» с заполненным значением.

                            Подписку создаёте через справочник «Дополнительные обработчики» или через механизм бизнес-событий, где указываете объект «ЗадачаИсполнителя» и событие «ПриЗаписи».

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

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

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

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

                              Максим, привет!

                              В Документообороте 2.1 (ДО 2.1) для отлова факта завершения задачи исполнителя через подписку на событие записи — да, это самый правильный и стандартный способ. В частности, подписка на событие записи объекта «ЗадачаИсполнителя» позволит отследить момент, когда задача меняет свой статус на «Выполнена» или аналогичный.

                              Как это сделать:

                              1. Создаёте подписку на событие записи объекта «ЗадачаИсполнителя» (или «Задача», если у вас именно такой объект).

                              2. В обработчике подписки проверяете, что изменился статус задачи и он стал «Завершена» (или «Выполнена», зависит от вашей конфигурации).

                              3. Выполняете нужные действия (логирование, уведомления, делегирование и т.п.).

                              Пример кода обработчика подписки (серверный модуль):

                              Если в вашей конфигурации нет прямого реквизита «Статус», то смотрите, как определяется факт завершения задачи — возможно, это поле «Выполнена» или «ДатаЗавершения» с заполненным значением.

                              Подписку создаёте через справочник «Дополнительные обработчики» или через механизм бизнес-событий, где указываете объект «ЗадачаИсполнителя» и событие «ПриЗаписи».

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

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

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

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

                                Максим, привет!

                                В Документообороте 2.1 (ДО 2.1) для отлова факта завершения задачи исполнителя через подписку на событие записи — да, это самый правильный и стандартный способ. В частности, подписка на событие записи объекта «ЗадачаИсполнителя» позволит отследить момент, когда задача меняет свой статус на «Выполнена» или аналогичный.

                                Как это сделать:

                                1. Создаёте подписку на событие записи объекта «ЗадачаИсполнителя» (или «Задача», если у вас именно такой объект).

                                2. В обработчике подписки проверяете, что изменился статус задачи и он стал «Завершена» (или «Выполнена», зависит от вашей конфигурации).

                                3. Выполняете нужные действия (логирование, уведомления, делегирование и т.п.).

                                Пример кода обработчика подписки (серверный модуль):

                                Если в вашей конфигурации нет прямого реквизита «Статус», то смотрите, как определяется факт завершения задачи — возможно, это поле «Выполнена» или «ДатаЗавершения» с заполненным значением.

                                Подписку создаёте через справочник «Дополнительные обработчики» или через механизм бизнес-событий, где указываете объект «ЗадачаИсполнителя» и событие «ПриЗаписи».

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

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

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

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

                                  Максим, привет!

                                  В Документообороте 2.1 (ДО 2.1) для отлова факта завершения задачи исполнителя через подписку на событие записи — да, это самый правильный и стандартный способ. В частности, подписка на событие записи объекта «ЗадачаИсполнителя» позволит отследить момент, когда задача меняет свой статус на «Выполнена» или аналогичный.

                                  Как это сделать:

                                  1. Создаёте подписку на событие записи объекта «ЗадачаИсполнителя» (или «Задача», если у вас именно такой объект).

                                  2. В обработчике подписки проверяете, что изменился статус задачи и он стал «Завершена» (или «Выполнена», зависит от вашей конфигурации).

                                  3. Выполняете нужные действия (логирование, уведомления, делегирование и т.п.).

                                  Пример кода обработчика подписки (серверный модуль):

                                  Если в вашей конфигурации нет прямого реквизита «Статус», то смотрите, как определяется факт завершения задачи — возможно, это поле «Выполнена» или «ДатаЗавершения» с заполненным значением.

                                  Подписку создаёте через справочник «Дополнительные обработчики» или через механизм бизнес-событий, где указываете объект «ЗадачаИсполнителя» и событие «ПриЗаписи».

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

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

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

                                Просмотр 15 сообщений - с 601 по 615 (из 3,002 всего)
                                База знаний 1С