Имя: Пароль:
1C
1С v8
Единицы измерения в табличной части, групповая обработка
0 Medogon
 
31.07.12
16:58
Добрый вечер все.
Ситуация следующая, портировалась база с 7.7 на 8.2. После конвертации выяснилось, что поля единицы измерения как в свойствах номенклатуры, так и в табличной части реализаций пусты. С помощью групповой обработки я заполнил поля Единица Измерения в номенклатуре. Теперь, чтобы провести документ, мне необходимо руками выполнить даблклик по соответствующему полю в табличной части, выбрать из выпадающего меню единственный вариант и собственно нажать провести документ. Внимание вопрос! Каким образом я могу автоматизировать процесс, документов более 3000, вручную как понимаете, выполнить все это будет нерационально по времени. Я знаком с обработкой УниверсальныеПодборИОбработкаОбъектов, предполагаю, что сие можно выполнить с помощью пункта Произвольный алгоритм, нужен скрипт.
1с 8.2.15.301
На самом деле задание несложное, но ввиду недостатка необходимых знаний, что называется залип.
Помогите новичку :0
Спасибо
1 DrShad
 
31.07.12
17:01
а ты как их вообще заполнял если не можешь произвольный алгоритм написать?
2 palpetrovich
 
31.07.12
17:13
а использовать в УниверсальныеПодборИОбработкаОбъектов галку "обрабатывать табличные части"  - не судьба?
3 palpetrovich
 
31.07.12
17:17
+2 а не, отставить, Единицы-ж небось подчинены Номенклатуре - так не прокатит
4 palpetrovich
 
31.07.12
17:22
+3 хотя, если это бухгалтерия, то может и не подчинены, так что может прокатит
ты уж огласи что там у тебя
...а вообще - написать обработку по заполнению - понты :)
5 France
 
31.07.12
17:28
да стырить из модуля справочника номенклатура..
вот для обработки "Универсальный подбор и обработка...". Использовал для установки цен номенклатуры
делаешь отбор по нужному документу (или что там у тебя), и в произвольный алгоритм:
   для каждого строка из объект.Товары цикл
   товар = строка.Номенклатура.ПолучитьОбъект();    
   ВыборкаЕдиниц = Справочники.ЕдиницыИзмерения.Выбрать(, товар.Ссылка);
   Если ВыборкаЕдиниц.Следующий() Тогда
       НайденнаяЕдиница = ВыборкаЕдиниц.Ссылка;
   Иначе
       НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
       НайденнаяЕдиницаОбъект.Наименование            = СокрЛП(Объект.БазоваяЕдиницаИзмерения);
       НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = Объект.БазоваяЕдиницаИзмерения;
       НайденнаяЕдиницаОбъект.Коэффициент             = 1;
       НайденнаяЕдиницаОбъект.Владелец                = Объект.товар.Ссылка;

       Попытка
           НайденнаяЕдиницаОбъект.Записать();
       Исключение
           Сообщить("Не удалось записать единицу хранения остатков: " + ОписаниеОшибки(), СтатусСообщения.Важное);
           Отказ = Истина;
       КонецПопытки;

       НайденнаяЕдиница = НайденнаяЕдиницаОбъект.Ссылка;
   КонецЕсли;

   Товар.ЕдиницаХраненияОстатков = НайденнаяЕдиница;
   Товар.Записать();
   строка.ЕдиницаИзмерения = Строка.Номенклатура.ЕдиницаХраненияОстатков;    
   КонецЦикла;
   
   Объект.Записать();
6 Medogon
 
01.08.12
08:17
Как заполнял? Кровью и потом, а также на коллективной воле всех окружающих :)
France, спасибо!! Все работает идеально, все необходимые поля заполнены!
Где на этом форуме можно тыкнуть "спасибо"? :)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший