1. user1069796 06.11.18 15:53 Сейчас в теме

Что я не правильно делаю? Обработкой в документы проставляю количество..

Которое никак не хочет проставляться..

Всем привет. Помогите пожалуйста, что не так?

&НаКлиенте
Процедура ДобавитьКоличество(Команда)
	ДобавлениеКоличества();
КонецПроцедуры

// Добавление количества в документы, которые при копировании не получили количества штук 
//(килограммы скопировались успешно)

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

			ОбПокупка.Записать();
	
	Сообщить("Создание завершено!");
		
КонецПроцедуры
Показать
Ответы
Избранное Подписка Сортировка: Древо
2. antz 06.11.18 15:57 Сейчас в теме
Ну, что не так. Не проставляешь количество в документы, вот, в общем, и всё, что не так. Читаешь запросом документы, если в строке количество = 0, то присваиваешь локальной переменной Колич, которой раньше присвоил значение, которое находится в поле "Количество" строки ТЧ строковое значение "1.000" и продолжаешь цикл.
3. _Driver_ 1 06.11.18 15:59 Сейчас в теме
Можешь так сделать

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

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

Для Каждого Строка Из Выборка.Ссылка.ТабличнаяЧасть4 Цикл

Колич = Строка.Количество;

Если Колич > 0 Тогда
Продолжить
Иначе Колич =1;

КонецЕсли;

КонецЦикла;

Сообщить("Создается " + ОбПокупка);

Сообщить(Колич);

ОбПокупка.Записать();

//Прервать;

КонецЦикла;
5. antz 06.11.18 16:01 Сейчас в теме
6. _Driver_ 1 06.11.18 16:06 Сейчас в теме
(5) Расшифруем, если не понятно.
в цикле из ссылки получаем объект, далее перебираем табличную часть
если в строке количество равно 0 ставим 1.
и далее записываем .
8. antz 06.11.18 16:07 Сейчас в теме
(6)
если в строке количество равно 0 ставим 1


Ставим 1 куда?
9. _Driver_ 1 06.11.18 16:08 Сейчас в теме
7. _Driver_ 1 06.11.18 16:07 Сейчас в теме
4. denk32 06.11.18 16:01 Сейчас в теме
а тип значения у колонки количество наверное Число? а вы подставляете строку.
11. antz 06.11.18 16:16 Сейчас в теме
(4) да если бы дело было в этом. В 1С, кстати, неявное преобразование типов кое-где работает, так что числовому реквизиту можно присвоить строковое значение (если оно написано корректно и Число(Значение) не выдаст ошибку) и оно таки присвоится.
10. _Driver_ 1 06.11.18 16:09 Сейчас в теме
Пока Выборка.Следующий() Цикл

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

Для Каждого Строка Из ОбПокупка .ТабличнаяЧасть4 Цикл

Если Строка.Количество> 0 Тогда
Продолжить
Иначе Строка.Количество=1;

КонецЕсли;

КонецЦикла;

Сообщить("Создается " + ОбПокупка);

Сообщить(Колич);

ОбПокупка.Записать();

//Прервать;

КонецЦикла;
14. tata_1211 60 07.11.18 16:54 Сейчас в теме
Да как бы основная проблема в том, что получается объект, а циклом перебор идет документа-ссылки, и установка количества должно быть для строки табчасти объекта. Ну и запись объекта внутри первого цикла нужно перенести. Что, в общем, и указано в (10) .
12. Kovekh 07.11.18 14:56 Сейчас в теме
То есть никого не смутило, что человек получает объект в цикле, а записывает его после?
13. Sashares 1 07.11.18 14:58 Сейчас в теме
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 130 000 руб.
Полный день

Программист 1С
Москва
Полный день

Программист 1С
Видное
Полный день

Программист 1С
Москва
зарплата до 120 000 руб.
Полный день

Программист 1С
Ростов-на-Дону
зарплата до 120 000 руб.
Полный день