Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 фев 2026, 06:05

перезаписать/удалить строку в тч спр программно

Автор sali, 26 янв 2026, 09:39

0 Пользователей и 1 гость просматривают эту тему.

sali

извините, если вопрос тупой
при загрузке маршрутов ищется склад , есть такой там или нет. если , предположим, в маршруте №1 нету в тч склада под названием "Оптовый склад" , то он добавляется ,  но если такой склад есть но там поменялись другие данные - дни прохода (это дни недели когда контрагент должен посещать данный склад), то тут он должен перезаписываться либо удаляется строка и создается с новыми данными этого склада.

как сделать перезапись или удаление конкретной строки в тч справочника?
код сейчас такой
Если СтрокаТаблицы.routes <> Неопределено Тогда
Для Каждого СтрокаТаблицыМаршрутов Из СтрокаТаблицы.routes  Цикл
СправочникСсылкаСклад = Справочники.МаршрутыАгентов.НайтиПоГУИД(Контекст.Клиент, СтрокаТаблицыМаршрутов.routeID);

Если Не ЗначениеЗаполнено(СправочникСсылкаСклад) Тогда          //нет маршрута создаем его                   
СправочникСсылкаСклад = Справочники.МаршрутыАгентов.ПолучитьСсылку();
СправочникОбъектСклад = Справочники.МаршрутыАгентов.СоздатьЭлемент();
СправочникОбъектСклад.УстановитьСсылкуНового(СправочникСсылкаСклад);

СправочникОбъектСклад.Владелец = Контекст.Клиент;
СправочникОбъектСклад.Наименование = СтрокаТаблицыМаршрутов.name;
СправочникОбъектСклад.ГУИДИсточника = СтрокаТаблицыМаршрутов.routeID;

НоваяСтрока = СправочникОбъектСклад.Маршруты.Добавить();
НоваяСтрока.Контрагент = СтрокаТаблицыМаршрутов.agent;
НоваяСтрока.ГУИДКонтрагента = СтрокаТаблицыМаршрутов.agentID;
НоваяСтрока.Склад = СтрокаТаблицыМаршрутов.stock; 
НоваяСтрока.ГУИДИсточникаСклад = СтрокаТаблицыМаршрутов.stockID;
НоваяСтрока.Дни = СтрокаТаблицыМаршрутов.routedays;

СправочникОбъектСклад.Записать();   

ИначеЕсли ЗначениеЗаполнено(СправочникСсылкаСклад.Маршруты.Найти(СтрокаТаблицыМаршрутов.stock, "Склад")) Тогда
// есть маршрут, ищем в нем склад. если есть - обновляем данные
СправочникОбъектСклад = СправочникСсылкаСклад.ПолучитьОбъект(); 
НайденныйСклад = СправочникОбъектСклад.Маршруты.Найти(СтрокаТаблицыМаршрутов.stock, "Склад");

ИначеЕсли Не ЗначениеЗаполнено(СправочникСсылкаСклад.Маршруты.Найти(СтрокаТаблицыМаршрутов.stock, "Склад")) Тогда 
// есть маршрут , но нет склада - добавляем склад
СправочникОбъектСклад = СправочникСсылкаСклад.ПолучитьОбъект();
новаястрока = СправочникОбъектСклад.Маршруты.Добавить();
НоваяСтрока.Контрагент = СтрокаТаблицыМаршрутов.agent; 
НоваяСтрока.ГУИДКонтрагента = СтрокаТаблицыМаршрутов.agentID;
НоваяСтрока.Склад = СтрокаТаблицыМаршрутов.stock; 
НоваяСтрока.ГУИДИсточникаСклад = СтрокаТаблицыМаршрутов.stockID;
НоваяСтрока.Дни = СтрокаТаблицыМаршрутов.routedays;

СправочникОбъектСклад.Записать();
КонецЕсли;
КонецЦикла;
КонецЕсли;     

antoneus


sali

antoneus, что тупой я. не устраивает что сейчас данные не обновляются

antoneus

Ну так надо их обновить, а объект - записать.

sali

ну так каким макаром? делать выборку тч через запрос? и удалять или как?

antoneus

СправочникСсылкаСклад = Справочники.МаршрутыАгентов.НайтиПоГУИД(Контекст.Клиент, СтрокаТаблицыМаршрутов.routeID);
               
Если СправочникСсылкаСклад.Пустая() Тогда          //нет маршрута создаем его                   
    СправочникОбъектСклад = Справочники.МаршрутыАгентов.СоздатьЭлемент();
               
    СправочникОбъектСклад.Владелец = Контекст.Клиент;
    СправочникОбъектСклад.Наименование = СтрокаТаблицыМаршрутов.name;
    СправочникОбъектСклад.ГУИДИсточника = СтрокаТаблицыМаршрутов.routeID;
Иначе
    СправочникОбъектСклад = СправочникСсылкаСклад.ПолучитьОбъект()
КонецЕсли;

СтрокаМаршрут = СправочникОбъектСклад.Маршруты.Найти(СтрокаТаблицыМаршрутов.stock, "Склад");
Если СтрокаМаршрут = Неопределено Тогда
    СтрокаМаршрут = СправочникОбъектСклад.Маршруты.Добавить();
    СтрокаМаршрут.Склад = СтрокаТаблицыМаршрутов.stock; 
КонецЕсли;

СтрокаМаршрут.Контрагент = СтрокаТаблицыМаршрутов.agent;
СтрокаМаршрут.ГУИДКонтрагента = СтрокаТаблицыМаршрутов.agentID;
СтрокаМаршрут.ГУИДИсточникаСклад = СтрокаТаблицыМаршрутов.stockID;
СтрокаМаршрут.Дни = СтрокаТаблицыМаршрутов.routedays;
                   
СправочникОбъектСклад.Записать();   
                   

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск