Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 апр 2024, 08:50

Изменение записей через запрос.

Автор Silent_Assassin, 25 июн 2013, 18:02

0 Пользователей и 1 гость просматривают эту тему.

Silent_Assassin

Нужно переименовать в справочнике номенклатура реквезит наименование в каждой записи.

&НаКлиенте
Процедура ИзменитьНаименование(Команда)
Ссылка = ИзменитьНаименованиеСервер ();
Сообщить (Строка(Ссылка));

КонецПроцедуры


&НаСервере
Функция ИзменитьНаименованиеСервер()
Запрос= Новый запрос (
           "ВЫБРАТЬ
               | Номенклатура.Наименование
               |ИЗ
               | Справочник.Номенклатура КАК Номенклатура" );
   

Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Элемент.Наименование = Справочники.Номенклатура.Наименование.ПолучитьОбъект();
Элемент.Наименование= "Хомяк";
Элемент.Записать() 
    КонецЦикла;




КонецФункции
   

Пишет переменная не определеня, не пойму где косяк.

Vit1501

замени строку
Элемент.Наименование = Справочники.Номенклатура.Наименование.ПолучитьОбъект();
на
Элемент = Справочники.Номенклатура.Наименование.ПолучитьОбъект();

MuI_I_Ika

Так я думаю, будет все же правильнее

&НаСервере
Функция ИзменитьНаименованиеСервер()
    Запрос= Новый запрос (
           "ВЫБРАТЬ
               |    Номенклатура.Ссылка
               |ИЗ
               |    Справочник.Номенклатура КАК Номенклатура" );
               
   
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Элемент = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
Элемент.Наименование= "Хомяк";
Элемент.Записать() 
    КонецЦикла;

Silent_Assassin

&НаКлиенте
Процедура ИзменитьНаименование(Команда)
Ссылка = ИзменитьНаименованиеСервер ();
КонецПроцедуры


&НаСервере
Функция ИзменитьНаименованиеСервер()
    Запрос= Новый запрос (
           "ВЫБРАТЬ
               |    Номенклатура.Ссылка
               |ИЗ
               |    Справочник.Номенклатура КАК Номенклатура" );
               
   
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Элемент = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
Элемент.Наименование= "Хомяк";
Элемент.Записать() 
КонецЦикла;

КонецФункции

Работает !!!!
Теперь вопрос как проверить уникальность наименования?

GRADUS

Цитата: Silent_Assassin от 25 июн 2013, 19:33
&НаКлиенте
Процедура ИзменитьНаименование(Команда)
Ссылка = ИзменитьНаименованиеСервер ();
КонецПроцедуры


&НаСервере
Функция ИзменитьНаименованиеСервер()
    Запрос= Новый запрос (
           "ВЫБРАТЬ
               |    Номенклатура.Ссылка
               |ИЗ
               |    Справочник.Номенклатура КАК Номенклатура" );
               
   
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Элемент = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
Элемент.Наименование= "Хомяк";
Элемент.Записать() 
КонецЦикла;

КонецФункции

Работает !!!!
Теперь вопрос как проверить уникальность наименования?

Вопрос должен состоять из 2-ух пунтков:
Как и для чего.

Т.е.  "Как проверить уникальность наименования для того, чтобы сделать с ним АбраКадабра"

Besart

Цитата: GRADUS от 25 июн 2013, 20:28Т.е.  "Как проверить уникальность наименования для того, чтобы сделать с ним АбраКадабра"
создаете выборку из Справочник.Номенклатура, можно запросом, можно объектно, и в цикле сравниваете наименование с проверяемым именем, а там если есть совпадение, или если нету, делайте что душа пожелает

Silent_Assassin

Цитата: GRADUS от 25 июн 2013, 20:28


Вопрос должен состоять из 2-ух пунтков:
Как и для чего.

Т.е.  "Как проверить уникальность наименования для того, чтобы сделать с ним АбраКадабра"
Нужно сделать кнопочку для проверки уникальности наименования. Чтобы проверять уникальность уже имеющихся элементов.
Добавлено: 25 июн 2013, 21:05


Цитата: Besart от 25 июн 2013, 20:41
Цитата: GRADUS от 25 июн 2013, 20:28Т.е.  "Как проверить уникальность наименования для того, чтобы сделать с ним АбраКадабра"
создаете выборку из Справочник.Номенклатура, можно запросом, можно объектно, и в цикле сравниваете наименование с проверяемым именем, а там если есть совпадение, или если нету, делайте что душа пожелает
Нужно чтобы не было совпадений вообще а не только с проверяемым именем.

GRADUS

Цитата: Silent_Assassin от 25 июн 2013, 21:03
Цитата: GRADUS от 25 июн 2013, 20:28


Вопрос должен состоять из 2-ух пунтков:
Как и для чего.

Т.е.  "Как проверить уникальность наименования для того, чтобы сделать с ним АбраКадабра"
Нужно сделать кнопочку для проверки уникальности наименования. Чтобы проверять уникальность уже имеющихся элементов.
Добавлено: 25 июн 2013, 21:05


Цитата: Besart от 25 июн 2013, 20:41
Цитата: GRADUS от 25 июн 2013, 20:28Т.е.  "Как проверить уникальность наименования для того, чтобы сделать с ним АбраКадабра"
создаете выборку из Справочник.Номенклатура, можно запросом, можно объектно, и в цикле сравниваете наименование с проверяемым именем, а там если есть совпадение, или если нету, делайте что душа пожелает
Нужно чтобы не было совпадений вообще а не только с проверяемым именем.

Уникальность задается кодом, а не именем! Даже Ссылкой, т.к id, ну набери Ссылка.УникальныйИндетификатор()
А чтобы проверить, быстрее всего:
1) сделать группировку по наименованию.
2) в выч поля занести ссылку, указав, колличество разливных
3) селать отбор, если ссылка > 1

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

Silent_Assassin

Цитата: GRADUS от 25 июн 2013, 21:07
Уникальность задается кодом, а не именем! Даже Ссылкой, т.к id, ну набери Ссылка.УникальныйИндетификатор()
А чтобы проверить, быстрее всего:
1) сделать группировку по наименованию.
2) в выч поля занести ссылку, указав, колличество разливных
3) селать отбор, если ссылка > 1

В результате будут все номенклатуры, с плохими именнами. Избавиться вот так просто не получится.
Немного не так выразился мне нужно уникальность только Наименования.

Вот Что пока получилось:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ОбработкаКоманды();

КонецПроцедуры

&НаСервере
Процедура ОбработкаКомандыСервер(Отказ)

   Если ЭтоНовый() Тогда
       Запрос = Новый Запрос("ВЫБРАТЬ
                             | Номенклатура.Наименование
                             |ИЗ
                             | Справочник.Номенклатура КАК Номенклатура");

Наименование =0;
       Запрос.УстановитьПараметр("Наименование",Наименование);
       Результат = Запрос.Выполнить();
       Если НЕ Результат.Пустой() Тогда
           Сообщение = Новый СообщениеПользователю;
           Сообщение.Текст = "Такая фигня уже есть!";
           Сообщение.Сообщить();
           Отказ = Истина;
       КонецЕсли;
   КонецЕсли;

КонецПроцедуры


Блин опять проблемка пишет процедура или функция с таким именем не определена.

GRADUS

Цитата: Silent_Assassin от 25 июн 2013, 21:18
Цитата: GRADUS от 25 июн 2013, 21:07
Уникальность задается кодом, а не именем! Даже Ссылкой, т.к id, ну набери Ссылка.УникальныйИндетификатор()
А чтобы проверить, быстрее всего:
1) сделать группировку по наименованию.
2) в выч поля занести ссылку, указав, колличество разливных
3) селать отбор, если ссылка > 1

В результате будут все номенклатуры, с плохими именнами. Избавиться вот так просто не получится.
Немного не так выразился мне нужно уникальность только Наименования.

Вот Что пока получилось:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ОбработкаКоманды();

КонецПроцедуры

&НаСервере
Процедура ОбработкаКомандыСервер(Отказ)

   Если ЭтоНовый() Тогда
       Запрос = Новый Запрос("ВЫБРАТЬ
                             | Номенклатура.Наименование
                             |ИЗ
                             | Справочник.Номенклатура КАК Номенклатура");

Наименование =0;
       Запрос.УстановитьПараметр("Наименование",Наименование);
       Результат = Запрос.Выполнить();
       Если НЕ Результат.Пустой() Тогда
           Сообщение = Новый СообщениеПользователю;
           Сообщение.Текст = "Такая фигня уже есть!";
           Сообщение.Сообщить();
           Отказ = Истина;
       КонецЕсли;
   КонецЕсли;

КонецПроцедуры


Блин опять проблемка пишет процедура или функция с таким именем не определена.

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ОбработкаКоманды();   
   
КонецПроцедуры

&НаСервере
Процедура ОбработкаКомандыСервер(Отказ)

   Если ЭтоНовый() Тогда
       Запрос = Новый Запрос("ВЫБРАТЬ
                             |    Номенклатура.Наименование
                             |ИЗ
                             |    Справочник.Номенклатура КАК Номенклатура");
                             
        Наименование =0;                     
       Запрос.УстановитьПараметр("Наименование",Наименование);
       Результат = Запрос.Выполнить().Выбрать;
       Пока Результат.Следующий() Тогда
           //тут будет перебираться все номенклатура, что хочем сделать, делаем, но я не знаю зачем, лучше уж группировкой в запросе )
       КонецЦикла;
   КонецЕсли;

КонецПроцедуры   

Мыло агент - apuhtin-serega@bk.ru А то я так до утра будем код писать )

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск