Odin — Одинэсник

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

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

      Как создать внешнюю печатную форму расходной накладной с доп. полями?

      Здравствуйте!

      Для вашей задачи — внешняя печатная форма расходной накладной с дополнительными полями (адрес доставки, телефон, комментарий, ответственный менеджер, итоговый вес) — можно сделать следующее:

      1. **Добавление полей в печатную форму:**
      — Внешняя печатная форма создаётся на базе типовой или собственной формы расходной накладной.
      — В макете (например, в формате FastReport или в обработке внешней печатной формы) добавляются новые поля.
      — Поля «Адрес доставки», «Телефон», «Комментарий» обычно берутся из реквизитов документа или связанных справочников (например, адрес из контрагента или из реквизитов документа).
      — «Ответственный менеджер» — это обычно реквизит документа или связанный сотрудник.
      — «Итоговый вес (кг)» — рассчитывается суммированием веса всех позиций табличной части документа.

      2. **Где брать данные:**
      — Адрес доставки и телефон можно брать из реквизитов документа (если они есть) или из связанных с документом объектов (например, из адреса доставки контрагента).
      — Комментарий — реквизит документа.
      — Ответственный менеджер — реквизит документа (например, поле «Ответственный»).
      — Итоговый вес — сумма по табличной части, где в каждой позиции есть поле «Вес» или «Вес единицы» умноженное на количество.

      3. **Пример кода для расчёта итогового веса в модуле печатной формы:**

      4. **Пример вывода дополнительных полей в макете FastReport:**

      — В разделе «Данные» добавить переменные, например:
      — АдресДоставки = Документ.АдресДоставки
      — Телефон = Документ.Телефон
      — Комментарий = Документ.Комментарий
      — Ответственный = Документ.Ответственный.Наименование
      — ИтоговыйВес = рассчитанное значение

      — В макете разместить текстовые поля с этими переменными.

      5. **Если в типовой конфигурации нет нужных реквизитов:**
      — Добавьте дополнительные реквизиты в документ (через расширение или конфигуратор).
      — Заполните их в процессе работы с документом.
      — Используйте их в печатной форме.

      6. **Кто может разработать:**
      — Если у вас нет возможности сделать самостоятельно, рекомендую обратиться к профессиональным 1С-программистам.
      — Например, на популярных ресурсах (Infostart, 1C-Сообщество) можно найти исполнителей.
      — Также могу порекомендовать услуги разработчиков с сайта https://master1c8.ru/ — там есть специалисты, которые делают внешние печатные формы под заказ.

      7. **Готовые решения:**
      — Иногда на Infostart.ru или других ресурсах можно найти готовые внешние печатные формы с подобным функционалом, которые можно адаптировать под себя.

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

      https://master1c8.ru/obrabotki-i-ottchet/12639/ — пример внешней печатной формы с дополнительными колонками и реквизитами.

      https://infostart.ru/1c/articles/633085/ — пример создания комплекта внешних печатных форм.

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

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

      Если хотите, могу написать пример кода для внешней печатной формы на 1С (FastReport) с этими полями.

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

        Автоматизировать закрытие сеансов пользователей в 1С:Предприятие 8.3 с базой на SQL-сервере можно несколькими способами. Самый гибкий и рекомендуемый — использовать COM-объект v8.COMConnector для программного завершения сеансов через агент сервера 1С. Также можно применять стандартную обработку блокировки пользователей, скрипты остановки/запуска сервера или программное завершение работы пользователей из 1С.

        Кратко по методам:

        1. Через COM-объект агента сервера можно получить список сеансов и завершить все, кроме системных и текущего пользователя. Этот способ подходит для автоматизации и запуска по расписанию.

        2. Стандартная обработка «Блокировка работы пользователей» позволяет без программирования заблокировать базу для новых сеансов и завершить текущие.

        3. Скрипты Windows для остановки и запуска сервера 1С полностью отключают все базы, что не всегда удобно.

        4. В 1С можно написать процедуру, которая по времени завершает работу пользователей, вызывая ПрекратитьРаботуСистемы.

        СИНХРОН-КОД: в вопросе упомянуто «закрытие сеансов пользователей», а в финальном коде используется именно COM-объект v8.COMConnector и процедуры для завершения сеансов, а также скрипты остановки сервера и программное завершение работы пользователей.

        Ниже приведены примеры и шаблоны кода для каждого из описанных способов.

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

          Цвет из ЦветаСтиля.ReportGroup1BackColor обычно не является абсолютным цветом (RGB), а представляет собой цвет в виде WebЦвета или ЭлементаСтиля. Чтобы получить абсолютный цвет, нужно выполнить конвертацию.

          Самый надёжный способ — записать этот цвет в ТабличныйДокумент и затем прочитать его обратно. При этом цвет преобразуется в абсолютный вид.

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

          Пример использования:

          В результате вы получите объект Цвет с видом Абсолютный и доступными компонентами RGB.

          Если вам нужна строка в HEX-формате, можно дополнительно получить её из абсолютного цвета так:

          Итог: цвет из ЦветаСтиля не абсолютный, но с помощью записи и чтения через ТабличныйДокумент можно получить абсолютный цвет и работать с его RGB-компонентами.

          # Кратко:
          — Цвет из ЦветаСтиля — не абсолютный
          — Записать цвет в ТабличныйДокумент и прочитать обратно — получите абсолютный цвет
          — Используйте приведённую функцию ПолучитьАбсолютныйЦвет для конвертации.

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

            ЦветаСтиля.ReportGroup1BackColor — это один из предопределённых цветов в объекте «ЦветаСтиля» в 1С, который используется для оформления групп в отчетах. Конкретно ReportGroup1BackColor задаёт цвет фона первой группы в отчёте.

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

            Если нужно узнать точное значение цвета (RGB), можно получить его программно, например:

            Или, если нужно получить RGB компоненты:

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

            Рекомендую посмотреть документацию по объекту ЦветаСтиля и настройкам корпоративного стиля в 1С:
            https://wonderland.v8.1c.ru/blog/podderzhka-korporativnogo-stilya/

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

              В 1С цвета из ЦветаСтиля (например, ЦветаСтиля.ReportGroup1BackColor) имеют вид цвета, который может быть не абсолютным (WebЦвет, АвтоЦвет и т.п.). Чтобы получить абсолютный цвет (RGB), нужно конвертировать этот цвет.

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

              Пример функции для получения абсолютного цвета из любого цвета (взято и адаптировано из публикации AlexxSys):

              Далее в вашем коде заменяете:

              на

              Таким образом, вы гарантированно получите абсолютный цвет (RGB), который корректно отобразится в оформлении.

              Если функция ПолучитьАбсолютныйЦвет у вас уже есть, просто используйте её. Если нет — добавьте приведённый код.

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

                Код в целом рабочий, но есть несколько рекомендаций и замечаний по улучшению и повышению надежности, читаемости и производительности:

                1. Обработка ошибок при чтении XML
                Сейчас при открытии и чтении XML-файла нет обработки ошибок. Если файл поврежден или невалиден, будет ошибка.
                Рекомендую обернуть чтение в Попытка...Исключение и выводить понятное сообщение пользователю.

                2. Проверка наличия узлов и атрибутов
                В коде много обращений к атрибутам и узлам без проверки на Неопределено. Лучше добавить проверки, чтобы избежать ошибок.
                Например:

                3. Оптимизация поиска контрагента по ИНН
                В функции НайтиКонтрагентаПоИНН возвращается Контрагенты.Партнер.Ссылка. Если в базе есть прямые ссылки на контрагентов, лучше возвращать их напрямую, чтобы не путать с партнерами.
                Также можно добавить индекс по ИНН в справочник для ускорения поиска.

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

                5. Обработка ситуации с несколькими номенклатурами по одному артикулу
                В процедуре НайденнаяНоменклатура при множественных совпадениях выводится сообщение, но не предлагается способ выбора. Можно добавить форму выбора номенклатуры пользователем.

                6. Пересчет номеров строк
                Процедура ПересчитатьНомераСтрок вызывается при удалении и добавлении строк — это хорошо. Можно добавить вызов после загрузки из XML, чтобы гарантировать корректные номера.

                7. Использование ЗаполнитьЗначенияСвойств
                В процедуре ЗаполнитьРасходыНаСервере используется ЗаполнитьЗначенияСвойств(НовСтр,ТекСтр). Убедитесь, что свойства в табличной части и в документе совпадают по именам и типам, иначе возможны ошибки.

                8. Закрытие формы после заполнения
                В процедуре ЗаполнитьЗаказ вызывается Закрыть(). Если это метод формы, то всё ок, но лучше явно указать ЭтотОбъект.ВладелецФормы.Закрыть(), чтобы не было путаницы.

                9. Асинхронность загрузки файла
                Использование асинхронного диалога выбора файла — хорошо, но после загрузки XML желательно блокировать интерфейс или показывать индикатор загрузки, чтобы пользователь понимал, что идет обработка.

                10. Кодировка файла
                При открытии XML файла через ЧтениеXML.ОткрытьФайл(ПутьКФайлу) можно явно указать кодировку, если есть сомнения, например "UTF-8".

                11. Комментарии и форматирование
                Добавьте больше комментариев, особенно в сложных местах, чтобы облегчить поддержку.
                Также можно разбить длинные процедуры на более мелкие.

                12. Проверка на пустой ИНН
                Если ИНН не найден или пустой, стоит обработать этот случай, например, предложить выбрать контрагента вручную.

                13. Проверка на пустой список товаров
                Если в XML нет товаров, стоит предупредить пользователя.

                14. Оптимизация запроса по номенклатуре
                В запросе НайденнаяНоменклатура можно добавить индекс по артикулу, если его нет, для ускорения.

                15. Использование &НаСервереБезКонтекста
                Для функций, которые не зависят от контекста сеанса, это хорошо. Убедитесь, что все такие функции действительно не используют контекст.

                Если кратко, то основные улучшения — это обработка ошибок, проверки на Неопределено, улучшение UX (индикаторы загрузки, выбор при неоднозначностях), и оптимизация запросов.

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

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

                  Чтобы реквизиты «Номер кассы», «Номер z-отчета», «Номер чека» были видны только при выборе переключателя «Данные из Артикса», нужно управлять свойством Видимость этих реквизитов в форме отчёта.

                  Алгоритм:

                  1. В форме отчёта у вас есть переключатель (RadioButton) с двумя вариантами:
                  — «Сравнение данных из Супермага и Артикса»
                  — «Данные из Артикса»

                  2. Для переключателя создайте реквизит (например, ПереключательДанных), который будет принимать значения, например, 0 и 1.

                  3. Для реквизитов «Номер кассы», «Номер z-отчета», «Номер чека» в форме установите свойство Видимость (Visible) через выражение, зависящее от значения переключателя.

                  Пример:

                  — Допустим, переключатель связан с реквизитом формы ПереключательДанных, где:
                  — 0 — «Сравнение данных из Супермага и Артикса»
                  — 1 — «Данные из Артикса»

                  — Тогда для каждого из трёх реквизитов в форме в свойстве Видимость укажите:

                  Или в модуле формы:

                  Где ПереключательДанных — имя реквизита, связанного с переключателем, а НомерКассы, НомерZОтчета, НомерЧека — имена элементов формы с этими реквизитами.

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

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

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

                  И аналогично для другой радиокнопки.

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

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

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

                    В 1С:Бухгалтерия 7.09 (версия 7.70.027) данные об основных средствах с драгоценными металлами обычно хранятся в справочнике «Основные средства» с реквизитами, которые могут содержать информацию о составе металлов, весе и стоимости драгоценных металлов.

                    Чтобы получить данные о драгоценных металлах основных средств, нужно:

                    1. Открыть конфигуратор 1С 7.7.
                    2. Найти справочник «Основные средства» (обычно это «Справочники» -> «Основные средства»).
                    3. Посмотреть структуру справочника, есть ли реквизиты или табличные части, связанные с драгоценными металлами (например, «Драгметаллы», «Вес», «Состав», «Стоимость драгметаллов»).
                    4. Если есть табличная часть с драгметаллами, то данные там хранятся по каждой позиции металла.

                    Для выгрузки данных из базы можно использовать запрос или обработку.

                    Пример запроса 1С 7.7 (в синтаксисе 7.7) для получения основных средств с драгметаллами (если есть табличная часть «Драгметаллы»):

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

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

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

                    Рекомендую посмотреть здесь, где обсуждают учет драгметаллов в 1С 7.7:

                    https://infostart.ru/public/84763/ (пример работы со справочниками и выгрузкой данных)

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

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

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

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

                        Конфигурация «Управление Фирмой Аутсорсером» (УФА) — специализированное решение для автоматизации аутсорсинговых компаний, построенное на платформе 1С:Предприятие 8.3. В ней есть свои справочники, документы и регистры, специфичные для аутсорсинга.

                        Для создания отчета в УФА нужно понимать, какие данные хотите получить. Например:

                        — Список клиентов (контрагентов) с контактами и договорами
                        — Отчет по выполненным услугам за период
                        — Анализ по сотрудникам и их загрузке
                        — Финансовые показатели: счета, оплаты, задолженности

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

                        Пример простого отчета на СКД для УФА — список клиентов с контактами:

                        |ВЫБРАТЬ
                        | Контрагенты.Ссылка КАК Ссылка,
                        | Контрагенты.Наименование КАК Наименование,
                        | Контрагенты.ИНН КАК ИНН,
                        | Контрагенты.Телефон КАК Телефон
                        |ИЗ
                        | Справочник.Контрагенты КАК Контрагенты
                        |ГДЕ
                        | Контрагенты.ЭтоГруппа = ЛОЖЬ

                        Этот запрос можно использовать в СКД для построения отчета.

                        Если нужно, могу помочь с кодом отчета на встроенном языке 1С или с настройкой СКД в УФА. Пишите, что именно хотите видеть в отчете.

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

                          Могу помочь с созданием отчета в 1С, но нужно уточнить:

                          1. Какая конфигурация 1С (Управление торговлей, Бухгалтерия, Зарплата и т.п.)?
                          2. Какие данные нужно вывести в отчете? (например, остатки товаров, продажи, сотрудники и т.д.)
                          3. Какие параметры отбора нужны? (период, организация, контрагент и т.п.)
                          4. Какой тип отчета: простой табличный, с группировками, с графиками?
                          5. Нужно ли использовать СКД (Схему Компоновки Данных) или писать запрос и выводить табличный документ вручную?

                          Если дашь эти данные, сделаю пример кода и объясню, как его внедрить. Без конкретики — только общий шаблон.

                          Если хочешь, могу сразу привести пример простого отчета на СКД с выборкой из справочника или регистра. Напиши, что именно нужно.

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

                            Причина в том, что метод Параметры.Заполнить() области табличного документа не умеет принимать объект типа Соответствие. Он ожидает либо структуру, либо строку таблицы значений, либо объект с открытыми свойствами (например, структуру).

                            В вашем коде вы создаёте Итоги как Новый Соответствие, а потом пытаетесь передать его в Заполнить — это не сработает.

                            Чтобы исправить, замените Соответствие на Структуру:

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

                            Если хотите, можно проверить тип параметров области через Отладчик или через:

                            И убедиться, что это именно Структура.

                            Итого: замените Соответствие на Структуру — и область подвала заполнится корректно.

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

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

                              Подробности:

                              1. Файловая база (1CD)
                              — При внезапном отключении питания возможна потеря последних записей, которые не успели сохраниться на диск.
                              — Файловая база может повредиться, что приведёт к ошибкам при открытии или работе с базой.
                              — Восстановить можно через утилиту chdbfl.exe или через «Тестирование и исправление» в конфигураторе, но гарантий полного восстановления нет.
                              — Рекомендую регулярно делать резервные копии и хранить их отдельно.

                              2. Серверная база (MS SQL, PostgreSQL и др.)
                              — Современные СУБД используют журналы транзакций, которые позволяют при аварийном отключении восстановить базу до последнего консистентного состояния.
                              — Однако если отключение произошло в момент критической операции, возможна потеря последних транзакций, которые не были зафиксированы.
                              — В редких случаях база может перейти в повреждённое состояние (например, Suspect Mode в MS SQL), тогда требуется восстановление с помощью специальных процедур (EMERGENCY режим, DBCC checkdb и т.п.).
                              — Важно настроить корректное резервное копирование и мониторинг состояния сервера.

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

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

                              Рекомендую посмотреть здесь:
                              https://infostart.ru/1c/articles/187832/ — про восстановление файловых баз
                              https://infostart.ru/1c/articles/59520/ — про восстановление SQL баз в Suspect Mode

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

                                Здравствуйте! Да, конечно, можете задавать вопросы по бухгалтерскому учету, связанному с 1С. Помогу с разъяснениями, настройками, пониманием учета в 1С и связью с бухгалтерскими правилами.

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

                                  Для увеличения лимита на загрузку файлов (POST-запросов) в IIS через web.config нужно настроить два основных параметра:

                                  1. maxAllowedContentLength — максимальный размер содержимого запроса в байтах (ограничение IIS).
                                  2. maxRequestLength — максимальный размер запроса в килобайтах (ограничение ASP.NET).

                                  Пример корректного web.config с увеличенными лимитами (например, до 500 МБ):

                                  Объяснение:

                                  — maxRequestLength в секции system.web/httpRuntime — ограничение ASP.NET, указывается в килобайтах.
                                  — executionTimeout — время ожидания выполнения запроса в секундах, увеличено для больших загрузок.
                                  — maxAllowedContentLength в секции system.webServer/security/requestFiltering/requestLimits — ограничение IIS, указывается в байтах.

                                  После внесения изменений нужно перезапустить пул приложений или IIS.

                                  Если у вас 64-битный IIS и 32-битное приложение, убедитесь, что в пуле приложений разрешены 32-битные приложения (Enable 32-bit Applications = True).

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