Имя: Пароль:
1C
 
Отбор записей по ресурсу независимого не периодического регистра сведений
,
0 falselight
 
22.05.19
15:03
Есть не периодический независимый регистр сведений КодыТоваровПодключаемогоОборудованияOffline.
У него 2 измерения План обмена и код. Ресурс Номенклатура. Проблема в том что отбор пожно поставить
только на измерения. А они могут быть разными. То есть при записи, появится дублирующая запись. С существующей
номенклатурой и к примеру с другим планом обмена. Подскажите как быть в такой ситуации?

Появилась вот идея. Выбирать и удалять записи регистра сведений, выбранные по номенклатуре. И записывать новую.

Как правильно сделать удаление?
1 Tonik992
 
22.05.19
15:20
Что-то вы всё в кучу намешали.
Р/с не даст вам записать с дублями.
2 hhhh
 
22.05.19
15:22
(1) с чего бы вдруг не даст? Вы всё пропустили.
3 falselight
 
22.05.19
15:32
(1)(2) Обработкой видимо при загрузке программно задваивается.

Я вот такой код написал, что бы удалять имеющиеся записи по ПравилуОбмена и Коду. Требуемой номенклатуры.

        ЗапросСКУ    = Новый Запрос;
        ЗапросСКУ.Текст = "
            |ВЫБРАТЬ
            |    КодыТоваровПодключаемогоОборудованияOffline.ПравилоОбмена  КАК ПравилоОбмена,
            |    КодыТоваровПодключаемогоОборудованияOffline.Код            КАК Код,
            |    КодыТоваровПодключаемогоОборудованияOffline.Номенклатура   КАК Номенклатура,
            |    КодыТоваровПодключаемогоОборудованияOffline.Характеристика КАК Характеристика,
            |    КодыТоваровПодключаемогоОборудованияOffline.Упаковка       КАК Упаковка,
            |    КодыТоваровПодключаемогоОборудованияOffline.Используется   КАК Используется
            |ИЗ
            |    РегистрСведений.КодыТоваровПодключаемогоОборудованияOffline КАК КодыТоваровПодключаемогоОборудованияOffline
            |ГДЕ
            |    КодыТоваровПодключаемогоОборудованияOffline.Номенклатура = &Номенклатура
            |
            |УПОРЯДОЧИТЬ ПО
            |    КодыТоваровПодключаемогоОборудованияOffline.Номенклатура.Наименование";
        ЗапросСКУ.УстановитьПараметр("Номенклатура", Ном.Ссылка);
        Рез = ЗапросСКУ.Выполнить();
        Если Не Рез.Пустой() Тогда
            Выборка = Рез.Выбрать();
            Пока Выборка.Следующий() Цикл
                // УДАЛЕНИЕ ИМЕЮЩИХСЯ SKU КОДОВ ПО НОМЕНКЛАТУРЕ
                НаборЗаписей = РегистрыСведений.КодыТоваровПодключаемогоОборудованияOffline.СоздатьНаборЗаписей();
                НаборЗаписей.Отбор.ПравилоОбмена.Установить(Выборка.ПравилоОбмена);
                НаборЗаписей.Отбор.Код.Установить(Выборка.Код);
                НаборЗаписей.Записать();
            КонецЦикла;
            // СОЗДАНИЕ ЗАПИСИ С КОДОМ SKU ПО ЗАГРУЖАЕМОЙ НОМЕНКЛАТУРЕ
            КодСКУ                 = РегистрыСведений.КодыТоваровПодключаемогоОборудованияOffline.СоздатьМенеджерЗаписи();
            КодСКУ.ПравилоОбмена = Справочники.ПравилаОбменаСПодключаемымОборудованиемOffline.НайтиПоНаименованию("тест");
            КодСКУ.Код             = ТекСтрока.SKU;
            КодСКУ.Активность    = Истина;
            КодСКУ.Используется  = Истина;
            КодСКУ.Номенклатура  = Ном.Ссылка;
            Если ТекСтрока.Период = "" тогда
                ТекСтрока.Период = ТекущаяДата();
            КонецЕсли;
            КодСКУ.Период = ТекСтрока.Период;
            КодСКУ.Записать(Истина);
        Иначе
            КодСКУ                 = РегистрыСведений.КодыТоваровПодключаемогоОборудованияOffline.СоздатьМенеджерЗаписи();
            КодСКУ.ПравилоОбмена = Справочники.ПравилаОбменаСПодключаемымОборудованиемOffline.НайтиПоНаименованию("тест");
            КодСКУ.Код             = ТекСтрока.SKU;
            КодСКУ.Активность    = Истина;
            КодСКУ.Используется  = Истина;
            КодСКУ.Номенклатура  = Ном.Ссылка;
            Если ТекСтрока.Период = "" тогда
                ТекСтрока.Период = ТекущаяДата();
            КонецЕсли;
            КодСКУ.Период = ТекСтрока.Период;
            КодСКУ.Записать(Истина);
        КонецЕсли;
4 falselight
 
22.05.19
15:37
(2) Спасибо за подсказки. По вашему методу делал.

           Пока Выборка.Следующий() Цикл
                // УДАЛЕНИЕ ИМЕЮЩИХСЯ SKU КОДОВ ПО НОМЕНКЛАТУРЕ

                НаборЗаписей = РегистрыСведений.КодыТоваровПодключаемогоОборудованияOffline.СоздатьНаборЗаписей();
                НаборЗаписей.Отбор.ПравилоОбмена.Установить(Выборка.ПравилоОбмена);
                НаборЗаписей.Отбор.Код.Установить(Выборка.Код);
                НаборЗаписей.Записать();
            КонецЦикла;
            // СОЗДАНИЕ ЗАПИСИ С КОДОМ SKU ПО ЗАГРУЖАЕМОЙ НОМЕНКЛАТУРЕ

            КодСКУ                 = РегистрыСведений.КодыТоваровПодключаемогоОборудованияOffline.СоздатьМенеджерЗаписи();
            КодСКУ.ПравилоОбмена = Справочники.ПравилаОбменаСПодключаемымОборудованиемOffline.НайтиПоНаименованию("тест");
            КодСКУ.Код             = ТекСтрока.SKU;
            КодСКУ.Активность    = Истина;
            КодСКУ.Используется  = Истина;
            КодСКУ.Номенклатура  = Ном.Ссылка;
            Если ТекСтрока.Период = "" тогда
                ТекСтрока.Период = ТекущаяДата();
            КонецЕсли;
            КодСКУ.Период = ТекСтрока.Период;
            КодСКУ.Записать(Истина);
5 Tonik992
 
22.05.19
16:07
(2) Расскажите, как добавить в непериодический независимый р/с две записи с одинаковыми измерениями?
6 hhhh
 
22.05.19
16:10
(5) по-русски вроде человек написал: с одинаковыми РЕСУРСАМИ. Какое слово вам там непонятно?
7 Tonik992
 
22.05.19
16:15
(6) Скрин точной фразы "с одинаковыми РЕСУРСАМИ" сделайте из топика. Подкрепите ваши слова
8 falselight
 
22.05.19
16:49
(7) Суть в том что появлялись дубли, номенклатуры, с разными планами обмена и кодами.
А номенклатура должна быть одна как и код SKU по ней. Но обработка вот делала дубли
По подсказке (2) сделано (4). Пока в работе ещё особо не проверено.
9 Сияющий в темноте
 
22.05.19
18:54
Это реализация сценария из ут10,там код подвязывается к кассе.
решение проблемы-суррогат в первое измерение всегда фиксированный
10 Лефмихалыч
 
22.05.19
20:06
(0) тебе нужен другой регистр
11 palsergeich
 
22.05.19
20:14
Простейшим запросом и чуть чуть кода это можно сделать.
Но сама задача говорит о том, что необходим еще один объект метаданных.
Отбор записей по ресурсу РС - моветон.
Программист всегда исправляет последнюю ошибку.