Разработка #5279: ПолучитьПлощадкиПоХозсубъекту по двум!!! реквизитам. - 1Cv7 ВСД в ГИС Меркурий - КБ99 Redmine

Проект

Общее

Профиль

Разработка #5279

ПолучитьПлощадкиПоХозсубъекту по двум!!! реквизитам.

Добавил(а) Pentyukhov Sergey 8 месяца назад. Обновлено 6 месяца назад.

Статус:
Завершена
Приоритет:
Нормальный
Версия:
-
Дата начала:
Срок завершения:
Готовность:

0%

Оценка временных затрат:
1.00 ч

Описание

Доработать "Меркурий_ГлобальныйМодуль2.ert".
В частности Функция ПолучитьПлощадкиПоХозсубъекту(ХС)

Заменить

СпрПл = СоздатьОбъект("Справочник.ВСД_Площадка");
            Если СпрПл.НайтиПоРеквизиту("GUID",СокрЛП(guid),1) = 0 Тогда
...

на поиск Площадки по двум реквизитам "GUID" и "GuidХозСубъекта"

СпрПлощадка = sНайтиПлощадкуПоРеквизитам(СокрЛП(guid),СокрЛП(ХС.guid),ЕстьОшибка); //[+]serpent, 13.09.2023

Для чего?
Есть Контрагенты(ХС) которые имеют одинаковые GUIDы площадок(оптимизируют налоги).
Т.Е. Жена оформила ИП зарегистрировала площадку. Потом Муж оформил ИП и в Ветиси ПРИСОЕДИНИЛ к своему ИП(ХС) ТУЖЕ площадку как и у ЖЕНЫ.
Получается, когда загружаем площадки по ХС, по коду в 1С находится площадка по GUID и в ней переписывается GuidХозСубъекта на новый.
С первого ХС пропала точка и появилась у второго ХС.
А когда у этих ИПэшников 15-20 лотков(площадок) получаем треш в справочнике.

Искать площадку надо по двум реквизитам.

Связанные редакции

Редакция 8b320ddc (Разница(diff))
Добавил(а) кб99 Синявский Филипп 7 месяца назад

ПолучитьПлощадкиПоХозсубъекту по двум!!! реквизитам. refs #5279

Редакция 3a25babd (Разница(diff))
Добавил(а) кб99 Синявский Филипп 5 месяца назад

ПолучитьПлощадкиПоХозсубъекту по двум!!! реквизитам. refs #5279

История

#1 Обновлено кб99 Синявский Филипп 7 месяца назад

Тогда будут дубли площадок, точнее 15-20 одинаковых площадок.

#2 Обновлено кб99 Синявский Филипп 7 месяца назад

Можете прислать функцию sНайтиПлощадкуПоРеквизитам ?

#3 Обновлено Pentyukhov Sergey 7 месяца назад

А оно так и есть в МЕРКУРИИ ХС разные, а GUID площадок ОДИНАКОВЫЙ, Названия только разные.
Они(ХС) не заморачиваются. Сейчас найду для примера.
GUID 56f7baf9-253a-4dce-bc5d-608db9703aaf площадка их ТРИ шт и каждая от разных ИП

ИНН 503500238709 Шипарев, предположим новый контрагент. Делаем ПолучитьПлощадки... получаем, перебираем полученные и о Чудо по GUID 56f7baf9-253a-4dce-bc5d-608db9703aaf
в 1С находим уже занесенную площадку по контрагенту Парт ИНН 5035024393. Соответственно с "Парт" площадка переписывается на "Шипарева"

#4 Обновлено Pentyukhov Sergey 7 месяца назад

Она у меня под ToySQL


//======================================================================
//Поиск площадки по GUID(площадки) и GUID(GuidХозСубъекта)
 //[+]serpent, 13.09.2023
Функция sНайтиПлощадкуПоРеквизитам(GUID_Пл, GUID_Хс,ЕстьОшибка)
    ТЗ_сДанными = СоздатьОбъект("ТаблицаЗначений");

    ЗапросSQL = СоздатьОбъект("ToyQuery");
    ЗапросSQL.Соединиться(0);
    ЗапросSQL.Вернуть1С = 1; 
    ТекстЗапросаSQL = " 
    |SELECT
    |    ТекЗначение = [ТекСпр.Ссылка]
    |FROM
    |    [Справочник.ВСД_Площадка] ТекСпр WITH (NOLOCK)
    |WHERE
    |    [ТекСпр.GUID] = [@GUID_Пл] AND [ТекСпр.GuidХозСубъекта] = [@GUID_Хс]
    |";

    Состояние("Выполнение запроса SQL#...");
    Если ЗапросSQL.МетаЗапрос(ТекстЗапросаSQL,1)=0 Тогда
        Сообщить(ТекстЗапросаSQL);
        Сообщить(ЗапросSQL.Разбор(ТекстЗапросаSQL));
        Сообщить(ЗапросSQL.Ошибка);
        //Предупреждение("Ошибка! Запрос не выполнен!");    
        ЕстьОшибка = 1;
        СтатусВозврата(0);
        Возврат ПолучитьПустоеЗначение("Справочник.ВСД_Площадка");
    КонецЕсли; 
    Если ЗапросSQL.Следующая() = 1  Тогда
        ТекЗн = ЗапросSQL.ТекЗначение;
    Иначе
        ТекЗн = ПолучитьПустоеЗначение("Справочник.ВСД_Площадка")
    КонецЕсли;
    ЗапросSQL.Закрыть();

    Возврат ТекЗн;    
КонецФункции // sНайтиПлощадкуПоРеквизитам

#5 Обновлено Pentyukhov Sergey 7 месяца назад

Состояние("Загрузка Площадок По "+ХС);    

    activityLocationList = objDom.selectNodes("//dt:location") ;
    Для i1 = 0 По activityLocationList.length - 1 Цикл
        Сообщить(i1,"I"); //[+]serpent, 13.09.2023
        activityLocation=activityLocationList.item(i1);
        enterprise = activityLocation.selectSingleNode("dt:enterprise");
        Попытка
            guid = enterprise.selectSingleNode("bs:guid").text;
            name = enterprise.selectSingleNode("dt:name").text;
            //Если СпрПл.НайтиПоРеквизиту("GUID",СокрЛП(guid),1) = 0 Тогда //[-]serpent, 13.09.2023
            ЕстьОшибка = 0;
            СпрПлощадка = sНайтиПлощадкуПоРеквизитам(СокрЛП(guid),СокрЛП(ХС.guid),ЕстьОшибка); //[+]serpent, 13.09.2023
            Если ЕстьОшибка = 1 Тогда
            Иначе
                Если ПустоеЗначение(СпрПлощадка)=1 Тогда
                    СпрПл = СоздатьОбъект("Справочник.ВСД_Площадка");
                    СпрПл.Новый();
                    СпрПл.Наименование = name;
                    СпрПл.УстановитьНовыйКод("00");
                    СпрПл.Записать();
                    Сообщить("Создали новую Площадку: "+name,"I"); //[+]serpent, 14.09.2023
                    ВыбОбъект = СпрПл.ТекущийЭлемент();
                Иначе
                    ВыбОбъект = СпрПлощадка.ТекущийЭлемент();
                КонецЕсли;
                Площадка_ЗагрузитьПоGUID(ВыбОбъект, guid, ХС);            
            КонецЕсли;
        Исключение
            Сообщить("Не удалось получить GUID площадки из файла "+ГМ.Компонента.LogFilename);
        КонецПопытки;
    КонецЦикла;

#6 Обновлено кб99 Синявский Филипп 7 месяца назад

  • Параметр Проект изменился с Sergey serpent1C на 1Cv7 ВСД в ГИС Меркурий
  • Параметр Статус изменился с Новая на Тестирование

#7 Обновлено кб99 Синявский Филипп 6 месяца назад

  • Параметр Статус изменился с Тестирование на Завершена

Экспортировать в Atom PDF