|
Перезаполнить единицу хранения и единицу для отчетов в 1 С Рознице | ☑ | ||
---|---|---|---|---|
0
ToJIuK
06.08.12
✎
11:54
|
Тема обсуждалась в ветке.
v8: Как перезаполнить единицу хранения и единицу для отчетов? Ситуация идентичная. Перенес номенклатуру из 1С ТиС(Торговля и Склад) в 1С Розницу. Но у меня не получается перезаписать эти реквизиты, ни первым ни вторым способом. Первый описан в пункте (29) Создаю внешнюю обработку. С кодом Запрос = Новый Запрос("ВЫБРАТЬ | спрНоменклатура.Номенклатура, | спрНоменклатура.БазоваяЕдиницаИзмерения, | спрНоменклатура.ЕдиницаИзмерения, | спрНоменклатура.КоличествоОдинаковых |ИЗ | (ВЫБРАТЬ | Номенклатура.Ссылка КАК Номенклатура, | Номенклатура.БазоваяЕдиницаИзмерения КАК БазоваяЕдиницаИзмерения, | ЕдиницыИзмерения.Ссылка КАК ЕдиницаИзмерения, | СУММА(1) КАК КоличествоОдинаковых | ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения | ПО Номенклатура.Ссылка = ЕдиницыИзмерения.Владелец | И Номенклатура.БазоваяЕдиницаИзмерения = ЕдиницыИзмерения.ЕдиницаПоКлассификатору | ГДЕ | (НЕ Номенклатура.ЭтоГруппа) | | СГРУППИРОВАТЬ ПО | Номенклатура.Ссылка, | Номенклатура.БазоваяЕдиницаИзмерения, | ЕдиницыИзмерения.Ссылка) КАК спрНоменклатура |ГДЕ | спрНоменклатура.КоличествоОдинаковых = 1"); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Номенклатура = Выборка.Номенклатура.ПолучитьОбъект(); Номенклатура = Справочники.Номенклатура.СоздатьЭлемент(); Номенклатура.ЕдиницаХраненияОстатков = Выборка.ЕдиницаИзмерения; Номенклатура.ЕдиницаДляОтчетов = Выборка.ЕдиницаИзмерения; Попытка Номенклатура.Записать(); Исключение Сообщить("Не удалось записать номенклатуру: """ + Номенклатура + """"); Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЦикла; Выдает ошибку {ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(33)}: Ошибка при вызове метода контекста (Записать): Не удалось записать: "Номенклатура"! Перед записью в элементе справочника "Номенклатура" необходимо заполнить "вид номенклатуры"! Перед записью в элементе справочника "Номенклатура" необходимо заполнить ""Ед" (базовая единица)"! Не удалось записать номенклатуру: "<>" Способ 2. (36) сообщение. Вроде все отрабатывает : пишет обработано 4500 элементов, но по факту все остается как было. Подскажите может кто решал эту проблему. |
|||
1
Popkorm
06.08.12
✎
12:24
|
НайденаяНом = СпрНоменклатура.НайтиПоКоду(ВыбНоменклатура.Код);
Если НЕ ЗначениеЗаполнено(НайденаяНом.ЕдиницаХраненияОстатков) Тогда ЕдиницаИзмерения = СпрЕдиницыИзмерения.СоздатьЭлемент(); ЕдиницаИзмерения.Владелец = СпрНоменклатура.НайтиПоКоду(ВыбНоменклатура.Код).Ссылка; ЕдиницаИзмерения.Наименование = НайденаяНом.БазоваяЕдиницаИзмерения.Наименование; ЕдиницаИзмерения.ЕдиницаПоКлассификатору = НайденаяНом.БазоваяЕдиницаИзмерения.Ссылка; ЕдиницаИзмерения.Коэффициент = 1; ЕдиницаИзмерения.Записать(); ОбъекНом = НайденаяНом.Получитьобъект(); ОбъекНом.ЕдиницаХраненияОстатков = ЕдиницаИзмерения.Ссылка; ОбъекНом.ЕдиницаДляОтчетов = ЕдиницаИзмерения.Ссылка; ОбъекНом.ЕдиницаИзмеренияМест = ЕдиницаИзмерения.Ссылка; ОбъекНом.Записать(); Сообщить("Добавлена Ед.Хран.Ост для: "+НайденаяНом+НайденаяНом.ЕдиницаХраненияОстатков); КонецЕсли; |
|||
2
ToJIuK
06.08.12
✎
12:39
|
Это куда вставлять в первый способ или второй? Если в первый то вместо каких строчек?
|
|||
3
ToJIuK
06.08.12
✎
12:41
|
Это после
Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ....... ...... ...... Конец Цикла надо вставить если я правильно понял |
|||
4
Popkorm
06.08.12
✎
12:47
|
(3)ты в сам метод приглядись что я тебе дал
|
|||
5
ToJIuK
06.08.12
✎
12:53
|
Прости пожалуйста но я не гуру 1с. Пытаюсь подставить и в первый и во второй способ не работает пишет
(1,16)}: Переменная не определена (СпрНоменклатура) НайденаяНом = <<?>>СпрНоменклатура.НайтиПоКоду(ВыбНоменклатура.Код); |
|||
6
Popkorm
06.08.12
✎
13:32
|
(5)дааааа.............стажер?!Запрос походу не сам писал
Пока Выборка.Следующий() Цикл Номенклатура = Выборка.Номенклатура.Код; НайденаяНом = Справочники.Номенклатура.НайтиПоКоду(Выборка.Номенклатура.Код); Если НЕ ЗначениеЗаполнено(НайденаяНом.ЕдиницаХраненияОстатков) Тогда ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); ЕдиницаИзмерения.Владелец = Справочники.Номенклатура.НайтиПоКоду(Номенклатура).Ссылка; ЕдиницаИзмерения.Наименование = НайденаяНом.БазоваяЕдиницаИзмерения.Наименование; ЕдиницаИзмерения.ЕдиницаПоКлассификатору = НайденаяНом.БазоваяЕдиницаИзмерения.Ссылка; ЕдиницаИзмерения.Коэффициент = 1; ЕдиницаИзмерения.Записать(); ОбъекНом = НайденаяНом.Получитьобъект(); ОбъекНом.ЕдиницаХраненияОстатков = ЕдиницаИзмерения.Ссылка; ОбъекНом.ЕдиницаДляОтчетов = ЕдиницаИзмерения.Ссылка; ОбъекНом.ЕдиницаИзмеренияМест = ЕдиницаИзмерения.Ссылка; ОбъекНом.Записать(); Сообщить("Добавлена Ед.Хран.Ост для: "+НайденаяНом+НайденаяНом.ЕдиницаХраненияОстатков); КонецЕсли; |
|||
7
ToJIuK
06.08.12
✎
14:24
|
ДА ТЫ ПРОСТО ГРЕБАННЫЙ ГОССУ-МЕН!!!В хорошем смысле)))
Всемогущий далай-лама 1с!!! Спс тебе Большое . А то пришлось бы щас 15т наименование пересохранять в ручную)) |
|||
8
ToJIuK
06.08.12
✎
14:27
|
Вот полный код внешней обработки для сохранения ЕдХранения И Ед для отчетов
Запрос = Новый Запрос("ВЫБРАТЬ | спрНоменклатура.Номенклатура, | спрНоменклатура.БазоваяЕдиницаИзмерения, | спрНоменклатура.ЕдиницаИзмерения, | спрНоменклатура.КоличествоОдинаковых |ИЗ | (ВЫБРАТЬ | Номенклатура.Ссылка КАК Номенклатура, | Номенклатура.БазоваяЕдиницаИзмерения КАК БазоваяЕдиницаИзмерения, | ЕдиницыИзмерения.Ссылка КАК ЕдиницаИзмерения, | СУММА(1) КАК КоличествоОдинаковых | ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения | ПО Номенклатура.Ссылка = ЕдиницыИзмерения.Владелец | И Номенклатура.БазоваяЕдиницаИзмерения = ЕдиницыИзмерения.ЕдиницаПоКлассификатору | ГДЕ | (НЕ Номенклатура.ЭтоГруппа) | | СГРУППИРОВАТЬ ПО | Номенклатура.Ссылка, | Номенклатура.БазоваяЕдиницаИзмерения, | ЕдиницыИзмерения.Ссылка) КАК спрНоменклатура |ГДЕ | спрНоменклатура.КоличествоОдинаковых = 1"); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Номенклатура = Выборка.Номенклатура.Код; НайденаяНом = Справочники.Номенклатура.НайтиПоКоду(Выборка.Номенклатура.Код); Если НЕ ЗначениеЗаполнено(НайденаяНом.ЕдиницаХраненияОстатков) Тогда ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); ЕдиницаИзмерения.Владелец = Справочники.Номенклатура.НайтиПоКоду(Номенклатура).Ссылка; ЕдиницаИзмерения.Наименование = НайденаяНом.БазоваяЕдиницаИзмерения.Наименование; ЕдиницаИзмерения.ЕдиницаПоКлассификатору = НайденаяНом.БазоваяЕдиницаИзмерения.Ссылка; ЕдиницаИзмерения.Коэффициент = 1; ЕдиницаИзмерения.Записать(); ОбъекНом = НайденаяНом.Получитьобъект(); ОбъекНом.ЕдиницаХраненияОстатков = ЕдиницаИзмерения.Ссылка; ОбъекНом.ЕдиницаДляОтчетов = ЕдиницаИзмерения.Ссылка; ОбъекНом.Записать(); Сообщить("Добавлена Ед.Хран.Ост для: "+НайденаяНом+НайденаяНом.ЕдиницаХраненияОстатков); КонецЕсли; КонецЦикла В Реквизитах Внешней обработки нужно добавить Справочник.ссылку "НОМЕНКЛАТУРА" |
|||
9
Popkorm
06.08.12
✎
15:06
|
15т наименование пересохранять в ручную = жесть
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |