Ответы в темах
-
АвторСообщения
-
2 июля 2026 в 16:40 в ответ на: Как найти номенклатуру без сегмента в регистре с ЛЕВОЕ СОЕДИНЕНИЕ? #38031
Чтобы получить всю номенклатуру (только элементы, не группы), у которых нет записи в регистре «Сегменты номенклатуры» (т.е. сегмент не прописан), нужно сделать запрос с левой внешней связью (ЛЕВОЕ СОЕДИНЕНИЕ) между справочником Номенклатура и регистром сегментов и отфильтровать записи, где сегмент отсутствует.
Пример запроса:
|ВЫБРАТЬ
| Номенклатура.Ссылка КАК Номенклатура
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СегментыНоменклатуры КАК Сегменты
| ПО Сегменты.Номенклатура = Номенклатура.Ссылка
|ГДЕ
| Номенклатура.ЭтоГруппа = ЛОЖЬ
| И Сегменты.Номенклатура ЕСТЬ NULLОбъяснение:
— Номенклатура.ЭтоГруппа = ЛОЖЬ — выбираем только элементы, не группы.
— Левое соединение с регистром сегментов по полю Номенклатура.
— В условии фильтрации проверяем, что в регистре сегментов для данной номенклатуры нет записи (NULL).Если в регистре сегментов поле с сегментом называется, например, «Сегмент», и нужно проверить именно его, то можно проверить NULL по этому полю.
Если регистр сегментов — накопительный или сведений, и в нем есть измерение «Номенклатура», то по нему связываемся.
Если нужно вывести дополнительные поля — добавьте их в выборку.
Если регистр называется иначе, замените имя в запросе.
Такой запрос вернёт все номенклатурные позиции без назначенного сегмента.
Проблема в том, что в запросе используется срез последних по регистру сведений с фильтром по Объекту, но при этом в регистре может быть несколько записей с одинаковым Объектом на одну дату &Дата1 (или на дату, не совпадающую с &Дата1, если &Дата1 не точная дата с временем).
Вызов среза последних:
|РегистрСведений.РасчетАмортизации.СрезПоследних(&Дата1, Объект = &Объект)
возвращает все записи, у которых дата <= &Дата1 и Объект = &Объект, но если в регистре несколько записей с разными датами, то срез последних вернёт по каждой комбинации измерений последнюю запись, а если измерений несколько, то может быть несколько записей.
Если хотите получить именно одну запись — последнюю по дате для конкретного объекта, то нужно:
1. Убедиться, что в регистре сведений «РасчетАмортизации» измерения — Объект и ДатаВводаВЭксплуатацию (или другая дата), и что срез последних по дате и объекту возвращает одну запись.
2. Если срез последних возвращает несколько записей, то нужно дополнительно ограничить выборку, например, выбрать запись с максимальной датой.
Пример решения:
|ВЫБРАТЬ
| РАСЧЕТ.Объект КАК Объект,
| РАСЧЕТ.ДатаВводаВЭксплуатацию КАК ДатаВводаВЭксплуатацию,
| РАСЧЕТ.СтоимостьБУ КАК СтоимостьБУ,
| РАСЧЕТ.ОстаточнаяСтоимостьБУ КАК ОстаточнаяСтоимостьБУ,
| РАСЧЕТ.СуммаАмортизацииБУ КАК СуммаАмортизацииБУ
|ИЗ
| РегистрСведений.РасчетАмортизации.СрезПоследних(&Дата1, Объект = &Объект) КАК РАСЧЕТ
|ГДЕ
| РАСЧЕТ.ДатаВводаВЭксплуатацию = (ВЫБРАТЬ МАКСИМУМ(ДатаВводаВЭксплуатацию)
| | ИЗ РегистрСведений.РасчетАмортизации.СрезПоследних(&Дата1, Объект = &Объект))То есть добавляем условие, что дата ввода в эксплуатацию должна быть максимальной из всех доступных на дату &Дата1 для данного объекта.
Если в регистре есть другие измерения, которые влияют на уникальность записей, то нужно их тоже учитывать.
Если хотите получить просто одну запись, то можно использовать:
|ВЫБРАТЬ ПЕРВЫЕ 1
| …но это не гарантирует, что будет именно последняя по дате.
Итого: проблема в том, что срез последних возвращает все последние записи по каждой комбинации измерений, а не одну запись. Нужно дополнительно ограничить выборку по дате или другим измерениям, чтобы получить одну запись.
2 июля 2026 в 11:06 в ответ на: Как исправить ошибку «Не удалось подключиться к приложению COMObject» в 1С? #38027Ошибка -2147467238(0x8000401A) с сообщением «Процесс сервера не может быть запущен, так как указана неправильная идентификация» при попытке создать COM-объект V83.COMConnector в 1С обычно связана с проблемами прав и учётных данных, под которыми запускается процесс 1С сервера или агента.
Что проверить и сделать:
1. Пользователь, под которым запущен сервер 1С
— Убедитесь, что служба сервера 1С (или агента сервера, если используется) запущена под пользователем, у которого есть права на запуск COM-компоненты 1С (V83.COMConnector).
— Часто по умолчанию служба запускается под локальной системой (LocalSystem), у которой нет прав на запуск COM-объектов 1С.
— Рекомендуется сменить пользователя службы на конкретного доменного пользователя или локального пользователя с правами администратора и правами на запуск 1С.2. Права на запуск COM-компоненты
— Проверьте настройки DCOM (dcomcnfg.exe) для компоненты «V83.COMConnector».
— В разделе «Конфигурация компонентов» найдите «V83.COMConnector» и проверьте права запуска и доступа.
— Добавьте пользователя, под которым запускается служба 1С, в разрешения на запуск и активацию.3. Проверка имени пользователя и пароля в параметрах подключения
— В настройках обмена (параметры подключения к внешней базе) проверьте, что указаны корректные имя пользователя и пароль.
— Если используется аутентификация ОС, убедитесь, что она настроена правильно.4. Регистрация COM-компоненты
— Если ошибка связана с отсутствием или повреждением COM-компоненты, попробуйте переустановить или зарегистрировать заново comcntr.dll.
— Для этого остановите службу 1С, выполните в командной строке с правами администратора:1С (Код)1regsvr32 "C:Program Files (x86)1cv88.3.xxxxbincomcntr.dll"(путь укажите свой)
— После регистрации запустите службу 1С.5. Проверка запуска COM-объекта вручную
— Попробуйте вручную из внешней обработки или из отладчика 1С создать объект:1С (Код)1COMConnector = Новый COMОбъект("V83.COMConnector");— Если ошибка повторяется, значит проблема именно с правами или регистрацией.
6. Запуск сервера 1С под нужным пользователем
— Если сервер 1С запущен под локальной системой, попробуйте сменить пользователя службы на доменного пользователя с правами администратора и правами на запуск COM.
— После смены пользователя перезапустите службу.7. Проверка политики безопасности Windows
— В некоторых случаях политика безопасности Windows запрещает запуск COM-серверов под определёнными пользователями. Проверьте локальные политики безопасности (secpol.msc) и групповые политики.8. Логи и диагностика
— Посмотрите логи сервера 1С и системные логи Windows на предмет ошибок DCOM и проблем с запуском процессов.—
Если кратко: ошибка говорит, что служба 1С не может запустить COM-объект из-за неправильной учётной записи. Нужно сменить пользователя службы 1С на пользователя с правами запуска COM, проверить права DCOM для V83.COMConnector и убедиться, что параметры подключения к базе указаны корректно.
Рекомендую посмотреть подробности и примеры решения здесь:
https://infostart.ru/public/1043482/
https://helpf.pro/faq82/view/1825.html.dylib — это динамическая библиотека в macOS (аналог .dll в Windows). Если нужно изменить содержимое .dylib, то это не просто «открыть и править», а работа с бинарным файлом.
Что можно сделать:
1. Декомпиляция / дизассемблирование
— Используйте инструменты типаotool(встроенный в macOS) для просмотра содержимого и зависимостей:1С (Код)1otool -L путь_к_файлу.dylib— Для дизассемблирования можно использовать
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С, если нужно интегрировать)1 июля 2026 в 16:33 в ответ на: Как устранить ошибку: «Поле объекта не обнаружено (ЗаказПокупателя)» в 1С? #38023Ошибка «Поле объекта не обнаружено (ЗаказПокупателя)» говорит о том, что в вашем коде вы пытаетесь обратиться к объекту или свойству с именем «ЗаказПокупателя», которого нет в текущем контексте.
Скорее всего, проблема в том, что вы пытаетесь обратиться к метаданным документа по имени, но имя указано с ошибкой или в неправильном регистре, либо объект метаданных не найден.
В 1С имена объектов метаданных чувствительны к регистру и должны точно совпадать с именем в конфигураторе.
Например, если в конфигураторе документ называется «ЗаказПокупателя», то в коде нужно писать именно так, без пробелов и с правильным регистром.
—
Проверьте в вашем коде:
1С (Код)1Метаданные.Документы["ЗаказПокупателя"]Если вы пишете так:
1С (Код)1Метаданные.Документы.ЗаказПокупателято это тоже корректно, но если имя написано с ошибкой, например, «ЗаказПокупателя » (с пробелом) или «ЗаказПокупатель» — будет ошибка.
—
Если ошибка возникает в строке:
1С (Код)1Метаданные.Документы.ЗаказПокупателято возможно:
— В вашей конфигурации документ называется иначе (например, «ЗаказПокупателя» отсутствует).
— Вы вызываете код в контексте, где нет доступа к метаданным (например, в общем модуле, который не имеет доступа к метаданным).
— Режим совместимости платформы слишком старый (редко).—
Что делать:
1. Проверьте точное имя документа в конфигураторе (в дереве метаданных).
2. Используйте обращение через индексатор, чтобы избежать ошибок с именем:
1С (Код)1Метаданные.Документы["ЗаказПокупателя"]3. Если имя документа приходит в виде строки, используйте именно индексатор.
4. Если вы используете динамическое имя, то так:
1С (Код)12ИмяДокумента = "ЗаказПокупателя";МетаданныеДокумента = Метаданные.Документы[ИмяДокумента];5. Проверьте, что переменная
МетаданныеДокументане равнаНеопределеноперед использованием.—
Пример исправленного кода:
1С (Код)123456789ИмяДокумента = "ЗаказПокупателя";МетаданныеДокумента = Метаданные.Документы[ИмяДокумента];Если МетаданныеДокумента = Неопределено ТогдаСообщить("Документ с именем " + ИмяДокумента + " не найден в метаданных");Возврат Неопределено;КонецЕсли;// Дальше работаем с МетаданныеДокумента—
Если ошибка возникает в другом месте, приложите, пожалуйста, конкретный фрагмент кода, где она появляется.
1 июля 2026 в 15:13 в ответ на: Какими документами пользоваться в 1С:Фреш для учёта и расчёта зарплаты? #38021Если у вас 1С:Фреш и настроена стандартная синхронизация между УНФ и ЗУП, то схема работы и используемые документы примерно такие:
1. В 1С:УНФ (Управление нашей фирмой)
— Ведение учёта рабочего времени по сотрудникам и проектам — через документ Табель учёта рабочего времени. В табеле фиксируются часы работы по дням, можно разбивать по проектам (если настроена аналитика по проектам).
— Если в УНФ ведётся учёт по проектам, то часы по проектам отражаются в табеле или в дополнительных регистрах.2. В 1С:ЗУП (Зарплата и управление персоналом)
— Для начисления зарплаты используется документ Начисление зарплаты (или ведомость на выплату зарплаты).
— Табель в ЗУП может заполняться автоматически из данных, полученных из УНФ (через синхронизацию).
— Если в ЗУП начисление по окладу и табелю, то табель служит основанием для расчёта фактически отработанного времени.
— Начисления по окладу и доплатам оформляются в документах начисления.3. Как работает синхронизация стандартная в 1С:Фреш
— Из УНФ в ЗУП передаются данные по табелю (фактически отработанные часы).
— В ЗУП эти данные автоматически подгружаются в табельный учёт.
— На основании табеля ЗУП рассчитывает зарплату по окладу и доплатам.
— В УНФ остаётся учёт по проектам и часам, в ЗУП — расчёт зарплаты и кадровый учёт.4. Рекомендации по документам:
— В УНФ: Табель учёта рабочего времени — фиксируете часы по проектам и сотрудникам.
— В ЗУП: Табель учёта рабочего времени (заполняется из УНФ), Начисление зарплаты — для расчёта и выплаты.
— При необходимости корректировок — в ЗУП можно использовать документы корректировки табеля или начислений.5. Важно:
— В 1С:Фреш синхронизация идёт автоматически по расписанию, данные из УНФ подтягиваются в ЗУП без ручного вмешательства.
— Для контроля можно смотреть журнал обмена и отчёты по табелю в обеих системах.Если хотите более точный список документов и порядок работы — уточните версии конфигураций и настройки синхронизации, но в целом стандартный обмен именно так и построен.
Рекомендую посмотреть официальную документацию по синхронизации УНФ и ЗУП на 1С:Фреш:
https://its.1c.ru/db/v8std#content:456:hdoc (раздел про обмен данными между УНФ и ЗУП)1 июля 2026 в 14:59 в ответ на: Как синхронизировать данные по времени работы сотрудников в 1С УНФ и ЗУП? #38019Привет! Ситуация типовая — в УНФ ведут учёт по часам и проектам, а в ЗУП — начисление зарплаты по табелю и окладу. Чтобы это связать, нужно организовать обмен данными и синхронизацию учёта времени.
Как сделать:
1. В УНФ фиксируете фактическое время работы сотрудников по проектам (часы, задачи, виды работ).
2. В ЗУП ведёте табельный учёт и начисление зарплаты по окладу и табелю (явки, отсутствия).
3. Для сопоставления:
— Настраиваете обмен данными между УНФ и ЗУП через обмен по XML или через REST API (если есть доработки).
— Из УНФ в ЗУП передаёте данные по отработанным часам по сотрудникам за период (например, по месяцам).
— В ЗУП эти часы можно использовать для заполнения табеля или для контроля фактического времени.
— Начисление зарплаты в ЗУП идёт по табелю и окладу, а данные из УНФ служат для аналитики и контроля.4. Если нужно учитывать оплату по проектам, то в ЗУП можно завести дополнительные виды начислений или использовать «Данные для расчёта зарплаты» с разбиением по проектам (через реквизиты или дополнительные измерения).
5. Вариант с внешним учётом времени (УНФ) и внутренним начислением (ЗУП) — самый распространённый. Главное — настроить регулярный обмен и согласовать периоды.
6. Для удобства можно сделать отчёты в УНФ по часам и в ЗУП по начислениям, чтобы видеть связь.
Если нужна автоматизация — можно написать обработку обмена, которая будет выгружать из УНФ часы и загружать в ЗУП табельные данные.
Рекомендую посмотреть пример обмена между УНФ и ЗУП здесь:
https://infostart.ru/public/1470366/ (статья про разделение учёта и обмен)И про ввод отработанного времени в ЗУП суммарно:
https://infostart.ru/public/1577819/ (упрощённый ввод часов)Если нужна помощь с конкретной настройкой обмена — уточните версию конфигураций и способ обмена (XML, REST).
1 июля 2026 в 14:03 в ответ на: Как резервировать товар для клиента при 100% предоплате на будущие поставки? #38017Привет! В УТ стандартное резервирование при 100% оплате или предоплате действительно сразу резервирует товар, который есть на складе. Чтобы реализовать твою задачу — когда на складе есть 20 ед, но ты хочешь отгрузить клиенту товар только с следующего поступления или напрямую из Китая — нужно использовать другой подход.
Вот конкретные варианты решения:
1. Резервирование «по мере поступления»
В заказе клиента в поле обеспечения укажи «Резервировать по мере поступления». Тогда товар, который есть на складе, не будет зарезервирован сразу, а резерв будет формироваться только по факту прихода новой партии.
Минус — товар на складе не резервируется и может быть отгружен другому клиенту, если не контролировать.2. Обособленное обеспечение заказов с назначением на будущие поступления
Включи в настройках «Обособленное обеспечение заказов» (НСИ и администрирование → Настройка НСИ и разделов → Склад и доставка).
Создай заказ поставщику из Китая с назначением на заказ клиента. Тогда резерв будет привязан именно к будущему приходу товара, а складской остаток не будет резервироваться.
Таким образом, товар, который есть на складе, останется свободным, а резерв будет «обособлен» под заказ клиента и появится только после прихода.3. Использование отдельного склада «Склад в пути» или «Склад клиента»
Если товар идет напрямую с Китая на склад клиента, можно оформить приход на отдельный склад (например, «Склад в пути» или «Склад клиента»). Резервирование будет происходить именно на этом складе, а основной склад останется свободным.4. Резервирование вручную через документ «Резервирование запасов»
Можно не использовать автоматическое резервирование в заказе клиента, а создавать документ «Резервирование запасов» с указанием конкретных партий и мест хранения, чтобы резервировать только нужный товар (например, только по приходу с Китая).5. В заказе клиента разделить позиции на две строки
— Первая строка — с количеством, которое есть на складе, с обеспечением «К обеспечению» (без резервирования).
— Вторая строка — с количеством, которое будет поставлено с Китая, с обеспечением «Резервировать по мере поступления» или «Обособленное обеспечение».Рекомендую почитать по теме обособленного обеспечения заказов, там подробно описан механизм, который решает именно такие задачи:
https://infostart.ru/1c/articles/1789290/И по резервированию по мере поступления в УТ:
https://infostart.ru/1c/articles/2018520/Такой подход позволит не резервировать товар, который есть на складе, а резервировать только будущие поступления или прямые поставки клиенту.
1 июля 2026 в 13:08 в ответ на: Как в УТ отражать поставку из Китая и приемку товара у клиента? #38015В УТ для отражения поставки товара напрямую клиенту с выездом сотрудника и приемкой товара у клиента, минуя склад, можно использовать следующий подход:
1. Документ «Поступление товаров и услуг» оформляешь с видом операции «Поступление на склад» или «Поступление для реализации» (в зависимости от версии и настроек).
Но в шапке документа указываешь склад, который условно обозначает «Склад у клиента» или «Склад в пути» (можно создать отдельный склад в справочнике «Склады» для таких операций).2. Если в конфигурации нет отдельного склада для таких операций, создаешь новый склад с названием, например, «Склад у клиента» или «Склад в пути». Это позволит отразить факт поступления товара в учет, но не на основном складе.
3. В документе «Поступление» указываешь поставщика (Китай), номенклатуру и количество, а склад — «Склад у клиента».
4. Для фиксации факта проверки и приемки сотрудником можно использовать дополнительный реквизит или отдельный документ (например, «Акт приемки»), либо добавить в документ «Поступление» реквизит «Проверено сотрудником».
5. Далее для реализации клиенту создаешь документ «Реализация товаров и услуг» с отгрузкой с «Склада у клиента». Таким образом, товар сразу учитывается как принятый у клиента, минуя основной склад.
6. Если нужно, можно настроить отчетность и аналитику по такому складу, чтобы видеть остатки товара у клиента.
7. Вариант с использованием «Склада в пути» позволяет учитывать товар, который физически не на основном складе, но уже принят.
Если в УТ есть возможность использовать документ «Поступление на комиссию» или «Поступление на склад клиента» — можно применить и их, но чаще создают отдельный склад для таких операций.
Рекомендую посмотреть пример по работе с «Складом в пути» и прямыми поставками:
https://infostart.ru/1c/articles/186117/ — там описана схема работы с поставками напрямую клиенту и складом у клиента.Такой подход позволит отразить факт приемки товара сотрудником у клиента, без зачисления на основной склад.
Настройки, сохранённые с помощью типового механизма кнопок «Сохранить настройки» и «Загрузить настройки» (выделены на скриншоте), хранятся в таблицах базы данных:
— В управляемых конфигурациях 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/ — про сохранение настроек СКД в базе1 июля 2026 в 10:55 в ответ на: Как подписаться на событие сканирования в РМК и вызвать обработку маркировки? #38011Объясняю подробнее, как именно «подписаться на событие сканирования в РМК» и где вызвать функцию обработки маркировки.
В типовой конфигурации РМК (Розница 2.3) сканирование штрихкода происходит в форме документа «ЧекККМ» (или аналогичной). Там есть обработчик, который получает строку от сканера.
Чтобы не менять типовой код, нужно сделать расширение (или внешнюю обработку), в котором:
1. Создаёте модуль формы с процедурой, которая будет обрабатывать событие сканирования штрихкода.
2. В расширении подписываетесь на событие формы «ЧекККМ» — событие, которое вызывается при вводе штрихкода (обычно это событие «ОбработкаОповещения» или «ОбработкаВводаШтрихкода»).
3. В этом обработчике получаете строку маркировки (то, что сканер передал).
4. Вызываете вашу функцию
ОбработатьСканированиеМаркировки(СтрокаМаркировки, РМКОбъект), где:—
СтрокаМаркировки— строка, которую получил сканер.—
РМКОбъект— объект текущего документа (например,ЭтотОбъектилиФорма.Объект), чтобы добавить позицию в чек.—
### Пример подключения в расширении:
1С (Код)12345678910&НаКлиентеПроцедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)Если ИмяСобытия = "ScanData" ТогдаСтрокаМаркировки = Параметр[0];// Вызываем вашу функцию обработкиОбработатьСканированиеМаркировки(СтрокаМаркировки, ЭтотОбъект);// Отменяем стандартную обработку, если нужноОтказ = Истина;КонецЕсли;КонецПроцедуры—
### Где взять
ЭтотОбъект?— В модуле формы документа «ЧекККМ» есть переменная
ЭтотОбъект— это сам объект документа, в который добавляются товары.— Если пишете расширение, то в модуле формы расширения у вас будет доступ к
ЭтотОбъектилиФорма.Объект.—
### Итог:
— Подписываетесь на событие сканирования штрихкода (обычно «ScanData» в РМК).
— В обработчике получаете строку маркировки.
— Передаёте её вместе с объектом документа в вашу функцию обработки.
— Функция выделяет GTIN, ищет номенклатуру, добавляет позицию и вызывает выбор упаковки.
—
Если не хотите писать расширение, можно сделать внешнюю обработку, которая запускается вручную и обрабатывает уже введённые маркировки, но это менее удобно.
—
Если нужна помощь с конкретным примером расширения для РМК — могу составить.
1 июля 2026 в 10:53 в ответ на: Как добавить GTIN из маркировки в карточку номенклатуры в 1С:РМК? #38009Вот пример кода расширения (или внешней обработки) для 1С:Розница 2.3, который перехватывает ввод маркировки в РМК, выделяет из DataMatrix только GTIN (EAN13), и корректно связывает его с номенклатурой и характеристикой, а затем вызывает стандартное окно выбора упаковки (потребительской).
Основная идея:
— При сканировании маркировки вызывается функция, которая выделяет GTIN из полного кода маркировки.
— По GTIN ищется номенклатура и характеристика.
— В карточку добавляется именно GTIN.
— После этого вызывается стандартное окно сопоставления упаковки.
—
### Пример кода (BSL):
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374// Функция выделения GTIN из маркировки DataMatrixФункция ПолучитьGTINИзМаркировки(Маркировка)// Пример маркировки: (01)04099979378698(21)54r<KqJ"&l)Yu// Нужно взять 14 цифр после (01), убрать ведущий 0Паттерн = "(s*01s*)(d{14})";РегЭксп = Новый РегулярноеВыражение(Паттерн);Результат = РегЭксп.Найти(Маркировка);Если Результат = Неопределено ТогдаВозврат Неопределено;КонецЕсли;Код = Результат.Получить(1);// Убираем ведущий 0Если Лев(Код,1) = "0" ТогдаКод = Сред(Код,2);КонецЕсли;Возврат Код;КонецФункции// Процедура обработки сканирования маркировки в РМКПроцедура ОбработатьСканированиеМаркировки(СтрокаМаркировки, РМКОбъект)// Получаем GTIN из маркировкиGTIN = ПолучитьGTINИзМаркировки(СтрокаМаркировки);Если GTIN = Неопределено Тогда// Если не удалось выделить GTIN, используем исходную маркировкуGTIN = СтрокаМаркировки;КонецЕсли;// Ищем номенклатуру и характеристику по GTINЗапрос = Новый Запрос;Запрос.Текст =|ВЫБРАТЬ| ШтрихкодыНоменклатуры.Номенклатура,| ШтрихкодыНоменклатуры.Характеристика|ИЗ| РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры|ГДЕ| ШтрихкодыНоменклатуры.Штрихкод = &Штрихкод| И ШтрихкодыНоменклатуры.Активность = ИСТИНА|УПОРЯДОЧИТЬ ПО| ШтрихкодыНоменклатуры.ДатаНачала ДЕСТВИЯ УБЫВ|;Запрос.УстановитьПараметр("Штрихкод", GTIN);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Если Выборка.Следующий() ТогдаНоменклатура = Выборка.Номенклатура;Характеристика = Выборка.Характеристика;Иначе// Если не нашли, можно предложить выбрать вручнуюНоменклатура = Неопределено;Характеристика = Неопределено;КонецЕсли;// Добавляем позицию в документ РМК с найденной номенклатурой и характеристикойЕсли Номенклатура <> Неопределено Тогда// Добавляем позицию с GTIN как штрихкодом упаковкиНоваяСтрока = РМКОбъект.Товары.Добавить();НоваяСтрока.Номенклатура = Номенклатура;НоваяСтрока.Характеристика = Характеристика;НоваяСтрока.Количество = 1;// Записываем GTIN в штрихкод упаковки (потребительская упаковка)НоваяСтрока.ШтрихкодУпаковки = GTIN;Иначе// Если не нашли, вызываем стандартное окно выбора номенклатурыРМКОбъект.ВыбратьНоменклатуру();// После выбора можно повторить добавление с GTINКонецЕсли;// Вызвать стандартное окно выбора упаковки (потребительская упаковка)Если РМКОбъект.Товары.Количество() > 0 ТогдаТекущаяСтрока = РМКОбъект.Товары[РМКОбъект.Товары.Количество() - 1];РМКОбъект.ВыбратьУпаковку(ТекущаяСтрока);КонецЕсли;КонецПроцедуры—
### Как использовать:
— В расширении или внешней обработке подписаться на событие сканирования в РМК (например, через обработчик события формы РМК).
— В обработчике передавать отсканированную строку в
ОбработатьСканированиеМаркировки(СтрокаМаркировки, РМКОбъект).—
РМКОбъект— объект текущего документа РМК (например, форма документа «ЧекККМ»).—
### Что делает код:
— Выделяет из маркировки GTIN (EAN13).
— Ищет номенклатуру и характеристику по GTIN в регистре «ШтрихкодыНоменклатуры».
— Добавляет позицию с найденной номенклатурой и характеристикой, записывает GTIN как штрихкод упаковки.
— Вызывает стандартное окно выбора упаковки (потребительская упаковка).
—
Если нужно, могу помочь с примером расширения, которое подключается к РМК и реализует этот функционал полностью. Но в целом, именно так решается задача корректной обработки маркировки без правки типовой конфигурации.
Рекомендую посмотреть примеры работы с маркировкой и расширениями на infostart:
1 июля 2026 в 10:45 в ответ на: Как исправить привязку маркировки как штрихкода в РМК Розница 2.3? #38007В 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
Если нужна помощь с конкретным кодом расширения — могу помочь составить.
1 июля 2026 в 10:02 в ответ на: Как устранить ошибку «Источник данных не найден и не указан драйвер по умолчанию #38005Ошибка «Источник данных не найден и не указан драйвер по умолчанию» при использовании строки подключения с драйвером 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:
1С (Код)1234567891011121314Соединение = Новый COMОбъект("ADODB.Connection");СтрокаПодключения ="DRIVER={MySQL ODBC 5.3 Unicode Driver};" +"SERVER=localhost;" +"DATABASE=имя_базы;" +"UID=пользователь;" +"PWD=пароль;" +"OPTION=3;";ПопыткаСоединение.Open(СтрокаПодключения);Сообщить("Соединение установлено");ИсключениеСообщить("Ошибка подключения: " + ОписаниеОшибки());КонецПопытки;—
Если драйвер установлен, но ошибка сохраняется — проверьте:
— Правильность имени драйвера (в администраторе ODBC оно должно совпадать).
— Разрядность 1С и драйвера.
— Права пользователя на доступ к драйверу и базе.Рекомендую посмотреть здесь:
https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-installation.html
https://helpf.pro/faq/view/348.html (пример подключения из 1С)30 июня 2026 в 21:26 в ответ на: Как в УТ оформить заказ с Китая без резервирования текущих остатков? #38003Привет! В УТ (Управление торговлей) для такой ситуации есть несколько вариантов, как показать заказ с Китая (то есть заказ на поставку) для клиента, при этом не резервируя товар, который уже есть на складе.
Вот конкретное решение:
1. В заказе клиента в табличной части по номенклатуре укажи две строки:
— Первая — с количеством, которое есть на складе (например, 3 шт), с действием обеспечения «Отгрузить» или «Резервировать» (если хочешь зарезервировать этот остаток).
— Вторая — с количеством, которого не хватает (например, 7 шт), с действием обеспечения «К обеспечению» или «Резервировать по мере поступления».2. Для второй строки (недостающего количества) в поле «Источник обеспечения» укажи заказ поставщику из Китая, который ты создашь отдельно. Это позволит связать недостающий товар с заказом поставщику, но при этом не резервировать товар, который уже есть на складе.
3. В заказе поставщику укажи нужное количество товара из Китая.
4. В настройках обеспечения заказа клиента можно использовать режим «Резервировать по мере поступления» или «К обеспечению», чтобы товар с текущего склада не резервировался под эту часть заказа.
5. Если нужно, можно включить «Обособленное обеспечение заказов» (в настройках НСИ и администрирования), чтобы резервирование было строго по заказам и не смешивалось.
6. В итоге в заказе клиента будет видно, что часть товара отгружается со склада, а часть — ожидается с Китая, при этом складской остаток не будет зарезервирован на недостающую часть.
Если нужно, можно дополнительно использовать документ «Резервирование запасов» для более точного управления резервами.
Рекомендую посмотреть статью по обособленному обеспечению заказов в 1С:ERP, там подробно описан механизм, который решает подобные задачи:
https://infostart.ru/1c/articles/1789290/И по резервированию по мере поступления в УТ:
https://infostart.ru/1c/articles/2018520/Такой подход позволит корректно показать заказ с Китая, не резервируя лишний товар на складе.
-
АвторСообщения