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

Изменение коэффициентов единиц хранения отстатков

Автор KolyaProger, 18 мая 2012, 06:33

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

KolyaProger

(Розница, редакция 1.0)
При обмене с УТ в некоторых товарах ЕдиницаХраненияОстатков.коэффициент стал = 0, из за этого при проведении некоторых документов "Премещение товаров" вылетала ошибка.

Вот написал процедурку:

Код

Процедура КнопкаВыполнитьНажатие(Кнопка)
   Запрос = Новый Запрос;   
   Запрос.Текст =
   "ВЫБРАТЬ
    |   Номенклатура.ссылка,
   |   Номенклатура.Наименование,
   |   Номенклатура.ЕдиницаХраненияОстатков.Коэффициент
    |ИЗ
   |   Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
   |   Номенклатура.ЕдиницаХраненияОстатков.Коэффициент = 0" ;
   
   Выборка = Запрос.Выполнить().Выбрать();
   
   Пока Выборка.Следующий() Цикл
           
      Объект = Выборка.Ссылка.Получитьобъект();     
      Объект.ЕдиницаХраненияОстатков.Коэффициент = 1;
      Объект.Записать();
           
   КонецЦикла;
   Сообщить("готово.");
   
КонецПроцедуры



Но что-то делаю не так:
{Форма.Форма(21)}: Поле объекта недоступно для записи (Коэффициент)
Объект.ЕдиницаХраненияОстатков.Коэффициент = 1;

has

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

KolyaProger

ЦитироватьИ в запросе выбирать из справочника ЕдиницыИзмерения
А зачем, в своем запросе получаю нужную номенклатурную позицию,
а затем получаю связанный объект - ед.хранения:

      Объект = Выборка.Ссылка.ЕдиницаХраненияОстатков.Получитьобъект();     
      Объект.ЕдиницаХраненияОстатков.Коэффициент = 1;
      Объект.Записать();

Так верно?
Но в этом случае песочные часики повисают, и висят себе..

KolyaProger

То есть вот так:

Объект = Выборка.Ссылка.ЕдиницаХраненияОстатков.Получитьобъект();     
Объект.Коэффициент = 1;
Объект.Записать();

cska-fanat-kz

не успел... ;)

не

Объект.ЕдиницаХраненияОстатков.Коэффициент = 1;

а

Объект.Коэффициент = 1;

и запрос переделайте: выбирайте не из справочника Номенклатура, а сразу справочник ЕдиницыИзмерения...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

KolyaProger

Переделал:

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

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

Пока Выборка.Следующий() Цикл

Объект = Выборка.Ссылка.Получитьобъект();
Объект.Коэффициент = 1;
Объект.Записать();

КонецЦикла;
Сообщить("готово.");

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


Песочные часики висят  :( принудительно завершать приходится.

has


KolyaProger

Внешняя обработка, отладчик молчит...

Добавил вот это:

Попытка
   Объект.Записать();
исключение
   Сообщить("Не удалось записать коэфициент: "+ОписаниеОшибки());
КонецПопытки;

То же самое, повисает и все тут...

cska-fanat-kz

Зацикливаться не должно...
В крайнем случае вставьте внутрь цикла ОбработкаПрерыванияПользователя - сможете прерывать цикл по CTRL Break.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

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

Рейтинг@Mail.ru

Поиск