Работаю в 1С Предприятие, Управление небольшой фирмой для Украины, редакция 1.5.
Имею документы "Котировка" и "СчетНаОплату". В документе "Котировка", указан список клиентов в реквизите "Клиент" ТЧ "Расходы"
Стоит задача на основании документа "Котировка" заполнить документ "СчетНаОплату", причем создать документов "СчетНаОплату" нужно столько сколько клиентов указано в документе "Котировка".
scoodizzy619 @ 04.01.25, 16:11
, Да, можно, Цикл обхода табличной части Котировка, при обходе цикла вызывать процедуру создания нового документа СчетНаОплату с заполнением табличной части + наверное проверку сделать что таких "документов" не было ранее создано.
scoodizzy619 @ Сегодня, 10:57
, Ну во- первых такие вещи не пишутся в обработке заполнения, не "корректный" подход. Обычно пишутся обработка с признаком "заполнение объекта"; как вариант а лучше по типу
2 Уточните у Вас Обычные формы или Управляемые конфигурации ( разные подходы)
Пример что когда то писал давно :
ОтборОбновить = Новый Структура("Обновить",Истина);
Если Объект.Товары.НайтиСтроки(ОтборОбновить).Количество() =0 Тогда Сообщить ("Не выбраны позиции номенклатуры. Прервано. ",СтатусСообщения.Важное); Возврат; КонецЕсли;
Если ЗначениеЗаполнено(Объект.Документ1С) Тогда ДокументОбъект = Объект.Документ1С.ПолучитьОбъект();
ДокументОбъект.Товары.Очистить(); ДокументОбъект.ВидыЦен.Очистить(); Иначе ДокументОбъект = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); ДокументОбъект.Дата = ТекущаяДата();
Для Каждого СтрТовары Из Объект.Товары Цикл Если ЗначениеЗаполнено(СтрТовары.Номенклатура) и ЗначениеЗаполнено(СтрТовары.ВидНоменклатуры) и (СтрТовары.Обновить) Тогда // поищем дубляж СтрокаТЧ = ДокументОбъект.Товары.Найти(СтрТовары.Номенклатура,"Номенклатура");
Если СтрокаТЧ = Неопределено Тогда СтрДок = ДокументОбъект.Товары.Добавить(); ЗаполнитьЗначенияСвойств(СтрДок,СтрТовары); СтрДок.ВидЦены = Объект.ВидЦены; СтрДок.Упаковка = СтрДок.Номенклатура.ЕдиницаИзмерения; Иначе // сравним цены Если СтрокаТЧ.Цена < СтрТовары.Цена Тогда СтрокаТЧ.Цена = СтрТовары.Цена; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла;
После выполнить ОткрытьФорму для Объект.Документ1С ; ( ссылка-документ) либо собрать их в массив и открыть каждый документ что создан на основании в цикле перебором уже этого массива;
Profi_1C77 @ Сегодня, 11:22
, пример открытия созданного документа
Результат = ОткрытьФорму("Документ.ПоступлениеТоваровУслуг.ФормаОбъекта",Новый Структура ("Ключ",Объект.Документ1С));
scoodizzy619 @ Сегодня, 10:57
, - >>> и нужно к примеру создавать кнопку на документе и через нее это выводить? как вариант да, если не использовать БСП ( или их нету в вашей конфигурации)
scoodizzy619 @ Сегодня, 12:02
, тогда БСП у Вас вероятно есть в конфигурации, идеально через Функция СведенияОВнешнейОбработке() Экспорт Я б сделал бы если у вас мало опыта, сначала внешнюю обработку, в которой бы создал реквизит ССылкаНаДокументОснование прописал бы процедуру создания/ заполнения документа СчетНаОплату, а потом бы уже доработал как его внедрить в документ Котировка
Хочу попробовать через Цикл. Впринципе получилось, формы открываются в количестве сколько самих строк. Вот сама обработка:
Но мне нужно чтобы они открывались именно по количеству уникальных значение, если поставщики повторяются то не создавать еще.
И столкнулся с проблемой. Формы заполняются автоматически но мне нужно чтобы каждая форма заполнялась по разному в соответствии со строкой по которой она создавалась.
Если форма создалась по значению контрагента, к примеру, ТОВ "ДревоБуд" то в новой форме должно заполнится вся ТЧ строками по данному контрагенту с документа основания.
scoodizzy619 @ 10.01.25, 22:42
, Обычно создается ТЗ в которой сначала группируются схожие объекты- значения типа "Поставщик/Контрагент/ Товар " а потом уже они уже в цикле обходом по ТЗ создаются документы и переносятся данные
scoodizzy619 @ Вчера, 18:42
, Можно, примеры в интернете , их полно. На Вашем коде , тоже можно, но вы его "картинкой" с сообщениях ставите а не текстом, как бы ... Дайте код, гляну по возможности; А лучше все таки самому на примерах в интернете, сайтов полно.
Profi_1C77 @ Сегодня, 9:44
, Примеров много, знаю. Но найти похожее задание не доводилось.
Процедура СчетПоРасходам(Команда) СчетПоРасходамНаСервере(); УникальныеНаименования = Новый Соответствие; Для Каждого СтрРасходы ИЗ Объект.Расходы Цикл Таблица = УникальныеНаименования.Получить(СтрРасходы.Поставщик);
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!