База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как в УТ 3 добавить создание первичного документа при свертке базы?
- В этой теме 1 ответ, 2 участника, последнее обновление 8 часов, 8 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
13 июня 2026 в 15:01 #37843
Как сделать так чтобы обработка свертка информационной базы в Управлении Торговли 3 заполняла в поле Расчетный документа первичный документ? Или подскажи как переписать эту обработку чтобы создавала первичный документ если его нет
-
13 июня 2026 в 15:01 #37844
В 1С:Управление Торговлей 3 (УТ 11/УТ 10.3) при свертке базы (например, при вводе начальных остатков или переносе данных) поле «Расчетный документ» в табличной части «Расчеты с партнерами» часто должно ссылаться на «Первичный документ» — документ, который отражает первичные данные (например, реализацию, оплату и т.п.).
Чтобы автоматизировать заполнение этого поля и создавать «Первичный документ», если его нет, нужно доработать обработку свертки следующим образом:
1. Проверка наличия первичного документа
При обработке каждой строки табличной части, где есть расчет с партнером, проверяйте, есть ли уже связанный первичный документ (например, по номеру, дате, контрагенту, сумме).2. Создание первичного документа при отсутствии
Если первичный документ не найден, создавайте новый документ нужного типа (например, «Реализация товаров и услуг», «Оплата поставщику» и т.п.) с заполнением обязательных реквизитов и табличных частей.3. Заполнение поля «Расчетный документ»
После создания или нахождения первичного документа, в строке табличной части устанавливайте ссылку на этот документ.—
### Примерный алгоритм и код (BSL):
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465// Процедура обработки строки табличной частиПроцедура ОбработатьСтроку(СтрокаТЧ)// Попытка найти существующий первичный документПервичныйДокумент = НайтиПервичныйДокумент(СтрокаТЧ);Если ПервичныйДокумент = Неопределено Тогда// Создаем новый первичный документПервичныйДокумент = СоздатьПервичныйДокумент(СтрокаТЧ);ПервичныйДокумент.Записать();КонецЕсли;// Заполняем поле РасчетныйДокументСтрокаТЧ.РасчетныйДокумент = ПервичныйДокумент.Ссылка;КонецПроцедуры// Функция поиска первичного документа по параметрам строкиФункция НайтиПервичныйДокумент(СтрокаТЧ)Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ ПЕРВЫЕ 1| ПервичныеДокументы.Ссылка|ИЗ| Документ.РеализацияТоваровУслуг КАК ПервичныеДокументы|ГДЕ| ПервичныеДокументы.Контрагент = &Контрагент| И ПервичныеДокументы.Дата = &Дата| И ПервичныеДокументы.СуммаДокумента = &Сумма";Запрос.УстановитьПараметр("Контрагент", СтрокаТЧ.Контрагент);Запрос.УстановитьПараметр("Дата", СтрокаТЧ.ДатаРасчетногоДокумента);Запрос.УстановитьПараметр("Сумма", СтрокаТЧ.Сумма);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Если Выборка.Следующий() ТогдаВозврат Выборка.Ссылка;ИначеВозврат Неопределено;КонецЕсли;КонецФункции// Функция создания первичного документаФункция СоздатьПервичныйДокумент(СтрокаТЧ)Док = Документы.РеализацияТоваровУслуг.СоздатьДокумент();Док.Дата = СтрокаТЧ.ДатаРасчетногоДокумента;Док.Контрагент = СтрокаТЧ.Контрагент;Док.Организация = СтрокаТЧ.Организация;// Заполнить другие обязательные реквизиты// Заполнить табличную часть товарами или услугами, если нужно// Например:// НоваяСтрока = Док.Товары.Добавить();// НоваяСтрока.Номенклатура = ...;// НоваяСтрока.Количество = ...;// НоваяСтрока.Цена = ...;Возврат Док;КонецФункции—
### Важные моменты:
— Тип первичного документа зависит от типа операции (реализация, оплата, возврат и т.п.). Нужно предусмотреть логику выбора типа документа.
— При создании первичного документа обязательно заполните все обязательные реквизиты, иначе запись не пройдет.
— Если в вашей обработке свертки используется табличный документ или другой объект, адаптируйте код под структуру данных.
— Для ускорения поиска первичных документов можно использовать индексы или дополнительные критерии.
— Если первичный документ должен содержать ссылку на старую систему (например, номер и дата из старой базы), заполните соответствующие реквизиты.—
### Рекомендую посмотреть здесь:
— Пример автоматического создания первичных документов при вводе начальных остатков в 1С:ERP (логика схожа)
https://infostart.ru/1c/articles/1170920/— Как сделать ввод на основании с проверкой существования документа
https://infostart.ru/1c/articles/278216/— Пример заполнения и проведения документов программно
https://infostart.ru/1c/articles/185636/—
Если нужна помощь с конкретным кодом вашей обработки — приложите фрагмент, помогу адаптировать.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.