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

Поиск и замена значения

Автор кто-то где-то, 31 мая 2022, 10:55

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

кто-то где-то

На борту у нас Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.112.34)
У меня есть обмен между УТ и БП кривой и косой(так и должно быть)
Была проблема что у документов которые прилетают с УТ то в БП префикс не менялся (нужен был документ только ПКО на остальные без разницы)
Т.Е. в БП у нас имеется документ БЁТД-000001 и обработка которая проверяла, что если документ начинается на БЁТД и удаляла номер, а после записывала документ с правильным префиксом.
На данный момент выявили проблему, что есть подразделение которое прилетает с УТ допустим ТЦ Алладин (код БИ-000048), а в БП этот ТЦ не имеет префикса, но есть ТЦ Алладин Владивосток (БИ-000044), которое с префиксом и я ручками менял именно этот магазин, а с остальными проблем таких нет
Просьба помочь дописать условие, что бы если подразделение имеет код БИ-000048 тогда заменялся на БИ-000044
ТекДата = ТекущаяДата();
//ТекущаяДата0   = НачалоДня(ТекДата);
ТекущаяДата0   =  '20220530000000';
//ТекущаяДата24    = КонецДня(ТекДата);
ТекущаяДата24    = '20280523235959';
Запрос = Новый Запрос;
    Запрос.Текст =  "ВЫБРАТЬ
                    | ПриходныйКассовыйОрдер.Ссылка КАК Ссылка,
                    | ПриходныйКассовыйОрдер.Номер КАК Номер,
                    | ПриходныйКассовыйОрдер.Дата КАК Дата
                    |ИЗ
                    | Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
                    |ГДЕ
                    |   ПриходныйКассовыйОрдер.Дата МЕЖДУ &ТекущаяДата0 И &ТекущаяДата24
|и  ПриходныйКассовыйОрдер.Номер подобно ""БЁТД%""
                    |
                    |УПОРЯДОЧИТЬ ПО
                    | Дата";
    Запрос.УстановитьПараметр("ТекущаяДата0", ТекущаяДата0);
Запрос.УстановитьПараметр("ТекущаяДата24", ТекущаяДата24);
   ТЗ = Запрос.Выполнить().Выгрузить();   
    ДЛя Каждого  Стр Из ТЗ цикл
        ОбъектБД = Стр.ССылка.ПолучитьОбъект();
Если Не ОбъектБД.ПометкаУдаления и ОбъектБД.Проведен тогда
ОбъектБД.Номер = "";
    ОбъектБД.Записать();
ОбъектБД.Записать(РежимЗаписиДокумента.Проведение);
Иначе 
ОбъектБД.Записать();
конецЕсли;
КонецЦикла;

кто-то где-то

Должно выглядеть вот так примерно, но просто не  умею правильно писать код, помогите кто знает как правильно написать


ТЗ = Запрос.Выполнить().Выгрузить();   
    ДЛя Каждого  Стр Из ТЗ цикл
        ОбъектБД = Стр.ССылка.ПолучитьОбъект();
      Если Не ОбъектБД.ПометкаУдаления и ОбъектБД.Проведен тогда

Если ОбъектБД.ПодразделениеОрганизации.Код ("БИ-000048") тогда ОбъектБД.ПодразделениеОрганизации.Код ("БИ-000044") ;
ОбъектБД.Записать();
Иначе
ОбъектБД.Записать();
конецЕсли;
 

 ОбъектБД.Номер = "";
          ОбъектБД.Записать();
         ОбъектБД.Записать(РежимЗаписиДокумента.Проведение);
      Иначе
         ОбъектБД.Записать();
      конецЕсли;
   КонецЦикла;   

LexaK

кто-то где-то, конечно лучше, подобные задачи программисту поручать,
попробуйте такой код (сильно упрощенный вариант) для замены Подразделения, (это пример, возможны опечатки)
Запрос.Текст =  "
|ВЫБРАТЬ
|   ПриходныйКассовыйОрдер.Ссылка КАК Ссылка
|//   ПриходныйКассовыйОрдер.Номер КАК Номер,
|//   ПриходныйКассовыйОрдер.Дата КАК Дата
|ИЗ
|   Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
|ГДЕ
|   ПриходныйКассовыйОрдер.Дата МЕЖДУ &ТекущаяДата0 И &ТекущаяДата24
|//переделано для замены подразделения
|//и  ПриходныйКассовыйОрдер.Номер подобно ""БЁТД%""
|и   ПриходныйКассовыйОрдер.Проведен
|и   ПриходныйКассовыйОрдер.ПодразделениеОрганизации.Код = ""БИ-000048""
|
|УПОРЯДОЧИТЬ ПО
|   Дата";
Запрос.УстановитьПараметр("ТекущаяДата0", ТекущаяДата0);
Запрос.УстановитьПараметр("ТекущаяДата24", ТекущаяДата24);
ТЗ = Запрос.Выполнить().Выгрузить();   
лкНужноеПодразделение = Справочники.ПодразделенияОрганизации.НайтеПоКоду(БИ-000044);
ДЛя Каждого  Стр Из ТЗ цикл
ОбъектБД = Стр.ССылка.ПолучитьОбъект();
//эта проверка не нужна, в запросе сразу отбираем то что надо
//Если Не ОбъектБД.ПометкаУдаления и ОбъектБД.Проведен тогда
ОбъектБД.ПодразделениеОрганизации = лкНужноеПодразделение;
ОбъектБД.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;   
если помогло нажмите: Спасибо!

Теги: БП 

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

Рейтинг@Mail.ru Rambler's Top100

Поиск