|
Перенос кода справочника | ☑ | ||
---|---|---|---|---|
0
jyurik
26.04.17
✎
10:51
|
У меня есть справочник «Спецификации Номенклатуры». В нем есть стандартный код. Мне надо сделать еще такой же под другим именем, и стандартный закрыть на редактирование, и поставить проверку его на уникальность. А вот в новый код перенести номера из старого, чтобы они стали идентичными. Может, кто подскажет, как это сделать может, кто уже писал такую обработку. Не знаю даже с чего начать
|
|||
1
DrShad
26.04.17
✎
11:01
|
даже не представляем нафейхоа этот велосипед нужен
|
|||
2
YFedor
26.04.17
✎
11:03
|
(0) Ничего сложного не вижу, но присоединяюсь к (1)
Кроме того, если решился и не получается - скажи на каком моменте не получается |
|||
3
DrShad
26.04.17
✎
11:07
|
если это все для обмена, то лучше синхронизируй по UID и не парься с кодами и наименованиями
|
|||
4
Buster007
26.04.17
✎
11:09
|
"Может, кто подскажет, как это сделать может, кто уже писал такую обработку" вроде типовая обработка ГрупповоеИзменениеРеквизитов позволяет такое сделать..
|
|||
5
jyurik
26.04.17
✎
11:26
|
(2) Думал сделать запрос и выгрузить в таблицу значений, а потом обратно в новый код загрузить
|
|||
6
jyurik
26.04.17
✎
11:47
|
(4) А где можно взять «ГрупповоеИзменениеРеквизитов». Я какие-то нашел разные не одна не открывается у меня управляемое приложение
|
|||
7
YFedor
26.04.17
✎
11:59
|
(5) А чего бы простым перебором результатов запроса не пойти?
|
|||
8
jyurik
26.04.17
✎
12:42
|
(7) не понятно, не делал так
|
|||
9
YFedor
26.04.17
✎
12:44
|
(8) что непонятно?
|
|||
10
YFedor
26.04.17
✎
12:45
|
Там две задачи:
1) скопировать один реквизит в другой 2) Автозаполнение и проверка уникальности второго реквизита |
|||
11
jyurik
26.04.17
✎
13:10
|
(10) если не сложно
можно пример |
|||
12
jyurik
26.04.17
✎
14:46
|
(10) а как скопировать? У меня весь вопрос в этом и состоит. Через обработку Группового Изменения Реквизитов не подойдет, поскольку там можно менять только на конкретное имя (на сколько я понял), а мне нужно код всего справочника перекопировать в новый код
|
|||
13
Михаил Козлов
26.04.17
✎
14:59
|
(12) Можно попробовать УниверсальныйПодборИОбработкаОбъектов (с ИТС).
Отбор объектов сделаете, а для обработки можно оформить произвольный алгоритм, примерно такого содержания: Объект.НовыйКод = Объект.Код; Объект.Записать(); |
|||
14
jyurik
26.04.17
✎
15:09
|
(13) у меня при открытии Универсальные подбор и обработка объектов выходит пустое маленькое окошко, в котором виден пункт "Все действия" и больше ничего нет
|
|||
15
George Wheels
26.04.17
✎
15:13
|
(14) Запусти её под толстым клиентом.
|
|||
16
George Wheels
26.04.17
✎
15:15
|
(15) + Толстый клиент (обычное приложение)
|
|||
17
jyurik
26.04.17
✎
15:29
|
(16) У меня прога на управляемом приложении
|
|||
18
Serg_1960
26.04.17
✎
15:30
|
(0) "Мне надо сделать еще такой же под другим именем" - в конфигураторе, в дереве конфигурации, стоя на строке справочника - F9
"А вот в новый код перенести номера из старого, чтобы они стали идентичными" - могу даже уникальные идентификаторы сделать идентичные. Выгружаешь все записи в XML; редактором заменяешь упоминание старого справочника на новый справочник; загружаешь XML; пьёшь кофе; фсё :) |
|||
19
jyurik
26.04.17
✎
15:34
|
(18) Справочник не меняется (он тот же) в нем добавлен новый реквизит «НовыйКод» мне надо, что бы во всем справочнике все его коды совпадали с НовымКодом. Надо, чтобы стандартный код (0001) совпадал с новым (0001) и так далее по всем позициям справочника.
|
|||
20
jyurik
26.04.17
✎
15:35
|
(18) Номенклатура/код-0001 / новый код-0001
Номенклатура1/код-0002 / новый код-0002 Номенклатура2/код-0003 / новый код-0003 |
|||
21
Serg_1960
26.04.17
✎
15:39
|
Значение из реквизита "Код" скопировать в новый реквизит "НовыйКод" - так что ли?
|
|||
22
jyurik
26.04.17
✎
15:39
|
(18) чем выгрузить в XML потом обратно загрузить
Все что предложили вверху не получилось Или я не те обработки находил или руки не оттуда (возможно второе)У меня УФ приложения |
|||
23
jyurik
26.04.17
✎
15:39
|
(21) ДА
|
|||
24
Timon1405
26.04.17
✎
15:48
|
https://helpf.pro/faq/view/1735.html
будь мужиком запусти уже толстого клиента |
|||
25
Serg_1960
26.04.17
✎
15:49
|
Тьфу ты, это не серьёзно :)
В конфигураторе, на справочнике, встал на строку "Реквизиты" - Ins Если добавление недоступно, то Конфигурация - Поддержка - Настройка поддержки - разрешить изменения. Что в свойствах реквизита указывать - смотри в свойствах самого справочника. Скорее всего тип:"Строка", длина:9, Допустимая длина:"Фиксированная"... |
|||
26
Serg_1960
26.04.17
✎
15:52
|
ТС, ты что? Первый раз в конфигуратор зашёл? :))
Внешнюю обработку в состоянии написать? |
|||
27
jyurik
26.04.17
✎
15:52
|
(25) Как реквизит добавлять и копировать умею мне не это нужно мне нужно копию его в предприятии сделать
Я же пример привел, как это должно быть видно (ссылка (20)) |
|||
28
jyurik
26.04.17
✎
15:54
|
(26) конечно в состоянии написать
только никогда такого не делал копировать данные одного кода в данные в другой код одного и того же справочника |
|||
29
Timon1405
26.04.17
✎
15:55
|
ТС или тролль или не хочет думать
|
|||
30
jyurik
26.04.17
✎
15:57
|
(29) прошу помощи а народ только стебается
|
|||
31
Serg_1960
26.04.17
✎
15:57
|
Внешняя обработка (толстый клиент), в модуле обработки простой до гениальности алгоритм :)
Выборка = Справочники.СпецификацииНоменклатуры.Выбрать(); Пока Выборка.Следующий() Цикл ТекОбъект = Выборка.ПолучитьОбъект(); ТекОбъект.НовыйКод = ТекОбъект.Код; ТекОбъект.Записать); КонецЦикла; |
|||
32
FIXXXL
26.04.17
✎
15:59
|
(28)
Пока Выборка.Следущий() Цикл об = Выборка.ссылка.получитьобъект(); об.НовыйКод = об.Код; об.Записать(); Конеццикла |
|||
33
Serg_1960
26.04.17
✎
16:02
|
1:0 я быстрее :)
|
|||
34
FIXXXL
26.04.17
✎
16:03
|
(33) я руками на форумном окошке писал :)
|
|||
35
Serg_1960
26.04.17
✎
16:04
|
ТС, а в управляемом приложении - всё тоже самое, но с вызовом отдельной функции или процедуре с препроцессором &НаСервере
(34) А я что, задней клешнёй что ли? Тоже так, по инерции, - тьфу, по памяти :) |
|||
36
Serg_1960
26.04.17
✎
16:06
|
Я такие алгоритмы, разбуди ночью, писать могу не глядя. Можно даже не будить :))
|
|||
37
jyurik
27.04.17
✎
08:13
|
(31) (32) Спасибо за помощь
Написал вот так: &НаСервере Процедура КНОПКАНаСервере() // Вставить содержимое обработчика. КонецПроцедуры &НаКлиенте Процедура КНОПКА(Команда) Выборка = Справочники.СпецификацииНоменклатуры.Выбрать(); Пока Выборка.Следующий() Цикл ТекОбъект = Выборка.ПолучитьОбъект(); ТекОбъект.КодКэмз = ТекОбъект.Код; ТекОбъект.Записать(); КонецЦикла; КонецПроцедуры Пишет ошибку "Переменная не определена (Справочники)" |
|||
38
mehfk
27.04.17
✎
08:15
|
СП украли?
|
|||
39
jyurik
27.04.17
✎
08:17
|
(38) что такое СП?
|
|||
40
jyurik
27.04.17
✎
08:19
|
(38) если не сложно, то можно по делу
|
|||
41
FIXXXL
27.04.17
✎
08:22
|
&НаСервере
Процедура КНОПКАНаСервере() // Вставить содержимое обработчика. Выборка = Справочники.СпецификацииНоменклатуры.Выбрать(); Пока Выборка.Следующий() Цикл ТекОбъект = Выборка.ПолучитьОбъект(); ТекОбъект.КодКэмз = ТекОбъект.Код; ТекОбъект.Записать(); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура КНОПКА(Команда) КНОПКАНаСервере(); КонецПроцедуры |
|||
42
jyurik
27.04.17
✎
08:26
|
(41) {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(1,1)}: Обнаружено логическое завершение исходного текста модуля (Проверка: Сервер)
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(1,1)}: Обнаружено логическое завершение исходного текста модуля (Проверка: Сервер) {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(1,1)}: Обнаружено логическое завершение исходного текста модуля (Проверка: Тонкий клиент) {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(1,1)}: Обнаружено логическое завершение исходного текста модуля (Проверка: Тонкий клиент) |
|||
43
FIXXXL
27.04.17
✎
08:27
|
(42) сам то сделаешь чего? хоть ошибку почитай
|
|||
44
jyurik
27.04.17
✎
08:29
|
(43) мне не понятно что это значит
|
|||
45
FIXXXL
27.04.17
✎
08:33
|
(44) мне тоже
отсюда твою обработку не видать ПС мне ее присылать не надо |
|||
46
jyurik
27.04.17
✎
08:35
|
(45) обработка выводить временную таблицу с кодами и все нажимаешь Ок и все ничего не перезаписывается
|
|||
47
jyurik
27.04.17
✎
08:37
|
в базу захожу под толстым клиентом, а на автомате вообще ничего не происходит
|
|||
48
FIXXXL
27.04.17
✎
08:46
|
(47) ошибка в синтаксисе где-то
КонецЧеготоТам лишний, к примеру |
|||
49
jyurik
27.04.17
✎
08:59
|
(48) Спасибо за помощь
запустил, база повисла - думаю, что-то перезаписывает |
|||
50
George Wheels
27.04.17
✎
10:11
|
(17) В конфигураторе Сервис->Параметры->Запуск 1С:Предприятия
|
|||
51
jyurik
27.04.17
✎
12:04
|
(48) Код записался только последние три цифра не попала везде
Пример: код - ТТП.РЖ.30273.00062 / новый код - ТТП.РЖ.30273.00 Количество знаков в реквизите больше (20) если вручную скопировать в новый код, то он полностью сохраняется В чем может быть проблема? |
|||
52
Serg_1960
27.04.17
✎
13:56
|
Проблема может быть в том, что твой алгоритм до сих пор тобою не озвучен и не у всех телепатия развита до уровня феноменального.
|
|||
53
jyurik
27.04.17
✎
16:28
|
(52) Пример приводил в (20)
Есть "Код" (стандартный) справочника "Спецификации Номенклатуры". Я в этом же справочнике делаю новый реквизит и вывожу его на форму "КодКэмз". Мне надо было, чтобы эти два кода были идентичными. Пример: Код-30188.06021 и КодКэмз-30188.06021. Спасибо с вашей помощью я их записал в новый код. Только почему-то теперь в КодеКэмз не хватает в конце трех знаков (во всем справочнике) |
|||
54
Ц_У
27.04.17
✎
16:39
|
(53) длина реквизита меньше на 3 символа?
|
|||
55
jyurik
27.04.17
✎
16:44
|
(54) длина такая же 20 как и у Код
|
|||
56
Ц_У
27.04.17
✎
16:45
|
(55) поставь больше на 3 и проверь
|
|||
57
Serg_1960
27.04.17
✎
18:11
|
(53) Это ТЗ (техническое задание) - то, что ты хочешь получить в результате. А я говорил не только об алгоритме, о (37)... впрочем неважно :(
Не исключаю, что длина поля экранного элемента формы меньше, чем нужно для показа значения реквизита "КодКэмз" документа - значение полностью не показывается. Но чтобы быть уверенным в этом - нужно озвучить скринами свойства реквизита и экранного элемента формы. |
|||
58
jyurik
28.04.17
✎
08:00
|
(57) как сюда добавить скрин экрана?
|
|||
59
FIXXXL
28.04.17
✎
08:54
|
(57) проще и вернее посмотреть запросом :)
|
|||
60
jyurik
28.04.17
✎
08:59
|
(59) да уже проверил. Не хватает трех знаков
Уже и реквизиту дал количество знаков 30 и длину элемента на форме то же 30 |
|||
61
jyurik
28.04.17
✎
09:02
|
(59) а как в УФ мне проверить уникальность моего КодаКэмз
я вот так сделал и по ходу тишина: &НаСервере Функция ПроверитьУникальностьНаСервере() НайденныйЭлемент = Справочники.Номенклатура.НайтиПоРеквизиту("КодКэмз", СокрЛП(Объект.КодКэмз)); Если Объект.Ссылка <> НайденныйЭлемент.Ссылка Тогда Возврат "Элемент с таким кодом уже есть в справочнике."; КонецЕсли; Возврат ""; КонецФункции &НаКлиенте Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) Если ЗначениеЗаполнено(Объект.КодКэмз) Тогда ПричинаОтказа = ПроверитьУникальностьНаСервере(); Если ПричинаОтказа <> "" Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = ПричинаОтказа; Сообщение.Поле = "Объект.КодКэмз"; Сообщение.Сообщить(); Отказ = Истина; Возврат; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
62
Ц_У
28.04.17
✎
09:24
|
Возврат "";
Если ПричинаОтказа <> "" Тогда //вернуть Истина или Ложь не предлагать? |
|||
63
jyurik
28.04.17
✎
10:27
|
(62) "Возврат "";" - не понятно
|
|||
64
jyurik
28.04.17
✎
11:05
|
(62) Сделал та:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СпецификацииНоменклатуры.Ссылка КАК Ссылка |ИЗ | Справочник.СпецификацииНоменклатуры КАК СпецификацииНоменклатуры |ГДЕ | СпецификацииНоменклатуры.КодКэмз = &КодКэмз"; Запрос.УстановитьПараметр("Ссылка", ТекущийОбъект.Ссылка); Запрос.УстановитьПараметр("КодКэмз", ТекущийОбъект.КодКэмз); Если НЕ Запрос.Выполнить().Пустой() Тогда Сообщить("Код КЭМЗ " + ТекущийОбъект.КодКэмз + " же существует"); Отказ = Истина; КонецЕсли; КонецПроцедуры |
|||
65
jyurik
28.04.17
✎
11:06
|
уникальность проверяется.
|
|||
66
Serg_1960
28.04.17
✎
11:21
|
Так проще и быстрее:
Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | ВсеКоды.КодКэмз КАК НеУникальныйКод, | КОЛИЧЕСТВО(ВсеКоды.КодКэмз) КАК КоличествоПовторов |ИЗ | Справочник.СпецификацииНоменклатуры КАК ВсеКоды | |СГРУППИРОВАТЬ ПО | ВсеКоды.КодКэмз | |ИМЕЮЩИЕ | КОЛИЧЕСТВО(ВсеКоды.КодКэмз) > 1"; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |