Как назначить всем номенклатурам "Единицу хранения остатков"?

21. rpol 17.03.10 15:29 Сейчас в теме
Oleg_N пишет:

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


// Присвоение значения БазоваяЕдиницаИзмерения
// для ЕдиницаХраненияОстатков и ЕдиницаДляОтчетов
// и дальнейшая запись в карточку Номенклатуры

Объект.ОбменДанными.Загрузка = Истина;

НовыйОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();


НовыйОбъект.Наименование = Объект.БазоваяЕдиницаИзмерения;
НовыйОбъект.Коэффициент = 1;
НовыйОбъект.Владелец = Объект.Ссылка;
НовыйОбъект.Записать();

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

Объект.ОбменДанными.Загрузка = Истина;

НовыйОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();


НовыйОбъект.Наименование = Объект.БазоваяЕдиницаИзмерения;
НовыйОбъект.Коэффициент = 1;
НовыйОбъект.Владелец = Объект.Ссылка;
НовыйОбъект.Записать();

Объект.ЕдиницаДляОтчетов = НовыйОбъект.Ссылка;
Shinigamius; +1 Ответить
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
23. d0dger 81 11.03.11 21:55 Сейчас в теме
(21) так задвоятся единицы измерения нужно вот так:
// Присвоение значения БазоваяЕдиницаИзмерения 
// для ЕдиницаХраненияОстатков и ЕдиницаДляОтчетов 
// и дальнейшая запись в карточку Номенклатуры 

Объект.ОбменДанными.Загрузка = Истина; 

НовыйОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); 


НовыйОбъект.Наименование = Объект.БазоваяЕдиницаИзмерения; 
НовыйОбъект.Коэффициент = 1; 
НовыйОбъект.Владелец = Объект.Ссылка; 
НовыйОбъект.Записать(); 

Объект.ЕдиницаХраненияОстатков = НовыйОбъект.Ссылка; 
Объект.ЕдиницаДляОтчетов = НовыйОбъект.Ссылка;
Показать
irishka77; _ink_; +2 Ответить
49. Гость 17.12.12 15:35
(23) d0dger, Необходимо присвоить реквизиту Единица Изм. по классификатору = Значение в новом элементе Спр.Ед.ИЗМ(Сократил), кто пишет и отлаживает код - поймет
22. spy9 08.11.10 13:03 Сейчас в теме
А как в этой обработке заставить считать поле "Сумма" ?
24. delvin127562 07.09.11 14:22 Сейчас в теме
По написанному выше смог из excel файла закинуть в базу номеклатуру, чтобы заполнялись поля ЕдиницаХраненияОстатков и ЕдиницаДляОтчетов. Но теперь возникла новая потребность:требуется для каждого нового элнемта вносить данные по его объему и весу. Эти данные есть в excel файле. Можно ли это каким-то образом сделать?
Заранее спасибо за ответы, Игорь.
25. fly_men 07.09.11 14:51 Сейчас в теме
Проще обработкой пройти:

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

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

Пока Выборка.Следующий() Цикл
объект = Выборка.Ссылка.ПолучитьОбъект();
объект.ОбменДанными.Загрузка = Истина;
объект.ЕдиницаХраненияОстатков = Справочники.ЕдиницыИзмерения.НайтиПоКоду("032064");
Попытка
объект.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
ОбработкаПрерыванияПользователя();
КонецЦикла;
КонецПроцедуры
26. delvin127562 07.09.11 15:14 Сейчас в теме
А как этой обработкой пользоваться? Я чайник еще полный в 1С, второй день только с ней сижу...
ЗЫ Желательно по пунктам, что и куда вводить...
ЗЫЫ Попробовал ввести этот код в События-При записи объекта, выдалась ошибка
Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,1)}: Ожидается последовательность операторов
Объект не загружен. Элемент справочника: Кольцо 32 мм.
27. delvin127562 07.09.11 15:22 Сейчас в теме
Создал файл в блокноте, туда скинул Ваш код, сохранил с расширением epf, 1С выдала ошибку
Ошибка при выполнении файловой операции  'C:\Users\delvin\Desktop\обраб.epf'
по причине:
Неверный формат хранилища данных 'file://C:/Users/delvin/Desktop/обраб.epf'
28. cool.vlad4 45 07.09.11 15:28 Сейчас в теме
(27) Необходимо создать обраболку в 1С (в конфигураторе) и повесить код на кнопку, а так у вас ничего не получится
29. fly_men 07.09.11 15:29 Сейчас в теме
Вам нужно было просто привязать этот код к кнопке, т. е. указать в качестве действия для кнопки имя этой процедуры либо скопировать в свою процедуру содержимое данной процедуры.


fly_men пишет:

Проще обработкой пройти:



Процедура КнопкаВыполнитьНажатие(Кнопка)

Запрос = Новый Запрос("ВЫБРАТЬ

| Номенклатура.Ссылка

|ИЗ

| Справочник.Номенклатура КАК Номенклатура

|ГДЕ

| Номенклатура.ЭтоГруппа = ЛОЖЬ");



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



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

объект = Выборка.Ссылка.ПолучитьОбъект();

объект.ОбменДанными.Загрузка = Истина;

объект.ЕдиницаХраненияОстатков = Справочники.ЕдиницыИзмерения.НайтиПоКоду("032064");

Попытка

объект.Записать();

Исключение

Сообщить(ОписаниеОшибки());

КонецПопытки;

ОбработкаПрерыванияПользователя();

КонецЦикла;

КонецПроцедуры
Показать


Данный код устанавливает для всех номенклатур одну единицу хранения остатков например "шт.", это значение присваивается из справочника строкой - объект.ЕдиницаХраненияОстатков = Справочники.ЕдиницыИзмерения.НайтиПоКоду("032064"). Если нужно для всех номеклатур установить разные единицы хранения остатков, то тогда нужно добавлять условие в цикле какой номенклатуре нужно присвоить ту или иную ед. хран. остатков.
30. delvin127562 07.09.11 15:50 Сейчас в теме
fly_men пишет:

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






и как конкректно мне это сделать? Я именю ввиду повесить код на кнопку? В конфигураторе нашел создание новой внешней обработки, но что-то у меня не поулчилось ее создать...
ЗЫ Наверно много глупых вопросов, но действительно только 2-ой день юзаю 1С-ку...
31. fly_men 07.09.11 16:10 Сейчас в теме
В конфигураторе в меню "файл"->"Новый"->Выбрать "Внешняя обработка"->Создать форму обаботки(по умолчанию)->Перейти на вкладку диалог формы->Правой кнопкой мыши щёлкнуть по кнопке "Выполнить"->Выбрать в контекстном меню пункт "КнопкаВыполнитьНажатие"(при этом создаться обработчик этой кнопки)->Скопировать содержимое процедуры в обработчик кнопки->Указать в строке кода: НайтиПоКоду("032064") нужный код единицы хран. ост. ->Сохранить где нить. Запуск производится в 1С:предприятие(не конфигуратор) в меню "файл"->"открыть"->указать обработку.

Учтите данная обработка проставит одну ед. хран. ост. для всех номенклатур.
32. delvin127562 07.09.11 16:13 Сейчас в теме
Для всех имеющихся номеклатур или для тех, которые будут новыми заливаться с помощью нее?
33. fly_men 07.09.11 16:14 Сейчас в теме
для всех которые имеются в базе на момент выполнения обработки.
34. delvin127562 07.09.11 17:12 Сейчас в теме
Сделал, но это не. Еще раз, чтобы было понятнее. Открываем любой элемент номеклатуры, переходим на вкладку "Единицы", там видим, к примеру, такие строки:штуки, коробки, упаковки. У каждого из этих элементов есть количество, объем и масса. Так вот, используя внешнюю обработку "ЗагрузкаДанныхИзТабличногоДокумента" (она стандартная, идет на диске с 1Ской)+код от Fishci
Объект.ОбменДанными.Загрузка = Истина; 

НовыйОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); 
НовыйОбъект.Код = "717"; 

НовыйОбъект.Наименование = "шт"; 
НовыйОбъект.Коэффициент = 1; 
НовыйОбъект.Владелец = Объект.Ссылка; 
НовыйОбъект.Записать(); 

Объект.ЕдиницаХраненияОстатков = НовыйОбъект.Ссылка; 
Показать

у меня получилось в эти самые "Единицы" загнать "штуки". А сейчас мне требуется загнать не только штуки, но и коробки и упаковки+ забить поля количества, массы и объема. Так понятней?
46. _ink_ 01.09.12 10:08 Сейчас в теме
(34) delvin127562,
Спасибо. Долго искал. Работает отлично.
35. delvin127562 08.09.11 13:36 Сейчас в теме
36. delvin127562 09.09.11 12:08 Сейчас в теме
Для тех, у кого будут такие же вопросы...
Я проблему решил таким образом: Во внешнем обработчике просто выбрал другой вид справочника (мне требовался "Единицы измерения"), выставил, чтобы он искал все кроме кода и единиц и закинул excel файл, в котром было точное название элемента номенклатуры (владельца), наименование (у меня это были штуки, упаковки и коробки) и соответствующий им вес и объем.
37. 2Liga 11 12.09.11 15:38 Сейчас в теме
38. mrd_84 02.11.11 14:54 Сейчас в теме
Спасибо за мысль!
Объект.ОбменДанными.Загрузка = Истина; 

НовыйОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); 
НовыйОбъект.Код = "717"; 

НовыйОбъект.Наименование = "шт"; 
НовыйОбъект.Коэффициент = 1; 
НовыйОбъект.Владелец = Объект.Ссылка; 
НовыйОбъект.Записать(); 

Объект.ЕдиницаХраненияОстатков = НовыйОбъект.Ссылка; 
Показать


Очень помогло!
39. esa35 88 10.11.11 12:13 Сейчас в теме
fly_men пишет:

Проще обработкой пройти:

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

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

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



хороший вариант
40. esa35 88 10.11.11 12:14 Сейчас в теме
delvin127562 пишет:

Для тех, у кого будут такие же вопросы...
Я проблему решил таким образом: Во внешнем обработчике просто выбрал другой вид справочника (мне требовался "Единицы измерения"), выставил, чтобы он искал все кроме кода и единиц и закинул excel файл, в котром было точное название элемента номенклатуры (владельца), наименование (у меня это были штуки, упаковки и коробки) и соответствующий им вес и объем.


так тоже можно, но дольше
41. egdmvl 24.11.11 13:49 Сейчас в теме
Пожалуйста, киньте мне на мыло внешнюю обработку для решения
 Ошибка при вызове метода контекста (Записать): Операция не выполнена!
Объект не изменен. Элемент справочника: Номенклатура1.
У единицы хранения остатков номенклатуры "Номенклатура1" неверно указан владелец!
У единицы для отчетов номенклатуры "Номенклатура1" неверно указан владелец!
43. нормалек 16.02.12 21:51 Сейчас в теме
В Модуль обработки "ЗагрузкаДанныхИзТабличногоДокумента.epf надо вставить процедуру

Процедура УстановитьЕдиницуХраненияОстатков(Ссылка) экспорт
	Если Ссылка.Пустая()=1 тогда
		Сообщить("Не удалось идентифицировать Номенклатуру!",СтатусСообщения.Важное);
		Возврат;
	КонецЕсли;	
	
	Если ЗначениеЗаполнено(Ссылка.ЕдиницаХраненияОстатков) Тогда
		Возврат;
	КонецЕсли;

	ВыборкаЕдиниц = Справочники.ЕдиницыИзмерения.Выбрать(, Ссылка);
	Если ВыборкаЕдиниц.Следующий() Тогда
		НайденнаяЕдиница = ВыборкаЕдиниц.Ссылка;
	Иначе
		НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
		НайденнаяЕдиницаОбъект.Наименование            = СокрЛП(Ссылка.БазоваяЕдиницаИзмерения);
		НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = Ссылка.БазоваяЕдиницаИзмерения;
		НайденнаяЕдиницаОбъект.Коэффициент             = 1;
		НайденнаяЕдиницаОбъект.Владелец                = Ссылка;

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

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


	ОбъектСправочник=Ссылка.ПолучитьОбъект();
	ОбъектСправочник.ЕдиницаХраненияОстатков = НайденнаяЕдиница;

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

КонецПроцедуры // УстановитьЕдиницуХраненияОстатков()
Показать

Затем в режиме исполнения обработки Нужно:
При режиме "Загрузка в табличную часть" в поле "единица измерения" поставить режим загрузки "Вычислять", в поле "Выражение" записать следующее:

УстановитьЕдиницуХраненияОстатков(ТекущиеДанные["Номенклатура"]);
Результат=ТекущиеДанные["Номенклатура"].ЕдиницаХраненияОстатков;


Всё
45. qwed557 30 06.03.12 12:03 Сейчас в теме
сделал все как говорили в последнем посте , выдает ошибку Поле объекта не обнаружено (Номенклатура)
конфа ут 10
47. vervolf9 01.09.12 11:01 Сейчас в теме
Групповую обработку справочников и документов можно использовать.
48. _ink_ 01.09.12 15:09 Сейчас в теме
(47) Групповой не получается. Ругается на родителя
50. ignatova_aa 28.11.14 18:52 Сейчас в теме
Если использовать код предложенный ув. (12) fishca, то в карточке номенклатуры не проставляется Единица по классификатору.Из-за этого в печатных формах не проставляется этот код. Поэтому нужно дописать в код "НовыйОбъект.ЕдиницаПоКлассификатору = Объект.БазоваяЕдиницаИзмерения;"

И окончательный вариант будет выглядеть так:

Объект.ОбменДанными.Загрузка = Истина;

НовыйОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();


НовыйОбъект.Наименование = "шт";
НовыйОбъект.Коэффициент = 1;
НовыйОбъект.ЕдиницаПоКлассификатору = Объект.БазоваяЕдиницаИзмерения;
НовыйОбъект.Владелец = Объект.Ссылка;
НовыйОбъект.Записать();

Объект.ЕдиницаХраненияОстатков = НовыйОбъект.Ссылка;
Объект.ЕдиницаДляОтчетов = НовыйОбъект.Ссылка;
Объект.ЕдиницаИзмеренияМест = НовыйОбъект.Ссылка;
Показать
TwoFingers; +1 Ответить
51. Dimka74 16.06.09 05:53 Сейчас в теме
При помощи "ЗагрузкаДанныхИзТабличногоДокумента.epf" смог импортировать Название Номенклатуры, НДС, и др. св-ва, а вот как установить для всех номенклатур "Единицу хранения остатков" - шт, не знаю. В том же обработчике есть возможность и этот параметр установить, но я не знаю как сделать, 1ска постоянно ругается на меня:
 Ошибка при вызове метода контекста (Записать): Операция не выполнена!
Объект не изменен. Элемент справочника: Номенклатура1.
У единицы хранения остатков номенклатуры "Номенклатура1" неверно указан владелец!
У единицы для отчетов номенклатуры "Номенклатура1" неверно указан владелец!

Может кто знает, как сделать, не обязательно с этим обработчиком может какой другой есть способ?
52. fishca 1180 16.06.09 06:37 Сейчас в теме
ОбменДанными.Загрузка = истина
53. Dimka74 16.06.09 06:46 Сейчас в теме
Fishсa, прости не понял, что конкретно нужно сделать?
54. Dimka74 16.06.09 09:41 Сейчас в теме
Кто-нибудь, подскажите пожалуйста, что делать?
55. fishca 1180 16.06.09 10:15 Сейчас в теме
СправочникОбъект.<Имя справочника> (CatalogObject.<Имя справочника>)
ОбменДанными (DataExchange)
Использование:
Только чтение.
Описание:
Тип: ПараметрыОбменаДанными. Используется для управления обменом данных.
С помощью данного свойства настраивается состав узлов-получателей, для которых будут регистрироваться изменения данных, узел-отправитель, из которого получена записываемая информация, а также устанавливается режим Загрузка, указывающий, что выполняется перенос информации.


ПараметрыОбменаДанными (DataExchangeParameters)
Загрузка (Load)
Использование:
Чтение и запись.
Описание:
Тип: Булево. Если значение данного свойства Истина, то при выполнении записи или удаления данных будет производиться минимум проверок, так как при этом делается предположение, что производится запись данных, полученных через механизмы обмена данными, и эти данные корректны.

Номенклатура.ОбменДанными.Загрузка = Истина - если ты так напишешь, то тебе 1С разрешит записать без единицы измерени
56. WiseSnake 1795 16.06.09 10:19 Сейчас в теме
(4) Напишите простенькую обработочку которая выберет номенклатуру и создаст ЕХО. Можно например вот эту использовать http://www.infostart.ru/projects/2795/... 5 мин делов...
57. Dimka74 16.06.09 10:26 Сейчас в теме
fishca, все здорово, только куда это писать?
58. fishca 1180 16.06.09 10:30 Сейчас в теме
(7)
ЗагрузкаДанныхИзТабличногоДокумента.epf - найти место где записывается номенклатура, вот там и написать надо.
Или вы с программированием под восьмерку не очень дружите?
59. Dimka74 16.06.09 10:34 Сейчас в теме
fishca, прям в точку :), я тут с бубном и плясками вокруг 1С уже неделю прыгаю :), все что хотел сделать уже почти сделал, но вот на этом вопросе споткнулся и не туда и не сюда. Мне нужно загрузить розничные цены, на это обработчик нашел, но так же необходимо подставить "Единицу хранения остатков" иначе, придется делать все в ручную :(
60. fishca 1180 16.06.09 10:39 Сейчас в теме
Единица хранения остатков подчиненный справочник справочнику Номенклатура. Сначала создается номенклатура и ссылка на этот элемент номенклатуры должна быть указана при создании справочника Единица Измерения.
примерно так: ЕдиницаИзмерения.Владелец = СсылкаНоменклатура.
Тогда будет все хорошо.
61. Dimka74 16.06.09 10:44 Сейчас в теме
(10)
Fishca, я Вам признателен за помощь, и рад бы понять, но умоляю ткните пальчиком куда сие записать, и будет мое счастье без гранично!
62. fishca 1180 16.06.09 12:12 Сейчас в теме
На закладке настройка жмешь кнопку "События"
Выбираешь закладку "ПриЗаписи"
Пишешь там примерно такой код:

Объект.ОбменДанными.Загрузка = Истина;

НовыйОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
НовыйОбъект.Код = "717";

НовыйОбъект.Наименование = "шт";
НовыйОбъект.Коэффициент = 1;
НовыйОбъект.Владелец = Объект.Ссылка;
НовыйОбъект.Записать();

Объект.ЕдиницаХраненияОстатков = НовыйОбъект.Ссылка;
63. fishca 1180 16.06.09 16:11 Сейчас в теме
64. Dimka74 16.06.09 22:10 Сейчас в теме
(13) fishca, прошу прощения, что так долго не отвечал, только сейчас добрался до компа, еще раз благодарю за помощь, но видно, я опять, что-то не так делаю:

Изменен элемент справочника: Номенклатура1
 Ошибка при вызове метода контекста (Записать): Код не уникален!
Объект не изменен. Элемент справочника: Номенклатура2.
 Ошибка при вызове метода контекста (Записать): Код не уникален!
Объект не изменен. Элемент справочника: Номенклатура3.
65. fishca 1180 16.06.09 22:30 Сейчас в теме
НовыйОбъект.Код = "717";

Скорее всего ругается на эту строчку :)

попробуй убрать вообще эту строку.
66. Dimka74 17.06.09 00:13 Сейчас в теме
fishca, спасибище огромное, заработало!!! Вот как должно быть, чтоб работало:
Объект.ОбменДанными.Загрузка = Истина; 

НовыйОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); 


НовыйОбъект.Наименование = "шт"; 
НовыйОбъект.Коэффициент = 1; 
НовыйОбъект.Владелец = Объект.Ссылка; 
НовыйОбъект.Записать(); 

Объект.ЕдиницаХраненияОстатков = НовыйОбъект.Ссылка;
Показать


Скажите, а относительно "Единица для отчетов", код должен быть похожим на этот:
Объект.ОбменДанными.Загрузка = Истина; 

НовыйОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); 


НовыйОбъект.Наименование = "шт"; 
НовыйОбъект.Коэффициент = 1; 
НовыйОбъект.Владелец = Объект.Ссылка; 
НовыйОбъект.Записать(); 

Объект.ЕдиницаХраненияОстатков = НовыйОбъект.Ссылка;
Объект.ЕдиницаДляОтчетов = НовыйОбъект.Ссылка;
Показать

или как-то по другому?
67. fishca 1180 17.06.09 07:43 Сейчас в теме
Единица для отчетов точно также должна создаваться
68. Oleg_N 24 03.08.09 13:06 Сейчас в теме
Подскажите а как изенить код, что бы можно было загружать номенклатуры с разными ед измерения одновременно.
69. rosinfo1 28.09.09 13:23 Сейчас в теме
Огромное спасибо Dimka74 и особенно fishca , сам две недели мучился. Все работает !!!
70. Chaotic 40 30.12.09 00:30 Сейчас в теме
Оставьте свое сообщение
Вопросы с вознаграждением