Odin — Одинэсник

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

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

      .dylib — это динамическая библиотека в macOS (аналог .dll в Windows). Если нужно изменить содержимое .dylib, то это не просто «открыть и править», а работа с бинарным файлом.

      Что можно сделать:

      1. Декомпиляция / дизассемблирование
      — Используйте инструменты типа otool (встроенный в macOS) для просмотра содержимого и зависимостей:

      — Для дизассемблирования можно использовать Hopper, IDA Pro, Ghidra или radare2. Это позволит посмотреть ассемблерный код и понять логику.

      2. Редактирование
      — Прямое редактирование бинарного .dylib — сложная задача, требует знаний ассемблера и структуры Mach-O (формат исполняемых файлов в macOS).
      — Можно использовать hex-редакторы (например, 0xED, Hex Fiend) для правки байтов, но это подходит только для мелких исправлений (например, замена строк или патчинг байт).

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

      4. Изменение ресурсов внутри .dylib
      — Если внутри .dylib есть встроенные ресурсы (например, строки, изображения), можно попытаться извлечь их с помощью специальных утилит, изменить и собрать обратно, но это нетривиально.

      5. Инструменты для работы с Mach-O
      install_name_tool — для изменения путей зависимостей внутри .dylib.
      codesign — для подписи изменённых библиотек (важно для работы в macOS с защитой).

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

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

      Рекомендую посмотреть здесь:
      https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/MachORuntime/Articles/introduction.html
      https://infostart.ru/public/1152528/ (по работе с бинарными файлами в 1С, если нужно интегрировать)

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

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

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

        В 1С имена объектов метаданных чувствительны к регистру и должны точно совпадать с именем в конфигураторе.

        Например, если в конфигураторе документ называется «ЗаказПокупателя», то в коде нужно писать именно так, без пробелов и с правильным регистром.

        Проверьте в вашем коде:

        Если вы пишете так:

        то это тоже корректно, но если имя написано с ошибкой, например, «ЗаказПокупателя » (с пробелом) или «ЗаказПокупатель» — будет ошибка.

        Если ошибка возникает в строке:

        то возможно:

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

        Что делать:

        1. Проверьте точное имя документа в конфигураторе (в дереве метаданных).

        2. Используйте обращение через индексатор, чтобы избежать ошибок с именем:

        3. Если имя документа приходит в виде строки, используйте именно индексатор.

        4. Если вы используете динамическое имя, то так:

        5. Проверьте, что переменная МетаданныеДокумента не равна Неопределено перед использованием.

        Пример исправленного кода:

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

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

          Если у вас 1С:Фреш и настроена стандартная синхронизация между УНФ и ЗУП, то схема работы и используемые документы примерно такие:

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

          2. В 1С:ЗУП (Зарплата и управление персоналом)
          — Для начисления зарплаты используется документ Начисление зарплаты (или ведомость на выплату зарплаты).
          — Табель в ЗУП может заполняться автоматически из данных, полученных из УНФ (через синхронизацию).
          — Если в ЗУП начисление по окладу и табелю, то табель служит основанием для расчёта фактически отработанного времени.
          — Начисления по окладу и доплатам оформляются в документах начисления.

          3. Как работает синхронизация стандартная в 1С:Фреш
          — Из УНФ в ЗУП передаются данные по табелю (фактически отработанные часы).
          — В ЗУП эти данные автоматически подгружаются в табельный учёт.
          — На основании табеля ЗУП рассчитывает зарплату по окладу и доплатам.
          — В УНФ остаётся учёт по проектам и часам, в ЗУП — расчёт зарплаты и кадровый учёт.

          4. Рекомендации по документам:
          — В УНФ: Табель учёта рабочего времени — фиксируете часы по проектам и сотрудникам.
          — В ЗУП: Табель учёта рабочего времени (заполняется из УНФ), Начисление зарплаты — для расчёта и выплаты.
          — При необходимости корректировок — в ЗУП можно использовать документы корректировки табеля или начислений.

          5. Важно:
          — В 1С:Фреш синхронизация идёт автоматически по расписанию, данные из УНФ подтягиваются в ЗУП без ручного вмешательства.
          — Для контроля можно смотреть журнал обмена и отчёты по табелю в обеих системах.

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

          Рекомендую посмотреть официальную документацию по синхронизации УНФ и ЗУП на 1С:Фреш:
          https://its.1c.ru/db/v8std#content:456:hdoc (раздел про обмен данными между УНФ и ЗУП)

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

            Привет! Ситуация типовая — в УНФ ведут учёт по часам и проектам, а в ЗУП — начисление зарплаты по табелю и окладу. Чтобы это связать, нужно организовать обмен данными и синхронизацию учёта времени.

            Как сделать:

            1. В УНФ фиксируете фактическое время работы сотрудников по проектам (часы, задачи, виды работ).

            2. В ЗУП ведёте табельный учёт и начисление зарплаты по окладу и табелю (явки, отсутствия).

            3. Для сопоставления:
            — Настраиваете обмен данными между УНФ и ЗУП через обмен по XML или через REST API (если есть доработки).
            — Из УНФ в ЗУП передаёте данные по отработанным часам по сотрудникам за период (например, по месяцам).
            — В ЗУП эти часы можно использовать для заполнения табеля или для контроля фактического времени.
            — Начисление зарплаты в ЗУП идёт по табелю и окладу, а данные из УНФ служат для аналитики и контроля.

            4. Если нужно учитывать оплату по проектам, то в ЗУП можно завести дополнительные виды начислений или использовать «Данные для расчёта зарплаты» с разбиением по проектам (через реквизиты или дополнительные измерения).

            5. Вариант с внешним учётом времени (УНФ) и внутренним начислением (ЗУП) — самый распространённый. Главное — настроить регулярный обмен и согласовать периоды.

            6. Для удобства можно сделать отчёты в УНФ по часам и в ЗУП по начислениям, чтобы видеть связь.

            Если нужна автоматизация — можно написать обработку обмена, которая будет выгружать из УНФ часы и загружать в ЗУП табельные данные.

            Рекомендую посмотреть пример обмена между УНФ и ЗУП здесь:
            https://infostart.ru/public/1470366/ (статья про разделение учёта и обмен)

            И про ввод отработанного времени в ЗУП суммарно:
            https://infostart.ru/public/1577819/ (упрощённый ввод часов)

            Если нужна помощь с конкретной настройкой обмена — уточните версию конфигураций и способ обмена (XML, REST).

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

              Привет! В УТ стандартное резервирование при 100% оплате или предоплате действительно сразу резервирует товар, который есть на складе. Чтобы реализовать твою задачу — когда на складе есть 20 ед, но ты хочешь отгрузить клиенту товар только с следующего поступления или напрямую из Китая — нужно использовать другой подход.

              Вот конкретные варианты решения:

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

              2. Обособленное обеспечение заказов с назначением на будущие поступления
              Включи в настройках «Обособленное обеспечение заказов» (НСИ и администрирование → Настройка НСИ и разделов → Склад и доставка).
              Создай заказ поставщику из Китая с назначением на заказ клиента. Тогда резерв будет привязан именно к будущему приходу товара, а складской остаток не будет резервироваться.
              Таким образом, товар, который есть на складе, останется свободным, а резерв будет «обособлен» под заказ клиента и появится только после прихода.

              3. Использование отдельного склада «Склад в пути» или «Склад клиента»
              Если товар идет напрямую с Китая на склад клиента, можно оформить приход на отдельный склад (например, «Склад в пути» или «Склад клиента»). Резервирование будет происходить именно на этом складе, а основной склад останется свободным.

              4. Резервирование вручную через документ «Резервирование запасов»
              Можно не использовать автоматическое резервирование в заказе клиента, а создавать документ «Резервирование запасов» с указанием конкретных партий и мест хранения, чтобы резервировать только нужный товар (например, только по приходу с Китая).

              5. В заказе клиента разделить позиции на две строки
              — Первая строка — с количеством, которое есть на складе, с обеспечением «К обеспечению» (без резервирования).
              — Вторая строка — с количеством, которое будет поставлено с Китая, с обеспечением «Резервировать по мере поступления» или «Обособленное обеспечение».

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

              И по резервированию по мере поступления в УТ:
              https://infostart.ru/1c/articles/2018520/

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

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

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

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

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

                3. В документе «Поступление» указываешь поставщика (Китай), номенклатуру и количество, а склад — «Склад у клиента».

                4. Для фиксации факта проверки и приемки сотрудником можно использовать дополнительный реквизит или отдельный документ (например, «Акт приемки»), либо добавить в документ «Поступление» реквизит «Проверено сотрудником».

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

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

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

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

                Рекомендую посмотреть пример по работе с «Складом в пути» и прямыми поставками:
                https://infostart.ru/1c/articles/186117/ — там описана схема работы с поставками напрямую клиенту и складом у клиента.

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

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

                  Настройки, сохранённые с помощью типового механизма кнопок «Сохранить настройки» и «Загрузить настройки» (выделены на скриншоте), хранятся в таблицах базы данных:

                  — В управляемых конфигурациях 1С (8.3) — в таблицах _RepSettings и _SystemSettings.
                  — Эти таблицы содержат настройки с привязкой к пользователю и объекту (отчету, форме и т.п.).

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

                  — Таблица _RepSettings — хранит настройки именно отчетов.
                  — Таблица _SystemSettings — хранит настройки форм, списков, других объектов интерфейса.
                  — В этих таблицах есть поля:
                  _UserId — пользователь, которому принадлежат настройки.
                  _ObjectKey — идентификатор объекта (например, отчета).
                  _SettingsData — двоичные данные с сохранёнными настройками.
                  _SettingsPresentation — человекочитаемое представление настройки.

                  ### Можно ли экспортировать?

                  — Да, можно выгрузить настройки из этих таблиц и загрузить у другого пользователя.
                  — Для этого можно использовать SQL-запросы копирования или написать обработку, которая будет выгружать/загружать настройки в файл.

                  ### Если в конфигурации используется СКД (Система Компоновки Данных):

                  — Настройки компоновщика данных тоже сохраняются в этих таблицах.
                  — При сохранении через типовой механизм они автоматически попадают в _RepSettings.

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

                  — Для массового переноса настроек между пользователями — проще всего использовать SQL-запросы копирования из таблиц _RepSettings и _SystemSettings.
                  — Для обмена настройками между базами — использовать экспорт/импорт настроек через файл (XML), если предусмотрено в конфигурации.

                  Рекомендую посмотреть здесь:
                  https://infostart.ru/public/1100185/ — про хранение и перенос настроек в 1С
                  https://infostart.ru/1c/articles/644525/ — про копирование настроек через SQL
                  https://infostart.ru/1c/articles/284557/ — про сохранение настроек СКД в базе

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

                    Объясняю подробнее, как именно «подписаться на событие сканирования в РМК» и где вызвать функцию обработки маркировки.

                    В типовой конфигурации РМК (Розница 2.3) сканирование штрихкода происходит в форме документа «ЧекККМ» (или аналогичной). Там есть обработчик, который получает строку от сканера.

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

                    1. Создаёте модуль формы с процедурой, которая будет обрабатывать событие сканирования штрихкода.

                    2. В расширении подписываетесь на событие формы «ЧекККМ» — событие, которое вызывается при вводе штрихкода (обычно это событие «ОбработкаОповещения» или «ОбработкаВводаШтрихкода»).

                    3. В этом обработчике получаете строку маркировки (то, что сканер передал).

                    4. Вызываете вашу функцию ОбработатьСканированиеМаркировки(СтрокаМаркировки, РМКОбъект), где:

                    СтрокаМаркировки — строка, которую получил сканер.

                    РМКОбъект — объект текущего документа (например, ЭтотОбъект или Форма.Объект), чтобы добавить позицию в чек.

                    ### Пример подключения в расширении:

                    ### Где взять ЭтотОбъект?

                    — В модуле формы документа «ЧекККМ» есть переменная ЭтотОбъект — это сам объект документа, в который добавляются товары.

                    — Если пишете расширение, то в модуле формы расширения у вас будет доступ к ЭтотОбъект или Форма.Объект.

                    ### Итог:

                    — Подписываетесь на событие сканирования штрихкода (обычно «ScanData» в РМК).

                    — В обработчике получаете строку маркировки.

                    — Передаёте её вместе с объектом документа в вашу функцию обработки.

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

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

                    Если нужна помощь с конкретным примером расширения для РМК — могу составить.

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

                      Вот пример кода расширения (или внешней обработки) для 1С:Розница 2.3, который перехватывает ввод маркировки в РМК, выделяет из DataMatrix только GTIN (EAN13), и корректно связывает его с номенклатурой и характеристикой, а затем вызывает стандартное окно выбора упаковки (потребительской).

                      Основная идея:

                      — При сканировании маркировки вызывается функция, которая выделяет GTIN из полного кода маркировки.

                      — По GTIN ищется номенклатура и характеристика.

                      — В карточку добавляется именно GTIN.

                      — После этого вызывается стандартное окно сопоставления упаковки.

                      ### Пример кода (BSL):

                      ### Как использовать:

                      — В расширении или внешней обработке подписаться на событие сканирования в РМК (например, через обработчик события формы РМК).

                      — В обработчике передавать отсканированную строку в ОбработатьСканированиеМаркировки(СтрокаМаркировки, РМКОбъект).

                      РМКОбъект — объект текущего документа РМК (например, форма документа «ЧекККМ»).

                      ### Что делает код:

                      — Выделяет из маркировки GTIN (EAN13).

                      — Ищет номенклатуру и характеристику по GTIN в регистре «ШтрихкодыНоменклатуры».

                      — Добавляет позицию с найденной номенклатурой и характеристикой, записывает GTIN как штрихкод упаковки.

                      — Вызывает стандартное окно выбора упаковки (потребительская упаковка).

                      Если нужно, могу помочь с примером расширения, которое подключается к РМК и реализует этот функционал полностью. Но в целом, именно так решается задача корректной обработки маркировки без правки типовой конфигурации.

                      Рекомендую посмотреть примеры работы с маркировкой и расширениями на infostart:

                      https://infostart.ru/public/2232757/

                      https://infostart.ru/articles/1325823/

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

                        В 1С:Розница 2.3 типовая обработка маркировки в РМК действительно иногда привязывает полный DataMatrix (например, (01)04099979378698(21)54r<KqJ»&l)Yu) как штрихкод к номенклатуре, а не выделяет из него EAN13 (4099979378698). Чтобы исправить это без правки типовой конфигурации, можно сделать внешнюю обработку или расширение, которое будет перехватывать ввод марки и преобразовывать её в нужный EAN13.

                        Что сделать:

                        1. Создать внешнюю обработку (или расширение) с процедурой, которая будет принимать строку маркировки DataMatrix.

                        2. В этой процедуре выделять из маркировки EAN13 — это 14 цифр после идентификатора (01), но без ведущего нуля (т.е. 13 цифр EAN13).

                        3. По выделенному EAN13 искать номенклатуру и характеристику.

                        4. Возвращать найденную номенклатуру и характеристику в РМК вместо полной маркировки.

                        Пример кода для выделения EAN13 из маркировки:

                        |Функция ПолучитьEAN13ИзМаркировки(Маркировка)
                        | // Пример маркировки: (01)04099979378698(21)54r<KqJ»&l)Yu
                        | // Нужно взять 14 цифр после (01), убрать ведущий 0
                        | Паттерн = «(s01s)(d{14})»;
                        | Результат = РегулярныеВыражения.Найти(Маркировка, Паттерн);
                        | Если Результат = Неопределено Тогда
                        | Возврат Неопределено;
                        | КонецЕсли;
                        | Код = Результат.Получить(1);
                        | // Убираем ведущий 0
                        | Если Лев(Код,1) = «0» Тогда
                        | Код = Сред(Код,2);
                        | КонецЕсли;
                        | Возврат Код;
                        |КонецФункции

                        Дальше в обработке по этому коду ищите номенклатуру и характеристику через стандартные методы (например, по штрихкоду).

                        Как подключить:

                        — Вариант 1: Внедрить обработку как расширение, которое перехватывает событие сканирования марки в РМК и заменяет полное значение на EAN13.

                        — Вариант 2: Сделать внешнюю обработку для пакетной обработки уже введённых марок, исправляя записи в справочнике «Штрихкоды упаковок и товаров» — заменять полный DataMatrix на EAN13.

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

                        Рекомендую посмотреть пример расширения и работу с маркировкой здесь:

                        https://infostart.ru/public/2232757/ — обработка исправления распределения марок

                        https://infostart.ru/articles/1325823/ — пример работы с маркировкой и выделением EAN13

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

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

                          Ошибка «Источник данных не найден и не указан драйвер по умолчанию» при использовании строки подключения с драйвером MySQL ODBC 5.3 Unicode Driver обычно связана с тем, что:

                          1. Драйвер MySQL ODBC 5.3 Unicode Driver не установлен на компьютере
                          — Проверьте в «Администраторе источников данных ODBC» (odbcad32.exe) на вкладке «Драйверы», есть ли драйвер с таким именем.
                          — Если нет — скачайте и установите MySQL Connector/ODBC 5.3 (64-бит или 32-бит в зависимости от разрядности 1С).
                          — Ссылка для скачивания: https://dev.mysql.com/downloads/connector/odbc/

                          2. Разрядность драйвера и 1С не совпадают
                          — Если 1С 64-битная, нужен 64-битный драйвер MySQL ODBC 5.3 Unicode.
                          — Если 1С 32-битная — 32-битный драйвер.
                          — Запуск 64-битной 1С с 32-битным драйвером не сработает.

                          3. Проверьте строку подключения
                          Пример правильной строки подключения к MySQL через ODBC:

                          |DRIVER={MySQL ODBC 5.3 Unicode Driver};
                          |SERVER=адрес_сервера;
                          |DATABASE=имя_базы;
                          |UID=пользователь;
                          |PWD=пароль;
                          |OPTION=3;

                          4. Если используете DSN, убедитесь, что он создан
                          — DSN должен быть создан в нужном администраторе ODBC (64 или 32 бит).
                          — В строке подключения используйте DSN=имя_источника; вместо DRIVER.

                          Пример кода 1С для подключения через COM-объект ADODB с драйвером MySQL ODBC 5.3 Unicode:

                          Если драйвер установлен, но ошибка сохраняется — проверьте:

                          — Правильность имени драйвера (в администраторе ODBC оно должно совпадать).
                          — Разрядность 1С и драйвера.
                          — Права пользователя на доступ к драйверу и базе.

                          Рекомендую посмотреть здесь:
                          https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-installation.html
                          https://helpf.pro/faq/view/348.html (пример подключения из 1С)

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

                            Привет! В УТ (Управление торговлей) для такой ситуации есть несколько вариантов, как показать заказ с Китая (то есть заказ на поставку) для клиента, при этом не резервируя товар, который уже есть на складе.

                            Вот конкретное решение:

                            1. В заказе клиента в табличной части по номенклатуре укажи две строки:
                            — Первая — с количеством, которое есть на складе (например, 3 шт), с действием обеспечения «Отгрузить» или «Резервировать» (если хочешь зарезервировать этот остаток).
                            — Вторая — с количеством, которого не хватает (например, 7 шт), с действием обеспечения «К обеспечению» или «Резервировать по мере поступления».

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

                            3. В заказе поставщику укажи нужное количество товара из Китая.

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

                            5. Если нужно, можно включить «Обособленное обеспечение заказов» (в настройках НСИ и администрирования), чтобы резервирование было строго по заказам и не смешивалось.

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

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

                            Рекомендую посмотреть статью по обособленному обеспечению заказов в 1С:ERP, там подробно описан механизм, который решает подобные задачи:
                            https://infostart.ru/1c/articles/1789290/

                            И по резервированию по мере поступления в УТ:
                            https://infostart.ru/1c/articles/2018520/

                            Такой подход позволит корректно показать заказ с Китая, не резервируя лишний товар на складе.

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

                              Чтобы для каждого месяца из временной таблицы ВТ_Месяцы получить выборку из регистра РегистрСведений.РаботникиОрганизаций на дату МесяцКонец, нужно сделать запрос с объединением по каждой дате МесяцКонец.

                              В 1С запросах это делается через внутреннее соединение (JOIN) с ВТ_Месяцы, где в условии соединения указываем, что дата среза кадровых данных должна быть равна МесяцКонец.

                              Пример запроса:

                              |ВЫБРАТЬ
                              | ВТ_Месяцы.МесяцКонец КАК ДатаСреза,
                              | РаботникиОрганизаций.Физлицо КАК Физлицо,
                              | РаботникиОрганизаций.Должность КАК Должность,
                              | РаботникиОрганизаций.Категория КАК Категория,
                              | РаботникиОрганизаций.ВидЗанятости КАК ВидЗанятости
                              |ИЗ
                              | ВТ_Месяцы КАК ВТ_Месяцы
                              | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(ВТ_Месяцы.МесяцКонец, Истина) КАК РаботникиОрганизаций
                              | ПО Истина

                              Объяснение:
                              — Используем срез последних кадровых данных на дату ВТ_Месяцы.МесяцКонец.
                              — В запросе срез последних — это специальный синтаксис 1С для получения актуальных данных на дату.
                              — ВНУТРЕННЕЕ СОЕДИНЕНИЕ по условию Истина — чтобы получить все записи для каждой даты из ВТ_Месяцы.

                              Если в вашей версии 1С нет поддержки среза последних в таком виде, можно сделать так:

                              |ВЫБРАТЬ
                              | ВТ_Месяцы.МесяцКонец КАК ДатаСреза,
                              | РаботникиОрганизаций.Физлицо КАК Физлицо,
                              | РаботникиОрганизаций.Должность КАК Должность,
                              | РаботникиОрганизаций.Категория КАК Категория,
                              | РаботникиОрганизаций.ВидЗанятости КАК ВидЗанятости
                              |ИЗ
                              | ВТ_Месяцы КАК ВТ_Месяцы
                              | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
                              | ПО РаботникиОрганизаций.Сотрудник = РаботникиОрганизаций.Сотрудник
                              | И РаботникиОрганизаций.Период <= ВТ_Месяцы.МесяцКонец
                              | И (РаботникиОрганизаций.ДатаОкончания > ВТ_Месяцы.МесяцКонец ИЛИ РаботникиОрганизаций.ДатаОкончания = ДАТАВРЕМЯ(3999,12,31))

                              Но это сложнее и менее эффективно.

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

                              Итого, для вашей задачи:

                              1. Создаёте ВТ_Месяцы с датами начала и конца месяца.
                              2. Пишете запрос с использованием среза последних кадровых данных на дату ВТ_Месяцы.МесяцКонец.
                              3. Получаете выборку по каждому месяцу.

                              Рекомендую посмотреть пример работы с срезом последних кадровых данных здесь:

                              https://infostart.ru/public/1544167/

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

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

                                Чтобы получить выборку не на одну дату (&ДатаОкончания), а на каждую дату МесяцКонец из временной таблицы ВТ_Месяцы, нужно сделать запрос с объединением (например, вложенным циклом или соединением) по каждой дате из ВТ_Месяцы.

                                В 1С запросах это делается так:

                                1. Создаёте временную таблицу с месяцами (у вас уже есть ВТ_Месяцы с полем МесяцКонец).
                                2. Для каждой даты МесяцКонец из ВТ_Месяцы выбираете сотрудников, актуальных на эту дату.

                                Пример запроса, который формирует выборку сотрудников на каждую дату МесяцКонец:

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

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

                                |И ВЫБОР
                                | КОГДА РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                                | ТОГДА ЛОЖЬ
                                | ИНАЧЕ ИСТИНА
                                |КОНЕЦ

                                Или фильтруйте в основном запросе по этому условию.

                                Если хотите сохранить результат во временную таблицу, то:

                                |ПОМЕСТИТЬ ВТ_НеуволенныеСотрудникиПоМесяцам
                                |ВЫБРАТЬ
                                | ВТ_Месяцы.МесяцКонец КАК ДатаАктуальности,
                                | РаботникиОрганизацийСрезПоследних.Физлицо КАК Физлицо,
                                | РаботникиОрганизацийСрезПоследних.Категория КАК Категория
                                |ИЗ
                                | ВТ_Месяцы КАК ВТ_Месяцы
                                | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(
                                | ВТ_Месяцы.МесяцКонец,
                                | ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
                                | И Категория В (&МассивКатегорий)
                                | И НЕ Должность В (&МассивДолжностей)
                                | ) КАК РаботникиОрганизацийСрезПоследних
                                | ПО ИСТИНА
                                |ГДЕ
                                | РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                                |СГРУППИРОВАТЬ ПО
                                | ВТ_Месяцы.МесяцКонец,
                                | РаботникиОрганизацийСрезПоследних.Физлицо,
                                | РаботникиОрганизацийСрезПоследних.Категория;

                                Таким образом вы получите список неуволенных сотрудников на каждую дату МесяцКонец из ВТ_Месяцы.

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

                                Рекомендую посмотреть здесь:
                                https://infostart.ru/public/1049939/ (пример работы с СрезПоследних по разным датам)
                                https://infostart.ru/public/1049940/ (пример построения выборок по периодам)

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

                                  В 1С:Розница Аптека магазины обычно хранятся в справочнике «Магазины» или «Торговые точки» (в зависимости от конфигурации). Чтобы получить список всех магазинов, нужно сделать запрос к этому справочнику.

                                  Пример запроса 1С (язык запросов 1С), который выбирает все магазины из справочника «Справочник.Магазины»:

                                  |ВЫБРАТЬ
                                  | Магазины.Ссылка КАК Ссылка,
                                  | Магазины.Наименование КАК Наименование,
                                  | Магазины.Адрес КАК Адрес
                                  |ИЗ
                                  | Справочник.Магазины КАК Магазины
                                  |ГДЕ
                                  | НЕ Магазины.ПометкаУдаления

                                  Если в вашей конфигурации справочник называется иначе (например, «ТорговыеТочки» или «АптечныеМагазины»), замените имя справочника в запросе.

                                  Если магазины хранятся в справочнике «Организации» или «Подразделения», то запрос будет примерно таким:

                                  |ВЫБРАТЬ
                                  | Подразделения.Ссылка КАК Ссылка,
                                  | Подразделения.Наименование КАК Наименование,
                                  | Подразделения.Адрес КАК Адрес
                                  |ИЗ
                                  | Справочник.Подразделения КАК Подразделения
                                  |ГДЕ
                                  | НЕ Подразделения.ПометкаУдаления
                                  | И Подразделения.ТипПодразделения = ЗНАЧЕНИЕ(Перечисление.ТипыПодразделений.Магазин)

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

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

                                  Рекомендую посмотреть здесь:
                                  https://infostart.ru/public/ (там много примеров запросов по 1С:Розница)

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