Имя: Пароль:
1C
 
Как перезаполнить единицу хранения и единицу для отчетов?
0 ЛучшаяДевушка в СССР
 
20.09.10
15:37
мне нужно перезаполнить единицы измерения в справочнике номенклатура, единицу для отчетов и единицу хранения остатков, я это делала такой обработкой

 ВыборкаЕдиниц = Справочники.ЕдиницыИзмерения.Выбрать(, Объект.Ссылка);
Если ВыборкаЕдиниц.Следующий() Тогда
   Объект.ЕдиницаХраненияОстатков = ВыборкаЕдиниц.Ссылка;
   Объект.ЕдиницаДляОтчетов = ВыборкаЕдиниц.Ссылка;
КонецЕсли;
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();

и все бы хорошо, но если у номенклатуры две единицы измерения, то она берет первую из них, а мне надо, чтобы брала базовую единицу измерения

подскажите, как можно сделать?
1 Defender aka LINN
 
20.09.10
15:39
(0) Не вижу никаких причин, которые помешали бы тебе сравнить единицу по классификатору с базовой единицей.
2 IronDemon
 
20.09.10
15:39
Найти в ВыборкаЕдиниц нужную ЕдиницаПоКлассификатору
3 mikecool
 
20.09.10
15:39
заменить единицу хранения при остатках?
4 Ayvengo
 
20.09.10
15:48
ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("ЕдиницаПоКлассификатору",Номенклатура.БазоваяЕдиницаИзмерения,,Номенклатура.Ссылка);
попробуйте так искать единицу измерения
5 mikecool
 
20.09.10
15:48
так все таки - ббаза пустая или что то на остатках есть?
6 ЛучшаяДевушка в СССР
 
20.09.10
15:50
я переносила данные из одной базы в другую и у меня коряво перенеслась номенклатура... есть базовая единица измерения, а единица для отчетов и единица хранения остатков - пустые...
есть единицы по классификатору, но они не выделены жирным... при этом если я открываю справочник и жму Ок, то номенклатура перезаписывается и в единицу для отчетов и единицу хранения остатков записывается базовая единица и одна из единиц по классификатору становится выделена жирным...
но это при условии, что нет документов движения...
а документы есть, поэтому я номенклатуру перезаписывала принудительно этой обработкой...

и теперь у меня в базовой единице одна единица, а выделена по классификатору другая, и в отчетах  и в остатках другая соответсвенно...
7 ЛучшаяДевушка в СССР
 
20.09.10
15:50
(5) есть на остатках
8 mikecool
 
20.09.10
15:51
(7) остатки хранятся в единице хранения остатков
в чем же они сейчас, если эта единица незаполнена?
9 ЛучшаяДевушка в СССР
 
20.09.10
15:53
(8) ни в чем - пустые отчеты
10 Ayvengo
 
20.09.10
15:54
ЛучшаяДевушка в СССР, как же они тогда есть, если отчеты пустые :) Но в принципе не суть ... посмотрите пункт (4) попробуйте устанавливать таким образом единицу, если что-то не понятно, спрашивайте
11 mikecool
 
20.09.10
15:55
1) установить единицу в справчнике
2) установить единицу в документе
3) перепровести документы
чтобы не париться с обменом данными, можно распровести все документы )
12 ЛучшаяДевушка в СССР
 
20.09.10
15:56
(10) в базовых единицах отчеты были, а в единицах для Отчетов и в единицах хранения остатков - пусто

(11) установить как? руками? сначала отменить проведение? (иначе не дает)
13 mikecool
 
20.09.10
15:58
"и в единицах хранения остатков - пусто "
остатки хранятся в единице хранения остатков...
почему тогда пусто? в движениях нет единицы?
14 ЛучшаяДевушка в СССР
 
20.09.10
16:01
я конверьтирую из одной базы в другую, почему так переносится - для меня темный лес
15 ЛучшаяДевушка в СССР
 
20.09.10
16:03
я вижу, что у номенклатуры есть только базовая единица, а остальные две пустые...
если перезаписываю - то появляются и две другие, но только если я отменю все доки...
я могу отменить все документы и потом их снова провести, но как мне перебрать 2000 позиций, чтобы они перезаписались? я их это обработкой и перезаписала...
но если у товара две единицы по классификатору, то она берет первую попавшуюся, и ее же делает основной
16 Ayvengo
 
20.09.10
16:04
Ну понятно, в справочники не добавились нужные значение, нужно создавать их
17 ЛучшаяДевушка в СССР
 
20.09.10
16:04
(16) а как?
18 mikecool
 
20.09.10
16:05
(16) +1
19 ЛучшаяДевушка в СССР
 
20.09.10
16:07
(16),(18) напишите как, пожалуйста:)
сами мы не местные...
20 Ayvengo
 
20.09.10
16:07
Так.. погодите .. на закладке Единицы измерения есть нужные Вам единицы?
21 mikecool
 
20.09.10
16:09
(19) добавлять в подч справочник единицы измерения, а потом назначать их в соотв реквизиты номенклатуры
22 ЛучшаяДевушка в СССР
 
20.09.10
16:09
(20) да
изначально есть две
23 Ayvengo
 
20.09.10
16:14
Сейчас попробую написать обработку, только там бяда будет, если две одинаковые единицы измерения (т.е. единицы измерения в которых одинаковые Классификатор единиц измерения)
24 Ayvengo
 
20.09.10
16:19
Написать написал, но слепо не доверяйте :) Вдруг где чего накосячил, на быструю руку без проверки ;)


Запрос = Новый Запрос("ВЫБРАТЬ
                     |    спрНоменклатура.Номенклатура,
                     |    спрНоменклатура.БазоваяЕдиницаИзмерения,
                     |    спрНоменклатура.ЕдиницаИзмерения,
                     |    спрНоменклатура.КоличествоОдинаковых
                     |ИЗ
                     |    (ВЫБРАТЬ
                     |        Номенклатура.Ссылка КАК Номенклатура,
                     |        Номенклатура.БазоваяЕдиницаИзмерения КАК БазоваяЕдиницаИзмерения,
                     |        ЕдиницыИзмерения.Ссылка КАК ЕдиницаИзмерения,
                     |        СУММА(1) КАК КоличествоОдинаковых
                     |    ИЗ
                     |        Справочник.Номенклатура КАК Номенклатура
                     |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
                     |            ПО Номенклатура.Ссылка = ЕдиницыИзмерения.Владелец
                     |                И Номенклатура.БазоваяЕдиницаИзмерения = ЕдиницыИзмерения.ЕдиницаПоКлассификатору
                     |    ГДЕ
                     |        Номенклатура.Ссылка В ИЕРАРХИИ(&Номенклатура)
                     |        И (НЕ Номенклатура.ЭтоГруппа)
                     |    
                     |    СГРУППИРОВАТЬ ПО
                     |        Номенклатура.Ссылка,
                     |        Номенклатура.БазоваяЕдиницаИзмерения,
                     |        ЕдиницыИзмерения.Ссылка) КАК спрНоменклатура
                     |ГДЕ
                     |    спрНоменклатура.КоличествоОдинаковых = &1");
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       Номенклатура = Выборка.Номенклатура.ПолучитьОбъект();
       Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
       Номенклатура.ЕдиницаХраненияОстатков    = Выборка.ЕдиницаИзмерения;
       Номенклатура.ЕдиницаДляОтчетов            = Выборка.ЕдиницаИзмерения;
       Попытка
           Номенклатура.Записать();
       Исключение
           Сообщить(ОписаниеОшибки());
       КонецПопытки;
   КонецЦикла;
25 Ayvengo
 
20.09.10
16:20
эх.. вот уже и косячок заметил, к примеру &1 надо заменить на 1 а не забудьте установить параметр Номенклатура
26 Ayvengo
 
20.09.10
16:21
поправил, но мож еще че не заметил


   Запрос = Новый Запрос("ВЫБРАТЬ
                     |    спрНоменклатура.Номенклатура,
                     |    спрНоменклатура.БазоваяЕдиницаИзмерения,
                     |    спрНоменклатура.ЕдиницаИзмерения,
                     |    спрНоменклатура.КоличествоОдинаковых
                     |ИЗ
                     |    (ВЫБРАТЬ
                     |        Номенклатура.Ссылка КАК Номенклатура,
                     |        Номенклатура.БазоваяЕдиницаИзмерения КАК БазоваяЕдиницаИзмерения,
                     |        ЕдиницыИзмерения.Ссылка КАК ЕдиницаИзмерения,
                     |        СУММА(1) КАК КоличествоОдинаковых
                     |    ИЗ
                     |        Справочник.Номенклатура КАК Номенклатура
                     |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
                     |            ПО Номенклатура.Ссылка = ЕдиницыИзмерения.Владелец
                     |                И Номенклатура.БазоваяЕдиницаИзмерения = ЕдиницыИзмерения.ЕдиницаПоКлассификатору
                     |    ГДЕ
                     |        Номенклатура.Ссылка В ИЕРАРХИИ(&Номенклатура)
                     |        И (НЕ Номенклатура.ЭтоГруппа)
                     |    
                     |    СГРУППИРОВАТЬ ПО
                     |        Номенклатура.Ссылка,
                     |        Номенклатура.БазоваяЕдиницаИзмерения,
                     |        ЕдиницыИзмерения.Ссылка) КАК спрНоменклатура
                     |ГДЕ
                     |    спрНоменклатура.КоличествоОдинаковых = 1");
   //На форме обработку надо завести реквизит номенклатура                  
   Запрос.УстановитьПараметр("Номенклатура",Номенклатура);
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       Номенклатура = Выборка.Номенклатура.ПолучитьОбъект();
       Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
       Номенклатура.ЕдиницаХраненияОстатков    = Выборка.ЕдиницаИзмерения;
       Номенклатура.ЕдиницаДляОтчетов            = Выборка.ЕдиницаИзмерения;
       Попытка
           Номенклатура.Записать();
       Исключение
           Сообщить(ОписаниеОшибки());
       КонецПопытки;
   КонецЦикла;
27 ЛучшаяДевушка в СССР
 
20.09.10
16:21
(26) сейчас попробую, спасибо
28 ЛучшаяДевушка в СССР
 
20.09.10
16:23
(26)

{(28,46)}: Переменная не определена (Номенклатура)
   Запрос.УстановитьПараметр("Номенклатура",<<?>>Номенклатура);


я к своему сожалению совсем не шарю...
29 Ayvengo
 
20.09.10
16:25
на форме обработки надо установить реквизит Номенклатура, или если хотите без фильтра по номенклатуре, что бы весь справочник переделал надо убрать фильтр на номенклатуру ..

как-то так без фильтра, по всему справочнику...


   Запрос = Новый Запрос("ВЫБРАТЬ
                         |    спрНоменклатура.Номенклатура,
                         |    спрНоменклатура.БазоваяЕдиницаИзмерения,
                         |    спрНоменклатура.ЕдиницаИзмерения,
                         |    спрНоменклатура.КоличествоОдинаковых
                         |ИЗ
                         |    (ВЫБРАТЬ
                         |        Номенклатура.Ссылка КАК Номенклатура,
                         |        Номенклатура.БазоваяЕдиницаИзмерения КАК БазоваяЕдиницаИзмерения,
                         |        ЕдиницыИзмерения.Ссылка КАК ЕдиницаИзмерения,
                         |        СУММА(1) КАК КоличествоОдинаковых
                         |    ИЗ
                         |        Справочник.Номенклатура КАК Номенклатура
                         |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
                         |            ПО Номенклатура.Ссылка = ЕдиницыИзмерения.Владелец
                         |                И Номенклатура.БазоваяЕдиницаИзмерения = ЕдиницыИзмерения.ЕдиницаПоКлассификатору
                         |    ГДЕ
                         |        (НЕ Номенклатура.ЭтоГруппа)
                         |    
                         |    СГРУППИРОВАТЬ ПО
                         |        Номенклатура.Ссылка,
                         |        Номенклатура.БазоваяЕдиницаИзмерения,
                         |        ЕдиницыИзмерения.Ссылка) КАК спрНоменклатура
                         |ГДЕ
                         |    спрНоменклатура.КоличествоОдинаковых = 1");
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       Номенклатура = Выборка.Номенклатура.ПолучитьОбъект();
       Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
       Номенклатура.ЕдиницаХраненияОстатков    = Выборка.ЕдиницаИзмерения;
       Номенклатура.ЕдиницаДляОтчетов            = Выборка.ЕдиницаИзмерения;
       Попытка
           Номенклатура.Записать();
       Исключение
           Сообщить(ОписаниеОшибки());
       КонецПопытки;
   КонецЦикла;
30 ЛучшаяДевушка в СССР
 
20.09.10
16:28
не хочет


Перед записью в элементе справочника "Номенклатура" необходимо заполнить "базовая единица"!
У единицы для отчетов номенклатуры "" неверно указан владелец!
Перед записью в элементе справочника "Номенклатура" необходимо заполнить "вид номенклатуры"!
{(33)}: Ошибка при вызове метода контекста (Записать): Операция не выполнена!
31 Ayvengo
 
20.09.10
16:31
Господя ... что же у Вас перенеслось? о_О

Ну так это он у некоторых номенклатур выдал или у всех подряд?
//начинаю ненавидеть стандартные обмены данными, особенно в УПП :D
32 Ayvengo
 
20.09.10
16:32
Заменитие

       Попытка
           Номенклатура.Записать();
       Исключение
           Сообщить(ОписаниеОшибки());
       КонецПопытки;

На этот код, чтобы удобнее было разбираться с результатом

       Попытка
           Номенклатура.Записать();
       Исключение
           Сообщить("Не удалось записать номенклатуру: """ + Номенклатура + """");
           Сообщить(ОписаниеОшибки());
       КонецПопытки;
33 Ayvengo
 
20.09.10
16:39
Как успехи?:)
34 ЛучшаяДевушка в СССР
 
20.09.10
16:40
(31) это не УПП, УТ...
я Вам лично потом шепотом скажу, чьих это рук дело:))

(33) сейчас отпишусь:))
35 Ayvengo
 
20.09.10
16:42
(34) да я сам с УПП маюсь, а пример для УТ делал :)
36 ЛучшаяДевушка в СССР
 
20.09.10
16:59
(35) в итоге вот это обработка работает

ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("ЕдиницаПоКлассификатору",Объект.БазоваяЕдиницаИзмерения,,Объект.Ссылка);
Если ЕдиницаИзмерения <> Неопределено Тогда
   Объект.ЕдиницаХраненияОстатков = ЕдиницаИзмерения;
   Объект.ЕдиницаДляОтчетов = ЕдиницаИзмерения;
   Объект.ОбменДанными.Загрузка = Истина;
   Объект.Записать();
КонецЕсли;

при Объект.Это группа = Ложь

а Ваша еще ругается в соседней копии - не закончилась еще:)))
37 ЛучшаяДевушка в СССР
 
20.09.10
17:00
+(35) вот это=вот эта
38 ЛучшаяДевушка в СССР
 
20.09.10
17:08
(32) я не знаю, что эта обработка пытается сделать, но выдает вот это


Перед записью в элементе справочника "Номенклатура" необходимо заполнить "базовая единица"!
У единицы для отчетов номенклатуры "" неверно указан владелец!
Перед записью в элементе справочника "Номенклатура" необходимо заполнить "вид номенклатуры"!
Не удалось записать номенклатуру: "<>"
{(33)}: Ошибка при вызове метода контекста (Записать): Операция не выполнена!
39 Ayvengo
 
20.09.10
17:18
(36) ну эт тоже один из моих первых советов :)
--
(36) работает в цикле или это вся обработка? %)

И в какое место вы их тыкаете эти коды? :)
40 ЛучшаяДевушка в СССР
 
20.09.10
17:39
(39).1 это может быть, только я хотела кнопку "сделать все" :)

(39).2 я, наверное, изначально не все написала и хотела, чтобы меня поняли)
это я в УниверсальномПодбореИОбработкеОбъектов выбираю справочник Номенклатура, на закладке Отбор пишу Объект.Это группа = Ложь и в Произвольный алгоритм вставляю код
41 Ayvengo
 
20.09.10
18:08
О как, а где вы взяли эту обработку? :) Что-то стандартных таких не припомню
42 Ayvengo
 
20.09.10
18:09
Просто та штука, которая долгая - она обрабатывает каждый элемент справочника номенклатура, каждый из них изменяет, каждый из них записывает - от сюда - много времени уходит. И заодно можно увидеть свои ошибки, а если Ваша обработка их не выдает, скорее всего она даже не пытается их записать ;)
43 ЛучшаяДевушка в СССР
 
20.09.10
18:23
(41) с ИТС

(42) а то, что в комментарии это не то?

Перед записью в элементе справочника "Номенклатура" необходимо заполнить "базовая единица"!
У единицы для отчетов номенклатуры "" неверно указан владелец!
Перед записью в элементе справочника "Номенклатура" необходимо заполнить "вид номенклатуры"!
Не удалось записать номенклатуру: "<>"
{(33)}: Ошибка при вызове метода контекста (Записать): Операция не выполнена!
44 ЛучшаяДевушка в СССР
 
20.09.10
18:23
+(43) с диска в смысле)
45 ЛучшаяДевушка в СССР
 
20.09.10
18:24
(42) так может ее надо было как отдельную обработку сделать, а не через Универсальный Подбор И Обработку Объектов, поэтому и не получилось?
46 kn
 
20.09.10
18:33
А может лучше правила подправить в части единиц измерения? Cм. например
v8: Конвертация ЕдиницИзмерения
47 ЛучшаяДевушка в СССР
 
20.09.10
18:38
(46) я бы тоже так хотела, только не умею я...
я больше юзерствую...
48 kn
 
20.09.10
18:42
а я поиском пользуюсь.
49 ЛучшаяДевушка в СССР
 
20.09.10
19:04
(48) я тоже пользуюсь вроде, но писать еще не научилась...


спасибо всем большое...