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

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 Сейчас в теме
(3) И что делает этот код?
+
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 Сейчас в теме
(8) да заменить надо)
+
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 63 07.11.18 16:54 Сейчас в теме
Да как бы основная проблема в том, что получается объект, а циклом перебор идет документа-ссылки, и установка количества должно быть для строки табчасти объекта. Ну и запись объекта внутри первого цикла нужно перенести. Что, в общем, и указано в (10) .
+
12. Kovekh 07.11.18 14:56 Сейчас в теме
То есть никого не смутило, что человек получает объект в цикле, а записывает его после?
+
13. Sashares 34 07.11.18 14:58 Сейчас в теме
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот