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

справочники, проблема

Автор djonbox, 09 авг 2012, 12:02

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

djonbox

Здравствуйте, написал обработку, но никак не получается изменить значение элемента справочника. ТекЭл.ПодкатегорияТовара.Код=рез; спрН.Записать(); присвоил элемент и записал. Вроде правильно, но почему то не присваивается.

//*******************************************
Процедура Сформировать()
стр1=100;
Стр2=1000;
уд=2;
спрН=СоздатьОбъект("Справочник.Номенклатура");
СпрПодк=СоздатьОбъект("Справочник.ПодкатегорииТовара");
СпрПодк.ИспользоватьВладельца(спрН);
спрН.ВыбратьЭлементы();
Пока спрН.ПолучитьЭлемент() = 1 Цикл
ТекЭл=спрН.ТекущийЭлемент();
СтрКод=ТекЭл.ПодкатегорияТовара.Код;
СтрКод=Число(СтрКод);
Если (СтрКод >стр1) и (СтрКод <Стр2) Тогда

Сообщить(ТекЭл.Наименование+"///"+ ТекЭл.ПодкатегорияТовара.Код);
теккод=ТекЭл.ПодкатегорияТовара.Код;
/////////
теккоддл=СтрДлина(теккод);
Скудалить=теккоддл-уд;
Сообщить(Скудалить);
/////////////
рез=Сред(теккод,Скудалить,теккоддл-1);
ТекЭл.ПодкатегорияТовара.Код=рез;
спрН.Записать();
//Если СпрПодк.НайтиПоКоду(рез)=1 Тогда
// ТекЭл.ПодкатегорияТовара.Код=СпрПодк.
// Сообщить(рез);
// спрН.Записать();
//КонецЕсли;

КонецЕсли;
КонецЦикла;
КонецПроцедуры

Herby

Попробуйте так:

спрН.ПодкатегорияТовара.Код=рез;
спрН.Записать();


djonbox

пробывал, всеравно, не меняется значение. У меня получается есть справочник номенклатуры, и есть подчиненый справочник ПодкатегорииТовара. Необходимо в справочнике номенклатура, в ПодкатегорииТовара поменять код элемента, при том что коды в ПодкатегорииТовара уже прописанны для. Обрабоку написал, но код почемуто в номенклатуре не присваивается.

Herby

понятно почему не получается...
нужно не справочник номенклатуры записывать, а справочник ПодкатегорииТовара.

примерно вот так:

рез=Сред(теккод,Скудалить,теккоддл-1);
СпрКатегорияТовара = СоздатьОбъект("Справочник.ПодкатегорииТовара");

Если СпрКатегорияТовара.НайтиЭлемент(ТекЭл.ПодкатегорияТовара) = 1 Тогда
   СпрКатегорияТовара.Код = Рез;
   СпрКатегорияТовара.Записать();
КонецЕсли;


djonbox

Цитата: Herby от 09 авг 2012, 14:43
понятно почему не получается...
нужно не справочник номенклатуры записывать, а справочник ПодкатегорииТовара.

примерно вот так:

рез=Сред(теккод,Скудалить,теккоддл-1);
СпрКатегорияТовара = СоздатьОбъект("Справочник.ПодкатегорииТовара");

Если СпрКатегорияТовара.НайтиЭлемент(ТекЭл.ПодкатегорияТовара) = 1 Тогда
   СпрКатегорияТовара.Код = Рез;
   СпрКатегорияТовара.Записать();
КонецЕсли;


Спасибо, но мне не нужно перезаписывать элементы справочника СпрКатегорияТовара, там уже занесены наименования с кодами. Мне нужно в номенклатуре перевыбрать другие элементы справочкика СпрКатегорияТовара.

djonbox

Переделал, всеравно не присваивает другой код в номенклатуре. Элемент находит не получается просто перевыбрать элемент с другим кодом.
//*******************************************
Процедура Сформировать()
стр1=100;
Стр2=1000;
уд=2;
спрН=СоздатьОбъект("Справочник.Номенклатура");
СпрПодк=СоздатьОбъект("Справочник.ПодкатегорииТовара");
СпрПодк.ИспользоватьВладельца(спрН);
спрН.ВыбратьЭлементы();
Пока спрН.ПолучитьЭлемент() = 1 Цикл

СтрКод=спрН.ПодкатегорияТовара.код;
СтрКод=Число(СтрКод);
Если (СтрКод >стр1) и (СтрКод <Стр2) Тогда

Сообщить(спрН.Наименование+"///"+спрН.ПодкатегорияТовара.Код);

теккод=спрН.ПодкатегорияТовара.Код;
/////////
теккоддл=СтрДлина(теккод);
Скудалить=теккоддл-уд;
Сообщить(Скудалить);
/////////////
рез=Сред(теккод,Скудалить,теккоддл-1);
Если СпрПодк.НайтиПоКоду(рез)=1 Тогда
Сообщить("Код найден");
спрН.ПодкатегорияТовара.Код=рез;
спрН.Записать();
КонецЕсли;

КонецЕсли;
КонецЦикла;
КонецПроцедуры

Herby

п
Цитата: djonbox от 10 авг 2012, 10:18
Переделал, всеравно не присваивает другой код в номенклатуре. Элемент находит не получается просто перевыбрать элемент с другим кодом.
//*******************************************

рез=Сред(теккод,Скудалить,теккоддл-1);
Если СпрПодк.НайтиПоКоду(рез)=1 Тогда
  Сообщить("Код найден");
  спрН.ПодкатегорияТовара.Код=рез;
  спрН.Записать();
КонецЕсли;

в следующий раз попонятней разъясняйте, что вам нужно.
Вот каким образом это делается:

рез=Сред(теккод,Скудалить,теккоддл-1);
Если СпрПодк.НайтиПоКоду(рез)=1 Тогда
  Сообщить("Код найден");
  спрН.ПодкатегорияТовара=СпрПодк.ТекущийЭлемент();
  спрН.Записать();
КонецЕсли;

djonbox

Цитата: Herby от 10 авг 2012, 10:45
п
Цитата: djonbox от 10 авг 2012, 10:18
Переделал, всеравно не присваивает другой код в номенклатуре. Элемент находит не получается просто перевыбрать элемент с другим кодом.
//*******************************************

рез=Сред(теккод,Скудалить,теккоддл-1);
Если СпрПодк.НайтиПоКоду(рез)=1 Тогда
  Сообщить("Код найден");
  спрН.ПодкатегорияТовара.Код=рез;
  спрН.Записать();
КонецЕсли;

в следующий раз попонятней разъясняйте, что вам нужно.
Вот каким образом это делается:

рез=Сред(теккод,Скудалить,теккоддл-1);
Если СпрПодк.НайтиПоКоду(рез)=1 Тогда
  Сообщить("Код найден");
  спрН.ПодкатегорияТовара=СпрПодк.ТекущийЭлемент();
  спрН.Записать();
КонецЕсли;


Вроде нашел проблему, справочник ПодкатегорияТовара привязан к справочнику(является владельцем) ук_категории_товаровKIP, и как бы прописать для номенклатыры кто для кого является владельцем.
спрН=СоздатьОбъект("Справочник.Номенклатура");
спрУк=СоздатьОбъект("Справочник.ук_категории_товаровKIP");
СпрПодк=СоздатьОбъект("Справочник.ПодкатегорииТовара");
СпрПодк.ИспользоватьВладельца(спрУк);

И как в этом случае в номенклатуре переприсвоить другой код

Herby

как я вам написал в предпоследнем сообщении, так и делайте.

и "переприсвоить другой код" - не совсем корректно говорить.

вам нужно для реквизита "ПодкатегорияТовара" присвоить другое значение элемента
справочника "Подкатегории товаров", но ни как не код.

Теги:

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

Рейтинг@Mail.ru

Поиск