Имя: Пароль:
1C
1С v8
Заменить номенклатуру в ресурсной спецификации ERP
0 gagachoo
 
16.05.19
15:52
Добрый день.

1С:ERP Управление предприятием 2 (2.4.5.143)

Помогите пожалуйста заменить гайку 1, на гайку 2 в ресурсной спецификации.
Она должна замениться во всех действующих, закрытых спецификациях, но прежняя остаться в других документах для бухгалтерии как я понимаю.
В ERP должен быть этот механизм, подскажите как это сделать?
1 Кодер
 
16.05.19
16:04
Копируем спецификацию. Заменяем в новой спецификации гайку. Выбираем новую спецификацию в новых документах. Старая спецификация остаётся в старых документах, если вы не хотите менять гайки в проданной продукции.
2 shuhard
 
16.05.19
16:09
(0)[В ERP должен быть этот механизм]
нет и не должен
и за такие замены руки отрывают
3 kzot
 
16.05.19
16:17
(2) может он про "Разрешение на замену материалов" спрашивает ?
4 gagachoo
 
16.05.19
17:14
(1) А если спецификаций 300 шт, где используется этот материал?
5 Кодер
 
16.05.19
17:16
(4) Руками/обработкой. Какие вы видите иные варианты?
6 gagachoo
 
16.05.19
17:17
(2) Про ERP я так сказал, потому что 1с программист это сделал это за 5 минут, без обработок
А что тут такого страшного? Обычный рабочий момент по сути. Вот я и спрашиваю, как сделать так, что бы руки не оторвали. Проданная продукция осталась при своём
7 gagachoo
 
16.05.19
17:17
(3) А это что? Можно поподробнее?
8 gagachoo
 
16.05.19
17:22
(5) Руками, обработкой, какой то магический способ ))) Просто такая ситуация возникает наверное у многих, можно было это в типовое обслуживание добавить.
9 Кодер
 
16.05.19
17:27
Эдак ты и "тестирование и исправление ключей аналитики" захочешь. В УПП была, тут нет - бери флагмана и быстренько дописывай.
10 xraf
 
16.05.19
19:25
(6) «без обработок» не могу представить. Ведь любое групповое изменение объектов означает использование обработки (типовой или внешней).
Сейчас в бсп можно легко отбирать и изменять объекты по критериям
11 gagachoo
 
30.05.19
12:50
&НаКлиенте
Процедура ПодобратьДляЗамены(Команда)
    // Вставить содержимое обработчика
    ПодобратьДляЗаменыНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПодобратьДляЗаменыНаСервере()
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    РесурсныеСпецификацииМатериалыИУслуги.Ссылка КАК Ссылка
    |ИЗ
    |    Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК РесурсныеСпецификацииМатериалыИУслуги
    |ГДЕ
    |    НЕ РесурсныеСпецификацииМатериалыИУслуги.Ссылка.ПометкаУдаления
    |    И РесурсныеСпецификацииМатериалыИУслуги.Номенклатура = &Номенклатура
    |    И РесурсныеСпецификацииМатериалыИУслуги.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСпецификаций.Действует)";
    
    Запрос.УстановитьПараметр("Номенклатура", НоменклатураПоиска);
    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
    СформироватьКолонкиТаблицы(РезультатЗапроса, "Группа4");
         
КонецПроцедуры

&НаКлиенте
Процедура ЗаменитьНовой(Команда)
    ЗаменитьНовойНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаменитьНовойНаСервере()
    // Вставить содержимое обработчика.
    Для каждого Строка из ДанныеТаблицы Цикл
        
        Об_ = Строка.Ссылка.ПолучитьОбъект();
        Если Ложь Тогда
            Об_ = Справочники.РесурсныеСпецификации.СоздатьЭлемент();            
        КонецЕсли;
        Материалы = Об_.МатериалыИУслуги.НайтиСтроки(Новый Структура("Номенклатура", НоменклатураПоиска));
        
        Для Каждого СтрокаМатериалы из Материалы Цикл
            СтрокаМатериалы.Номенклатура = НоваяНоменклатура;
        КонецЦикла;
        
        Об_.ОбменДанными.Загрузка = Истина;
        
        Об_.Записать();
    КонецЦикла;
    
    Сообщить("Замена номенклатуры: " + СокрЛП(НоменклатураПоиска) + " на номенклатуру: " + СокрЛП(НоваяНоменклатура) + " выполнена");

    ПодобратьДляЗаменыНаСервере();
    
    
КонецПроцедуры


&НаСервере
Процедура СформироватьКолонкиТаблицы(ТаблицаРезультат, Группа = Неопределено)
    
    // Удалим колонки таблицы перед обновление
    Таблица = РеквизитФормыВЗначение("ДанныеТаблицы");
    МассивРеквизитов = Новый Массив;

    Для Каждого Колонка Из Таблица.Колонки Цикл
        МассивРеквизитов.Добавить("ДанныеТаблицы." + Колонка.Имя);      
    КонецЦикла;
    // Вторым параметром передаем то что нужно удалить
    // Первым параметром то что нужно создать
    ИзменитьРеквизиты(,МассивРеквизитов);
    
    // Теперь удаляем таблицу с формы
    ЭлементТаблица = Элементы.Найти("ДанныеТаблицы");
    Если ЭлементТаблица <> Неопределено Тогда
        Элементы.Удалить(ЭлементТаблица);      
    КонецЕсли;    
    // И добавляем ее заново
    ЭлементТаблица=Элементы.Добавить("ДанныеТаблицы", Тип("ТаблицаФормы"),?(Группа = Неопределено, Элементы.Группа4, Элементы[Группа]));
    ЭлементТаблица.ПутьКДанным = "ДанныеТаблицы";
    ЭлементТаблица.Отображение = ОтображениеТаблицы.Список;  

    // Создаем реквизиты таблицы значений
    МассивРеквизитов.Очистить();
    Для Каждого Колонка ИЗ ТаблицаРезультат.Колонки Цикл
        
        МассивТипов = Новый Массив;
        
        Если Колонка.Имя = "Номенклатура" Тогда
            МассивТипов.Добавить(Тип("СправочникСсылка.Номенклатура"));
        //ИначеЕсли Колонка.Имя = "ЭтапПроизводства" Тогда  
        //    МассивТипов.Добавить(Тип("ДокументСсылка.ЭтапПроизводства2_2"));
        //Иначе
            МассивТипов.Добавить(Колонка.ТипЗначения);
        КонецЕсли;
        
        НоваяКолонка = Новый РеквизитФормы(Колонка.Имя,
                                Новый ОписаниеТипов(МассивТипов), "ДанныеТаблицы");
        МассивРеквизитов.Добавить(НоваяКолонка);
        
    КонецЦикла;
    // Первый параметр, это то что нужно создать
    ИзменитьРеквизиты(МассивРеквизитов);
    ЗначениеВРеквизитФормы(ТаблицаРезультат, "ДанныеТаблицы");
    
    // Создаем на форме элементы управления
    // Т.е. выводим таблицу значений и ее колонки
    ЭлементТЗ = Элементы.ДанныеТаблицы;
    Для Каждого Колонка ИЗ ТаблицаРезультат.Колонки Цикл
        НовыйЭлементФормы = Элементы.Добавить("ДанныеТаблицы" + Колонка.Имя,
                                                Тип("ПолеФормы"), ЭлементТЗ);
        НовыйЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;
        НовыйЭлементФормы.ПутьКДанным = "ДанныеТаблицы." + Колонка.Имя;
    КонецЦикла;
КонецПроцедуры
12 Krendel
 
30.05.19
12:52
(6) Делай новую спеку
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший