Ответы в темах
-
АвторЗаписи
-
Да, на фото справа внизу действительно видно остаток по номенклатуре «Лист алюминиевый 2,515006000мм» на складе «Алюминиевый склад» — 118,800 кг.
Но в ошибке указано, что не хватает материала на складе «Алюминиевый цех». Это разные склады.
В документе в поле «Склад» стоит именно «Алюминиевый склад» или «Алюминиевый цех»? В заголовке документа видно «Алюминиевый склад» (справа сверху), а в ошибке — «Алюминиевый цех».
Скорее всего, в табличной части документа или в настройках документа используется склад «Алюминиевый цех», где остатка нет.
Что проверить и сделать:
1. В документе «Отчет производства за смену» в шапке и в табличных частях убедитесь, что склад указан именно «Алюминиевый склад», где есть остаток.
2. Если в табличных частях или в настройках документа используется склад «Алюминиевый цех», поменяйте его на «Алюминиевый склад».
3. Проверьте, нет ли в табличных частях или в распределении материалов ссылок на другой склад.
4. Если склад «Алюминиевый цех» нужен, то нужно либо завести туда остаток, либо переместить материал с «Алюминиевого склада» на «Алюминиевый цех».
5. Если в документе есть распределение по подразделениям, проверьте, что подразделение и склад связаны корректно.
Итог: ошибка возникает из-за того, что система пытается списать материал с другого склада («Алюминиевый цех»), где нет остатков, хотя на «Алюминиевом складе» остаток есть.
Проверьте настройки склада в документе и табличных частях, исправьте на склад с остатком.
28 августа 2026 в 8:58 в ответ на: Где найти примеры выгрузки присоединённых файлов для УТ 11.5? #38502Для УТ 11.5 примеры по выгрузке присоединённых файлов (вложений) можно найти в типовых правилах обмена и на площадках с примерами по КД2, а также в статьях и обработках на Инфостарте.
Вот конкретные места, где можно посмотреть и скачать примеры:
1. Типовые правила обмена УТ 11.5 с БП 3.0
В типовых правилах обмена УТ 11.5 (EnterpriseData, КД2) есть обработка вложений, в том числе присоединённых файлов к номенклатуре.
Их можно посмотреть в конфигураторе в разделе «Обмен данными» — «Правила конвертации данных» (ПКО и ПВД).
Там есть объекты типа «Вложения» или «Присоединённые файлы», которые показывают, как выгружаются файлы.2. Публикации на Инфостарте с примерами по выгрузке вложений в КД2
— Статья с примером выгрузки вложений (в том числе к номенклатуре) — https://infostart.ru/public/402469/
— Обработка универсального обмена данными с выгрузкой вложений — https://infostart.ru/public/413178/
— Обсуждения и примеры в комментариях к статьям по КД2 и УТ 11.5 — https://infostart.ru/1c/articles/597573/ (конвертация данных, в том числе с вложениями)3. Форумы и обсуждения
На форуме Инфостарт есть темы, где пользователи выкладывают примеры выгрузки присоединённых файлов в УТ 11.5:
https://forum.infostart.ru/topic/ (поиск по ключевым словам «выгрузка вложений УТ 11.5»)
Там можно найти готовые обработки и советы.4. Внешние обработки и расширения
В базе знаний Инфостарт есть внешние обработки для выгрузки вложений из УТ 11.5, которые можно скачать и изучить. Например, обработка «Универсальный обмен данными» с поддержкой вложений.—
Если нужна конкретика — могу помочь с примером кода ПВД и ПКО для выгрузки присоединённых файлов из УТ 11.5, адаптированным под КД2. Просто скажите.
28 августа 2026 в 8:55 в ответ на: Как настроить КД2 для выгрузки присоединённых файлов номенклатуры в УТ 11.5? #38500Для УТ 11.5 (Управление торговлей) и Конвертации данных 2 (КД2) задача выгрузки присоединённых файлов номенклатуры решается через создание ПВД и ПКО, которые будут работать с регистром сведений «Вложения» (или с объектом, где хранятся файлы).
В УТ 11.5 присоединённые файлы к номенклатуре хранятся в регистре сведений «Вложения» (РегистрСведений.Вложения), где поле «Объект» — ссылка на элемент номенклатуры, а поле «ОбъектВложения» — сам файл.
—
### Пошагово для КД2:
—
### 1. Создаём ПКО (Правило конвертации объекта) для вложений номенклатуры
— Объект конфигурации: Регистр сведений.Вложения
— Объект формата: Вложение (создайте в формате обмена, если нет)
— Идентификатор: например,РегистрСведений_Вложения_Отправка#### ПКС (Правила конвертации свойств) для ПКО:
| Свойство объекта | Свойство формата | Комментарий |
|——————|——————|————-|
| Объект | Объект | Ссылка на номенклатуру |
| ОбъектВложения | ОбъектВложения | Сам файл (тип ОбъектВложения) |
| ИмяФайла | ИмяФайла | Имя файла |
| ТипФайла | ТипФайла | MIME-тип или расширение |
| Размер | Размер | Размер файла |В ПКС для реквизита «ОбъектВложения» обязательно поставьте флаг «Выгружать содержимое» (если есть).
—
### 2. Создаём ПВД (Правило выгрузки данных) для номенклатуры
— Объект конфигурации: Справочник.Номенклатура
— Идентификатор: например,Справочник_Номенклатура_Отправка
— Вкладка «Правила конвертации объектов» — указываем ПКО для номенклатуры (обычный, если есть).—
### 3. В ПВД номенклатуры добавляем обработчик события «После выгрузки» (ПослеВыгрузки), чтобы выгрузить вложения, связанные с текущим элементом:
1С (Код)123456789101112131415161718192021222324252627282930Если НЕ Источник.ЭтоГруппа ТогдаЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Вложения.Ссылка КАК Ссылка,| Вложения.ОбъектВложения,| Вложения.ИмяФайла,| Вложения.ТипФайла,| Вложения.Размер|ИЗ| РегистрСведений.Вложения КАК Вложения|ГДЕ| Вложения.Объект = &Номенклатура";Запрос.УстановитьПараметр("Номенклатура", Источник.Ссылка);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() Цикл// Формируем структуру для передачи вложенияСтруктураВложения = Новый Структура;СтруктураВложения.Вставить("Ссылка", Выборка.Ссылка);СтруктураВложения.Вставить("Объект", Источник.Ссылка);СтруктураВложения.Вставить("ОбъектВложения", Выборка.ОбъектВложения);СтруктураВложения.Вставить("ИмяФайла", Выборка.ИмяФайла);СтруктураВложения.Вставить("ТипФайла", Выборка.ТипФайла);СтруктураВложения.Вставить("Размер", Выборка.Размер);// Выгружаем вложение по правилу "РегистрСведений_Вложения_Отправка"ВыгрузитьПоПравилу(,,СтруктураВложения,,"РегистрСведений_Вложения_Отправка");КонецЦикла;КонецЕсли;—
### 4. В ПКО «РегистрСведений_Вложения_Отправка» настройте:
— Вкладка «Параметры поиска» — укажите поля «Объект» и «ИмяФайла» (чтобы при загрузке сопоставлять вложения).
— Вкладка «Правила конвертации свойств» — сопоставьте реквизиты, как указано выше.
— Для реквизита «ОбъектВложения» в ПКС в обработчике «Перед выгрузкой» укажите:1С (Код)12345Если ТипЗнч(Источник.ОбъектВложения) = Тип("ОбъектВложения") ТогдаЗначение = Источник.ОбъектВложения;ИначеЗначение = Неопределено;КонецЕсли;—
### 5. При загрузке (ПВД и ПКО для загрузки) аналогично создайте правила, чтобы вложения корректно загружались и связывались с номенклатурой.
—
### Важные моменты:
— В КД2 вложения выгружаются как отдельные объекты, поэтому в ПВД номенклатуры нужно вручную вызвать выгрузку вложений через
ВыгрузитьПоПравилу.
— Важно, чтобы в ПКО для вложений был корректно настроен реквизит с типом «ОбъектВложения» и включена выгрузка содержимого.
— Если в вашей базе вложения хранятся в другом объекте или регистре, адаптируйте запрос и ПКО соответственно.—
### Рекомендации:
— Посмотрите пример правил обмена УТ 11.5 с БП 3.0 — там есть выгрузка вложений.
— Используйте стандартную обработку «Универсальный обмен данными в формате XML» для тестирования.
— Для отладки используйте журнал регистрации и отладчик КД2.—
Если нужно, могу помочь с конкретным примером файла правил обмена (xml) или с кодом ПВД/ПКО. Просто уточните структуру хранения вложений в вашей базе.
28 августа 2026 в 8:55 в ответ на: Как исправить ошибку недостатка материалов при проведении «Отчета производства» #38498Ошибка при проведении документа «Отчет производства за смену» в 1С УПП 8.3 связана с недостатком материалов на складе. В сообщении указано:
> «Остаток ‘Лист алюминиевый 2,515006000мм (8111 5083)’ в подразделении ‘Алюминиевый цех’ недостаточно. Не хватает 16,21 кг! Остаток 0 кг! Требуется 16,21 кг.»
То есть, на складе «Алюминиевый цех» отсутствует необходимое количество материала для проведения документа.
Что делать:
1. Проверьте остатки материала «Лист алюминиевый 2,515006000мм» именно на складе «Алюминиевый цех». В вашем скриншоте видно, что остаток 0 кг, а требуется 16,21 кг.
2. Если материал есть на другом складе, нужно либо переместить его на склад «Алюминиевый цех» (через документ «Перемещение товаров»), либо изменить склад в документе «Отчет производства за смену» на тот, где есть остаток.
3. Если материала действительно нет, необходимо его завести (поступление) или скорректировать план производства, чтобы не использовать отсутствующий материал.
4. Если вы уверены, что материал есть, но система не видит остаток, проверьте корректность учета остатков:
— Проведите регламентные операции по пересчету остатков.
— Проверьте, нет ли ошибок в учете партий и характеристик.
— Проверьте, что учет по складам и характеристикам ведется корректно.5. В случае, если вы хотите провести документ с отрицательным остатком (что не рекомендуется), можно отключить контроль остатков, но это рискованно и может привести к ошибкам в учете.
Рекомендации:
— Проверьте остатки через отчет «Остатки товаров на складах» с учетом характеристик.
— Если учет партий ведется, убедитесь, что партии с нужным количеством доступны на складе.
— Скорректируйте склад в документе или переместите материалы.Если нужно, могу помочь с запросом для проверки остатков по складам и характеристикам.
Чтобы выгрузить присоединённые файлы (вложения) номенклатуры через Конвертацию данных (ПВД и ПКО), нужно учесть, что файлы хранятся в регистре сведений или в табличной части, обычно в виде объектов типа «Вложение» (ОбъектВложения).
Примерный алгоритм:
1. ПВД (Правило Выгрузки Данных) для справочника Номенклатура:
— В ПВД указываете основной объект — справочник Номенклатура.
— В событии «После выгрузки» (ПослеВыгрузки) нужно получить все вложения, связанные с текущим элементом номенклатуры, и выгрузить их по отдельному ПКО.Пример кода в событии «ПослеВыгрузки» ПВД Номенклатура:
1С (Код)12345678910111213141516171819202122232425262728Если НЕ Источник.ЭтоГруппа Тогда// Получаем вложения, связанные с номенклатуройЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Вложения.Ссылка КАК Вложение,| Вложения.Объект КАК Объект,| Вложения.ИмяФайла,| Вложения.ТипФайла,| Вложения.Размер|ИЗ| РегистрСведений.Вложения КАК Вложения|ГДЕ| Вложения.Объект = &Номенклатура";Запрос.УстановитьПараметр("Номенклатура", Источник.Ссылка);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклПакет = Новый Структура;Пакет.Вставить("Объект", Выборка.Вложение);Пакет.Вставить("Номенклатура", Источник.Ссылка);Пакет.Вставить("ИмяФайла", Выборка.ИмяФайла);Пакет.Вставить("ТипФайла", Выборка.ТипФайла);Пакет.Вставить("Размер", Выборка.Размер);// Выгружаем вложение по правилу "ВложенияНоменклатуры"ВыгрузитьПоПравилу(,,Пакет,,"ВложенияНоменклатуры");КонецЦикла;КонецЕсли;2. ПКО (Правило Конвертации Объекта) «ВложенияНоменклатуры»:
— Источник: Регистр сведений «Вложения» (или таблица, где хранятся файлы).
— Приемник: Регистр сведений «Вложения» или аналогичный объект в базе-получателе.
— В ПКО нужно настроить передачу реквизитов: Объект (ссылка на вложение), Номенклатура (ссылка на номенклатуру), ИмяФайла, ТипФайла, Размер, а главное — сам файл (ОбъектВложения).— В ПКС для реквизита с файлом (например, «Объект») в процедуре «Перед выгрузкой» нужно указать, что это вложение, чтобы файл выгружался корректно.
Пример кода в ПКС «Объект» ПКО «ВложенияНоменклатуры» в обработчике «Перед выгрузкой»:
1С (Код)12345Если ТипЗнч(Источник.Объект) = Тип("ОбъектВложения") ТогдаЗначение = Источник.Объект;ИначеЗначение = Неопределено;КонецЕсли;3. Настройка ПКО:
— В ПКО «ВложенияНоменклатуры» укажите поля поиска (например, Номенклатура, ИмяФайла).
— В настройках ПКО для реквизита с файлом поставьте флаг «Выгружать содержимое» (если есть).
— Если в вашей конфигурации вложения хранятся в табличной части или в другом объекте, адаптируйте запрос и ПКО соответственно.—
Если вложения хранятся в табличной части справочника (например, «Вложения» или «Файлы»), то в ПВД нужно пройтись по табличной части и выгрузить каждую строку через ПКО.
—
Рекомендую посмотреть примеры по выгрузке вложений здесь:
https://infostart.ru/public/402469/ (пример использования ВыгрузитьПоПравилу для вложений)
https://infostart.ru/1c/articles/622569/ (пример выгрузки связанных данных и вложений)
—
Если нужна помощь с конкретной конфигурацией и структурой хранения вложений — приложите описание или скриншоты, помогу адаптировать.
В Конвертации данных 2 (КД 2.0/2.1) для включения выгрузки файлов (например, вложений, изображений, документов) нужно правильно настроить правила обмена, чтобы объекты типа «Файлы» или реквизиты типа «Файл» выгружались.
Вот конкретные шаги:
1. Проверьте, что в правилах выгрузки (ПВД) для нужного объекта включена выгрузка реквизитов типа «Файл»
— Откройте Конвертацию данных.
— Загрузите комплект правил обмена (ExchangeRules.xml).
— Перейдите на вкладку «Правила выгрузки данных» (ПВД).
— Найдите нужный объект (например, справочник, документ), в котором есть реквизит типа «Файл».
— Убедитесь, что в списке реквизитов для выгрузки стоит галочка на реквизите с типом «Файл».2. Проверьте, что в правилах конвертации объекта (ПКО) реквизит типа «Файл» включён в конвертацию
— На вкладке «Правила конвертации объектов» найдите нужный ПКО.
— Убедитесь, что реквизит с типом «Файл» включён в список конвертируемых реквизитов.3. Включите выгрузку файлов в настройках конвертации
— В свойствах конвертации (в обработке Конвертации данных) на вкладке «Дополнительно» или в параметрах выгрузки проверьте, что стоит флаг «Выгружать файлы» или аналогичный.
— Если такого параметра нет, то выгрузка файлов происходит автоматически при условии, что реквизит типа «Файл» включён в правилах.4. Проверьте обработчики выгрузки
— В обработчиках «Перед выгрузкой» и «После выгрузки» можно добавить логику для обработки файлов, если требуется.
— Обычно файлы выгружаются в отдельной папке рядом с XML-файлом обмена.5. Проверьте, что в настройках плана обмена или в обработке выгрузки не стоит фильтр, исключающий файлы
6. Если выгрузка файлов не происходит, попробуйте обновить правила обмена
— Сохраните правила в XML.
— Распакуйте архив.
— Проверьте, что в файлах правил есть описание выгрузки файлов.
— Загрузите обратно в Конвертацию данных.—
Пример запроса для проверки реквизитов типа «Файл» в правилах:
1С (Код)12345678|ВЫБРАТЬ| Правила.ИмяОбъекта,| Правила.ИмяРеквизита,| Правила.ТипРеквизита|ИЗ| РегистрСведений.ПравилаКонвертацииОбъектов КАК Правила|ГДЕ| Правила.ТипРеквизита = "Файл"—
Рекомендую посмотреть здесь:
https://infostart.ru/public/1592389/ — пример подключения параметров и обработки в конвертации данных, где есть примеры работы с файлами.
https://infostart.ru/public/1038581/ — полезные приемы при работе с конвертацией, включая логику выгрузки.
—
Если в вашей конфигурации файлы хранятся не в реквизитах типа «Файл», а в регистрах или других объектах, то нужно дополнительно прописать правила выгрузки для этих объектов.
27 августа 2026 в 12:03 в ответ на: Как в 1С:CRM автоматически отправлять e-mail при смене менеджера? #38491Чтобы в 1С:CRM при смене ответственного менеджера у контрагента автоматически отправлялось письмо клиенту с информацией о новом менеджере и его телефоне, нужно сделать следующее:
1. Отслеживание события смены ответственного
В типовой конфигурации 1С:CRM смена ответственного обычно происходит в справочнике Контрагенты (реквизит Ответственный) или в табличной части Менеджеры. Нужно определить, где именно у вас хранится ответственный менеджер (чаще всего это реквизит «Ответственный» в карточке контрагента).2. Обработка события изменения ответственного
В модуле объекта справочника Контрагенты нужно реализовать обработчик событияПриИзмененииилиПередЗаписью, который будет проверять, изменился ли ответственный менеджер.Пример кода в модуле объекта Контрагенты:
1С (Код)1234567Процедура ПриИзменении(ИмяРеквизита)Если ИмяРеквизита = "Ответственный" ТогдаЕсли ЗначениеЗаполнено(ЭтотОбъект.Ответственный) ТогдаОтправитьПисьмоКлиенту(ЭтотОбъект);КонецЕсли;КонецЕсли;КонецПроцедуры3. Процедура отправки письма клиенту
Нужно написать процедуру, которая сформирует и отправит письмо клиенту на e-mail, указанный в карточке контрагента.
Пример:
1С (Код)123456789101112131415161718192021222324252627282930313233343536Процедура ОтправитьПисьмоКлиенту(Контрагент)// Проверяем, что у контрагента есть e-mailЕсли НЕ ЗначениеЗаполнено(Контрагент.ЭлектроннаяПочта) ТогдаВозврат;КонецЕсли;// Получаем данные нового менеджераМенеджер = Контрагент.Ответственный;Если НЕ ЗначениеЗаполнено(Менеджер) ТогдаВозврат;КонецЕсли;ТелефонМенеджера = "";Если ЗначениеЗаполнено(Менеджер.Телефон) ТогдаТелефонМенеджера = Менеджер.Телефон;КонецЕсли;// Формируем текст письмаТекстПисьма = "Добрый день!" + Символы.ПС +"Ваш новый менеджер: " + Менеджер.Наименование + "." + Символы.ПС +"Телефон менеджера: " + ТелефонМенеджера + "." + Символы.ПС +"Спасибо за сотрудничество!";// Создаем письмоПисьмо = Новый СообщениеЭлектроннойПочты;Письмо.Тема = "Изменение ответственного менеджера";Письмо.Текст = ТекстПисьма;Письмо.Адресаты.Добавить(Контрагент.ЭлектроннаяПочта);// Отправляем письмоПопыткаПисьмо.Отправить();Исключение// Логируем ошибку или игнорируемКонецПопытки;КонецПроцедуры4. Дополнительные моменты
— Убедитесь, что у менеджера в справочнике есть реквизит с телефоном (например, Телефон). Если нет, нужно добавить или получить телефон из другого места.
— Если у вас менеджеры хранятся в табличной части «Менеджеры» у контрагента, то нужно отслеживать изменение именно там — это сложнее, тогда нужно делать обработку изменения табличной части.
— Для отправки почты должна быть настроена почтовая подсистема 1С (SMTP-сервер, учетные данные).
— Можно добавить проверку, чтобы письмо отправлялось только при реальной смене ответственного (сравнивать старое и новое значение).5. Рекомендации
— Если в вашей конфигурации есть обработка «Передача ответственности» (как в типовой CRM), то можно добавить вызов отправки письма в эту обработку после смены ответственного.
— Для удобства можно сделать отдельный общий модуль с процедурой отправки письма, чтобы переиспользовать.Рекомендую посмотреть пример реализации здесь, где описывается смена ответственного и работа с менеджерами:
https://infostart.ru/1c/articles/309211/Там есть примеры, как работать с передачей ответственности и как обновлять менеджеров у контрагентов.
Если нужна помощь с конкретным кодом под вашу конфигурацию — уточните, где именно хранится ответственный менеджер и как происходит смена.
27 августа 2026 в 10:40 в ответ на: Как устранить ошибку «Номенклатура комплекта и комплектующей в разных группах» в #38489Ошибка «Номенклатура комплекта и комплектующей находятся в разных группах» при сборке/разборке в 1С возникает, когда позиции номенклатуры, участвующие в операции, принадлежат к разным группам номенклатуры, а в настройках конфигурации или в логике обработки это запрещено.
В типовых конфигурациях (например, УТ, КА, ERP) при работе с комплектами и комплектующими обычно требуется, чтобы комплект и его комплектующие были в одной группе или в согласованных группах, иначе система не позволяет проводить операцию.
—
Как исправить:
1. Проверьте группы номенклатуры комплекта и комплектующих
— Откройте справочник Номенклатура.
— Найдите комплект (готовый товар).
— Посмотрите, в какую группу он входит.
— Аналогично проверьте комплектующие позиции.
— Если группы разные, попробуйте привести их к одной группе или к согласованным группам.2. Настройте группы номенклатуры
— Если у вас есть отдельные группы для комплектов и комплектующих, убедитесь, что в настройках конфигурации разрешена работа с такими группами.
— В некоторых конфигурациях есть настройка, разрешающая сборку/разборку между разными группами.3. Используйте один вид номенклатуры для комплекта и комплектующих
— Обычно комплект и комплектующие имеют тип «Товар».
— Если комплект сделан типом «Комплект» или другим, попробуйте привести к типу «Товар».4. Проверьте варианты комплектации
— В карточке комплекта в разделе «Варианты комплектации» убедитесь, что все комплектующие корректно добавлены и принадлежат к допустимым группам.
5. Если ошибка возникает в документе «Сборка (разборка) товаров»
— Проверьте табличную часть документа.
— Убедитесь, что комплект и комплектующие из одной группы.
— Если нет — исправьте номенклатуру или создайте отдельный комплект с комплектующими из нужной группы.—
Если нужно быстро проверить группы номенклатуры в запросе:
1С (Код)12345678|ВЫБРАТЬ| Номенклатура.Ссылка КАК Номенклатура,| Номенклатура.Наименование,| Номенклатура.Родитель КАК Группа|ИЗ| Справочник.Номенклатура КАК Номенклатура|ГДЕ| Номенклатура.Ссылка В (&СписокНоменклатуры)Подставьте список комплектующих и комплекта, чтобы увидеть группы.
—
Если в вашей конфигурации есть расширение или доработка, которая ограничивает группы, проверьте логику проверки.
—
Если нужна конкретика — приложите скриншот или код документа сборки, где возникает ошибка.
27 августа 2026 в 10:33 в ответ на: Как в 1С активировать строку после сканирования штрихкода в расширении? #38487В 1С Бухгалтерии (например, редакция 3.0) для расширения, чтобы при сканировании штрихкода автоматически активировать (выделить и начать редактирование) добавленную строку в табличной части, нужно:
1. Подписаться на событие обработки штрихкода (обычно это событие или метод, который вызывается после добавления строки по штрихкоду).
2. В обработчике получить ссылку на добавленную строку.
3. Через элемент формы табличной части установить текущую строку и запустить редактирование.
4. Чтобы корректно сработало, вызов установки фокуса и редактирования нужно делать через
ОтложитьВыполнение.Пример кода в расширении (в модуле формы документа, клиент):
1С (Код)1234567891011121314151617181920212223242526272829&НаКлиентеПроцедура ПослеОбработкиШтрихкода(РезультатОбработки)Если РезультатОбработки.ДобавленныеСтроки = Неопределено Или РезультатОбработки.ДобавленныеСтроки.Количество() = 0 ТогдаВозврат;КонецЕсли;// Получаем последнюю добавленную строкуПоследняяСтрока = РезультатОбработки.ДобавленныеСтроки[РезультатОбработки.ДобавленныеСтроки.Количество() - 1];// Находим индекс строки в табличной части по идентификаторуИндексСтроки = Элементы.Товары.Объект.НайтиПоИдентификатору(ПоследняяСтрока);Если ИндексСтроки = Неопределено ТогдаВозврат;КонецЕсли;// Отложенное выполнение, чтобы форма успела обновитьсяОтложитьВыполнение(Новый ОписаниеПроцедуры(Процедура()Элементы.Товары.УстановитьФокус();Элементы.Товары.ТекущаяСтрока = ИндексСтроки;Элементы.Товары.РедактироватьЯчейку(ИндексСтроки, 0); // 0 - номер колонки для редактирования, замените на нужныйКонецПроцедуры));КонецПроцедурыГде:
—
Элементы.Товары— элемент табличной части, замените на имя вашей табличной части.—
РезультатОбработки— структура с результатом сканирования, в которой естьДобавленныеСтроки— массив идентификаторов добавленных строк.—
НайтиПоИдентификатору— метод табличной части, который возвращает индекс строки по идентификатору.—
Как подключить:
— В расширении подпишитесь на событие или переопределите метод, который вызывается после сканирования штрихкода (зависит от конфигурации).
— Вызовите эту процедуру с параметром результата.
—
Если в вашей конфигурации нет готового события, можно в расширении переопределить метод обработки штрихкода, например:
1С (Код)12345678910&НаКлиентеПроцедура ОбработкаШтрихкода(Штрихкод)// Вызов базовой обработкиРезультат = ЭтотОбъект.ОбработкаШтрихкода(Штрихкод);// Вызов процедуры активации строкиПослеОбработкиШтрихкода(Результат);Возврат Результат;КонецПроцедуры—
Если нужна помощь с конкретным местом подключения или кодом — приложите фрагмент, где происходит обработка штрихкода.
26 августа 2026 в 16:30 в ответ на: Какие типы данных допустимы при записи структуры в JSON в 1С? #38485Ошибка «Значение содержит данные недопустимых типов» при вызове
ЗаписатьJSONвозникает, когда в структуре или массиве есть значения, которые платформа 1С не может сериализовать в JSON.Допустимые типы для сериализации в JSON через
ЗаписатьJSON:— Примитивы: Строка, Число, Булево, Дата, Неопределено (будет null)
— Структура (ключи — строки, значения — допустимые типы)
— Массив (элементы — допустимые типы)
— ТаблицаЗначений (будет сериализована как массив структур)
— Ссылки на объекты 1С — нельзя напрямую, нужно преобразовать в строку или структуру
— Не поддерживаются: объекты, COM-объекты, сложные типы, например, реквизиты с типом «Объект», «Документ», «Справочник» и т.п.—
В вашем коде вероятно проблема в том, что в структуре есть поля, которые являются ссылками на объекты 1С (например,
СсылкаНаДокумент,Организация,Контрагент,Договор,Склади т.п.). Вы их просто приводите к строке черезСтрока(), но это не всегда корректно, особенно если это не строка, а объект.Рекомендации:
1. Для ссылок на объекты 1С используйте метод
.Представление()или.Ссылкас последующим преобразованием в строку, например:1С (Код)1ПолучениеДанныхИзДокумента.Вставить("ДокументРеализации", СсылкаНаДокумент.Представление());или
1С (Код)1ПолучениеДанныхИзДокумента.Вставить("ДокументРеализации", Строка(СсылкаНаДокумент));но лучше проверить, что именно возвращает
Строка(СсылкаНаДокумент)— иногда это не то, что ожидается.2. В табличной части тоже проверьте, что все поля — это простые типы (строки, числа, даты). Если там есть ссылки, то их тоже нужно преобразовать в строку или структуру с нужными полями.
Например:
1С (Код)1СтруктураСтроки.Вставить("Номенклатура", СтрТаблицы.Номенклатура.Представление());3. Если есть даты, они сериализуются нормально, но если есть неопределенные значения — лучше заменить на
Неопределеноили"".4. Если есть булевы — они сериализуются нормально.
—
Пример исправления для ссылок:
1С (Код)1234ПолучениеДанныхИзДокумента.Вставить("ДокументРеализации", СсылкаНаДокумент.Представление());ПолучениеДанныхИзДокумента.Вставить("ПолеОрганизация", Организация.Представление());ПолучениеДанныхИзДокумента.Вставить("ПолеОргИНН", Строка(ОрганизацияИНН));...В табличной части:
1С (Код)12СтруктураСтроки.Вставить("Номенклатура", СтрТаблицы.Номенклатура.Представление());СтруктураСтроки.Вставить("Склад", СтрТаблицы.Склад.Представление());Если
Представление()не подходит, можно взять нужные реквизиты из объекта и сформировать структуру.—
Проверка типов перед сериализацией:
Можно написать функцию, которая рекурсивно обходит структуру/массив и преобразует все ссылки в строки:
1С (Код)123456789101112131415161718192021222324252627282930Функция ПреобразоватьДляJSON(Знач)Если ТипЗнч(Знач) = Тип("Структура") ТогдаРезультат = Новый Структура;Для каждого Элемент Из Знач ЦиклРезультат.Вставить(Элемент.Ключ, ПреобразоватьДляJSON(Элемент.Значение));КонецЦикла;Возврат Результат;ИначеЕсли ТипЗнч(Знач) = Тип("Массив") ТогдаРезультат = Новый Массив;Для каждого Элемент Из Знач ЦиклРезультат.Добавить(ПреобразоватьДляJSON(Элемент));КонецЦикла;Возврат Результат;ИначеЕсли ТипЗнч(Знач) = Тип("Ссылка") ТогдаВозврат Знач.Представление();ИначеЕсли ТипЗнч(Знач) = Тип("Дата") ТогдаВозврат Знач;ИначеЕсли ТипЗнч(Знач) = Тип("Булево") ТогдаВозврат Знач;ИначеЕсли ТипЗнч(Знач) = Тип("Число") ТогдаВозврат Знач;ИначеЕсли ТипЗнч(Знач) = Тип("Строка") ТогдаВозврат Знач;ИначеЕсли Знач = Неопределено ТогдаВозврат Неопределено;Иначе// Прочие типы преобразовать в строкуВозврат Строка(Знач);КонецЕсли;КонецФункцииИ перед сериализацией делать:
1С (Код)12ДанныеДляJSON = ПреобразоватьДляJSON(ПолучениеДанныхИзДокумента);ЗаписатьJSON(ЗаписьJSON, ДанныеДляJSON);—
Итог:
— В структуре и массивах должны быть только простые типы: строки, числа, даты, булевы, структуры, массивы.
— Ссылки на объекты 1С нужно преобразовывать в строки или структуры с нужными полями.
— Не должно быть объектов, COM-объектов, сложных типов.—
Рекомендую посмотреть подробный разбор здесь:
https://helpf.pro/faq/view/1664.html
там есть примеры работы с JSON и преобразования типов.26 августа 2026 в 16:15 в ответ на: Как правильно сериализовать структуру в JSON в 1С без СериализаторXDTO? #38483Ваша ошибка связана с тем, что объекты
ЗаписьСтрокииСериализаторXDTOотсутствуют в вашей версии платформы 1С (толстый клиент, обычное приложение). Эти объекты появились в более новых версиях платформы (8.3.7+).Для решения задачи сериализации структуры в JSON с выбором файла в более старых версиях 1С (до 8.3.7) используйте стандартные методы
ПрочитатьJSON()иЗаписатьJSON()из глобального контекста, либо реализуйте сериализацию вручную.Вот рабочий пример для версии 8.3.6 и ниже, без использования
СериализаторXDTO:1С (Код)123456789101112131415161718192021222324252627282930313233343536373839Процедура Кнопка2Нажатие(Элемент)// Формируем структуру с даннымиПолучениеДанныхИзДокумента = Новый Структура;ПолучениеДанныхИзДокумента.Вставить("ДокументРеализации", Строка(СсылкаНаДокумент));// ... вставьте остальные поля как у вас ...МассивТаблицы = Новый Массив;Для каждого СтрТаблицы Из ТабличнаяЧасть ЦиклСтруктураСтроки = Новый Структура;СтруктураСтроки.Вставить("Артикул", СтрТаблицы.Артикул);// ... остальные поля ...МассивТаблицы.Добавить(СтруктураСтроки);КонецЦикла;ПолучениеДанныхИзДокумента.Вставить("Массив", МассивТаблицы);// Диалог выбора файлаДиалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);Диалог.Фильтр = "Файлы JSON (*.json)|*.json";Если НЕ Диалог.Выбрать() ТогдаВозврат;КонецЕсли;Путь = Диалог.ПолноеИмяФайла;// Сериализация и запись в файлЗаписатьJSONВФайл(ПолучениеДанныхИзДокумента, Путь);КонецПроцедурыПроцедура ЗаписатьJSONВФайл(Данные, Путь)// Создаем объект записи JSONЗаписьJSON = Новый ЗаписьJSON;ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(, Символы.Таб);ЗаписьJSON.ОткрытьФайл(Путь, , , ПараметрыЗаписи);// Записываем структуру в JSONЗаписатьJSON(ЗаписьJSON, Данные);// Закрываем поток записиЗаписьJSON.Закрыть();КонецПроцедурыОбъяснения:
—
ЗаписьJSONиПараметрыЗаписиJSON— стандартные объекты платформы 1С для записи JSON.
—ЗаписатьJSON(ЗаписьJSON, Данные)— глобальная процедура, которая сериализует структуру/массив в JSON.
—ЗаписьJSON.ОткрытьФайлоткрывает файл для записи.
—ЗаписьJSON.Закрыть()закрывает файл.Такой код работает в версиях 8.3.6 и ниже, где нет
СериализаторXDTO.Если у вас версия платформы ниже 8.3.6, то придется использовать сторонние библиотеки или писать собственную сериализацию.
—
Если хотите проверить версию платформы, используйте:
1С (Код)1Сообщить(ВерсияПлатформы());—
Рекомендации:
— Используйте
ЗаписатьJSONиЧитатьJSONиз стандартных средств платформы.
— Не используйтеСериализаторXDTOв старых версиях.
— Для чтения/записи JSON в файл используйтеЗаписьJSONиЧтениеJSON.—
Рекомендую посмотреть здесь — пример работы с JSON в 1С:
https://helpf.pro/faq/view/1664.html
https://infostart.ru/public/1043459/26 августа 2026 в 13:00 в ответ на: Как добавить поле Регистратор в запрос на остатки и обороты? #38481Чтобы добавить измерение Регистратор в ваш запрос, нужно:
1. Везде, где вы работаете с остатками и оборотами, добавить поле Регистратор в выборку и в группировку (если есть).
2. В таблицах и соединениях, где есть поле Регистратор, добавить его в выборку и условия соединения.
3. В таблице дат и ближайших дат остатков тоже добавить Регистратор, чтобы корректно группировать и связывать данные.Пример, как добавить Регистратор в ваш запрос (только ключевые места):
—
### 1. В выборке из регистра накопления остатков и оборотов:
|ВЫБРАТЬ
| ТоварыНаСкладахОстаткиИОбороты.Период,
| ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстаткиИОбороты.Регистратор,
| ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток
|ПОМЕСТИТЬ ВТ_Остатки
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , День, Движения, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстаткиИОбороты—
### 2. В таблице ближайших дат остатков добавить Регистратор в выборку и группировку:
|ВЫБРАТЬ
| ТаблицаДат.Период КАК ТДПериод,
| МАКСИМУМ(ВТ_Остатки.Период) КАК ПериодРО,
| ВТ_Остатки.Номенклатура,
| ВТ_Остатки.Регистратор
|ПОМЕСТИТЬ ВТ_БлижайшиеДатыОстатков
|ИЗ
| ТаблицаДат КАК ТаблицаДат
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
| ПО ТаблицаДат.Период >= ВТ_Остатки.Период
|СГРУППИРОВАТЬ ПО
| ТаблицаДат.Период,
| ВТ_Остатки.Номенклатура,
| ВТ_Остатки.Регистратор—
### 3. В основном запросе добавить Регистратор в выборку и условия соединения:
|ВЫБРАТЬ
| ВТ_БлижайшиеДатыОстатков.ТДПериод КАК ТДПериод,
| ВТ_Остатки.Номенклатура,
| ВТ_Остатки.Регистратор,
| ВЫБОР
| КОГДА ТДПериод = ВТ_Остатки.Период
| ТОГДА ВТ_Остатки.КоличествоНачальныйОстаток
| ИНАЧЕ ВТ_Остатки.КоличествоКонечныйОстаток
| КОНЕЦ КАК КоличествоНачальныйОстаток,
| ВЫБОР
| КОГДА ТДПериод = ВТ_Остатки.Период
| ТОГДА ВТ_Остатки.КоличествоПриход
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоПриход,
| ВЫБОР
| КОГДА ТДПериод = ВТ_Остатки.Период
| ТОГДА ВТ_Остатки.КоличествоРасход
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоРасход,
| ВТ_Остатки.КоличествоКонечныйОстаток,
| ТоварыНаСкладахОбороты.Регистратор
|ИЗ
| ВТ_БлижайшиеДатыОстатков КАК ВТ_БлижайшиеДатыОстатков
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
| ПО ВТ_БлижайшиеДатыОстатков.ПериодРО = ВТ_Остатки.Период
| И ВТ_БлижайшиеДатыОстатков.Номенклатура = ВТ_Остатки.Номенклатура
| И ВТ_БлижайшиеДатыОстатков.Регистратор = ВТ_Остатки.Регистратор
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОбороты
| ПО ВТ_Остатки.Период = НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Период, ДЕНЬ)
| И ВТ_Остатки.Регистратор = ТоварыНаСкладахОбороты.Регистратор
|УПОРЯДОЧИТЬ ПО
| ТДПериод—
### Кратко:
— Добавьте поле Регистратор в выборки из регистра остатков и оборотов.
— Добавьте Регистратор в таблицу ближайших дат и группировку.
— В условиях соединения добавьте сравнение по Регистратору.
— В итоговой выборке добавьте Регистратор.—
Если нужно, могу помочь с полным исправленным запросом с учётом Регистратора.
26 августа 2026 в 12:55 в ответ на: Какие ошибки в запросе 1С могут вызывать неправильные остатки товаров? #38479В вашем запросе есть несколько ошибок синтаксиса и логики, которые мешают корректному выполнению:
1. Дублирование соединений (ПО) подряд
В блоке с соединениями:|ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(…) КАК ТоварыНаСкладахОбороты
|ПО ВТ_Остатки.Период = НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Период, ДЕНЬ)
|ПО ВТ_БлижайшиеДатыОстатков.ПериодРО = ВТ_Остатки.Период
|И ВТ_БлижайшиеДатыОстатков.Номенклатура = ВТ_Остатки.НоменклатураЗдесь два оператора ПО подряд — это ошибка. В 1С запросах после каждого соединения должен быть только один оператор ПО.
Правильно:
|ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
|ПО ВТ_БлижайшиеДатыОстатков.ПериодРО = ВТ_Остатки.Период
|И ВТ_БлижайшиеДатыОстатков.Номенклатура = ВТ_Остатки.Номенклатура
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОбороты
|ПО ВТ_Остатки.Период = НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Период, ДЕНЬ)2. Отсутствие запятых между полями в выборке
В блоке выбора полей:|ВЫБОР … КОНЕЦ КАК КоличествоРасход,
|ВТ_Остатки.КоличествоКонечныйОстаток
|ТоварыНаСкладахОбороты.РегистраторМежду
КоличествоКонечныйОстатокиТоварыНаСкладахОбороты.Регистраторотсутствует запятая.Добавьте запятую:
|ВЫБОР … КОНЕЦ КАК КоличествоРасход,
|ВТ_Остатки.КоличествоКонечныйОстаток,
|ТоварыНаСкладахОбороты.Регистратор3. Дублирование соединений с ВТ_Остатки и ТоварыНаСкладахОбороты
В запросе дважды повторяются соединения с ВТ_Остатки и ТоварыНаСкладахОбороты, что избыточно и вызовет ошибку.Удалите повторяющиеся соединения, оставьте по одному соединению каждого.
4. Рекомендация по построению таблицы дат
Ваш способ построения таблицы дат через разряды — классический и рабочий. Убедитесь, что параметры&ДатаНачалаи&ДатаОкончаниякорректны.—
### Итог: исправленный фрагмент с соединениями и выборкой
|ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
|ПО ВТ_БлижайшиеДатыОстатков.ПериодРО = ВТ_Остатки.Период
|И ВТ_БлижайшиеДатыОстатков.Номенклатура = ВТ_Остатки.Номенклатура
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОбороты
|ПО ВТ_Остатки.Период = НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Период, ДЕНЬ)—
|ВЫБРАТЬ
| ВТ_БлижайшиеДатыОстатков.ТДПериод КАК ТДПериод,
| ВТ_Остатки.Номенклатура,
| ВЫБОР
| КОГДА ТДПериод = ВТ_Остатки.Период
| ТОГДА ВТ_Остатки.КоличествоНачальныйОстаток
| ИНАЧЕ ВТ_Остатки.КоличествоКонечныйОстаток
| КОНЕЦ КАК КоличествоНачальныйОстаток,
| ВЫБОР
| КОГДА ТДПериод = ВТ_Остатки.Период
| ТОГДА ВТ_Остатки.КоличествоПриход
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоПриход,
| ВЫБОР
| КОГДА ТДПериод = ВТ_Остатки.Период
| ТОГДА ВТ_Остатки.КоличествоРасход
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоРасход,
| ВТ_Остатки.КоличествоКонечныйОстаток,
| ТоварыНаСкладахОбороты.Регистратор
|ИЗ
| ВТ_БлижайшиеДатыОстатков КАК ВТ_БлижайшиеДатыОстатков
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
| ПО ВТ_БлижайшиеДатыОстатков.ПериодРО = ВТ_Остатки.Период
| И ВТ_БлижайшиеДатыОстатков.Номенклатура = ВТ_Остатки.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОбороты
| ПО ВТ_Остатки.Период = НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Период, ДЕНЬ)
|УПОРЯДОЧИТЬ ПО
| ТДПериод—
Если нужно, могу помочь с полным исправленным текстом запроса.
26 августа 2026 в 11:20 в ответ на: Как исправить ошибки синтаксиса в 1С при использовании анонимных процедур? #38477Ошибка «Ожидается выражение» и «Ожидается ключевое слово ‘КонецЕсли'» указывает на синтаксическую ошибку в коде, чаще всего из-за неправильного использования
Новый ОписаниеПроцедуры.В 1С
Новый ОписаниеПроцедурытребует в качестве параметра имя процедуры или анонимную процедуру, но анонимные процедуры в 1С пишутся так:1С (Код)123Новый ОписаниеПроцедуры(Процедура()// тело процедурыКонецПроцедуры)Обратите внимание, что
Процедура()иКонецПроцедурыдолжны быть внутри скобокНовый ОписаниеПроцедуры(...).В вашем коде, скорее всего, пропущена скобка или неверно оформлен блок.
Правильный пример с отложенным выполнением:
1С (Код)123456789ОтложитьВыполнение(Новый ОписаниеПроцедуры(Процедура()Элементы.Товары.УстановитьФокус();Элементы.Товары.ТекущаяСтрока = ИндексСтроки;Элементы.Товары.РедактироватьЯчейку(ИндексСтроки, 0);КонецПроцедуры));Если у вас ошибка, значит, в вашем коде где-то:
— Лишний или отсутствующий символ
(или)
— Неправильное расположениеПроцедура()иКонецПроцедуры
— Возможно, вы вставили код в модуль, где нельзя использовать анонимные процедуры (например, в серверном модуле)—
Проверьте, что:
1. Процедура с
ОтложитьВыполнениенаходится в клиентском модуле (форма, общий модуль с пометкой &НаКлиенте).2. Код выглядит именно так (пример):
1С (Код)123456789101112131415161718192021222324252627282930313233343536&НаКлиентеПроцедура VDP_Подключаемый_ПослеОбработкиШтрихкодов(РезультатОбработкиШтрихкода, ДополнительныеПараметры) ЭкспортЕсли РезультатОбработкиШтрихкода.ТребуетсяОбработкаШтрихкода Тогда// Вызов основной обработкиШтрихкодированиеИСКлиентПереопределяемый.ПослеОбработкиШтрихкодов(ЭтотОбъект,ДанныеДляОбработки,КэшированныеЗначения);Если РезультатОбработкиШтрихкода.ДобавленныеСтроки <> Неопределено И РезультатОбработкиШтрихкода.ДобавленныеСтроки.Количество() > 0 ТогдаПоследняяСтрока = РезультатОбработкиШтрихкода.ДобавленныеСтроки[РезультатОбработкиШтрихкода.ДобавленныеСтроки.Количество() - 1];ИндексСтроки = Элементы.Товары.Объект.НайтиПоИдентификатору(ПоследняяСтрока);Если ИндексСтроки <> Неопределено ТогдаОтложитьВыполнение(Новый ОписаниеПроцедуры(Процедура()Элементы.Товары.УстановитьФокус();Элементы.Товары.ТекущаяСтрока = ИндексСтроки;Элементы.Товары.РедактироватьЯчейку(ИндексСтроки, 0);КонецПроцедуры));КонецЕсли;КонецЕсли;КонецЕсли;КонецПроцедуры3. Если ошибка сохраняется, попробуйте временно заменить
ОтложитьВыполнениена простой вызов, чтобы проверить синтаксис:1С (Код)123Элементы.Товары.УстановитьФокус();Элементы.Товары.ТекущаяСтрока = ИндексСтроки;Элементы.Товары.РедактироватьЯчейку(ИндексСтроки, 0);Если с этим всё нормально, значит проблема именно в оформлении
Новый ОписаниеПроцедуры.—
Если хотите, могу проверить ваш конкретный код — пришлите точный фрагмент с
ОтложитьВыполнение.26 августа 2026 в 11:10 в ответ на: Как после добавления строк в табличную часть включить редактирование ячейки? #38475Вот полный пример процедуры с отложенным выполнением, которая после добавления строк в табличную часть устанавливает текущую строку, фокус и начинает редактирование ячейки:
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738&НаКлиенте&ИзменениеИКонтроль("Подключаемый_ПослеОбработкиШтрихкодов")Процедура VDP_Подключаемый_ПослеОбработкиШтрихкодов(РезультатОбработкиШтрихкода, ДополнительныеПараметры) ЭкспортЕсли РезультатОбработкиШтрихкода.ТребуетсяОбработкаШтрихкода Тогда// Вызов основной обработкиШтрихкодированиеИСКлиентПереопределяемый.ПослеОбработкиШтрихкодов(ЭтотОбъект,ДанныеДляОбработки,КэшированныеЗначения);// Проверяем, есть ли добавленные строкиЕсли РезультатОбработкиШтрихкода.ДобавленныеСтроки <> Неопределено И РезультатОбработкиШтрихкода.ДобавленныеСтроки.Количество() > 0 ТогдаПоследняяСтрока = РезультатОбработкиШтрихкода.ДобавленныеСтроки[РезультатОбработкиШтрихкода.ДобавленныеСтроки.Количество() - 1];ИндексСтроки = Элементы.Товары.Объект.НайтиПоИдентификатору(ПоследняяСтрока);Если ИндексСтроки <> Неопределено ТогдаОтложитьВыполнение(Новый ОписаниеПроцедуры(Процедура()Элементы.Товары.УстановитьФокус();Элементы.Товары.ТекущаяСтрока = ИндексСтроки;Элементы.Товары.РедактироватьЯчейку(ИндексСтроки, 0);КонецПроцедуры));КонецЕсли;КонецЕсли;КонецЕсли;КонецПроцедурыОбъяснение:
—
ОтложитьВыполнениеоткладывает выполнение вложенной процедуры на следующий цикл обработки событий, что позволяет форме обновить табличную часть и отобразить новые строки.
— Внутри отложенной процедуры сначала устанавливается фокус на табличную часть, затем выбирается нужная строка и запускается редактирование ячейки.
— Убедитесь, что имя табличной части —"Товары". Если другое, замените в коде.Такой подход решает проблему с тем, что фокус и редактирование не срабатывают сразу после добавления строк.
-
АвторЗаписи