|
Проверка на наличие уже имеющихся идентичных записей в рег сведений. | ☑ | ||
---|---|---|---|---|
0
Boudybuilder
29.10.12
✎
13:27
|
Создал обработку для заполнение регистра сведений НоменклатураКонтрагента.
Хотелось бы при записи проверять имеется ли уже такая же запись с такими же данными , и если да , то не перезаписывать. Вот так записываю: Процедура КнопкаВыполнитьНажатие(Кнопка) Если СписокНоменклатуры.Количество() > 0 Тогда Ответ = Вопрос ("Установить "+СписокНоменклатуры.Количество()+" соостветствия для контрагента "+Контрагент+"?",РежимДиалогаВопрос.ДаНет); Если Ответ = КодВозвратаДиалога.Нет Тогда Возврат Иначе Для каждого Строка Из СписокНоменклатуры Цикл Если ЗначениеЗаполнено(Строка.Номенклатура)Тогда Запись = РегистрыСведений.НоменклатураКонтрагентов.СоздатьМенеджерЗаписи(); Запись.Контрагент = Контрагент; Запись.Номенклатура = Строка.Номенклатура; Запись.ХарактеристикаНоменклатуры = Строка.ХарактеристикаНоменклатуры; Запись.КодНоменклатурыКонтрагента = Строка.КодНоменклатурыКонтрагента; Запись.АртикулНоменклатурыКонтрагента = Строка.АртикулНоменклатурыКонтрагента; Запись.НаименованиеНоменклатурыКонтрагента = Строка.НаименованиеНоменклатурыКонтрагента; Запись.ШтрихКодНоменклатурыКонтрагента = Строка.ШтрихКодНоменклатурыКонтрагента; Запись.ЕдиницаНоменклатурыКонтрагента = Строка.Номенклатура.БазоваяЕдиницаИзмерения; Запись.Ответственный = Ответственный; Запись.Дата = ТекущаяДата(); Запись.Записать(); КонецЕсли; КонецЦикла; СписокНоменклатуры.Очистить(); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
1
Cube
29.10.12
✎
13:30
|
СП украли?
РегистрСведенийМенеджерЗаписи.<Имя регистра сведений>.Выбран Выбран (Selected) Синтаксис: Выбран() Возвращаемое значение: Тип: Булево. Истина - запись выбрана, Ложь - в противном случае. Описание: Определяет, считана запись или нет. Доступность: Сервер, толстый клиент, внешнее соединение. Пример: Если Не Курс.Выбран() Тогда Предупреждение("Курс не считан"); Текст = "ru = ""Курс не считан"";" + " en = ""Rate is not read."""; Предупреждение(НСтр(Текст)); КонецЕсли; |
|||
2
Boudybuilder
29.10.12
✎
13:35
|
)))
Если структура регистра такова: Измерния: -Контрагент -Номенклатура -ХарактеристикаНоменклатуры Все остальное ресурсы. А мне и ресурсы и измерения надо проверять на идентичность. Тоесть если изменено , то записывать... |
|||
3
fisher
29.10.12
✎
13:37
|
Измерения проверять на идентичность? Ну-ну.
|
|||
4
Cube
29.10.12
✎
13:37
|
(2) Смысл? Ну дерни запросом, только не в цикле)
|
|||
5
fisher
29.10.12
✎
13:38
|
(3) + Или это типа полная перезаливка?
|
|||
6
Boudybuilder
29.10.12
✎
13:41
|
(5) Непериодический . Полная из имеющикся в ТЧ. Остальные записи ж не трогаются..
|
|||
7
fisher
29.10.12
✎
13:44
|
(6) Тогда по какому критерию ты собираешься определять "изменившиеся измерения"? :) Ты можешь проверить только, изменились ли ресурсы по тем комбинациям измерений, что есть в ТЧ.
|
|||
8
Boudybuilder
29.10.12
✎
13:47
|
(7) Вот что хотел сформулировать , да не смог...
Спасибо , это мой главный вопрос и есть. Но проверить не все изменившиеся измерения , а там Код , Наименование , Артикул. (1) Это оно и есть? |
|||
9
Boudybuilder
29.10.12
✎
14:05
|
Та тут вроде тупо сравнивать можно , нет?
Типа Если Запись.КодНоменклатурыКонтрагента = Строка.КодНоменклатурыКонтрагента Тогда.... Так ведь? |
|||
10
fisher
29.10.12
✎
14:44
|
(8) Нифига не понял. Какие измерения? Код, наименование и артикул - ресурсы у тебя.
|
|||
11
Boudybuilder
29.10.12
✎
14:57
|
(10) Да , опечатался.
|
|||
12
Boudybuilder
29.10.12
✎
15:08
|
Модифицированность() ?
|
|||
13
fisher
29.10.12
✎
15:22
|
Какая еще модифицированность?
Тупо запросом сравниваешь свою ТЧ с регистром, получаешь назад новые/измененные записи и в цикле через менеджера записи пишешь их в базу. |
|||
14
Boudybuilder
29.10.12
✎
15:27
|
Для каждого Строка Из СписокНоменклатуры Цикл
Если ЗначениеЗаполнено(Строка.Номенклатура)Тогда Запись = РегистрыСведений.НоменклатураКонтрагентов.СоздатьМенеджерЗаписи(); Запись.Контрагент = Контрагент; Запись.Номенклатура = Строка.Номенклатура; Запись.ХарактеристикаНоменклатуры = Строка.ХарактеристикаНоменклатуры; Запись.Прочитать(); Запись.КодНоменклатурыКонтрагента = СокрЛП(Строка.КодНоменклатурыКонтрагента); Запись.АртикулНоменклатурыКонтрагента = СокрЛП(Строка.АртикулНоменклатурыКонтрагента); Запись.НаименованиеНоменклатурыКонтрагента = СокрЛП(Строка.НаименованиеНоменклатурыКонтрагента); Запись.ШтрихКодНоменклатурыКонтрагента = СокрЛП(Строка.ШтрихКодНоменклатурыКонтрагента); Запись.ЕдиницаНоменклатурыКонтрагента = Строка.Номенклатура.БазоваяЕдиницаИзмерения; Запись.Ответственный = Ответственный; Запись.Дата = ТекущаяДата(); Если Запись.КодНоменклатурыКонтрагента = СокрЛП(Строка.КодНоменклатурыКонтрагента) И Запись.АртикулНоменклатурыКонтрагента = СокрЛП(Строка.АртикулНоменклатурыКонтрагента) Тогда Запись.Записать(); КонецЕсли; КонецЕсли; КонецЦикла; Так нормально? |
|||
15
hhhh
29.10.12
✎
15:35
|
ЗаполнитьЗначенияСвойств(Запись, Строка);
|
|||
16
fisher
29.10.12
✎
15:52
|
Как нормально - я уже сказал.
|
|||
17
Boudybuilder
29.10.12
✎
16:55
|
Вобщем я сделал так:
Не проф , но работает на ура! Для каждого Строка Из СписокНоменклатуры Цикл Если НЕ Строка.Номенклатура.Пустая() И НЕ Строка.Номенклатура.ЭтоГруппа Тогда Запись = РегистрыСведений.НоменклатураКонтрагентов.СоздатьМенеджерЗаписи(); Запись.Контрагент = Контрагент; Запись.Номенклатура = Строка.Номенклатура; Запись.ХарактеристикаНоменклатуры = Строка.ХарактеристикаНоменклатуры; Запись.Прочитать(); Если Запись.КодНоменклатурыКонтрагента = СокрЛП(Строка.КодНоменклатурыКонтрагента) И Запись.НаименованиеНоменклатурыКонтрагента = СокрЛП(Строка.НаименованиеНоменклатурыКонтрагента) Тогда Иначе Запись.Контрагент = Контрагент; Запись.Номенклатура = Строка.Номенклатура; Запись.ХарактеристикаНоменклатуры = Строка.ХарактеристикаНоменклатуры; Запись.КодНоменклатурыКонтрагента = СокрЛП(Строка.КодНоменклатурыКонтрагента); Запись.АртикулНоменклатурыКонтрагента = СокрЛП(Строка.АртикулНоменклатурыКонтрагента); Запись.НаименованиеНоменклатурыКонтрагента = СокрЛП(Строка.НаименованиеНоменклатурыКонтрагента); Запись.ШтрихКодНоменклатурыКонтрагента = СокрЛП(Строка.ШтрихКодНоменклатурыКонтрагента); Запись.ЕдиницаНоменклатурыКонтрагента = Строка.Номенклатура.БазоваяЕдиницаИзмерения; Запись.Ответственный = Ответственный; Запись.Дата = ТекущаяДата(); Запись.Записать(); КонецЕсли; КонецЕсли; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |